chore: Only use transform-origin
in the text editor if rendered
dimensions don't match the editor dimensions.
This commit is contained in:
parent
05800d8599
commit
372a4868da
@ -65,7 +65,8 @@ const getTransform = (
|
|||||||
if (height > maxHeight && zoom.value !== 1) {
|
if (height > maxHeight && zoom.value !== 1) {
|
||||||
translateY = (maxHeight * (zoom.value - 1)) / 2;
|
translateY = (maxHeight * (zoom.value - 1)) / 2;
|
||||||
}
|
}
|
||||||
return `translate(${translateX}px, ${translateY}px) scale(${zoom.value}) rotate(${degree}deg) translate(${offsetX}px, 0px)`;
|
const offset = offsetX !== 0 ? ` translate(${offsetX}px, 0px)` : "";
|
||||||
|
return `translate(${translateX}px, ${translateY}px) scale(${zoom.value}) rotate(${degree}deg)${offset}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
const originalContainerCache: {
|
const originalContainerCache: {
|
||||||
@ -278,6 +279,7 @@ export const textWysiwyg = ({
|
|||||||
textElementWidth += 0.5;
|
textElementWidth += 0.5;
|
||||||
transformWidth += 0.5;
|
transformWidth += 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Horizontal offset in case updatedTextElement has a non-WYSIWYG subtype
|
// Horizontal offset in case updatedTextElement has a non-WYSIWYG subtype
|
||||||
const offWidth = container
|
const offWidth = container
|
||||||
? Math.min(
|
? Math.min(
|
||||||
@ -293,7 +295,11 @@ export const textWysiwyg = ({
|
|||||||
? offWidth / 2
|
? offWidth / 2
|
||||||
: 0;
|
: 0;
|
||||||
const { width: w, height: h } = updatedTextElement;
|
const { width: w, height: h } = updatedTextElement;
|
||||||
|
const transformOrigin =
|
||||||
|
updatedTextElement.width !== eMetrics.width ||
|
||||||
|
updatedTextElement.height !== eMetrics.height
|
||||||
|
? { transformOrigin: `${w / 2}px ${h / 2}px` }
|
||||||
|
: {};
|
||||||
let lineHeight = updatedTextElement.lineHeight;
|
let lineHeight = updatedTextElement.lineHeight;
|
||||||
|
|
||||||
// In Safari the font size gets rounded off when rendering hence calculating the line height by rounding off font size
|
// In Safari the font size gets rounded off when rendering hence calculating the line height by rounding off font size
|
||||||
@ -315,7 +321,7 @@ export const textWysiwyg = ({
|
|||||||
height: `${textElementHeight}px`,
|
height: `${textElementHeight}px`,
|
||||||
left: `${viewportX}px`,
|
left: `${viewportX}px`,
|
||||||
top: `${viewportY}px`,
|
top: `${viewportY}px`,
|
||||||
transformOrigin: `${w / 2}px ${h / 2}px`,
|
...transformOrigin,
|
||||||
transform: getTransform(
|
transform: getTransform(
|
||||||
offsetX,
|
offsetX,
|
||||||
transformWidth,
|
transformWidth,
|
||||||
|
@ -5,7 +5,7 @@ exports[`Test Linear Elements > Test bound text element > should match styles fo
|
|||||||
class="excalidraw-wysiwyg"
|
class="excalidraw-wysiwyg"
|
||||||
data-type="wysiwyg"
|
data-type="wysiwyg"
|
||||||
dir="auto"
|
dir="auto"
|
||||||
style="position: absolute; display: inline-block; min-height: 1em; backface-visibility: hidden; margin: 0px; padding: 0px; border: 0px; outline: 0; resize: none; background: transparent; overflow: hidden; z-index: var(--zIndex-wysiwyg); word-break: break-word; white-space: pre-wrap; overflow-wrap: break-word; box-sizing: content-box; width: 10.5px; height: 25px; left: 35px; top: 7.5px; transform-origin: 5px 12.5px; transform: translate(0px, 0px) scale(1) rotate(0deg) translate(0px, 0px); text-align: center; vertical-align: middle; color: rgb(30, 30, 30); opacity: 1; filter: var(--theme-filter); max-height: 992.5px; font: Emoji 20px 20px; line-height: 1.25; font-family: Virgil, Segoe UI Emoji;"
|
style="position: absolute; display: inline-block; min-height: 1em; backface-visibility: hidden; margin: 0px; padding: 0px; border: 0px; outline: 0; resize: none; background: transparent; overflow: hidden; z-index: var(--zIndex-wysiwyg); word-break: break-word; white-space: pre-wrap; overflow-wrap: break-word; box-sizing: content-box; width: 10.5px; height: 25px; left: 35px; top: 7.5px; transform: translate(0px, 0px) scale(1) rotate(0deg); text-align: center; vertical-align: middle; color: rgb(30, 30, 30); opacity: 1; filter: var(--theme-filter); max-height: 992.5px; font: Emoji 20px 20px; line-height: 1.25; font-family: Virgil, Segoe UI Emoji;"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
wrap="off"
|
wrap="off"
|
||||||
/>
|
/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user