]> Repos - mime-chat/commitdiff
fix message xOffset
authorriqo <hernandeze2@xavier.edu>
Sat, 21 Nov 2020 19:26:02 +0000 (13:26 -0600)
committerriqo <hernandeze2@xavier.edu>
Sat, 21 Nov 2020 19:26:02 +0000 (13:26 -0600)
src/components/UI/UIDetails/messageItem.vue
src/composables/messageItem/useMessageItemComp.ts
src/composables/messageRenderer/useMessageRenderer.ts
src/composables/messageRenderer/useOffsetCalculator.ts
src/composables/messageRenderer/useRendererAnims.ts

index 7256dd6543993aa1ab4c037a733efee7942837cf..bbd4343bd977d4196485d3c03fa431bff195a3f7 100644 (file)
@@ -42,7 +42,8 @@ export default defineComponent({
     const messageText = ref(`text${msgID.value}`);
 
     const { textFill, bubbleFill, startingOffset } = useMessageItemComp(
-      props.item.modifier
+      props.item.modifier,
+      props.item.id
     );
     const { textWrap } = useTextWrap();
     const { drawMessage, signatureTranslate } = useMessageItemAnims({
index 646feb52a5d8106993612b38f5d8fb348d752a53..903854914c30b1e20cf5fb05523fdbf6643554e4 100644 (file)
@@ -1,6 +1,36 @@
-import { computed } from "vue";
-// takes in message modifier as param
-export default function useMessageItemComp(m: string) {
+import { computed, onMounted, ref } from "vue";
+export default function useMessageItemComp(m: string, id: string) {
+  const x = ref(0)
+  const xOffset = async () => {
+      const paddingLeft = 40;
+      const messageMargin = 20;
+      const winW = 350;
+      let x: number;
+        const msg = await document.getElementById(id);
+        if (msg) {
+          const messageWidth = msg.getBoundingClientRect().width;
+          switch (m) {
+              case "sf":
+                  x = winW - messageWidth;
+                  break;
+              case "ai":
+                  x = messageMargin + (winW -messageWidth) / 2;
+                  break;
+              default:
+                  x = paddingLeft;
+          }
+          return x;
+        }
+  }
+
+  onMounted(async () => {
+    const result = await xOffset();
+    if(result) {
+      x.value =  result;
+    }
+  })
+
+
   const textFill = computed(() => {
     switch (m) {
       case "fr":
@@ -25,21 +55,11 @@ export default function useMessageItemComp(m: string) {
     const messageRenderer = document.getElementById('messageRenderer')
     if (messageRenderer) {
       const rect = messageRenderer.getBoundingClientRect();
-      const sfX = 120;
-      const aiX = 200;
-      const dX = 40;
       let Y = 600;
       if (rect.height > 500) {
         Y = rect.height + 75;
       }
-      switch (m) {
-        case "sf":
-          return `translate(${sfX} ${Y})`;
-        case "ai":
-          return `translate(${aiX} ${Y})`;
-        default:
-          return `translate(${dX} ${Y})`;
-      }
+      return `translate(${x.value} ${Y})`;
     }
   });
 
index a5c598312ee142332114caa1b4d28180501696a5..6a01d3469525b314dde9abaa1e2b4a505096c504 100644 (file)
@@ -32,8 +32,9 @@ export default function useMessageRenderer() {
 
     function afterEnter(el: SVGGElement) {
         const messagePadding = 10;
+
         if (message) {
-            messageOffset = calculateMessageOffsets(message, modifier);
+            messageOffset = calculateMessageOffsets(message);
             shift = messageOffset.y > 450 ? true : false;
         }
         if (shift) {
index 82180273beb5294b93e991df1c86db0fdd8ee6a3..e0436c702a0ef1aa9d8ec49fe1c5d2c6fd3ffeca 100644 (file)
@@ -1,29 +1,15 @@
-import { ref, onMounted } from "vue";
+import { ref } from "vue";
 export default function useOffsetCalculator() {
     const xOffset = ref(0);
     const yOffset = ref(0);
-    let messenger: HTMLElement | null;
-    let winW: number;
     let previousMessageHeight = 0;
     const messagePadding = 10;
 
-    onMounted(() => {
-        messenger = document.getElementById("messenger");
-        if (messenger) winW = messenger.clientWidth;
-    })
 
-    function setXoffset(messageWidth: number, modifier: string): void {
-        const paddingLeft = 40;
-        switch (modifier) {
-            case "sf":
-                xOffset.value = winW - messageWidth;
-                break;
-            case "ai":
-                xOffset.value = (winW - messageWidth) / 2;
-                break;
-            default:
-                xOffset.value = paddingLeft;
-        }
+    function setXoffset(message: HTMLElement): void {
+        const computedQuery = window.getComputedStyle(message)
+        const matrix = new WebKitCSSMatrix(computedQuery.webkitTransform);
+        xOffset.value = matrix.m41;
     }
 
     function setYoffset(messageHeight: number): void {
@@ -35,9 +21,9 @@ export default function useOffsetCalculator() {
         previousMessageHeight = messageHeight;
     }
 
-    const calculateMessageOffsets = (msg: HTMLElement, modifier: string) => {
+    const calculateMessageOffsets = (msg: HTMLElement) => {
         const msgRect = msg.getBoundingClientRect();
-        setXoffset(msgRect.width, modifier)
+        setXoffset(msg)
         setYoffset(msgRect.height)
         const offsets = {
             x: xOffset.value as number,
index 30a8456326e8050015f53b8be450559780992f23..f780281e3b8f62d707de98f5401903f7ff94724e 100644 (file)
@@ -23,7 +23,8 @@ export default function useRendererAnims() {
 
     const shiftAnimate: MessageAnimeFunc = (el, transform, shiftValue, targetList) => {
         anime({
-            targets: el, transform: transform.initialTranslate,
+            targets: el, 
+            transform: transform.initialTranslate,
             easing: "easeInOutQuad",
             duration: 500,
             begin: function() {