velo-text 1.0.0-beta.1
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/CHANGELOG.md +70 -0
- package/LICENSE +21 -0
- package/README.md +122 -0
- package/dist/adapters/backend/index.d.ts +4 -0
- package/dist/adapters/backend/index.d.ts.map +1 -0
- package/dist/adapters/backend/index.js +3 -0
- package/dist/adapters/backend/index.js.map +1 -0
- package/dist/adapters/backend/pdf-http.d.ts +48 -0
- package/dist/adapters/backend/pdf-http.d.ts.map +1 -0
- package/dist/adapters/backend/pdf-http.js +117 -0
- package/dist/adapters/backend/pdf-http.js.map +1 -0
- package/dist/adapters/backend/sinks.d.ts +7 -0
- package/dist/adapters/backend/sinks.d.ts.map +1 -0
- package/dist/adapters/backend/sinks.js +43 -0
- package/dist/adapters/backend/sinks.js.map +1 -0
- package/dist/adapters/browser/index.d.ts +11 -0
- package/dist/adapters/browser/index.d.ts.map +1 -0
- package/dist/adapters/browser/index.js +51 -0
- package/dist/adapters/browser/index.js.map +1 -0
- package/dist/adapters/postgres-contract/index.d.ts +45 -0
- package/dist/adapters/postgres-contract/index.d.ts.map +1 -0
- package/dist/adapters/postgres-contract/index.js +108 -0
- package/dist/adapters/postgres-contract/index.js.map +1 -0
- package/dist/adapters/s3-compatible/index.d.ts +46 -0
- package/dist/adapters/s3-compatible/index.d.ts.map +1 -0
- package/dist/adapters/s3-compatible/index.js +106 -0
- package/dist/adapters/s3-compatible/index.js.map +1 -0
- package/dist/adapters/vanilla.d.ts +5 -0
- package/dist/adapters/vanilla.d.ts.map +1 -0
- package/dist/adapters/vanilla.js +6 -0
- package/dist/adapters/vanilla.js.map +1 -0
- package/dist/assets/dimensions/index.d.ts +12 -0
- package/dist/assets/dimensions/index.d.ts.map +1 -0
- package/dist/assets/dimensions/index.js +46 -0
- package/dist/assets/dimensions/index.js.map +1 -0
- package/dist/assets/hashing/index.d.ts +7 -0
- package/dist/assets/hashing/index.d.ts.map +1 -0
- package/dist/assets/hashing/index.js +21 -0
- package/dist/assets/hashing/index.js.map +1 -0
- package/dist/assets/icons/index.d.ts +25 -0
- package/dist/assets/icons/index.d.ts.map +1 -0
- package/dist/assets/icons/index.js +107 -0
- package/dist/assets/icons/index.js.map +1 -0
- package/dist/assets/png/placeholder.d.ts +4 -0
- package/dist/assets/png/placeholder.d.ts.map +1 -0
- package/dist/assets/png/placeholder.js +13 -0
- package/dist/assets/png/placeholder.js.map +1 -0
- package/dist/assets/sniff/index.d.ts +13 -0
- package/dist/assets/sniff/index.d.ts.map +1 -0
- package/dist/assets/sniff/index.js +41 -0
- package/dist/assets/sniff/index.js.map +1 -0
- package/dist/assets/store/index.d.ts +56 -0
- package/dist/assets/store/index.d.ts.map +1 -0
- package/dist/assets/store/index.js +102 -0
- package/dist/assets/store/index.js.map +1 -0
- package/dist/assets/svg/index.d.ts +7 -0
- package/dist/assets/svg/index.d.ts.map +1 -0
- package/dist/assets/svg/index.js +82 -0
- package/dist/assets/svg/index.js.map +1 -0
- package/dist/core/equation/html.d.ts +3 -0
- package/dist/core/equation/html.d.ts.map +1 -0
- package/dist/core/equation/html.js +138 -0
- package/dist/core/equation/html.js.map +1 -0
- package/dist/core/equation/index.d.ts +19 -0
- package/dist/core/equation/index.d.ts.map +1 -0
- package/dist/core/equation/index.js +107 -0
- package/dist/core/equation/index.js.map +1 -0
- package/dist/core/events/index.d.ts +13 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/events/index.js +18 -0
- package/dist/core/events/index.js.map +1 -0
- package/dist/core/history/history.d.ts +29 -0
- package/dist/core/history/history.d.ts.map +1 -0
- package/dist/core/history/history.js +55 -0
- package/dist/core/history/history.js.map +1 -0
- package/dist/core/history/index.d.ts +2 -0
- package/dist/core/history/index.d.ts.map +1 -0
- package/dist/core/history/index.js +2 -0
- package/dist/core/history/index.js.map +1 -0
- package/dist/core/model/block.d.ts +121 -0
- package/dist/core/model/block.d.ts.map +1 -0
- package/dist/core/model/block.js +2 -0
- package/dist/core/model/block.js.map +1 -0
- package/dist/core/model/document.d.ts +70 -0
- package/dist/core/model/document.d.ts.map +1 -0
- package/dist/core/model/document.js +2 -0
- package/dist/core/model/document.js.map +1 -0
- package/dist/core/model/factories.d.ts +35 -0
- package/dist/core/model/factories.d.ts.map +1 -0
- package/dist/core/model/factories.js +115 -0
- package/dist/core/model/factories.js.map +1 -0
- package/dist/core/model/index.d.ts +4 -0
- package/dist/core/model/index.d.ts.map +1 -0
- package/dist/core/model/index.js +4 -0
- package/dist/core/model/index.js.map +1 -0
- package/dist/core/model/inline.d.ts +43 -0
- package/dist/core/model/inline.d.ts.map +1 -0
- package/dist/core/model/inline.js +2 -0
- package/dist/core/model/inline.js.map +1 -0
- package/dist/core/model/primitives.d.ts +36 -0
- package/dist/core/model/primitives.d.ts.map +1 -0
- package/dist/core/model/primitives.js +3 -0
- package/dist/core/model/primitives.js.map +1 -0
- package/dist/core/model/table-look.d.ts +12 -0
- package/dist/core/model/table-look.d.ts.map +1 -0
- package/dist/core/model/table-look.js +99 -0
- package/dist/core/model/table-look.js.map +1 -0
- package/dist/core/model/types.d.ts +5 -0
- package/dist/core/model/types.d.ts.map +1 -0
- package/dist/core/model/types.js +5 -0
- package/dist/core/model/types.js.map +1 -0
- package/dist/core/normalize/index.d.ts +2 -0
- package/dist/core/normalize/index.d.ts.map +1 -0
- package/dist/core/normalize/index.js +2 -0
- package/dist/core/normalize/index.js.map +1 -0
- package/dist/core/normalize/normalize.d.ts +8 -0
- package/dist/core/normalize/normalize.d.ts.map +1 -0
- package/dist/core/normalize/normalize.js +145 -0
- package/dist/core/normalize/normalize.js.map +1 -0
- package/dist/core/operations/index.d.ts +2 -0
- package/dist/core/operations/index.d.ts.map +1 -0
- package/dist/core/operations/index.js +2 -0
- package/dist/core/operations/index.js.map +1 -0
- package/dist/core/operations/operations.d.ts +53 -0
- package/dist/core/operations/operations.d.ts.map +1 -0
- package/dist/core/operations/operations.js +92 -0
- package/dist/core/operations/operations.js.map +1 -0
- package/dist/core/plugin/index.d.ts +84 -0
- package/dist/core/plugin/index.d.ts.map +1 -0
- package/dist/core/plugin/index.js +137 -0
- package/dist/core/plugin/index.js.map +1 -0
- package/dist/core/schema/canonical.d.ts +6 -0
- package/dist/core/schema/canonical.d.ts.map +1 -0
- package/dist/core/schema/canonical.js +42 -0
- package/dist/core/schema/canonical.js.map +1 -0
- package/dist/core/schema/index.d.ts +3 -0
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/core/schema/index.js +3 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/validator.d.ts +23 -0
- package/dist/core/schema/validator.d.ts.map +1 -0
- package/dist/core/schema/validator.js +276 -0
- package/dist/core/schema/validator.js.map +1 -0
- package/dist/core/selection/index.d.ts +2 -0
- package/dist/core/selection/index.d.ts.map +1 -0
- package/dist/core/selection/index.js +2 -0
- package/dist/core/selection/index.js.map +1 -0
- package/dist/core/selection/selection.d.ts +12 -0
- package/dist/core/selection/selection.d.ts.map +1 -0
- package/dist/core/selection/selection.js +38 -0
- package/dist/core/selection/selection.js.map +1 -0
- package/dist/editor-web/accessibility/index.d.ts +40 -0
- package/dist/editor-web/accessibility/index.d.ts.map +1 -0
- package/dist/editor-web/accessibility/index.js +170 -0
- package/dist/editor-web/accessibility/index.js.map +1 -0
- package/dist/editor-web/clipboard/index.d.ts +52 -0
- package/dist/editor-web/clipboard/index.d.ts.map +1 -0
- package/dist/editor-web/clipboard/index.js +154 -0
- package/dist/editor-web/clipboard/index.js.map +1 -0
- package/dist/editor-web/controller/column-presets.d.ts +9 -0
- package/dist/editor-web/controller/column-presets.d.ts.map +1 -0
- package/dist/editor-web/controller/column-presets.js +11 -0
- package/dist/editor-web/controller/column-presets.js.map +1 -0
- package/dist/editor-web/controller/column-resize.d.ts +6 -0
- package/dist/editor-web/controller/column-resize.d.ts.map +1 -0
- package/dist/editor-web/controller/column-resize.js +119 -0
- package/dist/editor-web/controller/column-resize.js.map +1 -0
- package/dist/editor-web/controller/columns-ui.d.ts +5 -0
- package/dist/editor-web/controller/columns-ui.d.ts.map +1 -0
- package/dist/editor-web/controller/columns-ui.js +107 -0
- package/dist/editor-web/controller/columns-ui.js.map +1 -0
- package/dist/editor-web/controller/commands.d.ts +27 -0
- package/dist/editor-web/controller/commands.d.ts.map +1 -0
- package/dist/editor-web/controller/commands.js +198 -0
- package/dist/editor-web/controller/commands.js.map +1 -0
- package/dist/editor-web/controller/format-commands.d.ts +12 -0
- package/dist/editor-web/controller/format-commands.d.ts.map +1 -0
- package/dist/editor-web/controller/format-commands.js +77 -0
- package/dist/editor-web/controller/format-commands.js.map +1 -0
- package/dist/editor-web/controller/handles.d.ts +7 -0
- package/dist/editor-web/controller/handles.d.ts.map +1 -0
- package/dist/editor-web/controller/handles.js +205 -0
- package/dist/editor-web/controller/handles.js.map +1 -0
- package/dist/editor-web/controller/host.d.ts +8 -0
- package/dist/editor-web/controller/host.d.ts.map +1 -0
- package/dist/editor-web/controller/host.js +48 -0
- package/dist/editor-web/controller/host.js.map +1 -0
- package/dist/editor-web/controller/image-resize.d.ts +9 -0
- package/dist/editor-web/controller/image-resize.d.ts.map +1 -0
- package/dist/editor-web/controller/image-resize.js +163 -0
- package/dist/editor-web/controller/image-resize.js.map +1 -0
- package/dist/editor-web/controller/index.d.ts +6 -0
- package/dist/editor-web/controller/index.d.ts.map +1 -0
- package/dist/editor-web/controller/index.js +190 -0
- package/dist/editor-web/controller/index.js.map +1 -0
- package/dist/editor-web/controller/nesting.d.ts +27 -0
- package/dist/editor-web/controller/nesting.d.ts.map +1 -0
- package/dist/editor-web/controller/nesting.js +218 -0
- package/dist/editor-web/controller/nesting.js.map +1 -0
- package/dist/editor-web/controller/place-overlay.d.ts +6 -0
- package/dist/editor-web/controller/place-overlay.d.ts.map +1 -0
- package/dist/editor-web/controller/place-overlay.js +55 -0
- package/dist/editor-web/controller/place-overlay.js.map +1 -0
- package/dist/editor-web/controller/size-picker.d.ts +28 -0
- package/dist/editor-web/controller/size-picker.d.ts.map +1 -0
- package/dist/editor-web/controller/size-picker.js +177 -0
- package/dist/editor-web/controller/size-picker.js.map +1 -0
- package/dist/editor-web/controller/table-resize.d.ts +14 -0
- package/dist/editor-web/controller/table-resize.d.ts.map +1 -0
- package/dist/editor-web/controller/table-resize.js +178 -0
- package/dist/editor-web/controller/table-resize.js.map +1 -0
- package/dist/editor-web/controller/table-ui.d.ts +5 -0
- package/dist/editor-web/controller/table-ui.d.ts.map +1 -0
- package/dist/editor-web/controller/table-ui.js +214 -0
- package/dist/editor-web/controller/table-ui.js.map +1 -0
- package/dist/editor-web/controller/types.d.ts +95 -0
- package/dist/editor-web/controller/types.d.ts.map +1 -0
- package/dist/editor-web/controller/types.js +4 -0
- package/dist/editor-web/controller/types.js.map +1 -0
- package/dist/editor-web/controller/variable-ui.d.ts +5 -0
- package/dist/editor-web/controller/variable-ui.d.ts.map +1 -0
- package/dist/editor-web/controller/variable-ui.js +75 -0
- package/dist/editor-web/controller/variable-ui.js.map +1 -0
- package/dist/editor-web/images/index.d.ts +9 -0
- package/dist/editor-web/images/index.d.ts.map +1 -0
- package/dist/editor-web/images/index.js +18 -0
- package/dist/editor-web/images/index.js.map +1 -0
- package/dist/editor-web/index.d.ts +10 -0
- package/dist/editor-web/index.d.ts.map +1 -0
- package/dist/editor-web/index.js +10 -0
- package/dist/editor-web/index.js.map +1 -0
- package/dist/editor-web/input/index.d.ts +75 -0
- package/dist/editor-web/input/index.d.ts.map +1 -0
- package/dist/editor-web/input/index.js +151 -0
- package/dist/editor-web/input/index.js.map +1 -0
- package/dist/editor-web/tables/index.d.ts +47 -0
- package/dist/editor-web/tables/index.d.ts.map +1 -0
- package/dist/editor-web/tables/index.js +159 -0
- package/dist/editor-web/tables/index.js.map +1 -0
- package/dist/editor-web/toolbar/index.d.ts +17 -0
- package/dist/editor-web/toolbar/index.d.ts.map +1 -0
- package/dist/editor-web/toolbar/index.js +36 -0
- package/dist/editor-web/toolbar/index.js.map +1 -0
- package/dist/editor-web/ux/attach.d.ts +21 -0
- package/dist/editor-web/ux/attach.d.ts.map +1 -0
- package/dist/editor-web/ux/attach.js +61 -0
- package/dist/editor-web/ux/attach.js.map +1 -0
- package/dist/editor-web/ux/command-palette.d.ts +11 -0
- package/dist/editor-web/ux/command-palette.d.ts.map +1 -0
- package/dist/editor-web/ux/command-palette.js +135 -0
- package/dist/editor-web/ux/command-palette.js.map +1 -0
- package/dist/editor-web/ux/equation-editor.d.ts +11 -0
- package/dist/editor-web/ux/equation-editor.d.ts.map +1 -0
- package/dist/editor-web/ux/equation-editor.js +130 -0
- package/dist/editor-web/ux/equation-editor.js.map +1 -0
- package/dist/editor-web/ux/equation-palette.d.ts +11 -0
- package/dist/editor-web/ux/equation-palette.d.ts.map +1 -0
- package/dist/editor-web/ux/equation-palette.js +90 -0
- package/dist/editor-web/ux/equation-palette.js.map +1 -0
- package/dist/editor-web/ux/find-replace.d.ts +6 -0
- package/dist/editor-web/ux/find-replace.d.ts.map +1 -0
- package/dist/editor-web/ux/find-replace.js +125 -0
- package/dist/editor-web/ux/find-replace.js.map +1 -0
- package/dist/editor-web/ux/find-text.d.ts +10 -0
- package/dist/editor-web/ux/find-text.d.ts.map +1 -0
- package/dist/editor-web/ux/find-text.js +101 -0
- package/dist/editor-web/ux/find-text.js.map +1 -0
- package/dist/editor-web/ux/image-drop.d.ts +7 -0
- package/dist/editor-web/ux/image-drop.d.ts.map +1 -0
- package/dist/editor-web/ux/image-drop.js +198 -0
- package/dist/editor-web/ux/image-drop.js.map +1 -0
- package/dist/editor-web/ux/link-ui.d.ts +6 -0
- package/dist/editor-web/ux/link-ui.d.ts.map +1 -0
- package/dist/editor-web/ux/link-ui.js +50 -0
- package/dist/editor-web/ux/link-ui.js.map +1 -0
- package/dist/editor-web/ux/outline.d.ts +9 -0
- package/dist/editor-web/ux/outline.d.ts.map +1 -0
- package/dist/editor-web/ux/outline.js +48 -0
- package/dist/editor-web/ux/outline.js.map +1 -0
- package/dist/editor-web/ux/page-preview.d.ts +6 -0
- package/dist/editor-web/ux/page-preview.d.ts.map +1 -0
- package/dist/editor-web/ux/page-preview.js +90 -0
- package/dist/editor-web/ux/page-preview.js.map +1 -0
- package/dist/editor-web/ux/selection-bubble.d.ts +6 -0
- package/dist/editor-web/ux/selection-bubble.d.ts.map +1 -0
- package/dist/editor-web/ux/selection-bubble.js +79 -0
- package/dist/editor-web/ux/selection-bubble.js.map +1 -0
- package/dist/editor-web/ux/shortcuts-sheet.d.ts +6 -0
- package/dist/editor-web/ux/shortcuts-sheet.d.ts.map +1 -0
- package/dist/editor-web/ux/shortcuts-sheet.js +58 -0
- package/dist/editor-web/ux/shortcuts-sheet.js.map +1 -0
- package/dist/editor-web/view/index.d.ts +3 -0
- package/dist/editor-web/view/index.d.ts.map +1 -0
- package/dist/editor-web/view/index.js +3 -0
- package/dist/editor-web/view/index.js.map +1 -0
- package/dist/editor-web/view/parse-inlines.d.ts +15 -0
- package/dist/editor-web/view/parse-inlines.d.ts.map +1 -0
- package/dist/editor-web/view/parse-inlines.js +107 -0
- package/dist/editor-web/view/parse-inlines.js.map +1 -0
- package/dist/editor-web/view/parse.d.ts +8 -0
- package/dist/editor-web/view/parse.d.ts.map +1 -0
- package/dist/editor-web/view/parse.js +238 -0
- package/dist/editor-web/view/parse.js.map +1 -0
- package/dist/editor-web/view/reconcile.d.ts +26 -0
- package/dist/editor-web/view/reconcile.d.ts.map +1 -0
- package/dist/editor-web/view/reconcile.js +142 -0
- package/dist/editor-web/view/reconcile.js.map +1 -0
- package/dist/editor-web/view/render.d.ts +14 -0
- package/dist/editor-web/view/render.d.ts.map +1 -0
- package/dist/editor-web/view/render.js +162 -0
- package/dist/editor-web/view/render.js.map +1 -0
- package/dist/export/docx/document-xml.d.ts +3 -0
- package/dist/export/docx/document-xml.d.ts.map +1 -0
- package/dist/export/docx/document-xml.js +218 -0
- package/dist/export/docx/document-xml.js.map +1 -0
- package/dist/export/docx/package-parts.d.ts +9 -0
- package/dist/export/docx/package-parts.d.ts.map +1 -0
- package/dist/export/docx/package-parts.js +91 -0
- package/dist/export/docx/package-parts.js.map +1 -0
- package/dist/export/docx/writer.d.ts +17 -0
- package/dist/export/docx/writer.d.ts.map +1 -0
- package/dist/export/docx/writer.js +48 -0
- package/dist/export/docx/writer.js.map +1 -0
- package/dist/export/images/downsample.d.ts +19 -0
- package/dist/export/images/downsample.d.ts.map +1 -0
- package/dist/export/images/downsample.js +64 -0
- package/dist/export/images/downsample.js.map +1 -0
- package/dist/export/images/png-encode.d.ts +4 -0
- package/dist/export/images/png-encode.d.ts.map +1 -0
- package/dist/export/images/png-encode.js +86 -0
- package/dist/export/images/png-encode.js.map +1 -0
- package/dist/export/images/prepare.d.ts +22 -0
- package/dist/export/images/prepare.d.ts.map +1 -0
- package/dist/export/images/prepare.js +29 -0
- package/dist/export/images/prepare.js.map +1 -0
- package/dist/export/images/rasterize.d.ts +7 -0
- package/dist/export/images/rasterize.d.ts.map +1 -0
- package/dist/export/images/rasterize.js +62 -0
- package/dist/export/images/rasterize.js.map +1 -0
- package/dist/export/index.d.ts +45 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +52 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/layout/index.d.ts +23 -0
- package/dist/export/layout/index.d.ts.map +1 -0
- package/dist/export/layout/index.js +18 -0
- package/dist/export/layout/index.js.map +1 -0
- package/dist/export/layout/layout-blocks.d.ts +5 -0
- package/dist/export/layout/layout-blocks.d.ts.map +1 -0
- package/dist/export/layout/layout-blocks.js +91 -0
- package/dist/export/layout/layout-blocks.js.map +1 -0
- package/dist/export/layout/layout-flow.d.ts +25 -0
- package/dist/export/layout/layout-flow.d.ts.map +1 -0
- package/dist/export/layout/layout-flow.js +23 -0
- package/dist/export/layout/layout-flow.js.map +1 -0
- package/dist/export/layout/layout-structured.d.ts +4 -0
- package/dist/export/layout/layout-structured.d.ts.map +1 -0
- package/dist/export/layout/layout-structured.js +153 -0
- package/dist/export/layout/layout-structured.js.map +1 -0
- package/dist/export/layout/layout-types.d.ts +35 -0
- package/dist/export/layout/layout-types.d.ts.map +1 -0
- package/dist/export/layout/layout-types.js +2 -0
- package/dist/export/layout/layout-types.js.map +1 -0
- package/dist/export/layout/pagination.d.ts +9 -0
- package/dist/export/layout/pagination.d.ts.map +1 -0
- package/dist/export/layout/pagination.js +38 -0
- package/dist/export/layout/pagination.js.map +1 -0
- package/dist/export/layout/text.d.ts +47 -0
- package/dist/export/layout/text.d.ts.map +1 -0
- package/dist/export/layout/text.js +119 -0
- package/dist/export/layout/text.js.map +1 -0
- package/dist/export/layout/units.d.ts +30 -0
- package/dist/export/layout/units.d.ts.map +1 -0
- package/dist/export/layout/units.js +55 -0
- package/dist/export/layout/units.js.map +1 -0
- package/dist/export/odt/writer.d.ts +24 -0
- package/dist/export/odt/writer.d.ts.map +1 -0
- package/dist/export/odt/writer.js +258 -0
- package/dist/export/odt/writer.js.map +1 -0
- package/dist/export/pdf/assemble.d.ts +9 -0
- package/dist/export/pdf/assemble.d.ts.map +1 -0
- package/dist/export/pdf/assemble.js +105 -0
- package/dist/export/pdf/assemble.js.map +1 -0
- package/dist/export/pdf/diagnostics.d.ts +11 -0
- package/dist/export/pdf/diagnostics.d.ts.map +1 -0
- package/dist/export/pdf/diagnostics.js +88 -0
- package/dist/export/pdf/diagnostics.js.map +1 -0
- package/dist/export/pdf/equation.d.ts +55 -0
- package/dist/export/pdf/equation.d.ts.map +1 -0
- package/dist/export/pdf/equation.js +301 -0
- package/dist/export/pdf/equation.js.map +1 -0
- package/dist/export/pdf/export-pdf.d.ts +33 -0
- package/dist/export/pdf/export-pdf.d.ts.map +1 -0
- package/dist/export/pdf/export-pdf.js +54 -0
- package/dist/export/pdf/export-pdf.js.map +1 -0
- package/dist/export/pdf/fonts.d.ts +7 -0
- package/dist/export/pdf/fonts.d.ts.map +1 -0
- package/dist/export/pdf/fonts.js +15 -0
- package/dist/export/pdf/fonts.js.map +1 -0
- package/dist/export/pdf/image.d.ts +27 -0
- package/dist/export/pdf/image.d.ts.map +1 -0
- package/dist/export/pdf/image.js +271 -0
- package/dist/export/pdf/image.js.map +1 -0
- package/dist/export/pdf/layout-pages.d.ts +9 -0
- package/dist/export/pdf/layout-pages.d.ts.map +1 -0
- package/dist/export/pdf/layout-pages.js +174 -0
- package/dist/export/pdf/layout-pages.js.map +1 -0
- package/dist/export/pdf/layout-table.d.ts +29 -0
- package/dist/export/pdf/layout-table.d.ts.map +1 -0
- package/dist/export/pdf/layout-table.js +216 -0
- package/dist/export/pdf/layout-table.js.map +1 -0
- package/dist/export/pdf/page-metrics.d.ts +11 -0
- package/dist/export/pdf/page-metrics.d.ts.map +1 -0
- package/dist/export/pdf/page-metrics.js +14 -0
- package/dist/export/pdf/page-metrics.js.map +1 -0
- package/dist/export/pdf/pdf-model.d.ts +36 -0
- package/dist/export/pdf/pdf-model.d.ts.map +1 -0
- package/dist/export/pdf/pdf-model.js +4 -0
- package/dist/export/pdf/pdf-model.js.map +1 -0
- package/dist/export/pdf/stream.d.ts +6 -0
- package/dist/export/pdf/stream.d.ts.map +1 -0
- package/dist/export/pdf/stream.js +213 -0
- package/dist/export/pdf/stream.js.map +1 -0
- package/dist/export/pdf/writer.d.ts +26 -0
- package/dist/export/pdf/writer.d.ts.map +1 -0
- package/dist/export/pdf/writer.js +31 -0
- package/dist/export/pdf/writer.js.map +1 -0
- package/dist/export/validate.d.ts +29 -0
- package/dist/export/validate.d.ts.map +1 -0
- package/dist/export/validate.js +127 -0
- package/dist/export/validate.js.map +1 -0
- package/dist/export/xml/writer.d.ts +19 -0
- package/dist/export/xml/writer.d.ts.map +1 -0
- package/dist/export/xml/writer.js +57 -0
- package/dist/export/xml/writer.js.map +1 -0
- package/dist/export/zip/crc32.d.ts +2 -0
- package/dist/export/zip/crc32.d.ts.map +1 -0
- package/dist/export/zip/crc32.js +20 -0
- package/dist/export/zip/crc32.js.map +1 -0
- package/dist/export/zip/deflate.d.ts +15 -0
- package/dist/export/zip/deflate.d.ts.map +1 -0
- package/dist/export/zip/deflate.js +28 -0
- package/dist/export/zip/deflate.js.map +1 -0
- package/dist/export/zip/index.d.ts +3 -0
- package/dist/export/zip/index.d.ts.map +1 -0
- package/dist/export/zip/index.js +3 -0
- package/dist/export/zip/index.js.map +1 -0
- package/dist/export/zip/zipWriter.d.ts +23 -0
- package/dist/export/zip/zipWriter.d.ts.map +1 -0
- package/dist/export/zip/zipWriter.js +123 -0
- package/dist/export/zip/zipWriter.js.map +1 -0
- package/dist/public-api/index.d.ts +46 -0
- package/dist/public-api/index.d.ts.map +1 -0
- package/dist/public-api/index.js +40 -0
- package/dist/public-api/index.js.map +1 -0
- package/dist/template/diagnostics/index.d.ts +8 -0
- package/dist/template/diagnostics/index.d.ts.map +1 -0
- package/dist/template/diagnostics/index.js +4 -0
- package/dist/template/diagnostics/index.js.map +1 -0
- package/dist/template/formatter/index.d.ts +9 -0
- package/dist/template/formatter/index.d.ts.map +1 -0
- package/dist/template/formatter/index.js +27 -0
- package/dist/template/formatter/index.js.map +1 -0
- package/dist/template/index.d.ts +3 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +3 -0
- package/dist/template/index.js.map +1 -0
- package/dist/template/parser/parser.d.ts +42 -0
- package/dist/template/parser/parser.d.ts.map +1 -0
- package/dist/template/parser/parser.js +135 -0
- package/dist/template/parser/parser.js.map +1 -0
- package/dist/template/resolver/format.d.ts +11 -0
- package/dist/template/resolver/format.d.ts.map +1 -0
- package/dist/template/resolver/format.js +80 -0
- package/dist/template/resolver/format.js.map +1 -0
- package/dist/template/resolver/resolver.d.ts +31 -0
- package/dist/template/resolver/resolver.d.ts.map +1 -0
- package/dist/template/resolver/resolver.js +218 -0
- package/dist/template/resolver/resolver.js.map +1 -0
- package/dist/theme/index.d.ts +26 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +87 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +110 -0
- package/schemas/portable-doc-v1.json +250 -0
- package/themes/base.css +71 -0
- package/themes/components.css +135 -0
- package/themes/editor-chrome.css +174 -0
- package/themes/editor-columns.css +121 -0
- package/themes/editor-overlays.css +464 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DocxWriter — Phase 9
|
|
3
|
+
* Open XML package: [Content_Types].xml, _rels/.rels, word/document.xml, styles, settings, rels, media, docProps.
|
|
4
|
+
*/
|
|
5
|
+
import { ZipWriter } from "../zip/zipWriter.js";
|
|
6
|
+
import { buildDocument } from "./document-xml.js";
|
|
7
|
+
import { placeholderPng, needsRasterFallback } from "../../assets/png/placeholder.js";
|
|
8
|
+
import { prepareExportImages } from "../images/prepare.js";
|
|
9
|
+
import { buildAppProps, buildContentTypes, buildCoreProps, buildDocRels, buildRels, buildSettings, buildStyles, } from "./package-parts.js";
|
|
10
|
+
export class DocxWriter {
|
|
11
|
+
clock;
|
|
12
|
+
constructor(opts = {}) {
|
|
13
|
+
this.clock = opts.clock ?? { nowIso: () => new Date().toISOString() };
|
|
14
|
+
}
|
|
15
|
+
async write(document, assets, sink) {
|
|
16
|
+
void this.clock;
|
|
17
|
+
const zip = new ZipWriter();
|
|
18
|
+
zip.add("[Content_Types].xml", buildContentTypes(document));
|
|
19
|
+
zip.add("_rels/.rels", buildRels());
|
|
20
|
+
zip.add("word/document.xml", buildDocument(document));
|
|
21
|
+
zip.add("word/styles.xml", buildStyles());
|
|
22
|
+
zip.add("word/settings.xml", buildSettings());
|
|
23
|
+
zip.add("word/_rels/document.xml.rels", buildDocRels(document));
|
|
24
|
+
zip.add("docProps/core.xml", buildCoreProps(document));
|
|
25
|
+
zip.add("docProps/app.xml", buildAppProps());
|
|
26
|
+
const input = {};
|
|
27
|
+
for (const [id, asset] of Object.entries(assets ?? {})) {
|
|
28
|
+
if (asset.data)
|
|
29
|
+
input[id] = { id, mediaType: asset.mediaType, data: asset.data };
|
|
30
|
+
}
|
|
31
|
+
const prepared = await prepareExportImages(document, input);
|
|
32
|
+
let needPng = false;
|
|
33
|
+
for (const [id, asset] of Object.entries(prepared)) {
|
|
34
|
+
const ext = asset.mediaType.split("/")[1].replace("jpeg", "jpg").replace("svg+xml", "svg");
|
|
35
|
+
zip.add(`word/media/${id}.${ext}`, asset.data);
|
|
36
|
+
if (needsRasterFallback(asset.mediaType)) {
|
|
37
|
+
zip.add(`word/media/${id}.png`, placeholderPng());
|
|
38
|
+
needPng = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
void needPng;
|
|
42
|
+
const bytes = zip.build();
|
|
43
|
+
await sink.write(bytes);
|
|
44
|
+
await sink.close?.();
|
|
45
|
+
return { byteLength: bytes.length };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/export/docx/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Area-average RGB downscale. Used when export size is smaller than the source pixels.
|
|
3
|
+
*/
|
|
4
|
+
export declare function downsampleRgb(src: Uint8Array, sw: number, sh: number, dw: number, dh: number): Uint8Array;
|
|
5
|
+
/** Largest display size of `assetId` in the document (µm). */
|
|
6
|
+
export declare function maxImageDisplayUm(blocks: Array<{
|
|
7
|
+
type: string;
|
|
8
|
+
assetId?: string;
|
|
9
|
+
widthUm?: number;
|
|
10
|
+
heightUm?: number;
|
|
11
|
+
rows?: unknown;
|
|
12
|
+
columns?: unknown;
|
|
13
|
+
cells?: unknown;
|
|
14
|
+
blocks?: unknown;
|
|
15
|
+
}>, assetId: string): {
|
|
16
|
+
widthUm: number;
|
|
17
|
+
heightUm: number;
|
|
18
|
+
} | null;
|
|
19
|
+
//# sourceMappingURL=downsample.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downsample.d.ts","sourceRoot":"","sources":["../../../src/export/images/downsample.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CA8BzG;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EAC5J,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsB9C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Area-average RGB downscale. Used when export size is smaller than the source pixels.
|
|
3
|
+
*/
|
|
4
|
+
export function downsampleRgb(src, sw, sh, dw, dh) {
|
|
5
|
+
if (dw < 1 || dh < 1 || sw < 1 || sh < 1)
|
|
6
|
+
return new Uint8Array(0);
|
|
7
|
+
if (dw === sw && dh === sh)
|
|
8
|
+
return src;
|
|
9
|
+
const dst = new Uint8Array(dw * dh * 3);
|
|
10
|
+
for (let y = 0; y < dh; y++) {
|
|
11
|
+
const y0 = Math.floor((y * sh) / dh);
|
|
12
|
+
const y1 = Math.max(y0 + 1, Math.floor(((y + 1) * sh) / dh));
|
|
13
|
+
for (let x = 0; x < dw; x++) {
|
|
14
|
+
const x0 = Math.floor((x * sw) / dw);
|
|
15
|
+
const x1 = Math.max(x0 + 1, Math.floor(((x + 1) * sw) / dw));
|
|
16
|
+
let r = 0;
|
|
17
|
+
let g = 0;
|
|
18
|
+
let b = 0;
|
|
19
|
+
let n = 0;
|
|
20
|
+
for (let sy = y0; sy < y1 && sy < sh; sy++) {
|
|
21
|
+
for (let sx = x0; sx < x1 && sx < sw; sx++) {
|
|
22
|
+
const i = (sy * sw + sx) * 3;
|
|
23
|
+
r += src[i];
|
|
24
|
+
g += src[i + 1];
|
|
25
|
+
b += src[i + 2];
|
|
26
|
+
n++;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const o = (y * dw + x) * 3;
|
|
30
|
+
dst[o] = Math.round(r / n);
|
|
31
|
+
dst[o + 1] = Math.round(g / n);
|
|
32
|
+
dst[o + 2] = Math.round(b / n);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return dst;
|
|
36
|
+
}
|
|
37
|
+
/** Largest display size of `assetId` in the document (µm). */
|
|
38
|
+
export function maxImageDisplayUm(blocks, assetId) {
|
|
39
|
+
let widthUm = 0;
|
|
40
|
+
let heightUm = 0;
|
|
41
|
+
const walk = (list) => {
|
|
42
|
+
for (const b of list) {
|
|
43
|
+
if (b.type === "image" && b.assetId === assetId) {
|
|
44
|
+
widthUm = Math.max(widthUm, b.widthUm ?? 0);
|
|
45
|
+
heightUm = Math.max(heightUm, b.heightUm ?? 0);
|
|
46
|
+
}
|
|
47
|
+
if (b.type === "table" && Array.isArray(b.rows)) {
|
|
48
|
+
for (const row of b.rows) {
|
|
49
|
+
for (const cell of row.cells)
|
|
50
|
+
walk(cell.blocks);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (b.type === "columns" && Array.isArray(b.columns)) {
|
|
54
|
+
for (const col of b.columns)
|
|
55
|
+
walk(col.blocks);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
walk(blocks);
|
|
60
|
+
if (!widthUm && !heightUm)
|
|
61
|
+
return null;
|
|
62
|
+
return { widthUm, heightUm };
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=downsample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downsample.js","sourceRoot":"","sources":["../../../src/export/images/downsample.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** zlib-wrapped uncompressed DEFLATE (CMF/FLG + stored blocks + Adler-32). */
|
|
2
|
+
export declare function zlibStore(raw: Uint8Array): Uint8Array;
|
|
3
|
+
export declare function encodePngRgb(rgb: Uint8Array, width: number, height: number): Uint8Array;
|
|
4
|
+
//# sourceMappingURL=png-encode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png-encode.d.ts","sourceRoot":"","sources":["../../../src/export/images/png-encode.ts"],"names":[],"mappings":"AA6BA,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAwBrD;AAgBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAgBvF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RGB → PNG (8-bit truecolor). IDAT uses uncompressed DEFLATE stored blocks
|
|
3
|
+
* so encoding is deterministic and has no runtime dependencies.
|
|
4
|
+
*/
|
|
5
|
+
import { crc32 } from "../zip/crc32.js";
|
|
6
|
+
function adler32(data) {
|
|
7
|
+
let a = 1;
|
|
8
|
+
let b = 0;
|
|
9
|
+
for (let i = 0; i < data.length; i++) {
|
|
10
|
+
a += data[i];
|
|
11
|
+
if (a >= 65521)
|
|
12
|
+
a -= 65521;
|
|
13
|
+
b += a;
|
|
14
|
+
if (b >= 65521)
|
|
15
|
+
b -= 65521;
|
|
16
|
+
}
|
|
17
|
+
return ((b << 16) | a) >>> 0;
|
|
18
|
+
}
|
|
19
|
+
function concat(parts) {
|
|
20
|
+
const total = parts.reduce((n, p) => n + p.length, 0);
|
|
21
|
+
const out = new Uint8Array(total);
|
|
22
|
+
let off = 0;
|
|
23
|
+
for (const p of parts) {
|
|
24
|
+
out.set(p, off);
|
|
25
|
+
off += p.length;
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
/** zlib-wrapped uncompressed DEFLATE (CMF/FLG + stored blocks + Adler-32). */
|
|
30
|
+
export function zlibStore(raw) {
|
|
31
|
+
const parts = [new Uint8Array([0x78, 0x01])];
|
|
32
|
+
if (raw.length === 0) {
|
|
33
|
+
parts.push(new Uint8Array([0x01, 0x00, 0x00, 0xff, 0xff]));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
let off = 0;
|
|
37
|
+
while (off < raw.length) {
|
|
38
|
+
const n = Math.min(65535, raw.length - off);
|
|
39
|
+
const last = off + n >= raw.length;
|
|
40
|
+
const header = new Uint8Array(5);
|
|
41
|
+
header[0] = last ? 0x01 : 0x00;
|
|
42
|
+
header[1] = n & 0xff;
|
|
43
|
+
header[2] = (n >> 8) & 0xff;
|
|
44
|
+
const nlen = (~n) & 0xffff;
|
|
45
|
+
header[3] = nlen & 0xff;
|
|
46
|
+
header[4] = (nlen >> 8) & 0xff;
|
|
47
|
+
parts.push(header, raw.subarray(off, off + n));
|
|
48
|
+
off += n;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const trail = new Uint8Array(4);
|
|
52
|
+
new DataView(trail.buffer).setUint32(0, adler32(raw), false);
|
|
53
|
+
parts.push(trail);
|
|
54
|
+
return concat(parts);
|
|
55
|
+
}
|
|
56
|
+
function chunk(type, data) {
|
|
57
|
+
const out = new Uint8Array(12 + data.length);
|
|
58
|
+
const view = new DataView(out.buffer);
|
|
59
|
+
view.setUint32(0, data.length, false);
|
|
60
|
+
out[4] = type.charCodeAt(0);
|
|
61
|
+
out[5] = type.charCodeAt(1);
|
|
62
|
+
out[6] = type.charCodeAt(2);
|
|
63
|
+
out[7] = type.charCodeAt(3);
|
|
64
|
+
out.set(data, 8);
|
|
65
|
+
const crcSrc = out.subarray(4, 8 + data.length);
|
|
66
|
+
view.setUint32(8 + data.length, crc32(crcSrc), false);
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
export function encodePngRgb(rgb, width, height) {
|
|
70
|
+
const stride = width * 3;
|
|
71
|
+
const raw = new Uint8Array(height * (1 + stride));
|
|
72
|
+
for (let y = 0; y < height; y++) {
|
|
73
|
+
const row = y * (1 + stride);
|
|
74
|
+
raw[row] = 0;
|
|
75
|
+
raw.set(rgb.subarray(y * stride, (y + 1) * stride), row + 1);
|
|
76
|
+
}
|
|
77
|
+
const ihdr = new Uint8Array(13);
|
|
78
|
+
const v = new DataView(ihdr.buffer);
|
|
79
|
+
v.setUint32(0, width, false);
|
|
80
|
+
v.setUint32(4, height, false);
|
|
81
|
+
ihdr[8] = 8;
|
|
82
|
+
ihdr[9] = 2;
|
|
83
|
+
const sig = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
84
|
+
return concat([sig, chunk("IHDR", ihdr), chunk("IDAT", zlibStore(raw)), chunk("IEND", new Uint8Array(0))]);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=png-encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png-encode.js","sourceRoot":"","sources":["../../../src/export/images/png-encode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { PortableDocument } from "../../core/model/types.js";
|
|
2
|
+
import { type DecodedImage } from "../pdf/image.js";
|
|
3
|
+
export interface PreparedAsset {
|
|
4
|
+
id: string;
|
|
5
|
+
mediaType: string;
|
|
6
|
+
data: Uint8Array;
|
|
7
|
+
decoded: DecodedImage | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function targetEmbedPx(origW: number, origH: number, widthUm: number, heightUm: number): {
|
|
10
|
+
w: number;
|
|
11
|
+
h: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Decode for PDF XObjects. Keep source pixels as-is (no downscale).
|
|
15
|
+
* JPEG is DCT passthrough; PNG/WebP become RGB only when the PDF writer needs it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function prepareExportImages(_doc: PortableDocument, assets: Record<string, {
|
|
18
|
+
id: string;
|
|
19
|
+
mediaType: string;
|
|
20
|
+
data: Uint8Array;
|
|
21
|
+
}>): Promise<Record<string, PreparedAsset>>;
|
|
22
|
+
//# sourceMappingURL=prepare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/export/images/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGvE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOvH;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAUxC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { umToPx } from "../layout/units.js";
|
|
2
|
+
import { decodeImageForPdf } from "../pdf/image.js";
|
|
3
|
+
import { decodeViaBitmap } from "./rasterize.js";
|
|
4
|
+
export function targetEmbedPx(origW, origH, widthUm, heightUm) {
|
|
5
|
+
if (widthUm <= 0 && heightUm <= 0)
|
|
6
|
+
return { w: origW, h: origH };
|
|
7
|
+
const tw = widthUm > 0 ? Math.max(1, Math.round(umToPx(widthUm))) : Math.max(1, Math.round(origW * (umToPx(heightUm) / origH)));
|
|
8
|
+
const th = heightUm > 0 ? Math.max(1, Math.round(umToPx(heightUm))) : Math.max(1, Math.round(origH * (tw / origW)));
|
|
9
|
+
if (tw >= origW && th >= origH)
|
|
10
|
+
return { w: origW, h: origH };
|
|
11
|
+
const scale = Math.min(tw / origW, th / origH, 1);
|
|
12
|
+
return { w: Math.max(1, Math.round(origW * scale)), h: Math.max(1, Math.round(origH * scale)) };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Decode for PDF XObjects. Keep source pixels as-is (no downscale).
|
|
16
|
+
* JPEG is DCT passthrough; PNG/WebP become RGB only when the PDF writer needs it.
|
|
17
|
+
*/
|
|
18
|
+
export async function prepareExportImages(_doc, assets) {
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const [id, ref] of Object.entries(assets)) {
|
|
21
|
+
let decoded = await decodeImageForPdf(ref.data, ref.mediaType);
|
|
22
|
+
if (!decoded || (!decoded.rgb && !decoded.jpeg) || decoded.widthPx === 0) {
|
|
23
|
+
decoded = await decodeViaBitmap(ref.data);
|
|
24
|
+
}
|
|
25
|
+
out[id] = { id, mediaType: ref.mediaType, data: ref.data, decoded };
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/export/images/prepare.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAqB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjD,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe,EAAE,QAAgB;IAC3F,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACjE,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAChI,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpH,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK;QAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;AAClG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAsB,EACtB,MAA2E;IAE3E,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DecodedImage } from "../pdf/image.js";
|
|
2
|
+
/**
|
|
3
|
+
* Last-resort decode in browsers (and Node with ImageBitmap): WebP, indexed PNG,
|
|
4
|
+
* SVG, and files with an empty/wrong MIME still become DeviceRGB for PDF.
|
|
5
|
+
*/
|
|
6
|
+
export declare function decodeViaBitmap(data: Uint8Array): Promise<DecodedImage | null>;
|
|
7
|
+
//# sourceMappingURL=rasterize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rasterize.d.ts","sourceRoot":"","sources":["../../../src/export/images/rasterize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsDpF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { sniffImage } from "../../assets/sniff/index.js";
|
|
2
|
+
function sniffType(data) {
|
|
3
|
+
return sniffImage(data).mediaType ?? "application/octet-stream";
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Last-resort decode in browsers (and Node with ImageBitmap): WebP, indexed PNG,
|
|
7
|
+
* SVG, and files with an empty/wrong MIME still become DeviceRGB for PDF.
|
|
8
|
+
*/
|
|
9
|
+
export async function decodeViaBitmap(data) {
|
|
10
|
+
const g = globalThis;
|
|
11
|
+
if (typeof g.createImageBitmap !== "function")
|
|
12
|
+
return null;
|
|
13
|
+
try {
|
|
14
|
+
const blob = new Blob([data], { type: sniffType(data) });
|
|
15
|
+
const bmp = await g.createImageBitmap(blob);
|
|
16
|
+
const w = bmp.width;
|
|
17
|
+
const h = bmp.height;
|
|
18
|
+
if (!w || !h || w > 8000 || h > 8000) {
|
|
19
|
+
bmp.close?.();
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
let canvas;
|
|
23
|
+
if (typeof g.OffscreenCanvas === "function") {
|
|
24
|
+
canvas = new g.OffscreenCanvas(w, h);
|
|
25
|
+
}
|
|
26
|
+
else if (g.document) {
|
|
27
|
+
const c = g.document.createElement("canvas");
|
|
28
|
+
c.width = w;
|
|
29
|
+
c.height = h;
|
|
30
|
+
canvas = c;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
bmp.close?.();
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const ctx = canvas.getContext("2d");
|
|
37
|
+
if (!ctx) {
|
|
38
|
+
bmp.close?.();
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
ctx.drawImage(bmp, 0, 0);
|
|
42
|
+
bmp.close?.();
|
|
43
|
+
const rgba = ctx.getImageData(0, 0, w, h).data;
|
|
44
|
+
const rgb = new Uint8Array(w * h * 3);
|
|
45
|
+
const alpha = new Uint8Array(w * h);
|
|
46
|
+
let anyTrans = false;
|
|
47
|
+
for (let i = 0, j = 0, a = 0; i < rgba.length; i += 4, j += 3, a++) {
|
|
48
|
+
const aa = rgba[i + 3] ?? 255;
|
|
49
|
+
if (aa < 255)
|
|
50
|
+
anyTrans = true;
|
|
51
|
+
rgb[j] = rgba[i] ?? 0;
|
|
52
|
+
rgb[j + 1] = rgba[i + 1] ?? 0;
|
|
53
|
+
rgb[j + 2] = rgba[i + 2] ?? 0;
|
|
54
|
+
alpha[a] = aa;
|
|
55
|
+
}
|
|
56
|
+
return { widthPx: w, heightPx: h, rgb, ...(anyTrans ? { alpha } : {}) };
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=rasterize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rasterize.js","sourceRoot":"","sources":["../../../src/export/images/rasterize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export * from "./xml/writer.js";
|
|
2
|
+
export * from "./zip/index.js";
|
|
3
|
+
export * from "./pdf/writer.js";
|
|
4
|
+
export * from "./odt/writer.js";
|
|
5
|
+
export * from "./docx/writer.js";
|
|
6
|
+
export * from "./layout/index.js";
|
|
7
|
+
import type { PortableDocument, BinarySink, Clock, IdGenerator, AssetResolver } from "../core/model/types.js";
|
|
8
|
+
import { type RenderOptions } from "../template/resolver/resolver.js";
|
|
9
|
+
export type ExportFormat = "pdf" | "odt" | "docx";
|
|
10
|
+
export interface ExportRequest {
|
|
11
|
+
document: PortableDocument;
|
|
12
|
+
data?: Record<string, unknown>;
|
|
13
|
+
format: ExportFormat;
|
|
14
|
+
assets?: Record<string, {
|
|
15
|
+
id: string;
|
|
16
|
+
mediaType: string;
|
|
17
|
+
data: Uint8Array;
|
|
18
|
+
}>;
|
|
19
|
+
sink: BinarySink;
|
|
20
|
+
options?: RenderOptions & {
|
|
21
|
+
deterministic?: boolean;
|
|
22
|
+
strict?: boolean;
|
|
23
|
+
imagePolicy?: string;
|
|
24
|
+
missingVariable?: "error" | "empty" | "keep";
|
|
25
|
+
};
|
|
26
|
+
clock?: Clock;
|
|
27
|
+
idGenerator?: IdGenerator;
|
|
28
|
+
assetResolver?: AssetResolver;
|
|
29
|
+
}
|
|
30
|
+
export interface ExportResult {
|
|
31
|
+
byteLength: number;
|
|
32
|
+
diagnostics: Array<{
|
|
33
|
+
code: string;
|
|
34
|
+
message?: string;
|
|
35
|
+
severity?: string;
|
|
36
|
+
path?: string;
|
|
37
|
+
}>;
|
|
38
|
+
format: ExportFormat;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Common pipeline — Phase 10
|
|
42
|
+
* validate+migrate -> resolve variables -> resolve assets -> normalize -> layout -> adapt -> package
|
|
43
|
+
*/
|
|
44
|
+
export declare function exportDocument(req: ExportRequest): Promise<ExportResult>;
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/export/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAElC,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAMtF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,GAAG;QACxB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;KAC9C,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzF,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoC9E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export * from "./xml/writer.js";
|
|
2
|
+
export * from "./zip/index.js";
|
|
3
|
+
export * from "./pdf/writer.js";
|
|
4
|
+
export * from "./odt/writer.js";
|
|
5
|
+
export * from "./docx/writer.js";
|
|
6
|
+
export * from "./layout/index.js";
|
|
7
|
+
import { renderTemplate } from "../template/resolver/resolver.js";
|
|
8
|
+
import { validateDocument } from "../core/schema/validator.js";
|
|
9
|
+
import { OdtWriter } from "./odt/writer.js";
|
|
10
|
+
import { DocxWriter } from "./docx/writer.js";
|
|
11
|
+
import { exportPdf } from "./pdf/export-pdf.js";
|
|
12
|
+
/**
|
|
13
|
+
* Common pipeline — Phase 10
|
|
14
|
+
* validate+migrate -> resolve variables -> resolve assets -> normalize -> layout -> adapt -> package
|
|
15
|
+
*/
|
|
16
|
+
export async function exportDocument(req) {
|
|
17
|
+
const { document, data = {}, format, sink, options = {}, assets = {} } = req;
|
|
18
|
+
if (format === "pdf") {
|
|
19
|
+
const pdf = await exportPdf({
|
|
20
|
+
document, data, assets, options, clock: req.clock, idGenerator: req.idGenerator, sink,
|
|
21
|
+
});
|
|
22
|
+
return { byteLength: pdf.byteLength, diagnostics: pdf.diagnostics, format };
|
|
23
|
+
}
|
|
24
|
+
const validation = validateDocument(document, { strict: options.strict ?? true });
|
|
25
|
+
if (!validation.valid && (options.strict ?? true)) {
|
|
26
|
+
throw new Error(`Document invalid: ${validation.errors.slice(0, 3).map((e) => e.message).join("; ")}`);
|
|
27
|
+
}
|
|
28
|
+
const rendered = renderTemplate(document, data, {
|
|
29
|
+
locale: document.locale,
|
|
30
|
+
missing: options.missingVariable ?? "error",
|
|
31
|
+
mode: (options.strict ?? true) ? "strict" : "tolerant",
|
|
32
|
+
});
|
|
33
|
+
if (rendered.diagnostics.some((d) => d.severity === "error") && (options.strict ?? true)) {
|
|
34
|
+
throw new Error(`Render failed: ${rendered.diagnostics.filter((d) => d.severity === "error").map((d) => d.message ?? d.code).join("; ")}`);
|
|
35
|
+
}
|
|
36
|
+
const clock = req.clock ?? { nowIso: () => new Date().toISOString() };
|
|
37
|
+
switch (format) {
|
|
38
|
+
case "odt": {
|
|
39
|
+
const w = new OdtWriter({ clock });
|
|
40
|
+
const res = await w.write(rendered.document, assets, sink);
|
|
41
|
+
return { byteLength: res.byteLength, diagnostics: rendered.diagnostics, format };
|
|
42
|
+
}
|
|
43
|
+
case "docx": {
|
|
44
|
+
const w = new DocxWriter({ clock });
|
|
45
|
+
const res = await w.write(rendered.document, assets, sink);
|
|
46
|
+
return { byteLength: res.byteLength, diagnostics: rendered.diagnostics, format };
|
|
47
|
+
}
|
|
48
|
+
default:
|
|
49
|
+
throw new Error(`Unsupported format ${format}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/export/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAsB,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA2BhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAkB;IACrD,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;IAC7E,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;YAC1B,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI;SACtF,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IAClF,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,IAA+B,EAAE;QACzE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAG,OAAO,CAAC,eAA4C,IAAI,OAAO;QACzE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;KACvD,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7I,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QACnF,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QACnF,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAgB,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PortableDocument } from "../../core/model/types.js";
|
|
2
|
+
import { type PaginationOptions, type LayoutPage as PaginatedPage, type PageBox as PaginatedBox } from "./pagination.js";
|
|
3
|
+
export * from "./units.js";
|
|
4
|
+
export * from "./text.js";
|
|
5
|
+
export * from "./pagination.js";
|
|
6
|
+
export type LayoutPage = PaginatedPage;
|
|
7
|
+
export type LayoutBox = PaginatedBox;
|
|
8
|
+
export interface LayoutModel {
|
|
9
|
+
pages: LayoutPage[];
|
|
10
|
+
diagnostics: Array<{
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
severity?: string;
|
|
14
|
+
}>;
|
|
15
|
+
hash: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Intermediate layout model — Phase 6
|
|
19
|
+
* Now delegates to deterministic pagination with widows/orphans, table row handling and diagnostics.
|
|
20
|
+
* No DOM dependency; runs identically in browser and backend.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildLayout(doc: PortableDocument, _assets?: Record<string, unknown>, opts?: PaginationOptions & Record<string, unknown>): LayoutModel;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/export/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,UAAU,IAAI,aAAa,EAAE,KAAK,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3I,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AACvC,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,IAAI,GAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrD,WAAW,CAOb"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { paginateDocument } from "./pagination.js";
|
|
2
|
+
export * from "./units.js";
|
|
3
|
+
export * from "./text.js";
|
|
4
|
+
export * from "./pagination.js";
|
|
5
|
+
/**
|
|
6
|
+
* Intermediate layout model — Phase 6
|
|
7
|
+
* Now delegates to deterministic pagination with widows/orphans, table row handling and diagnostics.
|
|
8
|
+
* No DOM dependency; runs identically in browser and backend.
|
|
9
|
+
*/
|
|
10
|
+
export function buildLayout(doc, _assets = {}, opts = {}) {
|
|
11
|
+
const result = paginateDocument(doc, opts);
|
|
12
|
+
return {
|
|
13
|
+
pages: result.pages,
|
|
14
|
+
diagnostics: result.diagnostics,
|
|
15
|
+
hash: result.hash,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/export/layout/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA0F,MAAM,iBAAiB,CAAC;AAC3I,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAWhC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,GAAqB,EACrB,UAAmC,EAAE,EACrC,OAAoD,EAAE;IAEtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAoD;QACxE,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BlockNode } from "../../core/model/types.js";
|
|
2
|
+
import { type LayoutFlow } from "./layout-flow.js";
|
|
3
|
+
export type { LayoutFlow } from "./layout-flow.js";
|
|
4
|
+
export declare function layoutBlock(flow: LayoutFlow, block: BlockNode): void;
|
|
5
|
+
//# sourceMappingURL=layout-blocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-blocks.d.ts","sourceRoot":"","sources":["../../../src/export/layout/layout-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG/E,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CA+EpE"}
|