UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

1 lines 2.65 kB
{"version":3,"file":"measureHtmlText.mjs","sources":["../../../../src/scene/text-html/utils/measureHtmlText.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport { HTMLTextRenderData } from '../HTMLTextRenderData';\n\nimport type { Size } from '../../../maths/misc/Size';\nimport type { HTMLTextStyle } from '../HTMLTextStyle';\n\nlet tempHTMLTextRenderData: HTMLTextRenderData;\n\n/**\n * Measures the HTML text without actually generating an image.\n * This is used to calculate the size of the text.\n * @param text - The text to measure\n * @param style - The style to use\n * @param fontStyleCSS - The font css to use\n * @param htmlTextRenderData - The HTMLTextRenderData to write the SVG to\n * @returns - The size of the text\n * @internal\n */\nexport function measureHtmlText(\n text: string,\n style: HTMLTextStyle,\n fontStyleCSS?: string,\n htmlTextRenderData?: HTMLTextRenderData\n): Size\n{\n htmlTextRenderData ||= tempHTMLTextRenderData || (tempHTMLTextRenderData = new HTMLTextRenderData());\n\n const { domElement, styleElement, svgRoot } = htmlTextRenderData;\n\n domElement.innerHTML = `<style>${style.cssStyle};</style><div style='padding:0'>${text}</div>`;\n\n domElement.setAttribute('style', 'transform-origin: top left; display: inline-block');\n\n if (fontStyleCSS)\n {\n styleElement.textContent = fontStyleCSS;\n }\n\n // Measure the contents using the shadow DOM\n document.body.appendChild(svgRoot);\n\n const contentBounds = domElement.getBoundingClientRect();\n\n svgRoot.remove();\n\n // padding is included in the CSS calculation, so we need to remove it here\n const doublePadding = style.padding * 2;\n\n return {\n width: contentBounds.width - doublePadding,\n height: contentBounds.height - doublePadding,\n };\n}\n"],"names":[],"mappings":";;;AAMA,IAAI,sBAAA,CAAA;AAYG,SAAS,eACZ,CAAA,IAAA,EACA,KACA,EAAA,YAAA,EACA,kBAEJ,EAAA;AACI,EAAuB,kBAAA,KAAA,kBAAA,GAAA,sBAAA,KAA2B,sBAAyB,GAAA,IAAI,kBAAmB,EAAA,CAAA,CAAA,CAAA;AAElG,EAAA,MAAM,EAAE,UAAA,EAAY,YAAc,EAAA,OAAA,EAAY,GAAA,kBAAA,CAAA;AAE9C,EAAA,UAAA,CAAW,SAAY,GAAA,CAAA,OAAA,EAAU,KAAM,CAAA,QAAQ,mCAAmC,IAAI,CAAA,MAAA,CAAA,CAAA;AAEtF,EAAW,UAAA,CAAA,YAAA,CAAa,SAAS,mDAAmD,CAAA,CAAA;AAEpF,EAAA,IAAI,YACJ,EAAA;AACI,IAAA,YAAA,CAAa,WAAc,GAAA,YAAA,CAAA;AAAA,GAC/B;AAGA,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;AAEjC,EAAM,MAAA,aAAA,GAAgB,WAAW,qBAAsB,EAAA,CAAA;AAEvD,EAAA,OAAA,CAAQ,MAAO,EAAA,CAAA;AAGf,EAAM,MAAA,aAAA,GAAgB,MAAM,OAAU,GAAA,CAAA,CAAA;AAEtC,EAAO,OAAA;AAAA,IACH,KAAA,EAAO,cAAc,KAAQ,GAAA,aAAA;AAAA,IAC7B,MAAA,EAAQ,cAAc,MAAS,GAAA,aAAA;AAAA,GACnC,CAAA;AACJ;;;;"}