@zeke-02/docx-editor-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +89 -0
- package/dist/ImageExtension-BN327PNe.d.mts +38 -0
- package/dist/ImageExtension-BlI5afZD.d.ts +38 -0
- package/dist/Subscribable-DOz6Ohoo.d.mts +33 -0
- package/dist/Subscribable-DOz6Ohoo.d.ts +33 -0
- package/dist/agent/index.d.mts +168 -0
- package/dist/agent/index.d.ts +168 -0
- package/dist/agent/index.js +1 -0
- package/dist/agent/index.mjs +1 -0
- package/dist/borders-BH_GoYU3.d.mts +58 -0
- package/dist/borders-Z9hPno2u.d.ts +58 -0
- package/dist/chunk-2HFQ4QTU.js +1 -0
- package/dist/chunk-2KHWHVTA.js +1 -0
- package/dist/chunk-2MSZXH6Q.mjs +2 -0
- package/dist/chunk-3COGZG7O.mjs +1 -0
- package/dist/chunk-3NRMSZX2.mjs +1 -0
- package/dist/chunk-3SXJPJSV.mjs +1 -0
- package/dist/chunk-44FHVKSI.js +1 -0
- package/dist/chunk-4BFNWPKW.js +1 -0
- package/dist/chunk-4G6AJ4ZM.js +1 -0
- package/dist/chunk-4GER4JLW.js +1 -0
- package/dist/chunk-4Q2IP5FW.js +1 -0
- package/dist/chunk-56D223FM.mjs +1 -0
- package/dist/chunk-5VBNOHRE.mjs +1 -0
- package/dist/chunk-67LVRQIR.mjs +1 -0
- package/dist/chunk-6LVPRTB6.js +1 -0
- package/dist/chunk-6NQSIC27.mjs +1 -0
- package/dist/chunk-6Y6LON6Y.mjs +1 -0
- package/dist/chunk-6ZXL3EIP.mjs +2 -0
- package/dist/chunk-7AMYZMCX.js +1 -0
- package/dist/chunk-7E5VBRDL.mjs +1 -0
- package/dist/chunk-7HANRHHL.js +1 -0
- package/dist/chunk-7LRR7RKE.mjs +15 -0
- package/dist/chunk-7RDCZLTU.js +1 -0
- package/dist/chunk-7U4I6BKJ.js +1 -0
- package/dist/chunk-7Z2AGPNQ.mjs +10 -0
- package/dist/chunk-AAPBAMD7.js +1 -0
- package/dist/chunk-AGVFAXVQ.mjs +9 -0
- package/dist/chunk-AMENZY5F.mjs +1 -0
- package/dist/chunk-ARHPXIBJ.mjs +1 -0
- package/dist/chunk-BGY3CB37.mjs +1 -0
- package/dist/chunk-BHBOAP6Z.js +3 -0
- package/dist/chunk-BOOHU5EW.mjs +1 -0
- package/dist/chunk-C2BAPYGJ.js +1 -0
- package/dist/chunk-CGJ6S3AH.mjs +1 -0
- package/dist/chunk-CKKO4JWE.mjs +1 -0
- package/dist/chunk-CTHHUJAB.mjs +2 -0
- package/dist/chunk-CUY2THAO.mjs +1 -0
- package/dist/chunk-CXQDYR2Y.js +1 -0
- package/dist/chunk-D4RPOJC7.js +1 -0
- package/dist/chunk-D6GO7UGD.mjs +1 -0
- package/dist/chunk-DC7S76ZX.js +1 -0
- package/dist/chunk-DROCYKAR.js +1 -0
- package/dist/chunk-DV6GWBUJ.js +2 -0
- package/dist/chunk-DZYYLV2O.js +1 -0
- package/dist/chunk-E4JMCA5X.js +2 -0
- package/dist/chunk-ERNVFCGN.js +59 -0
- package/dist/chunk-ESI4BSBF.js +1 -0
- package/dist/chunk-F44ZLDZS.js +4 -0
- package/dist/chunk-FCJWLEKT.mjs +1 -0
- package/dist/chunk-FDEDN2RC.mjs +0 -0
- package/dist/chunk-FRYMBAHP.js +3 -0
- package/dist/chunk-FWTP7BN7.mjs +4 -0
- package/dist/chunk-G3YJ5RKC.mjs +1 -0
- package/dist/chunk-GGPKPXON.js +1 -0
- package/dist/chunk-HKVAW3RE.js +1 -0
- package/dist/chunk-HQPWFUP5.js +2 -0
- package/dist/chunk-I6PMX4BO.js +1 -0
- package/dist/chunk-ILJUDEZ5.mjs +1 -0
- package/dist/chunk-IMKU4O3P.js +1 -0
- package/dist/chunk-IP2VXNWG.js +1 -0
- package/dist/chunk-J4J2Y6EU.js +10 -0
- package/dist/chunk-J7NADDC4.mjs +1 -0
- package/dist/chunk-JFZIXFRC.js +1 -0
- package/dist/chunk-JHZ3HLSR.mjs +1 -0
- package/dist/chunk-JY5EFI4D.js +1 -0
- package/dist/chunk-JZESIPVC.mjs +3 -0
- package/dist/chunk-K7GVLZS6.mjs +1 -0
- package/dist/chunk-KESNGXGO.js +1 -0
- package/dist/chunk-KQTB5Y7P.mjs +1 -0
- package/dist/chunk-L2U3TTAD.js +9 -0
- package/dist/chunk-LBKMYD3M.mjs +1 -0
- package/dist/chunk-LCICADWM.js +2 -0
- package/dist/chunk-LE67NTCN.mjs +1 -0
- package/dist/chunk-LTHT4A4S.js +1 -0
- package/dist/chunk-MCFHOMA2.js +2 -0
- package/dist/chunk-MCX4GVRX.mjs +1 -0
- package/dist/chunk-MJ5FQX7Q.js +1 -0
- package/dist/chunk-MJ6XZFVD.mjs +1 -0
- package/dist/chunk-MNOHUTKE.js +15 -0
- package/dist/chunk-MOKKS75W.mjs +3 -0
- package/dist/chunk-MP4QSEO2.mjs +1 -0
- package/dist/chunk-MVZOTKNL.mjs +1 -0
- package/dist/chunk-MZ7LW5CH.js +1 -0
- package/dist/chunk-MZOVDLYL.js +1 -0
- package/dist/chunk-N3Y5BUKV.js +1 -0
- package/dist/chunk-NBLJPT54.mjs +1 -0
- package/dist/chunk-NDDJ67FQ.mjs +1 -0
- package/dist/chunk-NMUHXIF5.js +1 -0
- package/dist/chunk-NXLJVVVE.js +1 -0
- package/dist/chunk-OBMN4VSM.mjs +1 -0
- package/dist/chunk-OCAX2KJQ.js +4 -0
- package/dist/chunk-OEXVWIHW.mjs +2 -0
- package/dist/chunk-OZMNIX6U.mjs +1 -0
- package/dist/chunk-PRRM64JO.mjs +1 -0
- package/dist/chunk-PXE2OWEA.mjs +1 -0
- package/dist/chunk-Q4CKLXWA.js +1 -0
- package/dist/chunk-Q5QOBZWT.mjs +1 -0
- package/dist/chunk-QJJQ53V6.mjs +1 -0
- package/dist/chunk-QLPQVR5W.mjs +1 -0
- package/dist/chunk-QLX4HX3I.mjs +59 -0
- package/dist/chunk-QPFJJPIC.mjs +1 -0
- package/dist/chunk-QYUPLKLP.mjs +1 -0
- package/dist/chunk-RFC2SXZ6.mjs +4 -0
- package/dist/chunk-RNOXNNSD.mjs +0 -0
- package/dist/chunk-RPIQG46O.mjs +1 -0
- package/dist/chunk-RQN4C636.js +1 -0
- package/dist/chunk-SHJBS42Y.js +1 -0
- package/dist/chunk-SORYYVJ7.js +1 -0
- package/dist/chunk-SWC6T7YQ.js +1 -0
- package/dist/chunk-TE2AF7FM.js +1 -0
- package/dist/chunk-TE2VQJZG.js +1 -0
- package/dist/chunk-TUIEV7Q7.js +1 -0
- package/dist/chunk-U4UCHBZ7.js +1 -0
- package/dist/chunk-U74VPTIU.js +1 -0
- package/dist/chunk-UCJGOQ4J.mjs +1 -0
- package/dist/chunk-UQ6WNWXX.js +1 -0
- package/dist/chunk-VHUVPHPI.mjs +1 -0
- package/dist/chunk-VQWZHPWI.mjs +1 -0
- package/dist/chunk-VW22RZ6C.mjs +1 -0
- package/dist/chunk-WLHNIXWC.mjs +2 -0
- package/dist/chunk-WLKRUBY4.js +1 -0
- package/dist/chunk-WTFLNYAT.mjs +1 -0
- package/dist/chunk-XNDGWWDT.js +1 -0
- package/dist/chunk-XXU7YQVV.js +1 -0
- package/dist/chunk-Y74ANBPV.js +1 -0
- package/dist/chunk-YMZ3F2FZ.mjs +1 -0
- package/dist/chunk-YTDWMXNS.js +1 -0
- package/dist/chunk-YUZQTRI2.js +1 -0
- package/dist/chunk-ZX26QZJ5.mjs +1 -0
- package/dist/chunk-ZY7EMTZ3.mjs +1 -0
- package/dist/colorResolver-BZ_yScf4.d.ts +390 -0
- package/dist/colorResolver-C6DtsoFI.d.mts +390 -0
- package/dist/colors-C3vA7HUU.d.mts +70 -0
- package/dist/colors-C3vA7HUU.d.ts +70 -0
- package/dist/content-5Mrz6w_b.d.mts +1360 -0
- package/dist/content-CmqAwdFL.d.ts +1360 -0
- package/dist/core-plugins.d.mts +63 -0
- package/dist/core-plugins.d.ts +63 -0
- package/dist/core-plugins.js +1 -0
- package/dist/core-plugins.mjs +1 -0
- package/dist/core.d.mts +398 -0
- package/dist/core.d.ts +398 -0
- package/dist/core.js +1 -0
- package/dist/core.mjs +1 -0
- package/dist/documentSerializer-BRaaXIHm.d.ts +36 -0
- package/dist/documentSerializer-DgO3A9av.d.mts +36 -0
- package/dist/docx/index.d.mts +1123 -0
- package/dist/docx/index.d.ts +1123 -0
- package/dist/docx/index.js +1 -0
- package/dist/docx/index.mjs +1 -0
- package/dist/docx/parser.d.mts +108 -0
- package/dist/docx/parser.d.ts +108 -0
- package/dist/docx/parser.js +1 -0
- package/dist/docx/parser.mjs +1 -0
- package/dist/docx/rezip.d.mts +312 -0
- package/dist/docx/rezip.d.ts +312 -0
- package/dist/docx/rezip.js +1 -0
- package/dist/docx/rezip.mjs +1 -0
- package/dist/docx/serializer/index.d.mts +125 -0
- package/dist/docx/serializer/index.d.ts +125 -0
- package/dist/docx/serializer/index.js +1 -0
- package/dist/docx/serializer/index.mjs +1 -0
- package/dist/docx/wrapTypes.d.mts +19 -0
- package/dist/docx/wrapTypes.d.ts +19 -0
- package/dist/docx/wrapTypes.js +1 -0
- package/dist/docx/wrapTypes.mjs +1 -0
- package/dist/docxInput-DTbCa48g.d.mts +21 -0
- package/dist/docxInput-DTbCa48g.d.ts +21 -0
- package/dist/executor-DZAMMQ35.js +1 -0
- package/dist/executor-ZCJRLT3Z.mjs +1 -0
- package/dist/findParagraphByParaId-Maw_8M5D.d.mts +28 -0
- package/dist/findParagraphByParaId-Maw_8M5D.d.ts +28 -0
- package/dist/fontLoader-8b4X-AIh.d.mts +283 -0
- package/dist/fontLoader-CK2QLq68.d.ts +283 -0
- package/dist/footnotes-lCH_P3N3.d.mts +78 -0
- package/dist/footnotes-skVvEHvZ.d.ts +78 -0
- package/dist/formatting-BH4hcZiq.d.mts +410 -0
- package/dist/formatting-_OXU8gLB.d.ts +410 -0
- package/dist/headerFooterLayout-72Vz7yp3.d.mts +292 -0
- package/dist/headerFooterLayout-Ca4ESDHF.d.ts +292 -0
- package/dist/headless.d.mts +109 -0
- package/dist/headless.d.ts +109 -0
- package/dist/headless.js +1 -0
- package/dist/headless.mjs +1 -0
- package/dist/layout-bridge/clickToPositionDom.d.mts +56 -0
- package/dist/layout-bridge/clickToPositionDom.d.ts +56 -0
- package/dist/layout-bridge/clickToPositionDom.js +1 -0
- package/dist/layout-bridge/clickToPositionDom.mjs +1 -0
- package/dist/layout-bridge/index.d.mts +462 -0
- package/dist/layout-bridge/index.d.ts +462 -0
- package/dist/layout-bridge/index.js +1 -0
- package/dist/layout-bridge/index.mjs +1 -0
- package/dist/layout-bridge/measuring/index.d.mts +377 -0
- package/dist/layout-bridge/measuring/index.d.ts +377 -0
- package/dist/layout-bridge/measuring/index.js +1 -0
- package/dist/layout-bridge/measuring/index.mjs +1 -0
- package/dist/layout-bridge/tableInsertHover.d.mts +45 -0
- package/dist/layout-bridge/tableInsertHover.d.ts +45 -0
- package/dist/layout-bridge/tableInsertHover.js +1 -0
- package/dist/layout-bridge/tableInsertHover.mjs +1 -0
- package/dist/layout-bridge/toFlowBlocks.d.mts +130 -0
- package/dist/layout-bridge/toFlowBlocks.d.ts +130 -0
- package/dist/layout-bridge/toFlowBlocks.js +1 -0
- package/dist/layout-bridge/toFlowBlocks.mjs +1 -0
- package/dist/layout-engine/index.d.mts +352 -0
- package/dist/layout-engine/index.d.ts +352 -0
- package/dist/layout-engine/index.js +1 -0
- package/dist/layout-engine/index.mjs +1 -0
- package/dist/layout-engine/types.d.mts +943 -0
- package/dist/layout-engine/types.d.ts +943 -0
- package/dist/layout-engine/types.js +1 -0
- package/dist/layout-engine/types.mjs +1 -0
- package/dist/layout-painter/index.d.mts +22 -0
- package/dist/layout-painter/index.d.ts +22 -0
- package/dist/layout-painter/index.js +1 -0
- package/dist/layout-painter/index.mjs +1 -0
- package/dist/layout-painter/renderPage.d.mts +680 -0
- package/dist/layout-painter/renderPage.d.ts +680 -0
- package/dist/layout-painter/renderPage.js +1 -0
- package/dist/layout-painter/renderPage.mjs +1 -0
- package/dist/managers/AutoSaveManager.d.mts +95 -0
- package/dist/managers/AutoSaveManager.d.ts +95 -0
- package/dist/managers/AutoSaveManager.js +1 -0
- package/dist/managers/AutoSaveManager.mjs +1 -0
- package/dist/managers/TableSelectionManager.d.mts +94 -0
- package/dist/managers/TableSelectionManager.d.ts +94 -0
- package/dist/managers/TableSelectionManager.js +1 -0
- package/dist/managers/TableSelectionManager.mjs +1 -0
- package/dist/managers/types.d.mts +121 -0
- package/dist/managers/types.d.ts +121 -0
- package/dist/managers/types.js +1 -0
- package/dist/managers/types.mjs +0 -0
- package/dist/marks-BY573yZn.d.mts +56 -0
- package/dist/marks-CjC9tF5k.d.ts +56 -0
- package/dist/mcp-cli.mjs +138 -0
- package/dist/mcp.d.mts +183 -0
- package/dist/mcp.d.ts +183 -0
- package/dist/mcp.js +16 -0
- package/dist/mcp.mjs +16 -0
- package/dist/nodes-7753Bgi_.d.mts +320 -0
- package/dist/nodes-CC_nwkT_.d.ts +320 -0
- package/dist/plugin-api/RenderedDomContext.d.mts +74 -0
- package/dist/plugin-api/RenderedDomContext.d.ts +74 -0
- package/dist/plugin-api/RenderedDomContext.js +1 -0
- package/dist/plugin-api/RenderedDomContext.mjs +1 -0
- package/dist/plugin-api/index.d.mts +15 -0
- package/dist/plugin-api/index.d.ts +15 -0
- package/dist/plugin-api/index.js +1 -0
- package/dist/plugin-api/index.mjs +0 -0
- package/dist/plugin-api/resolveItemPositions.d.mts +54 -0
- package/dist/plugin-api/resolveItemPositions.d.ts +54 -0
- package/dist/plugin-api/resolveItemPositions.js +1 -0
- package/dist/plugin-api/resolveItemPositions.mjs +1 -0
- package/dist/plugin-api/types.d.mts +190 -0
- package/dist/plugin-api/types.d.ts +190 -0
- package/dist/plugin-api/types.js +1 -0
- package/dist/plugin-api/types.mjs +0 -0
- package/dist/processTemplate-GPFDLQMX.mjs +1 -0
- package/dist/processTemplate-HH2E3HBO.js +1 -0
- package/dist/prosemirror/commands/formatting.d.mts +100 -0
- package/dist/prosemirror/commands/formatting.d.ts +100 -0
- package/dist/prosemirror/commands/formatting.js +1 -0
- package/dist/prosemirror/commands/formatting.mjs +1 -0
- package/dist/prosemirror/commands/index.d.mts +188 -0
- package/dist/prosemirror/commands/index.d.ts +188 -0
- package/dist/prosemirror/commands/index.js +1 -0
- package/dist/prosemirror/commands/index.mjs +1 -0
- package/dist/prosemirror/commands/pageBreak.d.mts +20 -0
- package/dist/prosemirror/commands/pageBreak.d.ts +20 -0
- package/dist/prosemirror/commands/pageBreak.js +1 -0
- package/dist/prosemirror/commands/pageBreak.mjs +1 -0
- package/dist/prosemirror/commands/paragraph.d.mts +70 -0
- package/dist/prosemirror/commands/paragraph.d.ts +70 -0
- package/dist/prosemirror/commands/paragraph.js +1 -0
- package/dist/prosemirror/commands/paragraph.mjs +1 -0
- package/dist/prosemirror/conversion/fromProseDoc.d.mts +65 -0
- package/dist/prosemirror/conversion/fromProseDoc.d.ts +65 -0
- package/dist/prosemirror/conversion/fromProseDoc.js +1 -0
- package/dist/prosemirror/conversion/fromProseDoc.mjs +1 -0
- package/dist/prosemirror/conversion/index.d.mts +85 -0
- package/dist/prosemirror/conversion/index.d.ts +85 -0
- package/dist/prosemirror/conversion/index.js +1 -0
- package/dist/prosemirror/conversion/index.mjs +1 -0
- package/dist/prosemirror/editor.css +823 -0
- package/dist/prosemirror/extensions/index.d.mts +79 -0
- package/dist/prosemirror/extensions/index.d.ts +79 -0
- package/dist/prosemirror/extensions/index.js +1 -0
- package/dist/prosemirror/extensions/index.mjs +1 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.d.mts +30 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +30 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.js +1 -0
- package/dist/prosemirror/extensions/nodes/TableExtension.mjs +1 -0
- package/dist/prosemirror/index.d.mts +70 -0
- package/dist/prosemirror/index.d.ts +70 -0
- package/dist/prosemirror/index.js +1 -0
- package/dist/prosemirror/index.mjs +1 -0
- package/dist/prosemirror/plugins/index.d.mts +154 -0
- package/dist/prosemirror/plugins/index.d.ts +154 -0
- package/dist/prosemirror/plugins/index.js +1 -0
- package/dist/prosemirror/plugins/index.mjs +1 -0
- package/dist/prosemirror/plugins/selectionTracker.d.mts +78 -0
- package/dist/prosemirror/plugins/selectionTracker.d.ts +78 -0
- package/dist/prosemirror/plugins/selectionTracker.js +1 -0
- package/dist/prosemirror/plugins/selectionTracker.mjs +1 -0
- package/dist/prosemirror/schema/index.d.mts +29 -0
- package/dist/prosemirror/schema/index.d.ts +29 -0
- package/dist/prosemirror/schema/index.js +1 -0
- package/dist/prosemirror/schema/index.mjs +1 -0
- package/dist/prosemirror/styles/index.d.mts +124 -0
- package/dist/prosemirror/styles/index.d.ts +124 -0
- package/dist/prosemirror/styles/index.js +1 -0
- package/dist/prosemirror/styles/index.mjs +1 -0
- package/dist/prosemirror/template/prosemirror-plugin.d.mts +66 -0
- package/dist/prosemirror/template/prosemirror-plugin.d.ts +66 -0
- package/dist/prosemirror/template/prosemirror-plugin.js +15 -0
- package/dist/prosemirror/template/prosemirror-plugin.mjs +15 -0
- package/dist/prosemirror/utils/ClickPositionResolver.d.mts +109 -0
- package/dist/prosemirror/utils/ClickPositionResolver.d.ts +109 -0
- package/dist/prosemirror/utils/ClickPositionResolver.js +1 -0
- package/dist/prosemirror/utils/ClickPositionResolver.mjs +1 -0
- package/dist/prosemirror/utils/LayoutSelectionGate.d.mts +81 -0
- package/dist/prosemirror/utils/LayoutSelectionGate.d.ts +81 -0
- package/dist/prosemirror/utils/LayoutSelectionGate.js +1 -0
- package/dist/prosemirror/utils/LayoutSelectionGate.mjs +1 -0
- package/dist/prosemirror/utils/PointerEventHandler.d.mts +94 -0
- package/dist/prosemirror/utils/PointerEventHandler.d.ts +94 -0
- package/dist/prosemirror/utils/PointerEventHandler.js +1 -0
- package/dist/prosemirror/utils/PointerEventHandler.mjs +1 -0
- package/dist/prosemirror/utils/extractTrackedChanges.d.mts +85 -0
- package/dist/prosemirror/utils/extractTrackedChanges.d.ts +85 -0
- package/dist/prosemirror/utils/extractTrackedChanges.js +1 -0
- package/dist/prosemirror/utils/extractTrackedChanges.mjs +1 -0
- package/dist/prosemirror/utils/visualLineNavigation.d.mts +45 -0
- package/dist/prosemirror/utils/visualLineNavigation.d.ts +45 -0
- package/dist/prosemirror/utils/visualLineNavigation.js +1 -0
- package/dist/prosemirror/utils/visualLineNavigation.mjs +1 -0
- package/dist/registry-Cpyybgij.d.mts +165 -0
- package/dist/registry-E5pahPKL.d.ts +165 -0
- package/dist/selectionContext-BPAqgNgk.d.ts +570 -0
- package/dist/selectionContext-CoZat7QZ.d.mts +570 -0
- package/dist/selectiveSave-CWaPEv0B.d.ts +31 -0
- package/dist/selectiveSave-jinP_4xa.d.mts +31 -0
- package/dist/selectiveXmlPatch-ypkxlTD_.d.mts +23 -0
- package/dist/selectiveXmlPatch-ypkxlTD_.d.ts +23 -0
- package/dist/styles-BBv7doYK.d.ts +233 -0
- package/dist/styles-EI2lxeEN.d.mts +233 -0
- package/dist/table-P8esKWAc.d.ts +82 -0
- package/dist/table-_t_W8oQf.d.mts +82 -0
- package/dist/types/agentApi.d.mts +467 -0
- package/dist/types/agentApi.d.ts +467 -0
- package/dist/types/agentApi.js +1 -0
- package/dist/types/agentApi.mjs +1 -0
- package/dist/types/content.d.mts +18 -0
- package/dist/types/content.d.ts +18 -0
- package/dist/types/content.js +1 -0
- package/dist/types/content.mjs +0 -0
- package/dist/types/document.d.mts +123 -0
- package/dist/types/document.d.ts +123 -0
- package/dist/types/document.js +1 -0
- package/dist/types/document.mjs +0 -0
- package/dist/types-DXG7vqe9.d.ts +311 -0
- package/dist/types-RchZmPFN.d.mts +137 -0
- package/dist/types-RchZmPFN.d.ts +137 -0
- package/dist/types-dYdjUZMo.d.mts +311 -0
- package/dist/utils/cardStyles.d.mts +31 -0
- package/dist/utils/cardStyles.d.ts +31 -0
- package/dist/utils/cardStyles.js +1 -0
- package/dist/utils/cardStyles.mjs +1 -0
- package/dist/utils/comments.d.mts +121 -0
- package/dist/utils/comments.d.ts +121 -0
- package/dist/utils/comments.js +1 -0
- package/dist/utils/comments.mjs +1 -0
- package/dist/utils/findReplace.d.mts +114 -0
- package/dist/utils/findReplace.d.ts +114 -0
- package/dist/utils/findReplace.js +2 -0
- package/dist/utils/findReplace.mjs +2 -0
- package/dist/utils/findVerticalScrollParent.d.mts +25 -0
- package/dist/utils/findVerticalScrollParent.d.ts +25 -0
- package/dist/utils/findVerticalScrollParent.js +1 -0
- package/dist/utils/findVerticalScrollParent.mjs +1 -0
- package/dist/utils/fontOptions.d.mts +21 -0
- package/dist/utils/fontOptions.d.ts +21 -0
- package/dist/utils/fontOptions.js +1 -0
- package/dist/utils/fontOptions.mjs +1 -0
- package/dist/utils/headingCollector.d.mts +32 -0
- package/dist/utils/headingCollector.d.ts +32 -0
- package/dist/utils/headingCollector.js +1 -0
- package/dist/utils/headingCollector.mjs +1 -0
- package/dist/utils/highlightColors.d.mts +14 -0
- package/dist/utils/highlightColors.d.ts +14 -0
- package/dist/utils/highlightColors.js +1 -0
- package/dist/utils/highlightColors.mjs +1 -0
- package/dist/utils/index.d.mts +710 -0
- package/dist/utils/index.d.ts +710 -0
- package/dist/utils/index.js +82 -0
- package/dist/utils/index.mjs +82 -0
- package/dist/utils/listState.d.mts +27 -0
- package/dist/utils/listState.d.ts +27 -0
- package/dist/utils/listState.js +1 -0
- package/dist/utils/listState.mjs +1 -0
- package/dist/utils/reportIssue.d.mts +23 -0
- package/dist/utils/reportIssue.d.ts +23 -0
- package/dist/utils/reportIssue.js +2 -0
- package/dist/utils/reportIssue.mjs +2 -0
- package/dist/utils/sidebarConstants.d.mts +10 -0
- package/dist/utils/sidebarConstants.d.ts +10 -0
- package/dist/utils/sidebarConstants.js +1 -0
- package/dist/utils/sidebarConstants.mjs +1 -0
- package/dist/utils/textSelection.d.mts +92 -0
- package/dist/utils/textSelection.d.ts +92 -0
- package/dist/utils/textSelection.js +1 -0
- package/dist/utils/textSelection.mjs +1 -0
- package/dist/utils/units.d.mts +91 -0
- package/dist/utils/units.d.ts +91 -0
- package/dist/utils/units.js +1 -0
- package/dist/utils/units.mjs +1 -0
- package/dist/variableDetector-DF3-nxUC.d.mts +115 -0
- package/dist/variableDetector-sBkgVh3f.d.ts +115 -0
- package/package.json +565 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text Measurement Module
|
|
3
|
+
*
|
|
4
|
+
* Provides text measurement utilities for the layout engine.
|
|
5
|
+
* Uses Canvas API for accurate, cached measurements.
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
import { WrapTextDirection, TextRun, ParagraphBlock, ParagraphMeasure, FlowBlock, Measure } from '../../layout-engine/types.js';
|
|
10
|
+
import '../../content-CmqAwdFL.js';
|
|
11
|
+
import '../../formatting-_OXU8gLB.js';
|
|
12
|
+
import '../../colors-C3vA7HUU.js';
|
|
13
|
+
import '../../docx/wrapTypes.js';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Measurement container for text layout
|
|
17
|
+
*
|
|
18
|
+
* Uses HTML5 Canvas API to measure text runs and calculate typography metrics.
|
|
19
|
+
* Canvas-based measurement is more accurate and performant than DOM-based approaches.
|
|
20
|
+
*
|
|
21
|
+
* Typography conventions (matching Word behavior):
|
|
22
|
+
* - ascent ≈ fontSize * 0.8 (baseline to top)
|
|
23
|
+
* - descent ≈ fontSize * 0.2 (baseline to bottom)
|
|
24
|
+
* - lineHeight from font metrics (fontBoundingBoxAscent + fontBoundingBoxDescent),
|
|
25
|
+
* falling back to fontSize * 1.0 (OOXML spec default single spacing)
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Font styling properties for measurement
|
|
29
|
+
*/
|
|
30
|
+
interface FontStyle {
|
|
31
|
+
fontFamily?: string;
|
|
32
|
+
fontSize?: number;
|
|
33
|
+
bold?: boolean;
|
|
34
|
+
italic?: boolean;
|
|
35
|
+
letterSpacing?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Typography metrics for a font
|
|
39
|
+
*/
|
|
40
|
+
interface FontMetrics {
|
|
41
|
+
fontSize: number;
|
|
42
|
+
ascent: number;
|
|
43
|
+
descent: number;
|
|
44
|
+
lineHeight: number;
|
|
45
|
+
fontFamily: string;
|
|
46
|
+
/** OS/2 single-line ratio for OOXML line spacing calculation */
|
|
47
|
+
singleLineRatio: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Result of measuring a text string
|
|
51
|
+
*/
|
|
52
|
+
interface TextMeasurement {
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
ascent: number;
|
|
56
|
+
descent: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Result of measuring a run of text
|
|
60
|
+
*/
|
|
61
|
+
interface RunMeasurement {
|
|
62
|
+
width: number;
|
|
63
|
+
charWidths: number[];
|
|
64
|
+
metrics: FontMetrics;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get or create a canvas 2D context for text measurement
|
|
68
|
+
*/
|
|
69
|
+
declare function getCanvasContext(): CanvasRenderingContext2D;
|
|
70
|
+
/**
|
|
71
|
+
* Reset the canvas context (useful for testing)
|
|
72
|
+
*/
|
|
73
|
+
declare function resetCanvasContext(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Build a CSS font string from styling properties
|
|
76
|
+
*
|
|
77
|
+
* Font sizes are in points and need to be converted to pixels for canvas.
|
|
78
|
+
* 1pt = 96/72 px ≈ 1.333px at standard web DPI.
|
|
79
|
+
*
|
|
80
|
+
* Uses the font resolver to get category-appropriate fallback stacks
|
|
81
|
+
* (serif fonts get serif fallbacks, sans-serif get sans-serif, etc.)
|
|
82
|
+
* matching the same stacks used in rendering for consistent measurements.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* buildFontString({ fontFamily: "Arial", fontSize: 12, bold: true })
|
|
86
|
+
* // Returns: "bold 16px Arial, Arimo, Helvetica, sans-serif" (12pt = 16px)
|
|
87
|
+
*/
|
|
88
|
+
declare function buildFontString(style: FontStyle): string;
|
|
89
|
+
/**
|
|
90
|
+
* Get typography metrics for a given font size and family
|
|
91
|
+
*
|
|
92
|
+
* Uses Canvas TextMetrics API when available for precise metrics,
|
|
93
|
+
* falls back to ratio-based approximations.
|
|
94
|
+
*/
|
|
95
|
+
declare function getFontMetrics(style: FontStyle): FontMetrics;
|
|
96
|
+
/**
|
|
97
|
+
* Measure the width of a text string with specific styling
|
|
98
|
+
*
|
|
99
|
+
* @param text - The text to measure
|
|
100
|
+
* @param style - Font styling properties
|
|
101
|
+
* @returns Width in pixels
|
|
102
|
+
*/
|
|
103
|
+
declare function measureTextWidth(text: string, style: FontStyle): number;
|
|
104
|
+
/**
|
|
105
|
+
* Measure text and return full metrics
|
|
106
|
+
*/
|
|
107
|
+
declare function measureText(text: string, style: FontStyle): TextMeasurement;
|
|
108
|
+
/**
|
|
109
|
+
* Measure a run of text and return per-character widths for click positioning
|
|
110
|
+
*
|
|
111
|
+
* @param text - The text to measure
|
|
112
|
+
* @param style - Font styling properties
|
|
113
|
+
* @returns Run measurement with width and per-character widths
|
|
114
|
+
*/
|
|
115
|
+
declare function measureRun(text: string, style: FontStyle): RunMeasurement;
|
|
116
|
+
/**
|
|
117
|
+
* Find the character offset at a given X position within a text run
|
|
118
|
+
*
|
|
119
|
+
* @param x - X position relative to run start
|
|
120
|
+
* @param charWidths - Per-character widths from measureRun
|
|
121
|
+
* @returns Character offset (0-based index)
|
|
122
|
+
*/
|
|
123
|
+
declare function findCharacterAtX(x: number, charWidths: number[]): number;
|
|
124
|
+
/**
|
|
125
|
+
* Get the X position of a character offset within a text run
|
|
126
|
+
*
|
|
127
|
+
* @param offset - Character offset (0-based index)
|
|
128
|
+
* @param charWidths - Per-character widths from measureRun
|
|
129
|
+
* @returns X position in pixels
|
|
130
|
+
*/
|
|
131
|
+
declare function getXForCharacter(offset: number, charWidths: number[]): number;
|
|
132
|
+
/**
|
|
133
|
+
* Convert twips to pixels
|
|
134
|
+
*/
|
|
135
|
+
declare function twipsToPx(twips: number): number;
|
|
136
|
+
/**
|
|
137
|
+
* Convert pixels to twips
|
|
138
|
+
*/
|
|
139
|
+
declare function pxToTwips(px: number): number;
|
|
140
|
+
/**
|
|
141
|
+
* Convert points to pixels
|
|
142
|
+
*/
|
|
143
|
+
declare function ptToPx(pt: number): number;
|
|
144
|
+
/**
|
|
145
|
+
* Convert pixels to points
|
|
146
|
+
*/
|
|
147
|
+
declare function pxToPt(px: number): number;
|
|
148
|
+
/**
|
|
149
|
+
* Convert OOXML half-points to pixels
|
|
150
|
+
* OOXML font sizes are in half-points (24 = 12pt)
|
|
151
|
+
*/
|
|
152
|
+
declare function halfPtToPx(halfPt: number): number;
|
|
153
|
+
/**
|
|
154
|
+
* Convert pixels to OOXML half-points
|
|
155
|
+
*/
|
|
156
|
+
declare function pxToHalfPt(px: number): number;
|
|
157
|
+
|
|
158
|
+
interface FloatingExclusionRect {
|
|
159
|
+
/** Which side the object is on for simple one-sided wrapping. */
|
|
160
|
+
side: 'left' | 'right';
|
|
161
|
+
/** X position relative to the content area. */
|
|
162
|
+
x: number;
|
|
163
|
+
/** Y position relative to the content area. */
|
|
164
|
+
y: number;
|
|
165
|
+
width: number;
|
|
166
|
+
height: number;
|
|
167
|
+
distTop: number;
|
|
168
|
+
distBottom: number;
|
|
169
|
+
distLeft: number;
|
|
170
|
+
distRight: number;
|
|
171
|
+
wrapText?: WrapTextDirection;
|
|
172
|
+
wrapType?: string;
|
|
173
|
+
}
|
|
174
|
+
interface FloatingImageZone {
|
|
175
|
+
leftMargin: number;
|
|
176
|
+
rightMargin: number;
|
|
177
|
+
topY: number;
|
|
178
|
+
bottomY: number;
|
|
179
|
+
segments?: FloatingLineSegmentZone[];
|
|
180
|
+
}
|
|
181
|
+
interface FloatingLineSegmentZone {
|
|
182
|
+
leftOffset: number;
|
|
183
|
+
availableWidth: number;
|
|
184
|
+
}
|
|
185
|
+
interface FloatingLineMargins {
|
|
186
|
+
leftMargin: number;
|
|
187
|
+
rightMargin: number;
|
|
188
|
+
segments?: FloatingLineSegmentZone[];
|
|
189
|
+
}
|
|
190
|
+
declare function rectsToFloatingZones(rects: FloatingExclusionRect[], contentWidth: number): FloatingImageZone[];
|
|
191
|
+
declare function getFloatingMargins(lineY: number, lineHeight: number, zones: FloatingImageZone[] | undefined, paragraphYOffset: number): FloatingLineMargins;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Paragraph measurement module
|
|
195
|
+
*
|
|
196
|
+
* Measures paragraph blocks and computes line breaking.
|
|
197
|
+
* Converts runs into measured lines with typography metrics.
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Options for paragraph measurement
|
|
202
|
+
*/
|
|
203
|
+
interface MeasureParagraphOptions {
|
|
204
|
+
/** Floating image exclusion zones that affect line widths */
|
|
205
|
+
floatingZones?: FloatingImageZone[];
|
|
206
|
+
/** Y offset of this paragraph relative to the exclusion zones (default: 0) */
|
|
207
|
+
paragraphYOffset?: number;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* When a float's wrap margins consume the entire content width (or more),
|
|
211
|
+
* there is no horizontal strip beside it for body text. Word renders the
|
|
212
|
+
* following lines at full content width instead of squeezing them into a
|
|
213
|
+
* 1-pixel column. Unchecked margins from near-full-width tables/images can
|
|
214
|
+
* exceed contentWidth and collapse every line to ~1 glyph (the "single
|
|
215
|
+
* character per line after a wide floating table" bug).
|
|
216
|
+
*
|
|
217
|
+
* Returned margins are zeroed when:
|
|
218
|
+
* - either side alone is >= contentWidth (no strip on that side at all), or
|
|
219
|
+
* - their sum is >= contentWidth (no strip exists between the two sides).
|
|
220
|
+
*/
|
|
221
|
+
declare function clampFloatingWrapMargins(leftMargin: number, rightMargin: number, contentWidth: number): {
|
|
222
|
+
leftMargin: number;
|
|
223
|
+
rightMargin: number;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Measure a paragraph block and compute line breaks
|
|
227
|
+
*
|
|
228
|
+
* @param block - The paragraph block to measure
|
|
229
|
+
* @param maxWidth - Maximum available width for the paragraph
|
|
230
|
+
* @param options - Optional measurement options (floating zones, Y offset)
|
|
231
|
+
* @returns ParagraphMeasure with lines and total height
|
|
232
|
+
*/
|
|
233
|
+
declare function measureParagraph(block: ParagraphBlock, maxWidth: number, options?: MeasureParagraphOptions): ParagraphMeasure;
|
|
234
|
+
/**
|
|
235
|
+
* Measure multiple paragraph blocks
|
|
236
|
+
*
|
|
237
|
+
* @param blocks - Array of paragraph blocks to measure
|
|
238
|
+
* @param maxWidth - Maximum available width
|
|
239
|
+
* @returns Array of ParagraphMeasure results
|
|
240
|
+
*/
|
|
241
|
+
declare function measureParagraphs(blocks: ParagraphBlock[], maxWidth: number): ParagraphMeasure[];
|
|
242
|
+
/**
|
|
243
|
+
* Get per-character widths for a text run (for click positioning)
|
|
244
|
+
*
|
|
245
|
+
* @param run - The text run to measure
|
|
246
|
+
* @returns Array of character widths
|
|
247
|
+
*/
|
|
248
|
+
declare function getRunCharWidths(run: TextRun): number[];
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Floating-aware block measurement pipeline.
|
|
252
|
+
*
|
|
253
|
+
* Pre-scans a block list to extract exclusion zones from anchored images,
|
|
254
|
+
* floating tables, and floating text boxes; groups co-located floats so
|
|
255
|
+
* their combined exclusion applies starting from the earliest anchor; then
|
|
256
|
+
* walks the blocks calling the caller-supplied `measureBlock` with the
|
|
257
|
+
* active zones and cumulative Y at each step.
|
|
258
|
+
*
|
|
259
|
+
* Adapters (React, Vue) provide their own `measureBlock` so they can
|
|
260
|
+
* decide e.g. whether to cache paragraph measures. The orchestration,
|
|
261
|
+
* extraction, and grouping live here so both adapters stay in lockstep.
|
|
262
|
+
*
|
|
263
|
+
* @packageDocumentation
|
|
264
|
+
* @public
|
|
265
|
+
*/
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Block-measurement callback shape passed to {@link measureBlocksWithFloats}.
|
|
269
|
+
* Adapters (React, Vue) supply this so they can decide platform-specific
|
|
270
|
+
* concerns (e.g. paragraph-measure caching, per-section width) while
|
|
271
|
+
* sharing the floating-zone orchestration. This is adapter-author API,
|
|
272
|
+
* not end-consumer API.
|
|
273
|
+
*
|
|
274
|
+
* @public
|
|
275
|
+
*/
|
|
276
|
+
type MeasureBlockFn = (block: FlowBlock, contentWidth: number, floatingZones?: FloatingImageZone[], cumulativeY?: number) => Measure;
|
|
277
|
+
/**
|
|
278
|
+
* Walk `blocks` and produce one `Measure` per block. Before measuring, this
|
|
279
|
+
* extracts floating exclusion zones (images / floating tables / floating
|
|
280
|
+
* textboxes), groups overlapping co-located floats, and threads the active
|
|
281
|
+
* zones plus cumulative Y into each `measureBlock` call.
|
|
282
|
+
*
|
|
283
|
+
* @public
|
|
284
|
+
*/
|
|
285
|
+
declare function measureBlocksWithFloats(blocks: FlowBlock[], contentWidth: number | number[], measureBlock: MeasureBlockFn): Measure[];
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Measurement Cache
|
|
289
|
+
*
|
|
290
|
+
* LRU cache for text width measurements and paragraph layout results.
|
|
291
|
+
* Improves performance by avoiding repeated measurements of identical content.
|
|
292
|
+
*/
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Get cached text width or return undefined
|
|
296
|
+
*/
|
|
297
|
+
declare function getCachedTextWidth(text: string, font: string, letterSpacing?: number): number | undefined;
|
|
298
|
+
/**
|
|
299
|
+
* Store text width in cache
|
|
300
|
+
*/
|
|
301
|
+
declare function setCachedTextWidth(text: string, font: string, letterSpacing: number, width: number): void;
|
|
302
|
+
/**
|
|
303
|
+
* Clear the text width cache
|
|
304
|
+
*/
|
|
305
|
+
declare function clearTextWidthCache(): void;
|
|
306
|
+
/**
|
|
307
|
+
* Set the maximum size of the text width cache
|
|
308
|
+
*/
|
|
309
|
+
declare function setTextCacheSize(size: number): void;
|
|
310
|
+
/**
|
|
311
|
+
* Get current text width cache size
|
|
312
|
+
*/
|
|
313
|
+
declare function getTextCacheSize(): number;
|
|
314
|
+
/**
|
|
315
|
+
* Cached font metrics entry
|
|
316
|
+
*/
|
|
317
|
+
interface FontMetricsEntry {
|
|
318
|
+
ascent: number;
|
|
319
|
+
descent: number;
|
|
320
|
+
lineHeight: number;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Get cached font metrics or return undefined
|
|
324
|
+
*/
|
|
325
|
+
declare function getCachedFontMetrics(fontFamily: string, fontSize: number, bold?: boolean, italic?: boolean): FontMetricsEntry | undefined;
|
|
326
|
+
/**
|
|
327
|
+
* Store font metrics in cache
|
|
328
|
+
*/
|
|
329
|
+
declare function setCachedFontMetrics(fontFamily: string, fontSize: number, bold: boolean, italic: boolean, metrics: FontMetricsEntry): void;
|
|
330
|
+
/**
|
|
331
|
+
* Clear the font metrics cache
|
|
332
|
+
*/
|
|
333
|
+
declare function clearFontMetricsCache(): void;
|
|
334
|
+
/**
|
|
335
|
+
* Set the maximum size of the font metrics cache
|
|
336
|
+
*/
|
|
337
|
+
declare function setFontCacheSize(size: number): void;
|
|
338
|
+
/**
|
|
339
|
+
* Get current font metrics cache size
|
|
340
|
+
*/
|
|
341
|
+
declare function getFontCacheSize(): number;
|
|
342
|
+
/**
|
|
343
|
+
* Generate a simple hash for a paragraph block
|
|
344
|
+
* Used as cache key to identify identical content
|
|
345
|
+
*/
|
|
346
|
+
declare function hashParagraphBlock(block: ParagraphBlock): string;
|
|
347
|
+
/**
|
|
348
|
+
* Get cached paragraph measurement or return undefined
|
|
349
|
+
*/
|
|
350
|
+
declare function getCachedParagraphMeasure(block: ParagraphBlock, maxWidth: number): ParagraphMeasure | undefined;
|
|
351
|
+
/**
|
|
352
|
+
* Store paragraph measurement in cache
|
|
353
|
+
*/
|
|
354
|
+
declare function setCachedParagraphMeasure(block: ParagraphBlock, maxWidth: number, measure: ParagraphMeasure): void;
|
|
355
|
+
/**
|
|
356
|
+
* Clear the paragraph measure cache
|
|
357
|
+
*/
|
|
358
|
+
declare function clearParagraphMeasureCache(): void;
|
|
359
|
+
/**
|
|
360
|
+
* Set the maximum size of the paragraph measure cache
|
|
361
|
+
*/
|
|
362
|
+
declare function setParagraphCacheSize(size: number): void;
|
|
363
|
+
/**
|
|
364
|
+
* Get current paragraph measure cache size
|
|
365
|
+
*/
|
|
366
|
+
declare function getParagraphCacheSize(): number;
|
|
367
|
+
/**
|
|
368
|
+
* Clear all measurement caches
|
|
369
|
+
* Call when fonts change, page width changes, or for testing
|
|
370
|
+
*/
|
|
371
|
+
declare function clearAllCaches(): void;
|
|
372
|
+
/**
|
|
373
|
+
* Get total size of all caches
|
|
374
|
+
*/
|
|
375
|
+
declare function getTotalCacheSize(): number;
|
|
376
|
+
|
|
377
|
+
export { type FloatingExclusionRect, type FloatingImageZone, type FloatingLineSegmentZone, type FontMetrics, type FontStyle, type MeasureBlockFn, type MeasureParagraphOptions, type RunMeasurement, type TextMeasurement, buildFontString, clampFloatingWrapMargins, clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, findCharacterAtX, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getCanvasContext, getFloatingMargins, getFontCacheSize, getFontMetrics, getParagraphCacheSize, getRunCharWidths, getTextCacheSize, getTotalCacheSize, getXForCharacter, halfPtToPx, hashParagraphBlock, measureBlocksWithFloats, measureParagraph, measureParagraphs, measureRun, measureText, measureTextWidth, ptToPx, pxToHalfPt, pxToPt, pxToTwips, rectsToFloatingZones, resetCanvasContext, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFontCacheSize, setParagraphCacheSize, setTextCacheSize, twipsToPx };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkSORYYVJ7_js=require('../../chunk-SORYYVJ7.js'),chunkLTHT4A4S_js=require('../../chunk-LTHT4A4S.js');require('../../chunk-IMKU4O3P.js'),require('../../chunk-DROCYKAR.js'),require('../../chunk-44FHVKSI.js'),require('../../chunk-JFZIXFRC.js'),require('../../chunk-DV6GWBUJ.js'),require('../../chunk-N3Y5BUKV.js'),require('../../chunk-4Q2IP5FW.js'),require('../../chunk-DC7S76ZX.js');Object.defineProperty(exports,"clearAllCaches",{enumerable:true,get:function(){return chunkSORYYVJ7_js.B}});Object.defineProperty(exports,"clearFontMetricsCache",{enumerable:true,get:function(){return chunkSORYYVJ7_js.s}});Object.defineProperty(exports,"clearParagraphMeasureCache",{enumerable:true,get:function(){return chunkSORYYVJ7_js.y}});Object.defineProperty(exports,"clearTextWidthCache",{enumerable:true,get:function(){return chunkSORYYVJ7_js.n}});Object.defineProperty(exports,"getCachedFontMetrics",{enumerable:true,get:function(){return chunkSORYYVJ7_js.q}});Object.defineProperty(exports,"getCachedParagraphMeasure",{enumerable:true,get:function(){return chunkSORYYVJ7_js.w}});Object.defineProperty(exports,"getCachedTextWidth",{enumerable:true,get:function(){return chunkSORYYVJ7_js.l}});Object.defineProperty(exports,"getFontCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.u}});Object.defineProperty(exports,"getParagraphCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.A}});Object.defineProperty(exports,"getTextCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.p}});Object.defineProperty(exports,"getTotalCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.C}});Object.defineProperty(exports,"hashParagraphBlock",{enumerable:true,get:function(){return chunkSORYYVJ7_js.v}});Object.defineProperty(exports,"measureBlocksWithFloats",{enumerable:true,get:function(){return chunkSORYYVJ7_js.k}});Object.defineProperty(exports,"setCachedFontMetrics",{enumerable:true,get:function(){return chunkSORYYVJ7_js.r}});Object.defineProperty(exports,"setCachedParagraphMeasure",{enumerable:true,get:function(){return chunkSORYYVJ7_js.x}});Object.defineProperty(exports,"setCachedTextWidth",{enumerable:true,get:function(){return chunkSORYYVJ7_js.m}});Object.defineProperty(exports,"setFontCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.t}});Object.defineProperty(exports,"setParagraphCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.z}});Object.defineProperty(exports,"setTextCacheSize",{enumerable:true,get:function(){return chunkSORYYVJ7_js.o}});Object.defineProperty(exports,"buildFontString",{enumerable:true,get:function(){return chunkLTHT4A4S_js.c}});Object.defineProperty(exports,"clampFloatingWrapMargins",{enumerable:true,get:function(){return chunkLTHT4A4S_js.u}});Object.defineProperty(exports,"findCharacterAtX",{enumerable:true,get:function(){return chunkLTHT4A4S_js.h}});Object.defineProperty(exports,"getCanvasContext",{enumerable:true,get:function(){return chunkLTHT4A4S_js.a}});Object.defineProperty(exports,"getFloatingMargins",{enumerable:true,get:function(){return chunkLTHT4A4S_js.q}});Object.defineProperty(exports,"getFontMetrics",{enumerable:true,get:function(){return chunkLTHT4A4S_js.d}});Object.defineProperty(exports,"getRunCharWidths",{enumerable:true,get:function(){return chunkLTHT4A4S_js.x}});Object.defineProperty(exports,"getXForCharacter",{enumerable:true,get:function(){return chunkLTHT4A4S_js.i}});Object.defineProperty(exports,"halfPtToPx",{enumerable:true,get:function(){return chunkLTHT4A4S_js.n}});Object.defineProperty(exports,"measureParagraph",{enumerable:true,get:function(){return chunkLTHT4A4S_js.v}});Object.defineProperty(exports,"measureParagraphs",{enumerable:true,get:function(){return chunkLTHT4A4S_js.w}});Object.defineProperty(exports,"measureRun",{enumerable:true,get:function(){return chunkLTHT4A4S_js.g}});Object.defineProperty(exports,"measureText",{enumerable:true,get:function(){return chunkLTHT4A4S_js.f}});Object.defineProperty(exports,"measureTextWidth",{enumerable:true,get:function(){return chunkLTHT4A4S_js.e}});Object.defineProperty(exports,"ptToPx",{enumerable:true,get:function(){return chunkLTHT4A4S_js.l}});Object.defineProperty(exports,"pxToHalfPt",{enumerable:true,get:function(){return chunkLTHT4A4S_js.o}});Object.defineProperty(exports,"pxToPt",{enumerable:true,get:function(){return chunkLTHT4A4S_js.m}});Object.defineProperty(exports,"pxToTwips",{enumerable:true,get:function(){return chunkLTHT4A4S_js.k}});Object.defineProperty(exports,"rectsToFloatingZones",{enumerable:true,get:function(){return chunkLTHT4A4S_js.p}});Object.defineProperty(exports,"resetCanvasContext",{enumerable:true,get:function(){return chunkLTHT4A4S_js.b}});Object.defineProperty(exports,"twipsToPx",{enumerable:true,get:function(){return chunkLTHT4A4S_js.j}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{B as clearAllCaches,s as clearFontMetricsCache,y as clearParagraphMeasureCache,n as clearTextWidthCache,q as getCachedFontMetrics,w as getCachedParagraphMeasure,l as getCachedTextWidth,u as getFontCacheSize,A as getParagraphCacheSize,p as getTextCacheSize,C as getTotalCacheSize,v as hashParagraphBlock,k as measureBlocksWithFloats,r as setCachedFontMetrics,x as setCachedParagraphMeasure,m as setCachedTextWidth,t as setFontCacheSize,z as setParagraphCacheSize,o as setTextCacheSize}from'../../chunk-MP4QSEO2.mjs';export{c as buildFontString,u as clampFloatingWrapMargins,h as findCharacterAtX,a as getCanvasContext,q as getFloatingMargins,d as getFontMetrics,x as getRunCharWidths,i as getXForCharacter,n as halfPtToPx,v as measureParagraph,w as measureParagraphs,g as measureRun,f as measureText,e as measureTextWidth,l as ptToPx,o as pxToHalfPt,m as pxToPt,k as pxToTwips,p as rectsToFloatingZones,b as resetCanvasContext,j as twipsToPx}from'../../chunk-6Y6LON6Y.mjs';import'../../chunk-FCJWLEKT.mjs';import'../../chunk-7E5VBRDL.mjs';import'../../chunk-BOOHU5EW.mjs';import'../../chunk-QPFJJPIC.mjs';import'../../chunk-WLHNIXWC.mjs';import'../../chunk-AMENZY5F.mjs';import'../../chunk-VW22RZ6C.mjs';import'../../chunk-QYUPLKLP.mjs';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table-insert "+" hover hit-test.
|
|
3
|
+
*
|
|
4
|
+
* Pure DOM logic for the floating row/column insert button that shows
|
|
5
|
+
* when the mouse is near the left or top edge of a layout table. Lives
|
|
6
|
+
* in core so React + Vue + any future adapter can share the hit-test
|
|
7
|
+
* and just wire up their own UI rendering of the button.
|
|
8
|
+
*
|
|
9
|
+
* The function is gated by `hfEditMode`: tables in inactive HF/body
|
|
10
|
+
* regions don't surface the affordance. A header table only matches
|
|
11
|
+
* when the user is editing the header; a body table only matches when
|
|
12
|
+
* not in any HF edit mode.
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
declare const TABLE_INSERT_EDGE_PROXIMITY = 30;
|
|
17
|
+
declare const TABLE_INSERT_HIDE_DELAY_MS = 200;
|
|
18
|
+
type TableInsertHoverHit = {
|
|
19
|
+
type: 'row' | 'column';
|
|
20
|
+
/** Client-coordinate anchor for the button. Caller converts to its UI frame. */
|
|
21
|
+
clientX: number;
|
|
22
|
+
clientY: number;
|
|
23
|
+
/** PM position of the cell the button targets. */
|
|
24
|
+
cellPmPos: number;
|
|
25
|
+
};
|
|
26
|
+
type TableInsertHoverInput = {
|
|
27
|
+
mouseX: number;
|
|
28
|
+
mouseY: number;
|
|
29
|
+
pagesContainer: HTMLElement;
|
|
30
|
+
/** Element under the cursor at the time of the event (e.target). */
|
|
31
|
+
target: HTMLElement;
|
|
32
|
+
hfEditMode: 'header' | 'footer' | null;
|
|
33
|
+
/** Override edge proximity in pixels (defaults to TABLE_INSERT_EDGE_PROXIMITY). */
|
|
34
|
+
edgeProximity?: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Detect whether a mousemove should surface a row/column insert "+" button.
|
|
38
|
+
*
|
|
39
|
+
* Returns the button anchor + target cell PM position, or `null` if the
|
|
40
|
+
* mouse isn't near a row's left edge or a column's top edge — or if the
|
|
41
|
+
* relevant table belongs to an inactive HF/body region.
|
|
42
|
+
*/
|
|
43
|
+
declare function detectTableInsertHover(input: TableInsertHoverInput): TableInsertHoverHit | null;
|
|
44
|
+
|
|
45
|
+
export { TABLE_INSERT_EDGE_PROXIMITY, TABLE_INSERT_HIDE_DELAY_MS, type TableInsertHoverHit, type TableInsertHoverInput, detectTableInsertHover };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table-insert "+" hover hit-test.
|
|
3
|
+
*
|
|
4
|
+
* Pure DOM logic for the floating row/column insert button that shows
|
|
5
|
+
* when the mouse is near the left or top edge of a layout table. Lives
|
|
6
|
+
* in core so React + Vue + any future adapter can share the hit-test
|
|
7
|
+
* and just wire up their own UI rendering of the button.
|
|
8
|
+
*
|
|
9
|
+
* The function is gated by `hfEditMode`: tables in inactive HF/body
|
|
10
|
+
* regions don't surface the affordance. A header table only matches
|
|
11
|
+
* when the user is editing the header; a body table only matches when
|
|
12
|
+
* not in any HF edit mode.
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
declare const TABLE_INSERT_EDGE_PROXIMITY = 30;
|
|
17
|
+
declare const TABLE_INSERT_HIDE_DELAY_MS = 200;
|
|
18
|
+
type TableInsertHoverHit = {
|
|
19
|
+
type: 'row' | 'column';
|
|
20
|
+
/** Client-coordinate anchor for the button. Caller converts to its UI frame. */
|
|
21
|
+
clientX: number;
|
|
22
|
+
clientY: number;
|
|
23
|
+
/** PM position of the cell the button targets. */
|
|
24
|
+
cellPmPos: number;
|
|
25
|
+
};
|
|
26
|
+
type TableInsertHoverInput = {
|
|
27
|
+
mouseX: number;
|
|
28
|
+
mouseY: number;
|
|
29
|
+
pagesContainer: HTMLElement;
|
|
30
|
+
/** Element under the cursor at the time of the event (e.target). */
|
|
31
|
+
target: HTMLElement;
|
|
32
|
+
hfEditMode: 'header' | 'footer' | null;
|
|
33
|
+
/** Override edge proximity in pixels (defaults to TABLE_INSERT_EDGE_PROXIMITY). */
|
|
34
|
+
edgeProximity?: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Detect whether a mousemove should surface a row/column insert "+" button.
|
|
38
|
+
*
|
|
39
|
+
* Returns the button anchor + target cell PM position, or `null` if the
|
|
40
|
+
* mouse isn't near a row's left edge or a column's top edge — or if the
|
|
41
|
+
* relevant table belongs to an inactive HF/body region.
|
|
42
|
+
*/
|
|
43
|
+
declare function detectTableInsertHover(input: TableInsertHoverInput): TableInsertHoverHit | null;
|
|
44
|
+
|
|
45
|
+
export { TABLE_INSERT_EDGE_PROXIMITY, TABLE_INSERT_HIDE_DELAY_MS, type TableInsertHoverHit, type TableInsertHoverInput, detectTableInsertHover };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkYUZQTRI2_js=require('../chunk-YUZQTRI2.js');require('../chunk-7U4I6BKJ.js'),require('../chunk-HKVAW3RE.js'),require('../chunk-SORYYVJ7.js'),require('../chunk-LTHT4A4S.js'),require('../chunk-IMKU4O3P.js'),require('../chunk-DROCYKAR.js'),require('../chunk-F44ZLDZS.js'),require('../chunk-44FHVKSI.js'),require('../chunk-7AMYZMCX.js'),require('../chunk-D4RPOJC7.js'),require('../chunk-IP2VXNWG.js'),require('../chunk-JFZIXFRC.js'),require('../chunk-MZOVDLYL.js'),require('../chunk-E4JMCA5X.js'),require('../chunk-HQPWFUP5.js'),require('../chunk-DV6GWBUJ.js'),require('../chunk-SHJBS42Y.js'),require('../chunk-MCFHOMA2.js'),require('../chunk-BHBOAP6Z.js'),require('../chunk-MZ7LW5CH.js'),require('../chunk-N3Y5BUKV.js'),require('../chunk-YTDWMXNS.js'),require('../chunk-6LVPRTB6.js'),require('../chunk-TUIEV7Q7.js'),require('../chunk-7HANRHHL.js'),require('../chunk-MJ5FQX7Q.js'),require('../chunk-C2BAPYGJ.js'),require('../chunk-4Q2IP5FW.js'),require('../chunk-Q4CKLXWA.js'),require('../chunk-DC7S76ZX.js');Object.defineProperty(exports,"TABLE_INSERT_EDGE_PROXIMITY",{enumerable:true,get:function(){return chunkYUZQTRI2_js.a}});Object.defineProperty(exports,"TABLE_INSERT_HIDE_DELAY_MS",{enumerable:true,get:function(){return chunkYUZQTRI2_js.b}});Object.defineProperty(exports,"detectTableInsertHover",{enumerable:true,get:function(){return chunkYUZQTRI2_js.c}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as TABLE_INSERT_EDGE_PROXIMITY,b as TABLE_INSERT_HIDE_DELAY_MS,c as detectTableInsertHover}from'../chunk-UCJGOQ4J.mjs';import'../chunk-QLPQVR5W.mjs';import'../chunk-5VBNOHRE.mjs';import'../chunk-MP4QSEO2.mjs';import'../chunk-6Y6LON6Y.mjs';import'../chunk-FCJWLEKT.mjs';import'../chunk-7E5VBRDL.mjs';import'../chunk-RFC2SXZ6.mjs';import'../chunk-BOOHU5EW.mjs';import'../chunk-NDDJ67FQ.mjs';import'../chunk-LBKMYD3M.mjs';import'../chunk-NBLJPT54.mjs';import'../chunk-QPFJJPIC.mjs';import'../chunk-ILJUDEZ5.mjs';import'../chunk-6ZXL3EIP.mjs';import'../chunk-OEXVWIHW.mjs';import'../chunk-WLHNIXWC.mjs';import'../chunk-J7NADDC4.mjs';import'../chunk-2MSZXH6Q.mjs';import'../chunk-MOKKS75W.mjs';import'../chunk-OZMNIX6U.mjs';import'../chunk-AMENZY5F.mjs';import'../chunk-VHUVPHPI.mjs';import'../chunk-BGY3CB37.mjs';import'../chunk-ZX26QZJ5.mjs';import'../chunk-MJ6XZFVD.mjs';import'../chunk-67LVRQIR.mjs';import'../chunk-LE67NTCN.mjs';import'../chunk-VW22RZ6C.mjs';import'../chunk-VQWZHPWI.mjs';import'../chunk-QYUPLKLP.mjs';
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProseMirror to FlowBlock Converter
|
|
3
|
+
*
|
|
4
|
+
* Converts a ProseMirror document into FlowBlock[] for the layout engine.
|
|
5
|
+
* Tracks pmStart/pmEnd positions for click-to-position mapping.
|
|
6
|
+
*
|
|
7
|
+
* The deep import `@eigenpal/.../layout-bridge/toFlowBlocks` is part of the
|
|
8
|
+
* public surface (Vue adapter + tests), so the per-domain helpers under
|
|
9
|
+
* ./toFlowBlocks/ are re-exported from here to keep that path stable.
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
import { Node } from 'prosemirror-model';
|
|
14
|
+
import { BorderStyle, FlowBlock } from '../layout-engine/types.mjs';
|
|
15
|
+
import { T as Theme } from '../styles-EI2lxeEN.mjs';
|
|
16
|
+
import { o as NumberFormat } from '../content-5Mrz6w_b.mjs';
|
|
17
|
+
import '../formatting-BH4hcZiq.mjs';
|
|
18
|
+
import '../colors-C3vA7HUU.mjs';
|
|
19
|
+
import '../docx/wrapTypes.mjs';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Shared types and primitive helpers used across toFlowBlocks sub-modules.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Options for the conversion.
|
|
27
|
+
*/
|
|
28
|
+
type ToFlowBlocksOptions = {
|
|
29
|
+
/** Default font family. */
|
|
30
|
+
defaultFont?: string;
|
|
31
|
+
/** Default font size in points. */
|
|
32
|
+
defaultSize?: number;
|
|
33
|
+
/** Theme for resolving theme colors. */
|
|
34
|
+
theme?: Theme | null;
|
|
35
|
+
/** Page content height in pixels (pageHeight - marginTop - marginBottom). Images taller than this are scaled down to fit. */
|
|
36
|
+
pageContentHeight?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Document-wide `w:defaultTabStop` (§17.6.13) in twips. Stamped onto each
|
|
39
|
+
* paragraph's attrs so the layout-time list-marker helper can snap body
|
|
40
|
+
* text to the default tab grid when no custom `w:tabs` are defined.
|
|
41
|
+
* Default 720 twips (Word's spec default).
|
|
42
|
+
*/
|
|
43
|
+
defaultTabStopTwips?: number;
|
|
44
|
+
/**
|
|
45
|
+
* @internal Allocated by toFlowBlocks() and threaded through table /
|
|
46
|
+
* text-box conversion so list numbering stays continuous across containers.
|
|
47
|
+
* Keyed by abstractNumId when known (ECMA-376 §17.9.18: numIds sharing one
|
|
48
|
+
* abstractNum share counter state); falls back to numId.
|
|
49
|
+
*/
|
|
50
|
+
listCounters?: Map<number, number[]>;
|
|
51
|
+
/**
|
|
52
|
+
* @internal Tracks `${numId}:${ilvl}` pairs whose startOverride has already
|
|
53
|
+
* been applied. Per ECMA-376 §17.9.27 the override fires the first time
|
|
54
|
+
* each level of a numId is encountered, so a numId with overrides on
|
|
55
|
+
* multiple ilvls fires each one independently.
|
|
56
|
+
*/
|
|
57
|
+
listSeenNumIds?: Set<string>;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Reset the block ID counter (useful for testing).
|
|
61
|
+
*/
|
|
62
|
+
declare function resetBlockIdCounter(): void;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Border Conversion
|
|
66
|
+
*
|
|
67
|
+
* Shared OOXML BorderSpec → layout-engine BorderStyle conversion, used by
|
|
68
|
+
* paragraph borders, table cell borders, and header/footer borders.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Convert an OOXML BorderSpec to a layout-engine BorderStyle.
|
|
73
|
+
* Shared by paragraph borders, cell borders, and header/footer borders.
|
|
74
|
+
*/
|
|
75
|
+
declare function convertBorderSpecToLayout(border: {
|
|
76
|
+
style?: string;
|
|
77
|
+
size?: number;
|
|
78
|
+
space?: number;
|
|
79
|
+
color?: {
|
|
80
|
+
rgb?: string;
|
|
81
|
+
themeColor?: string;
|
|
82
|
+
themeTint?: string;
|
|
83
|
+
themeShade?: string;
|
|
84
|
+
};
|
|
85
|
+
}, theme?: Theme | null): BorderStyle | undefined;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* List Marker Resolution
|
|
89
|
+
*
|
|
90
|
+
* Helpers for rendering OOXML list markers from the counter stack:
|
|
91
|
+
* - format numbers as decimal/roman/letter per ECMA-376 §17.9.16 numFmt
|
|
92
|
+
* - resolve lvlText templates ("%1.%2.") against the counter stack
|
|
93
|
+
* - drive the per-paragraph counter increment, including startOverride.
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Resolve an OOXML lvlText template like "%1.%2." against the counter stack
|
|
98
|
+
* and per-level numFmt list (ECMA-376 §17.9.11).
|
|
99
|
+
*
|
|
100
|
+
* When a referenced counter has no value yet (e.g. "%2" referenced from a
|
|
101
|
+
* level-0 paragraph), the placeholder AND the punctuation immediately
|
|
102
|
+
* following it are dropped — matches Word's behavior so "%1.%2." renders
|
|
103
|
+
* "1." rather than "1..".
|
|
104
|
+
*
|
|
105
|
+
* Exported for unit testing.
|
|
106
|
+
*/
|
|
107
|
+
declare function resolveListTemplate(template: string, counters: number[], levelNumFmts: NumberFormat[] | undefined): string;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* ProseMirror to FlowBlock Converter
|
|
111
|
+
*
|
|
112
|
+
* Converts a ProseMirror document into FlowBlock[] for the layout engine.
|
|
113
|
+
* Tracks pmStart/pmEnd positions for click-to-position mapping.
|
|
114
|
+
*
|
|
115
|
+
* The deep import `@eigenpal/.../layout-bridge/toFlowBlocks` is part of the
|
|
116
|
+
* public surface (Vue adapter + tests), so the per-domain helpers under
|
|
117
|
+
* ./toFlowBlocks/ are re-exported from here to keep that path stable.
|
|
118
|
+
* @packageDocumentation
|
|
119
|
+
* @public
|
|
120
|
+
*/
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Convert a ProseMirror document to FlowBlock array.
|
|
124
|
+
*
|
|
125
|
+
* Walks the document tree, converting each node to the appropriate block type.
|
|
126
|
+
* Tracks pmStart/pmEnd positions for each block for click-to-position mapping.
|
|
127
|
+
*/
|
|
128
|
+
declare function toFlowBlocks(doc: Node, options?: ToFlowBlocksOptions): FlowBlock[];
|
|
129
|
+
|
|
130
|
+
export { type ToFlowBlocksOptions, convertBorderSpecToLayout, resetBlockIdCounter, resolveListTemplate, toFlowBlocks };
|