You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
9.0 KiB
1 line
9.0 KiB
{"ast":null,"code":"import '../../../utils/index.mjs';\nimport { isFirefox } from '../../../utils/browser.mjs';\nimport { isNumber } from '../../../utils/types.mjs';\nlet hiddenTextarea = void 0;\nconst HIDDEN_STYLE = `\n height:0 !important;\n visibility:hidden !important;\n ${isFirefox() ? \"\" : \"overflow:hidden !important;\"}\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n`;\nconst CONTEXT_STYLE = [\"letter-spacing\", \"line-height\", \"padding-top\", \"padding-bottom\", \"font-family\", \"font-weight\", \"font-size\", \"text-rendering\", \"text-transform\", \"width\", \"text-indent\", \"padding-left\", \"padding-right\", \"border-width\", \"box-sizing\"];\nfunction calculateNodeStyling(targetElement) {\n const style = window.getComputedStyle(targetElement);\n const boxSizing = style.getPropertyValue(\"box-sizing\");\n const paddingSize = Number.parseFloat(style.getPropertyValue(\"padding-bottom\")) + Number.parseFloat(style.getPropertyValue(\"padding-top\"));\n const borderSize = Number.parseFloat(style.getPropertyValue(\"border-bottom-width\")) + Number.parseFloat(style.getPropertyValue(\"border-top-width\"));\n const contextStyle = CONTEXT_STYLE.map(name => `${name}:${style.getPropertyValue(name)}`).join(\";\");\n return {\n contextStyle,\n paddingSize,\n borderSize,\n boxSizing\n };\n}\nfunction calcTextareaHeight(targetElement, minRows = 1, maxRows) {\n var _a;\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n document.body.appendChild(hiddenTextarea);\n }\n const {\n paddingSize,\n borderSize,\n boxSizing,\n contextStyle\n } = calculateNodeStyling(targetElement);\n hiddenTextarea.setAttribute(\"style\", `${contextStyle};${HIDDEN_STYLE}`);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || \"\";\n let height = hiddenTextarea.scrollHeight;\n const result = {};\n if (boxSizing === \"border-box\") {\n height = height + borderSize;\n } else if (boxSizing === \"content-box\") {\n height = height - paddingSize;\n }\n hiddenTextarea.value = \"\";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (isNumber(minRows)) {\n let minHeight = singleRowHeight * minRows;\n if (boxSizing === \"border-box\") {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = `${minHeight}px`;\n }\n if (isNumber(maxRows)) {\n let maxHeight = singleRowHeight * maxRows;\n if (boxSizing === \"border-box\") {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = `${height}px`;\n (_a = hiddenTextarea.parentNode) == null ? void 0 : _a.removeChild(hiddenTextarea);\n hiddenTextarea = void 0;\n return result;\n}\nexport { calcTextareaHeight };","map":{"version":3,"names":["hiddenTextarea","HIDDEN_STYLE","isFirefox","CONTEXT_STYLE","calculateNodeStyling","targetElement","style","window","getComputedStyle","boxSizing","getPropertyValue","paddingSize","Number","parseFloat","borderSize","contextStyle","map","name","join","calcTextareaHeight","minRows","maxRows","_a","document","createElement","body","appendChild","setAttribute","value","placeholder","height","scrollHeight","result","singleRowHeight","isNumber","minHeight","Math","max","maxHeight","min","parentNode","removeChild"],"sources":["../../../../../../packages/components/input/src/utils.ts"],"sourcesContent":["import { isFirefox, isNumber } from '@element-plus/utils'\n\nlet hiddenTextarea: HTMLTextAreaElement | undefined = undefined\n\nconst HIDDEN_STYLE = `\n height:0 !important;\n visibility:hidden !important;\n ${isFirefox() ? '' : 'overflow:hidden !important;'}\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n`\n\nconst CONTEXT_STYLE = [\n 'letter-spacing',\n 'line-height',\n 'padding-top',\n 'padding-bottom',\n 'font-family',\n 'font-weight',\n 'font-size',\n 'text-rendering',\n 'text-transform',\n 'width',\n 'text-indent',\n 'padding-left',\n 'padding-right',\n 'border-width',\n 'box-sizing',\n]\n\ntype NodeStyle = {\n contextStyle: string\n boxSizing: string\n paddingSize: number\n borderSize: number\n}\n\ntype TextAreaHeight = {\n height: string\n minHeight?: string\n}\n\nfunction calculateNodeStyling(targetElement: Element): NodeStyle {\n const style = window.getComputedStyle(targetElement)\n\n const boxSizing = style.getPropertyValue('box-sizing')\n\n const paddingSize =\n Number.parseFloat(style.getPropertyValue('padding-bottom')) +\n Number.parseFloat(style.getPropertyValue('padding-top'))\n\n const borderSize =\n Number.parseFloat(style.getPropertyValue('border-bottom-width')) +\n Number.parseFloat(style.getPropertyValue('border-top-width'))\n\n const contextStyle = CONTEXT_STYLE.map(\n (name) => `${name}:${style.getPropertyValue(name)}`\n ).join(';')\n\n return { contextStyle, paddingSize, borderSize, boxSizing }\n}\n\nexport function calcTextareaHeight(\n targetElement: HTMLTextAreaElement,\n minRows = 1,\n maxRows?: number\n): TextAreaHeight {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea')\n document.body.appendChild(hiddenTextarea)\n }\n\n const { paddingSize, borderSize, boxSizing, contextStyle } =\n calculateNodeStyling(targetElement)\n\n hiddenTextarea.setAttribute('style', `${contextStyle};${HIDDEN_STYLE}`)\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || ''\n\n let height = hiddenTextarea.scrollHeight\n const result = {} as TextAreaHeight\n\n if (boxSizing === 'border-box') {\n height = height + borderSize\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize\n }\n\n hiddenTextarea.value = ''\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize\n\n if (isNumber(minRows)) {\n let minHeight = singleRowHeight * minRows\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize\n }\n height = Math.max(minHeight, height)\n result.minHeight = `${minHeight}px`\n }\n if (isNumber(maxRows)) {\n let maxHeight = singleRowHeight * maxRows\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize\n }\n height = Math.min(maxHeight, height)\n }\n result.height = `${height}px`\n hiddenTextarea.parentNode?.removeChild(hiddenTextarea)\n hiddenTextarea = undefined\n\n return result\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |