|
|
|
|
@ -142,11 +142,11 @@ export const textWysiwyg = ({
@@ -142,11 +142,11 @@ export const textWysiwyg = ({
|
|
|
|
|
const appState = app.state; |
|
|
|
|
const updatedTextElement = |
|
|
|
|
Scene.getScene(element)?.getElement<ExcalidrawTextElement>(id); |
|
|
|
|
|
|
|
|
|
if (!updatedTextElement) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
const { textAlign, verticalAlign } = updatedTextElement; |
|
|
|
|
|
|
|
|
|
const approxLineHeight = getApproxLineHeight( |
|
|
|
|
getFontString(updatedTextElement), |
|
|
|
|
); |
|
|
|
|
@ -161,6 +161,7 @@ export const textWysiwyg = ({
@@ -161,6 +161,7 @@ export const textWysiwyg = ({
|
|
|
|
|
// Set to element height by default since that's
|
|
|
|
|
// what is going to be used for unbounded text
|
|
|
|
|
let textElementHeight = updatedTextElement.height; |
|
|
|
|
|
|
|
|
|
if (container && updatedTextElement.containerId) { |
|
|
|
|
if (isArrowElement(container)) { |
|
|
|
|
const boundTextCoords = |
|
|
|
|
@ -206,7 +207,6 @@ export const textWysiwyg = ({
@@ -206,7 +207,6 @@ export const textWysiwyg = ({
|
|
|
|
|
maxHeight = getMaxContainerHeight(container); |
|
|
|
|
|
|
|
|
|
// autogrow container height if text exceeds
|
|
|
|
|
|
|
|
|
|
if (!isArrowElement(container) && textElementHeight > maxHeight) { |
|
|
|
|
const diff = Math.min( |
|
|
|
|
textElementHeight - maxHeight, |
|
|
|
|
@ -276,7 +276,6 @@ export const textWysiwyg = ({
@@ -276,7 +276,6 @@ export const textWysiwyg = ({
|
|
|
|
|
// Make sure text editor height doesn't go beyond viewport
|
|
|
|
|
const editorMaxHeight = |
|
|
|
|
(appState.height - viewportY) / appState.zoom.value; |
|
|
|
|
|
|
|
|
|
Object.assign(editable.style, { |
|
|
|
|
font: getFontString(updatedTextElement), |
|
|
|
|
// must be defined *after* font ¯\_(ツ)_/¯
|
|
|
|
|
@ -395,11 +394,12 @@ export const textWysiwyg = ({
@@ -395,11 +394,12 @@ export const textWysiwyg = ({
|
|
|
|
|
// first line as well as setting height to "auto"
|
|
|
|
|
// doubles the height as soon as user starts typing
|
|
|
|
|
if (isBoundToContainer(element) && lines > 1) { |
|
|
|
|
const container = getContainerElement(element); |
|
|
|
|
|
|
|
|
|
let height = "auto"; |
|
|
|
|
editable.style.height = "0px"; |
|
|
|
|
let heightSet = false; |
|
|
|
|
if (lines === 2) { |
|
|
|
|
const container = getContainerElement(element); |
|
|
|
|
const actualLineCount = wrapText( |
|
|
|
|
editable.value, |
|
|
|
|
font, |
|
|
|
|
@ -416,6 +416,14 @@ export const textWysiwyg = ({
@@ -416,6 +416,14 @@ export const textWysiwyg = ({
|
|
|
|
|
heightSet = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
const wrappedText = wrapText( |
|
|
|
|
normalizeText(editable.value), |
|
|
|
|
font, |
|
|
|
|
getMaxContainerWidth(container!), |
|
|
|
|
); |
|
|
|
|
const width = getTextWidth(wrappedText, font); |
|
|
|
|
editable.style.width = `${width}px`; |
|
|
|
|
|
|
|
|
|
if (!heightSet) { |
|
|
|
|
editable.style.height = `${editable.scrollHeight}px`; |
|
|
|
|
} |
|
|
|
|
|