@printstack/print-studio 0.0.0-stage → 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/README.md +239 -2
- package/assets/render.worker-Cfbk18NW.js +109 -0
- package/cloneDeep-C5UZRjbH.js +1922 -0
- package/components/base-dialog/base-dialog.vue.d.ts +56 -0
- package/components/base-dialog/index.d.ts +2 -0
- package/components/base-dialog/types.d.ts +20 -0
- package/components/button-group/ButtonGroup.d.ts +64 -0
- package/components/button-group/index.d.ts +2 -0
- package/components/error-fallback/ErrorBoundary.d.ts +15 -0
- package/components/error-fallback/browser.d.ts +7 -0
- package/components/error-fallback/core.d.ts +36 -0
- package/components/error-fallback/exceptions/SilentException.d.ts +7 -0
- package/components/error-fallback/index.d.ts +8 -0
- package/components/error-fallback/rules/silent-exception.d.ts +2 -0
- package/components/error-fallback/vue.d.ts +3 -0
- package/components/popup-layer/container.d.ts +2 -0
- package/components/popup-layer/use-popup-layer.d.ts +6 -0
- package/components/popup-layer/with-popup-layer.d.ts +37 -0
- package/components/print-s-logo/print-s-logo.vue.d.ts +12 -0
- package/components/s-form/FieldRenderer.d.ts +21 -0
- package/components/s-form/SForm.d.ts +77 -0
- package/components/s-form/adapter.d.ts +61 -0
- package/components/s-form/builtin.d.ts +1 -0
- package/components/s-form/context.d.ts +44 -0
- package/components/s-form/diagnostics.d.ts +28 -0
- package/components/s-form/field-status.d.ts +18 -0
- package/components/s-form/index.d.ts +15 -0
- package/components/s-form/layouts/CollapseToggle.d.ts +28 -0
- package/components/s-form/layouts/FlexLayout.d.ts +89 -0
- package/components/s-form/layouts/GridLayout.d.ts +67 -0
- package/components/s-form/registry.d.ts +31 -0
- package/components/s-form/schema.d.ts +9 -0
- package/components/s-form/states.d.ts +59 -0
- package/components/s-form/types.d.ts +550 -0
- package/components/s-form/use-form-layout.d.ts +21 -0
- package/components/s-form/use-form-model.d.ts +15 -0
- package/components/s-form/utils.d.ts +76 -0
- package/composables/use-json-object-input.d.ts +10 -0
- package/composables/use-keyboard-shortcuts.d.ts +16 -0
- package/composables/use-z-index.d.ts +9 -0
- package/core/align.d.ts +43 -0
- package/core/binding-expression.d.ts +25 -0
- package/core/binding-formatters.d.ts +43 -0
- package/core/data-context.d.ts +73 -0
- package/core/data-source-path.d.ts +10 -0
- package/core/data-source.d.ts +26 -0
- package/core/document-expand.d.ts +7 -0
- package/core/document-model.d.ts +56 -0
- package/core/document-variable-resolver.d.ts +10 -0
- package/core/document-variables.d.ts +23 -0
- package/core/element-group.d.ts +73 -0
- package/core/element-registry.d.ts +229 -0
- package/core/element-transform.d.ts +12 -0
- package/core/errors.d.ts +20 -0
- package/core/events.d.ts +311 -0
- package/core/flow-expand.d.ts +13 -0
- package/core/follow-block.d.ts +9 -0
- package/core/follow-layout.d.ts +8 -0
- package/core/geometry.d.ts +110 -0
- package/core/index.d.ts +5 -0
- package/core/inspector.d.ts +27 -0
- package/core/layout-references.d.ts +8 -0
- package/core/overflow-expand.d.ts +7 -0
- package/core/page-extensions.d.ts +26 -0
- package/core/page-layout.d.ts +6 -0
- package/core/parser-version.d.ts +2 -0
- package/core/pointer-drag.d.ts +33 -0
- package/core/render/barcode.d.ts +26 -0
- package/core/render/canvas.d.ts +3 -0
- package/core/render/color.d.ts +19 -0
- package/core/render/dash.d.ts +4 -0
- package/core/render/element-warning.d.ts +3 -0
- package/core/render/fonts.d.ts +20 -0
- package/core/render/frame.d.ts +10 -0
- package/core/render/html.d.ts +11 -0
- package/core/render/image.d.ts +13 -0
- package/core/render/jspdf-loader.d.ts +6 -0
- package/core/render/pdf-draw.d.ts +64 -0
- package/core/render/qrcode.d.ts +15 -0
- package/core/render/render-task.d.ts +7 -0
- package/core/render/resource-data.d.ts +1 -0
- package/core/render/resource-task.d.ts +5 -0
- package/core/render/text-layout.d.ts +34 -0
- package/core/repeat-expand.d.ts +17 -0
- package/core/repeat-layout.d.ts +15 -0
- package/core/runtime-config.d.ts +12 -0
- package/core/types.d.ts +289 -0
- package/core/units.d.ts +15 -0
- package/core/z-index.d.ts +41 -0
- package/core.js +48 -0
- package/cost-sheet-Dwg0rt_l.js +1600 -0
- package/designer/commands/builtins.d.ts +2 -0
- package/designer/commands/command-registry.d.ts +39 -0
- package/designer/commands/domain-commands.d.ts +2 -0
- package/designer/commands/menu-adapter.d.ts +12 -0
- package/designer/commands/menu-interaction.d.ts +2 -0
- package/designer/commands/menu-types.d.ts +28 -0
- package/designer/commands/types.d.ts +57 -0
- package/designer/commands/use-command-shortcuts.d.ts +2 -0
- package/designer/components/bars/check-toggle.vue.d.ts +14 -0
- package/designer/components/bars/menu-bar.vue.d.ts +11 -0
- package/designer/components/bars/options-bar.vue.d.ts +3 -0
- package/designer/components/bars/tool-bar.vue.d.ts +3 -0
- package/designer/components/binding/binding-picker.vue.d.ts +23 -0
- package/designer/components/binding/binding-presets.d.ts +9 -0
- package/designer/components/binding/field-tree.vue.d.ts +21 -0
- package/designer/components/binding/schema-tree-editor.vue.d.ts +13 -0
- package/designer/components/binding/use-binding-expression.d.ts +41 -0
- package/designer/components/binding/use-binding-preview.d.ts +14 -0
- package/designer/components/binding/use-binding-sources.d.ts +37 -0
- package/designer/components/binding/use-binding-submission.d.ts +16 -0
- package/designer/components/designer-shell.vue.d.ts +16 -0
- package/designer/components/dialogs/apply-template-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/canvas-color-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/data-source-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/dialog-session-host.vue.d.ts +21 -0
- package/designer/components/dialogs/element-dialog.vue.d.ts +7 -0
- package/designer/components/dialogs/element-settings-workspace.vue.d.ts +28 -0
- package/designer/components/dialogs/export-progress-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/follow-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/follow-manager-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/guide-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/page-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/preview-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/repeat-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/repeat-manager-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/template-library-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/tutorial-dialog.vue.d.ts +3 -0
- package/designer/components/dialogs/use-data-source-sample.d.ts +18 -0
- package/designer/components/dialogs/use-document-preview.d.ts +29 -0
- package/designer/components/dialogs/use-preview-renderer.d.ts +30 -0
- package/designer/components/dialogs/use-preview-viewport.d.ts +37 -0
- package/designer/components/dialogs/use-template-catalog.d.ts +51 -0
- package/designer/components/dialogs/use-template-preview.d.ts +35 -0
- package/designer/components/fields/field-boolean.vue.d.ts +20 -0
- package/designer/components/fields/field-color.vue.d.ts +20 -0
- package/designer/components/fields/field-data-preview.vue.d.ts +12 -0
- package/designer/components/fields/field-image.vue.d.ts +14 -0
- package/designer/components/fields/field-table-borders.vue.d.ts +22 -0
- package/designer/components/fields/field-table-cell-style.vue.d.ts +13 -0
- package/designer/components/fields/field-table-continuation-layout.vue.d.ts +14 -0
- package/designer/components/fields/field-table-merge-rules.vue.d.ts +13 -0
- package/designer/components/fields/field-table-rows.vue.d.ts +13 -0
- package/designer/components/fields/field-table-structure.vue.d.ts +19 -0
- package/designer/components/fields/field-table.vue.d.ts +21 -0
- package/designer/components/fields/use-table-cells.d.ts +38 -0
- package/designer/components/fields/use-table-column-resize.d.ts +11 -0
- package/designer/components/fields/use-table-columns.d.ts +19 -0
- package/designer/components/fields/use-table-draft.d.ts +569 -0
- package/designer/components/fields/use-table-header-selection.d.ts +25 -0
- package/designer/components/fields/use-table-headers.d.ts +22 -0
- package/designer/components/fields/use-table-selection.d.ts +32 -0
- package/designer/components/forms/collection-picker-field.vue.d.ts +12 -0
- package/designer/components/forms/designer-field.vue.d.ts +23 -0
- package/designer/components/forms/designer-form.vue.d.ts +28 -0
- package/designer/components/forms/form-presentation.d.ts +6 -0
- package/designer/components/forms/inspector-schema.d.ts +9 -0
- package/designer/components/forms/table-inspector-control.vue.d.ts +24 -0
- package/designer/components/panels/control-panel.vue.d.ts +3 -0
- package/designer/components/panels/info-bar.vue.d.ts +7 -0
- package/designer/components/panels/inspector-field.vue.d.ts +13 -0
- package/designer/components/panels/layers-panel.vue.d.ts +3 -0
- package/designer/components/panels/pages-panel.vue.d.ts +3 -0
- package/designer/components/panels/panel-column.vue.d.ts +11 -0
- package/designer/components/panels/panel-dock.vue.d.ts +3 -0
- package/designer/components/panels/panel-group.vue.d.ts +12 -0
- package/designer/components/panels/transform-fields.d.ts +4 -0
- package/designer/components/panels/use-panel-drop-target.d.ts +24 -0
- package/designer/components/panels/use-panel-interactions.d.ts +22 -0
- package/designer/components/previews/barcode-preview.vue.d.ts +8 -0
- package/designer/components/previews/ellipse-preview.vue.d.ts +8 -0
- package/designer/components/previews/image-preview.vue.d.ts +8 -0
- package/designer/components/previews/line-preview.vue.d.ts +10 -0
- package/designer/components/previews/qrcode-preview.vue.d.ts +8 -0
- package/designer/components/previews/rect-preview.vue.d.ts +8 -0
- package/designer/components/previews/table-preview.vue.d.ts +8 -0
- package/designer/components/previews/text-preview.vue.d.ts +8 -0
- package/designer/components/stage/canvas-stage.vue.d.ts +3 -0
- package/designer/components/stage/element-renderer.vue.d.ts +12 -0
- package/designer/components/stage/follow-overlay.vue.d.ts +8 -0
- package/designer/components/stage/guides-drag-layer.vue.d.ts +3 -0
- package/designer/components/stage/guides-layer.vue.d.ts +8 -0
- package/designer/components/stage/inline-text-editor.vue.d.ts +16 -0
- package/designer/components/stage/page-view.vue.d.ts +10 -0
- package/designer/components/stage/repeat-overlay.vue.d.ts +8 -0
- package/designer/components/stage/ruler.vue.d.ts +6 -0
- package/designer/components/stage/selection-overlay.vue.d.ts +10 -0
- package/designer/components/stage/template-editing-banner.vue.d.ts +3 -0
- package/designer/components/stage/use-stage-pan.d.ts +6 -0
- package/designer/components/stage/use-stage-viewport.d.ts +13 -0
- package/designer/components/startup/startup-loading-view.vue.d.ts +9 -0
- package/designer/components/startup/startup-loading.d.ts +7 -0
- package/designer/components/ui/align-grid.vue.d.ts +9 -0
- package/designer/components/ui/align-icons.d.ts +3 -0
- package/designer/components/ui/align-target.vue.d.ts +3 -0
- package/designer/components/ui/context-menu.vue.d.ts +3 -0
- package/designer/components/ui/dialog-tabs.vue.d.ts +15 -0
- package/designer/components/ui/extension-slot.vue.d.ts +6 -0
- package/designer/components/ui/fallback-block.vue.d.ts +42 -0
- package/designer/components/ui/form-block.vue.d.ts +27 -0
- package/designer/components/ui/hint-text.vue.d.ts +23 -0
- package/designer/components/ui/icon-button.vue.d.ts +24 -0
- package/designer/components/ui/icon.vue.d.ts +6 -0
- package/designer/components/ui/icons.d.ts +2 -0
- package/designer/components/ui/menu-items.vue.d.ts +11 -0
- package/designer/components/ui/panel-frame.vue.d.ts +21 -0
- package/designer/components/ui/toast-host.vue.d.ts +3 -0
- package/designer/components/ui/tool-icon.vue.d.ts +6 -0
- package/designer/components/variable-text/use-variable-text-bindings.d.ts +9 -0
- package/designer/components/variable-text/use-variable-text-editor.d.ts +38 -0
- package/designer/components/variable-text/variable-formatter-editor.vue.d.ts +16 -0
- package/designer/components/variable-text/variable-text-field.vue.d.ts +33 -0
- package/designer/components/variable-text/variable-text-preview.vue.d.ts +7 -0
- package/designer/composables/use-restored-ui-state.d.ts +2 -0
- package/designer/config/canvas-background.d.ts +18 -0
- package/designer/context/editor-context.d.ts +64 -0
- package/designer/context/editor-runtime.d.ts +11 -0
- package/designer/context/editor-view.d.ts +8 -0
- package/designer/context/inspector-layout.d.ts +7 -0
- package/designer/context/use-element-definition.d.ts +1 -0
- package/designer/events/store-event-bindings.d.ts +7 -0
- package/designer/facade/bindings.d.ts +6 -0
- package/designer/facade/editing.d.ts +43 -0
- package/designer/facade/elements.d.ts +37 -0
- package/designer/facade/entities.d.ts +15364 -0
- package/designer/facade/output.d.ts +21 -0
- package/designer/facade/pages.d.ts +204 -0
- package/designer/facade/print-studio.d.ts +3 -0
- package/designer/facade/state.d.ts +10 -0
- package/designer/facade/use-print-studio.d.ts +6 -0
- package/designer/frame/entry.d.ts +0 -0
- package/designer/frame/host.d.ts +7 -0
- package/designer/frame/print-designer-frame.vue.d.ts +25 -0
- package/designer/frame/shared.d.ts +30 -0
- package/designer/frame/view.d.ts +8 -0
- package/designer/interactions/create.d.ts +3 -0
- package/designer/interactions/geometry-update.d.ts +3 -0
- package/designer/interactions/guides.d.ts +7 -0
- package/designer/interactions/marquee.d.ts +3 -0
- package/designer/interactions/move.d.ts +3 -0
- package/designer/interactions/point.d.ts +3 -0
- package/designer/interactions/pointer-drag.d.ts +3 -0
- package/designer/interactions/resize-strategies.d.ts +23 -0
- package/designer/interactions/snap.d.ts +48 -0
- package/designer/interactions/transform.d.ts +5 -0
- package/designer/mount-print-designer.d.ts +2 -0
- package/designer/plugins/builtins.d.ts +6 -0
- package/designer/plugins/context-menu-guard.d.ts +2 -0
- package/designer/plugins/domain-builtins.d.ts +5 -0
- package/designer/plugins/element-previews.d.ts +2 -0
- package/designer/plugins/error-handling.d.ts +5 -0
- package/designer/plugins/extension-points.d.ts +34 -0
- package/designer/plugins/follow-layout.d.ts +2 -0
- package/designer/plugins/panels.d.ts +2 -0
- package/designer/plugins/plugin-bootstrap.d.ts +5 -0
- package/designer/plugins/plugin-canvas.d.ts +29 -0
- package/designer/plugins/plugin-context.d.ts +100 -0
- package/designer/plugins/plugin-manager.d.ts +44 -0
- package/designer/plugins/plugin-scope.d.ts +10 -0
- package/designer/plugins/sandbox-plugin.d.ts +9 -0
- package/designer/plugins/tdesign-forms.d.ts +32 -0
- package/designer/plugins/template-library.d.ts +7 -0
- package/designer/plugins/tutorials.d.ts +2 -0
- package/designer/plugins/types.d.ts +63 -0
- package/designer/presets.d.ts +8 -0
- package/designer/print-designer.vue.d.ts +25 -0
- package/designer/services/document-actions.d.ts +17 -0
- package/designer/services/editor-resources.d.ts +6 -0
- package/designer/services/element-drop.d.ts +4 -0
- package/designer/services/file-reader.d.ts +2 -0
- package/designer/services/file-service.d.ts +7 -0
- package/designer/services/preference-storage.d.ts +9 -0
- package/designer/services/sample-preview.d.ts +16 -0
- package/designer/services/stage-service.d.ts +24 -0
- package/designer/services/text-input.d.ts +10 -0
- package/designer/stores/canvas-store.d.ts +33 -0
- package/designer/stores/clipboard-store.d.ts +143 -0
- package/designer/stores/config-store.d.ts +80 -0
- package/designer/stores/data-source-store.d.ts +58 -0
- package/designer/stores/document-store.d.ts +1186 -0
- package/designer/stores/editor-store.d.ts +10224 -0
- package/designer/stores/element-group-store.d.ts +101 -0
- package/designer/stores/element-store.d.ts +237 -0
- package/designer/stores/follow-block-store.d.ts +290 -0
- package/designer/stores/guide-store.d.ts +44 -0
- package/designer/stores/history-store.d.ts +45 -0
- package/designer/stores/layout-store.d.ts +18 -0
- package/designer/stores/navigation-store.d.ts +56 -0
- package/designer/stores/page-store.d.ts +164 -0
- package/designer/stores/panel-store.d.ts +526 -0
- package/designer/stores/plugin-store.d.ts +19 -0
- package/designer/stores/rendering-store.d.ts +120 -0
- package/designer/stores/repeat-group-store.d.ts +99 -0
- package/designer/stores/scope-store.d.ts +31 -0
- package/designer/stores/selection-store.d.ts +101 -0
- package/designer/stores/template-store.d.ts +655 -0
- package/designer/stores/tutorial-store.d.ts +75 -0
- package/designer/stores/types.d.ts +135 -0
- package/designer/stores/ui-store.d.ts +723 -0
- package/designer/stores/view-store.d.ts +483 -0
- package/designer/stores/z-index-store.d.ts +62 -0
- package/designer/template-library/builtin/cost-sheet.json.d.ts +1450 -0
- package/designer/template-library/builtin/invoice.json.d.ts +3338 -0
- package/designer/template-library/builtin/purchase-order.json.d.ts +1541 -0
- package/designer/template-library/builtin/welcome.json.d.ts +658 -0
- package/designer/template-library/builtin-templates.d.ts +4183 -0
- package/designer/template-library/registry.d.ts +13 -0
- package/designer/template-library/remote-provider.d.ts +25 -0
- package/designer/template-library/types.d.ts +35 -0
- package/designer/tools.d.ts +18 -0
- package/designer/tutorials/builtins.d.ts +20 -0
- package/designer/tutorials/interaction-guard.d.ts +3 -0
- package/designer/tutorials/playback.d.ts +17 -0
- package/designer/tutorials/scene.d.ts +11 -0
- package/designer/tutorials/screenplay.d.ts +3 -0
- package/designer/tutorials/types.d.ts +64 -0
- package/designer/tutorials/use-tutorial-interaction-guard.d.ts +2 -0
- package/designer/tutorials/use-tutorial-playback.d.ts +30 -0
- package/designer/types.d.ts +39 -0
- package/designer.d.ts +7 -0
- package/designer.js +45 -0
- package/document-model-DC9sn2WV.js +1302 -0
- package/elements/definitions/barcode-element.d.ts +1 -0
- package/elements/definitions/ellipse-element.d.ts +1 -0
- package/elements/definitions/image-element.d.ts +1 -0
- package/elements/definitions/line-element.d.ts +5 -0
- package/elements/definitions/qrcode-element.d.ts +1 -0
- package/elements/definitions/rect-element.d.ts +1 -0
- package/elements/definitions/table-element.d.ts +1 -0
- package/elements/definitions/text-element.d.ts +3 -0
- package/elements/index.d.ts +8 -0
- package/elements/shared/image-drop.d.ts +2 -0
- package/elements/shared/line-style.d.ts +4 -0
- package/elements/shared/qrcode-inspector.d.ts +7 -0
- package/elements/shared/rect-style.d.ts +6 -0
- package/elements/shared/shape-props.d.ts +8 -0
- package/elements/shared/text-style.d.ts +29 -0
- package/elements/table/table-cell-style.d.ts +14 -0
- package/elements/table/table-continuation.d.ts +6 -0
- package/elements/table/table-html.d.ts +8 -0
- package/elements/table/table-layout.d.ts +81 -0
- package/elements/table/table-merges.d.ts +3 -0
- package/elements/table/table-overflow.d.ts +2 -0
- package/elements/table/table-pdf-render.d.ts +3 -0
- package/elements/table/table-preview.d.ts +3 -0
- package/elements/table/table-render.d.ts +3 -0
- package/elements/table/table-structure.d.ts +13 -0
- package/elements/table/table-style.d.ts +219 -0
- package/html2canvas-DGcfD7Np.js +4004 -0
- package/index.d.ts +23 -0
- package/index.es-LpNWVW4Q.js +5742 -0
- package/index.js +84 -0
- package/invoice-DuBN6ZCM.js +3282 -0
- package/jspdf.es.min-CKTVf941.js +18216 -0
- package/locales/adapters/locale-loaders.d.ts +3 -0
- package/locales/index.d.ts +11 -0
- package/locales/plugin-locales.d.ts +11 -0
- package/locales/runtime.d.ts +2083 -0
- package/locales/setup.d.ts +3 -0
- package/locales/translations/zh-CN/app.json.d.ts +46 -0
- package/locales/translations/zh-CN/components.json.d.ts +38 -0
- package/locales/translations/zh-CN/core.json.d.ts +127 -0
- package/locales/translations/zh-CN/designer.json.d.ts +1562 -0
- package/locales/translations/zh-CN/elements.json.d.ts +287 -0
- package/locales/translations/zh-CN/parser.json.d.ts +34 -0
- package/locales/types.d.ts +8 -0
- package/locales/utils.d.ts +5 -0
- package/mount-print-designer-BzHLGlv-.js +49 -0
- package/package.json +46 -4
- package/parser/html/html-parser.d.ts +22 -0
- package/parser/index.d.ts +28 -0
- package/parser/pdf/pdf-parser.d.ts +23 -0
- package/parser/prepare-document.d.ts +4 -0
- package/parser/prepare-resources.d.ts +7 -0
- package/parser/registry.d.ts +6 -0
- package/parser/render-runtime.d.ts +39 -0
- package/parser/types.d.ts +27 -0
- package/parser/worker/render.worker.d.ts +1 -0
- package/parser/worker/worker-capabilities.d.ts +6 -0
- package/parser/worker/worker-client.d.ts +17 -0
- package/parser/worker/worker-handler.d.ts +3 -0
- package/parser/worker/worker-protocol.d.ts +55 -0
- package/plugins/pen/editing-geometry.d.ts +10 -0
- package/plugins/pen/element.d.ts +4 -0
- package/plugins/pen/geometry.d.ts +19 -0
- package/plugins/pen/index.d.ts +3 -0
- package/plugins/pen/locale.d.ts +3 -0
- package/plugins/pen/locales/zh-CN.json.d.ts +18 -0
- package/plugins/pen/pen-edit-surface.vue.d.ts +10 -0
- package/plugins/pen/pen-overlay.vue.d.ts +7 -0
- package/plugins/pen/pen-plugin.d.ts +4 -0
- package/plugins/pen/pen-preview.vue.d.ts +8 -0
- package/plugins/pen/pen-surface.vue.d.ts +9 -0
- package/plugins/pen/resources.d.ts +2 -0
- package/plugins/saas/client.d.ts +3 -0
- package/plugins/saas/errors.d.ts +5 -0
- package/plugins/saas/index.d.ts +5 -0
- package/plugins/saas/integration.d.ts +2 -0
- package/plugins/saas/plugin.d.ts +17 -0
- package/plugins/saas/preferences.d.ts +5 -0
- package/plugins/saas/types.d.ts +96 -0
- package/presets-Cwp20ef6.js +133 -0
- package/purchase-order-DNBFPpEZ.js +1526 -0
- package/purify.es-BTRXviHm.js +876 -0
- package/registries-BOU8RLim.js +9721 -0
- package/rolldown-runtime-QGRDbDUS.js +19 -0
- package/runtime/browser-output.d.ts +16 -0
- package/runtime/document-output.d.ts +21 -0
- package/runtime/print-renderer.d.ts +26 -0
- package/runtime/registries.d.ts +10 -0
- package/runtime.js +45 -0
- package/saas-B3fJOgHX.js +524 -0
- package/saas.js +1 -0
- package/studio-C_rqbJ9q.js +6242 -0
- package/studio-types.d.ts +199 -0
- package/studio.d.ts +2 -0
- package/style.css +2 -0
- package/styles/lib.d.ts +0 -0
- package/styles.js +0 -0
- package/types-Vh_6jhVV.js +5 -0
- package/vue.d.ts +13 -0
- package/vue.js +32848 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InjectionKey, MaybeRefOrGetter } from 'vue';
|
|
2
|
+
import { ZIndexOptions, ZIndexService } from '../core/z-index';
|
|
3
|
+
export declare const ZIndexKey: InjectionKey<ZIndexService>;
|
|
4
|
+
export declare function useZIndex(visible: MaybeRefOrGetter<boolean>, options?: MaybeRefOrGetter<ZIndexOptions>, injectedService?: ZIndexService): {
|
|
5
|
+
bringToFront: () => void;
|
|
6
|
+
close: () => void;
|
|
7
|
+
isTop: import('vue').ComputedRef<boolean>;
|
|
8
|
+
zIndex: import('vue').ComputedRef<number | undefined>;
|
|
9
|
+
};
|
package/core/align.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Rect } from './geometry';
|
|
2
|
+
export type AlignMode = 'bottom' | 'hcenter' | 'left' | 'right' | 'top' | 'vcenter';
|
|
3
|
+
export type AlignAxis = 'x' | 'y';
|
|
4
|
+
/** 间距分布方向:h 为水平间距,v 为垂直间距 */
|
|
5
|
+
export type SpacingDirection = 'h' | 'v';
|
|
6
|
+
/** 对齐基准:选区范围 / 页面(画板)/ 关键对象 */
|
|
7
|
+
export type AlignTarget = 'key' | 'page' | 'selection';
|
|
8
|
+
export interface AlignItem {
|
|
9
|
+
box: Rect;
|
|
10
|
+
id: string;
|
|
11
|
+
}
|
|
12
|
+
export interface AlignOptions {
|
|
13
|
+
/** `key` 基准的关键对象 ID;不在参与对象内时退化为选区 */
|
|
14
|
+
keyId?: string;
|
|
15
|
+
/** `page` 基准的页面范围 */
|
|
16
|
+
pageBounds?: Rect;
|
|
17
|
+
target?: AlignTarget;
|
|
18
|
+
}
|
|
19
|
+
export interface DistributeSpacingOptions extends AlignOptions {
|
|
20
|
+
/** 固定间距(mm,可为负);缺省按范围自动计算 */
|
|
21
|
+
spacing?: null | number;
|
|
22
|
+
}
|
|
23
|
+
/** 各对象沿所属轴的平移量;零位移的对象不出现 */
|
|
24
|
+
export type AlignOffsets = Map<string, number>;
|
|
25
|
+
export declare function alignModeAxis(mode: AlignMode): AlignAxis;
|
|
26
|
+
export declare function spacingDirectionAxis(direction: SpacingDirection): AlignAxis;
|
|
27
|
+
/** 基础对齐:把每个对象的基准点移到参照范围的对应位置 */
|
|
28
|
+
export declare function computeAlignOffsets(items: AlignItem[], mode: AlignMode, options?: AlignOptions): AlignOffsets;
|
|
29
|
+
/**
|
|
30
|
+
* 分布对象:按基准点(边缘或中心)等距,不保证空隙相等。
|
|
31
|
+
* 基准为选区 / 关键对象时首尾对象不动;基准为页面时首尾对象的外侧边缘贴齐页面边缘。
|
|
32
|
+
* 至少 3 个对象,否则返回 null。
|
|
33
|
+
*/
|
|
34
|
+
export declare function computeDistributeOffsets(items: AlignItem[], mode: AlignMode, options?: AlignOptions): AlignOffsets | null;
|
|
35
|
+
/**
|
|
36
|
+
* 分布间距:令相邻对象之间的空白距离相等。
|
|
37
|
+
* - 未指定固定间距:基准为选区 / 关键对象时首尾对象不动,基准为页面时铺满页面;
|
|
38
|
+
* 至少 3 个对象。
|
|
39
|
+
* - 指定固定间距:有关键对象时关键对象不动、其余向两侧排布,否则以最先的对象为起点;
|
|
40
|
+
* 至少 2 个对象。
|
|
41
|
+
* 不足对象数量时返回 null。
|
|
42
|
+
*/
|
|
43
|
+
export declare function computeDistributeSpacingOffsets(items: AlignItem[], direction: SpacingDirection, options?: DistributeSpacingOptions): AlignOffsets | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataSource, SchemaFieldType } from './types';
|
|
2
|
+
export interface BindingVariable {
|
|
3
|
+
args: string[];
|
|
4
|
+
formatter?: string;
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
7
|
+
export type TemplateSegment = {
|
|
8
|
+
expression: string;
|
|
9
|
+
kind: 'variable';
|
|
10
|
+
variable: BindingVariable;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'text';
|
|
13
|
+
text: string;
|
|
14
|
+
};
|
|
15
|
+
export interface BindingVariableField {
|
|
16
|
+
label: string;
|
|
17
|
+
type?: SchemaFieldType;
|
|
18
|
+
}
|
|
19
|
+
export declare function parseBindingVariable(raw: string): BindingVariable;
|
|
20
|
+
export declare function serializeBindingVariable(variable: BindingVariable): string;
|
|
21
|
+
export declare function createDocumentVariablePath(name: string): string;
|
|
22
|
+
/** 字符串 → 文本 / 变量片段序列;变量保留原始表达式,便于原样回写 */
|
|
23
|
+
export declare function parseTemplateSegments(text: string): TemplateSegment[];
|
|
24
|
+
/** 解析变量对应的字段展示名与数据类型;文档变量优先,其次数据源字段树 */
|
|
25
|
+
export declare function resolveBindingVariableField(path: string, sources: DataSource[], relativeTo?: string): BindingVariableField | undefined;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SchemaFieldType } from './types';
|
|
2
|
+
export interface FormatterParamOption {
|
|
3
|
+
label: () => string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
interface FormatterParamBase {
|
|
7
|
+
defaultValue: string;
|
|
8
|
+
key: string;
|
|
9
|
+
label: () => string;
|
|
10
|
+
}
|
|
11
|
+
export type FormatterParam = (FormatterParamBase & {
|
|
12
|
+
kind: 'number';
|
|
13
|
+
max: number;
|
|
14
|
+
min: number;
|
|
15
|
+
}) | (FormatterParamBase & {
|
|
16
|
+
kind: 'select';
|
|
17
|
+
options: FormatterParamOption[];
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* 格式化修饰符的元数据:声明适用的字段类型与参数配置。
|
|
21
|
+
* 运行时求值由 data-context 的格式化器负责,名称必须与其一致。
|
|
22
|
+
*/
|
|
23
|
+
export interface BindingFormatterDefinition {
|
|
24
|
+
label: () => string;
|
|
25
|
+
name: string;
|
|
26
|
+
params: FormatterParam[];
|
|
27
|
+
types: SchemaFieldType[];
|
|
28
|
+
}
|
|
29
|
+
declare class BindingFormatterRegistry {
|
|
30
|
+
private readonly definitions;
|
|
31
|
+
get(name: string): BindingFormatterDefinition | undefined;
|
|
32
|
+
list(): BindingFormatterDefinition[];
|
|
33
|
+
/** 字段类型未知(如循环内相对路径)时无法约束,返回全部 */
|
|
34
|
+
listForType(type: SchemaFieldType | undefined): BindingFormatterDefinition[];
|
|
35
|
+
register(definition: BindingFormatterDefinition): () => void;
|
|
36
|
+
}
|
|
37
|
+
export declare const bindingFormatterRegistry: BindingFormatterRegistry;
|
|
38
|
+
export declare function isFormatterCompatible(name: string, type: SchemaFieldType | undefined): boolean;
|
|
39
|
+
/** 参数补全:缺省或空值取默认值,数量以定义为准 */
|
|
40
|
+
export declare function normalizeFormatterArgs(definition: BindingFormatterDefinition, args: string[]): string[];
|
|
41
|
+
export declare function createDefaultFormatterArgs(definition: BindingFormatterDefinition): string[];
|
|
42
|
+
export declare const builtinBindingFormatters: readonly BindingFormatterDefinition[];
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ElementRegistry } from './element-registry';
|
|
2
|
+
import { ElementNode } from './types';
|
|
3
|
+
/** 循环上下文帧:区块展开时注入当前数组元素 */
|
|
4
|
+
export interface LoopFrame {
|
|
5
|
+
/** 绑定的数组路径(如 'items'),便于诊断 */
|
|
6
|
+
collectionPath: string;
|
|
7
|
+
index: number;
|
|
8
|
+
item: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface DataContext {
|
|
11
|
+
deferExpression?: (path: string, raw: string) => string | undefined;
|
|
12
|
+
elements?: ElementRegistry;
|
|
13
|
+
/** 循环帧栈,索引大者为内层 */
|
|
14
|
+
loops: LoopFrame[];
|
|
15
|
+
/** 打印输入根数据(renderPrintTemplate 的 input) */
|
|
16
|
+
root: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createDataContext(root: Record<string, unknown>): DataContext;
|
|
19
|
+
/** 派生子上下文:循环区块为每个副本注入当前 item */
|
|
20
|
+
export declare function createChildContext(parent: DataContext, frame: LoopFrame): DataContext;
|
|
21
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
22
|
+
/** 把 'items[0].name' 拆为 ['items', '0', 'name'] */
|
|
23
|
+
export declare function splitPath(path: string): string[];
|
|
24
|
+
/**
|
|
25
|
+
* 解析绑定路径:
|
|
26
|
+
* 1. `$index` → 最内层循环的当前序号
|
|
27
|
+
* 2. 首段在循环帧 item 上(由内向外查找)→ 相对当前行取值
|
|
28
|
+
* 3. 否则回退根数据(input 顶层键)
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolvePath(context: DataContext, path: string): unknown;
|
|
31
|
+
/**
|
|
32
|
+
* 按名称应用格式化器(number / thousand / currency / date / upper / lower)。
|
|
33
|
+
* 供表格列格式化等无法走内嵌表达式的场景复用;未知格式化器原样返回字符串。
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatValue(value: unknown, formatter: string, args?: string[]): string;
|
|
36
|
+
export declare const EXPRESSION_PATTERN: RegExp;
|
|
37
|
+
export interface ParsedExpression {
|
|
38
|
+
args: string[];
|
|
39
|
+
formatter?: string;
|
|
40
|
+
path: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function parseExpression(raw: string): ParsedExpression;
|
|
43
|
+
export declare class WarningCollector {
|
|
44
|
+
private readonly items;
|
|
45
|
+
/** scope() 压入的定位上下文栈(如元素标签),add 时自动附加前缀 */
|
|
46
|
+
private readonly sourceStack;
|
|
47
|
+
add(message: string): void;
|
|
48
|
+
list(): string[];
|
|
49
|
+
/** 在定位上下文中执行 fn:期间产生的告警都带上 source 前缀(可嵌套) */
|
|
50
|
+
scope<T>(source: string, fn: () => T): T;
|
|
51
|
+
}
|
|
52
|
+
/** 告警定位标签:优先图层名,退化为「类型#短id」 */
|
|
53
|
+
export declare function elementWarningSource(node: Pick<ElementNode, 'id' | 'name' | 'type'>): string;
|
|
54
|
+
/**
|
|
55
|
+
* 解析字符串中的全部内嵌表达式。
|
|
56
|
+
* 整串恰为一个表达式时保留原生类型(无格式化器时),否则做字符串拼接。
|
|
57
|
+
* 取值失败输出空串并记录告警。
|
|
58
|
+
*/
|
|
59
|
+
export declare function resolveTemplateString(text: string, context: DataContext, warnings: WarningCollector, shouldResolve?: (path: string) => boolean): unknown;
|
|
60
|
+
/** 字符串是否包含绑定表达式(设计时判断绑定状态用) */
|
|
61
|
+
export declare function containsExpression(text: unknown): boolean;
|
|
62
|
+
/** 去除模板表达式但保留静态文本,供设计态内容测量使用。 */
|
|
63
|
+
export declare function stripTemplateExpressions(text: string): string;
|
|
64
|
+
export declare function mapBindingProps(value: unknown, resolveString: (text: string) => unknown, skipKeys?: ReadonlySet<string>): unknown;
|
|
65
|
+
/** 列标题猜测绑定字段:标题与 item 键名一致(或忽略大小写一致)时自动回填 */
|
|
66
|
+
export declare function guessColumnBind(title: string, item: unknown): string;
|
|
67
|
+
/**
|
|
68
|
+
* 解析单个元素:返回属性已全部求值的元素副本(原节点不变)。
|
|
69
|
+
* 1. 调用元素注册定义的结构化绑定能力;
|
|
70
|
+
* 2. 替换字符串属性内嵌表达式,跳过能力已求值的字段。
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveElementNode(node: ElementNode, context: DataContext, warnings: WarningCollector, mode?: 'design' | 'preview' | 'render'): ElementNode;
|
|
73
|
+
export declare function resolveElementBindings(node: ElementNode, context: DataContext, warnings: WarningCollector): ElementNode;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DataSource, DataSourceField } from './types';
|
|
2
|
+
export declare function transparentSourceRoot(source: DataSource): DataSourceField | undefined;
|
|
3
|
+
export declare function findSchemaField(fields: DataSourceField[], path: string): DataSourceField | undefined;
|
|
4
|
+
export declare function findSourceField(source: DataSource, path: string): DataSourceField | undefined;
|
|
5
|
+
export declare function findSourceCollection(source: DataSource, path: string): DataSourceField | undefined;
|
|
6
|
+
export declare function findBindingField(sources: DataSource[], path: string, relativeTo?: string): undefined | {
|
|
7
|
+
field: DataSourceField;
|
|
8
|
+
source: DataSource;
|
|
9
|
+
};
|
|
10
|
+
export declare function containsCollection(fields: DataSourceField[]): boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DataSource, DataSourceField, PrintDocument, SchemaFieldType } from './types';
|
|
2
|
+
/** 从任意 JSON 值推断字段结构(递归,数组取首元素结构作为元素字段) */
|
|
3
|
+
export declare function inferSchemaFromValue(value: unknown): DataSourceField[];
|
|
4
|
+
/**
|
|
5
|
+
* 打印输入构建:合并全部数据源——有 sampleData 用之,
|
|
6
|
+
* 否则按 schema 类型生成占位值,保证任何模板都能开箱预览。
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildSampleInput(document: PrintDocument): Record<string, unknown>;
|
|
9
|
+
/** 按 schema 字段树生成占位示例值 */
|
|
10
|
+
export declare function sampleFromFields(fields: DataSourceField[]): unknown;
|
|
11
|
+
export declare function sampleFromField(field: DataSourceField): unknown;
|
|
12
|
+
/** 数据源扁平字段树 → 绑定选择器用的路径列表(含类型),数组字段标注 isCollection */
|
|
13
|
+
export interface FieldPathOption {
|
|
14
|
+
/** array 元素内的相对路径列表(表格列绑定用) */
|
|
15
|
+
children?: FieldPathOption[];
|
|
16
|
+
isCollection: boolean;
|
|
17
|
+
label: string;
|
|
18
|
+
/** 绑定路径(不含数据源根键),如 'customer.name' */
|
|
19
|
+
path: string;
|
|
20
|
+
type: SchemaFieldType;
|
|
21
|
+
}
|
|
22
|
+
export declare function flattenSourceFields(fields: DataSourceField[], parentPath?: string): FieldPathOption[];
|
|
23
|
+
/** 数据源 key 规范:作为 input 顶层键与表达式首段,仅允许字母数字下划线 */
|
|
24
|
+
export declare function isValidSourceKey(key: string): boolean;
|
|
25
|
+
/** 清理数据源数组:key 去重、剔除非法项 */
|
|
26
|
+
export declare function normalizeDataSources(sources: DataSource[]): DataSource[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ElementRegistry } from './element-registry';
|
|
2
|
+
import { PrintDocument } from './types';
|
|
3
|
+
export interface ExpandResult {
|
|
4
|
+
document: PrintDocument;
|
|
5
|
+
warnings: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function expandDocument(template: PrintDocument, input: Record<string, unknown>, elements?: ElementRegistry): ExpandResult;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ElementRegistry } from './element-registry';
|
|
2
|
+
import { PageLayout } from './page-layout';
|
|
3
|
+
import { ElementNode, PageNode, PageTemplate, PrintDocument } from './types';
|
|
4
|
+
export declare const DOCUMENT_VERSION = "1.0";
|
|
5
|
+
export declare function createId(prefix?: string): string;
|
|
6
|
+
export declare function createPage(width?: number, height?: number, name?: string, overrides?: Partial<Pick<PageNode, 'background' | 'height' | 'margins' | 'name' | 'width'>>): PageNode;
|
|
7
|
+
/** 内置空白模板 id:页面 templateId 缺省即应用它 */
|
|
8
|
+
export declare const BLANK_TEMPLATE_ID = "template-blank";
|
|
9
|
+
export declare const NO_TEMPLATE_ID = "template-none";
|
|
10
|
+
/** 内置空白模板:不可删除;无背景(页面沿用自身背景)且初始无内容,可被编辑 */
|
|
11
|
+
export declare function createBlankTemplate(): PageTemplate;
|
|
12
|
+
export declare function resolveTemplateInheritance(doc: PrintDocument, template: PageTemplate, pageNumber?: number, visited?: Set<string>): PageTemplate;
|
|
13
|
+
export declare function resolveTemplateBase(doc: PrintDocument, template: PageTemplate, pageNumber?: number): PageTemplate | undefined;
|
|
14
|
+
export declare function getTemplatePages(template: PageTemplate): PageNode[];
|
|
15
|
+
export declare function getTemplatePage(template: PageTemplate, pageNumber: number): PageNode;
|
|
16
|
+
/** 新建页面模板(容器画布尺寸取参考尺寸,缺省 A4 纵向) */
|
|
17
|
+
export declare function createTemplate(name?: string, reference?: PageLayout): PageTemplate;
|
|
18
|
+
export declare function createElement(type: string, overrides?: Partial<ElementNode>, elements?: ElementRegistry): ElementNode;
|
|
19
|
+
/** 声明 measureSize 的元素按内容修正节点尺寸;未声明或返回空时保持不变 */
|
|
20
|
+
export declare function applyMeasureSize(node: ElementNode, definition?: import('./element-registry').ElementDefinition | undefined): void;
|
|
21
|
+
/** 点驱动节点缺 points 时按定义的 migrateRect 补齐并同步包围盒;其余节点原样返回 */
|
|
22
|
+
export declare function normalizeNodePoints(node: ElementNode, definition?: import('./element-registry').ElementDefinition | undefined): ElementNode;
|
|
23
|
+
export declare function cloneElement(node: ElementNode): ElementNode;
|
|
24
|
+
export declare function findElement(doc: PrintDocument, id: string): null | {
|
|
25
|
+
index: number;
|
|
26
|
+
node: ElementNode;
|
|
27
|
+
page: PageNode;
|
|
28
|
+
};
|
|
29
|
+
/** 元素容器集合:文档页面 + 页面模板容器(模板元素与页面元素共用同一套编辑能力) */
|
|
30
|
+
export declare function iterateElementContainers(doc: PrintDocument): PageNode[];
|
|
31
|
+
/** 按 id 查找元素容器:先文档页面,再页面模板容器 */
|
|
32
|
+
export declare function findElementContainer(doc: PrintDocument, containerId: string): PageNode | undefined;
|
|
33
|
+
/** 解析页面应用的页面模板;无引用时解析到内置空白模板,悬空引用视为未应用 */
|
|
34
|
+
export declare function resolveDocumentTemplate(doc: PrintDocument, page: Partial<Pick<PageNode, 'id'>> & Pick<PageNode, 'templateId'>, pageNumber?: number): PageTemplate | undefined;
|
|
35
|
+
export declare function resolveDocumentPageLayout(doc: PrintDocument, page: PageLayout & Partial<Pick<PageNode, 'id' | 'templateId'>>, pageNumber?: number): PageLayout;
|
|
36
|
+
/**
|
|
37
|
+
* 物化页面模板:把每页引用的模板内容(元素 / 背景)合并进页面本身。
|
|
38
|
+
* 输出剥离 templateId 与 templates 字段(渲染就绪文档),因此对同一文档
|
|
39
|
+
* 重复调用是幂等的——展开与解析管线即使先后各调一次也不会叠加。
|
|
40
|
+
* 模板元素深拷贝并重新编号,渲染在页面元素下方(索引在前即叠放更底层);
|
|
41
|
+
* 无可合并内容时原样返回页面引用。
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolvePageTemplates(doc: PrintDocument, resolveElement?: (node: ElementNode) => ElementNode, onWarning?: (message: string) => void): PrintDocument;
|
|
44
|
+
/** 首次运行的默认文档:空白画布与内置示例数据源。初始模板由应用启动入口加载。 */
|
|
45
|
+
export declare function createSeedDocument(): PrintDocument;
|
|
46
|
+
export declare function assertDocumentHasPages(document: Partial<PrintDocument>): asserts document is Partial<PrintDocument> & {
|
|
47
|
+
pages: PageNode[];
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* 反序列化外部 JSON:宽容校验 + 字段补全 + 剔除未注册的元素类型。
|
|
51
|
+
* 返回 { document, skippedTypes },调用方据此提示用户。
|
|
52
|
+
*/
|
|
53
|
+
export declare function deserializeDocument(raw: unknown, elements?: ElementRegistry): {
|
|
54
|
+
document: PrintDocument;
|
|
55
|
+
skippedTypes: string[];
|
|
56
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DataContext, WarningCollector } from './data-context';
|
|
2
|
+
import { DocumentVariableContext } from './document-variables';
|
|
3
|
+
import { ElementNode, PrintDocument } from './types';
|
|
4
|
+
export declare function createDocumentDataContext(input: Record<string, unknown>, variables?: DocumentVariableContext): DataContext;
|
|
5
|
+
export declare function resolveDocumentVariableNode(node: ElementNode, variables: DocumentVariableContext, warnings: WarningCollector, skipKeys?: ReadonlySet<string>): ElementNode;
|
|
6
|
+
export declare function resolveDocumentVariables(document: PrintDocument, warnings?: WarningCollector, now?: Date): PrintDocument;
|
|
7
|
+
export declare function createDocumentBindingSession(input: Record<string, unknown>): {
|
|
8
|
+
context: DataContext;
|
|
9
|
+
resolve: (document: PrintDocument, warnings: WarningCollector) => PrintDocument;
|
|
10
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSourceField } from './types';
|
|
2
|
+
export interface DocumentVariableContext {
|
|
3
|
+
documentName: string;
|
|
4
|
+
now: Date;
|
|
5
|
+
pageCount: number;
|
|
6
|
+
pageName: string;
|
|
7
|
+
pageNumber: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DocumentVariableDefinition {
|
|
10
|
+
label: () => string;
|
|
11
|
+
name: string;
|
|
12
|
+
resolve: (context: DocumentVariableContext) => unknown;
|
|
13
|
+
type: DataSourceField['type'];
|
|
14
|
+
}
|
|
15
|
+
declare class DocumentVariableRegistry {
|
|
16
|
+
private readonly definitions;
|
|
17
|
+
get(name: string): DocumentVariableDefinition | undefined;
|
|
18
|
+
list(): DocumentVariableDefinition[];
|
|
19
|
+
register(definition: DocumentVariableDefinition): () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const documentVariableRegistry: DocumentVariableRegistry;
|
|
22
|
+
export declare const builtinDocumentVariables: readonly DocumentVariableDefinition[];
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ElementGroup, ElementNode, PageNode, PrintDocument } from './types';
|
|
2
|
+
export type GroupTreeNode = GroupTreeElement | GroupTreeGroup;
|
|
3
|
+
export interface GroupTreeElement {
|
|
4
|
+
kind: 'element';
|
|
5
|
+
node: ElementNode;
|
|
6
|
+
}
|
|
7
|
+
export interface GroupTreeGroup {
|
|
8
|
+
/** 子节点,顺序与 elements 一致:索引 0 在最底层 */
|
|
9
|
+
children: GroupTreeNode[];
|
|
10
|
+
group: ElementGroup;
|
|
11
|
+
kind: 'group';
|
|
12
|
+
}
|
|
13
|
+
export interface GroupTreeKey {
|
|
14
|
+
id: string;
|
|
15
|
+
kind: 'element' | 'group';
|
|
16
|
+
}
|
|
17
|
+
export type GroupMovePlacement = 'above' | 'below' | 'inside';
|
|
18
|
+
/** 图层面板等展示用的行:自上而下,含缩进层级 */
|
|
19
|
+
export type GroupDisplayRow = {
|
|
20
|
+
depth: number;
|
|
21
|
+
group: ElementGroup;
|
|
22
|
+
kind: 'group';
|
|
23
|
+
parentId?: string;
|
|
24
|
+
} | {
|
|
25
|
+
depth: number;
|
|
26
|
+
kind: 'element';
|
|
27
|
+
node: ElementNode;
|
|
28
|
+
parentId?: string;
|
|
29
|
+
};
|
|
30
|
+
export type GroupReorderMode = {
|
|
31
|
+
edge: 'back' | 'front';
|
|
32
|
+
} | {
|
|
33
|
+
offset: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* 修复文档内所有元素组:剔除已不存在的成员、空组及违反连续 / 嵌套约束的组。
|
|
37
|
+
* 元素删除、页面删除、文档载入、复制粘贴后调用,保证组数据始终自洽。
|
|
38
|
+
*/
|
|
39
|
+
export declare function pruneElementGroups(document: PrintDocument): void;
|
|
40
|
+
/** 由容器元素与其元素组构建可变的分组树(每次调用返回全新的节点,可随意修改) */
|
|
41
|
+
export declare function buildGroupTree(container: PageNode, groups: ElementGroup[]): GroupTreeNode[];
|
|
42
|
+
/** 树中全部元素,按叠放顺序(底 → 顶) */
|
|
43
|
+
export declare function flattenGroupTree(tree: GroupTreeNode[]): ElementNode[];
|
|
44
|
+
/** 把(修改后的)分组树写回文档:容器元素顺序与该容器的元素组同步更新 */
|
|
45
|
+
export declare function applyGroupTree(document: PrintDocument, container: PageNode, tree: GroupTreeNode[]): void;
|
|
46
|
+
/** 包含全部给定元素的最内层组(无则 undefined) */
|
|
47
|
+
export declare function findCommonGroup(tree: GroupTreeNode[], elementIds: string[]): ElementGroup | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* 把元素编为一个新组。新组落在所选元素最内层公共父级中,位置取最靠上的成员处;
|
|
50
|
+
* 选中了组的部分成员时,整组一并纳入(保持组的完整性)。
|
|
51
|
+
*/
|
|
52
|
+
export declare function groupTreeElements(tree: GroupTreeNode[], elementIds: string[], group: ElementGroup): boolean;
|
|
53
|
+
/** 解散组:成员原位提升到父级,叠放顺序不变 */
|
|
54
|
+
export declare function ungroupTreeNode(tree: GroupTreeNode[], groupId: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 把一批节点(元素或组)移动到锚点节点的上方 / 下方,或放进锚点组的最顶层。
|
|
57
|
+
* 落点成为锚点所在级别的成员,因此拖进组 / 拖出组都由落点自然决定。
|
|
58
|
+
* 锚点位于被移动节点内部时拒绝(返回 false)。
|
|
59
|
+
*/
|
|
60
|
+
export declare function moveTreeNodes(tree: GroupTreeNode[], movingKeys: GroupTreeKey[], anchor: GroupTreeKey, placement: GroupMovePlacement): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* 调整叠放顺序:每个单元只在自己所在的级别内移动(不会因为上移 / 下移而跳出组),
|
|
63
|
+
* 经过其他组时把该组视作一个整体越过。
|
|
64
|
+
*/
|
|
65
|
+
export declare function reorderTreeUnits(tree: GroupTreeNode[], selectedIds: string[], mode: GroupReorderMode): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* 展开分组树为自上而下的展示行;折叠的组只保留组行,隐藏其全部后代。
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildGroupDisplayRows(tree: GroupTreeNode[], isCollapsed: (groupId: string) => boolean): GroupDisplayRow[];
|
|
70
|
+
export declare function createElementGroup(document: PrintDocument, pageId: string, createId: (prefix: string) => string, name?: string): ElementGroup;
|
|
71
|
+
export declare function getContainerGroups(document: PrintDocument, containerId: string): ElementGroup[];
|
|
72
|
+
/** 宽容恢复持久化的元素组:只做结构清洗,约束修复交给 pruneElementGroups */
|
|
73
|
+
export declare function deserializeElementGroups(raw: unknown): ElementGroup[];
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { jsPDF } from 'jspdf';
|
|
2
|
+
import { DataContext, WarningCollector } from './data-context';
|
|
3
|
+
import { Point } from './geometry';
|
|
4
|
+
import { PageLayout } from './page-layout';
|
|
5
|
+
import { RenderResources } from './render/fonts';
|
|
6
|
+
import { PdfDraw } from './render/pdf-draw';
|
|
7
|
+
import { ElementNode, InspectorField, InspectorSection, PageNode, PrintDocument } from './types';
|
|
8
|
+
export interface HtmlElementContext {
|
|
9
|
+
document: PrintDocument;
|
|
10
|
+
node: ElementNode;
|
|
11
|
+
page: PageNode;
|
|
12
|
+
props: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface PdfElementContext {
|
|
15
|
+
document: PrintDocument;
|
|
16
|
+
/** PDF 绘制助手(颜色 / 文本 / 图片等) */
|
|
17
|
+
draw: PdfDraw;
|
|
18
|
+
node: ElementNode;
|
|
19
|
+
page: PageNode;
|
|
20
|
+
/** jsPDF 实例,单位 mm,坐标原点为页面左上角;仅处理无旋转状态 */
|
|
21
|
+
pdf: jsPDF;
|
|
22
|
+
props: Record<string, unknown>;
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
}
|
|
25
|
+
export interface ElementOverflowContext {
|
|
26
|
+
node: ElementNode;
|
|
27
|
+
page: PageLayout;
|
|
28
|
+
warnings: WarningCollector;
|
|
29
|
+
}
|
|
30
|
+
export interface ElementOverflowResult {
|
|
31
|
+
continuation: {
|
|
32
|
+
elementId: string;
|
|
33
|
+
prepare: (target: ElementNode) => ElementNode;
|
|
34
|
+
templateId: string;
|
|
35
|
+
};
|
|
36
|
+
node: ElementNode;
|
|
37
|
+
}
|
|
38
|
+
export interface ElementMinSizeContext {
|
|
39
|
+
node: ElementNode;
|
|
40
|
+
props: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/** 内容自适应尺寸上下文:声明 measureSize 的元素在属性变化后按内容修正节点尺寸 */
|
|
43
|
+
export interface ElementMeasureContext {
|
|
44
|
+
/** 设计态保留用户尺寸;预览态测量示例数据;输出态使用解析后的实际内容尺寸。 */
|
|
45
|
+
mode?: 'design' | 'preview' | 'render';
|
|
46
|
+
node: ElementNode;
|
|
47
|
+
props: Record<string, unknown>;
|
|
48
|
+
}
|
|
49
|
+
/** 打印跨页上下文:文档展开时对声明 paginate 的元素按可用页高切块 */
|
|
50
|
+
export interface ElementPaginateContext {
|
|
51
|
+
getPage?: (chunkIndex: number) => PageLayout;
|
|
52
|
+
node: ElementNode;
|
|
53
|
+
page: PageLayout;
|
|
54
|
+
props: Record<string, unknown>;
|
|
55
|
+
warnings: WarningCollector;
|
|
56
|
+
}
|
|
57
|
+
export interface ElementPaginateChunk {
|
|
58
|
+
/** 该块高度(mm),展开时写回节点 height */
|
|
59
|
+
height: number;
|
|
60
|
+
/** 该块的属性片段(如切片后的 rows),展开时写回节点 props */
|
|
61
|
+
props: Record<string, unknown>;
|
|
62
|
+
y?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 点驱动图形能力(线 / 钢笔路径……):声明后元素的几何真身是 node.points
|
|
66
|
+
* (页面坐标顶点序列),x/y/width/height 派生为点集包围盒,rotation 恒为 0。
|
|
67
|
+
* 设计器据此切换交互形态:创建工具走「起点 → 终点」、选择框显示顶点手柄、
|
|
68
|
+
* 命中测试按图形本体而非包围盒。
|
|
69
|
+
*/
|
|
70
|
+
export interface PointBasedCapability {
|
|
71
|
+
/** 由起点 / 终点生成初始点集(页面坐标 mm);start === end 表示单击创建 */
|
|
72
|
+
createPoints: (start: Point, end: Point) => Point[];
|
|
73
|
+
/**
|
|
74
|
+
* 图形本体的命中测试(页面坐标 mm):框选 / 点击选区判断使用。
|
|
75
|
+
* 缺省退化为点是否落在节点包围盒内。
|
|
76
|
+
*/
|
|
77
|
+
hitTest?: (ctx: {
|
|
78
|
+
node: ElementNode;
|
|
79
|
+
point: Point;
|
|
80
|
+
points: Point[];
|
|
81
|
+
}) => boolean;
|
|
82
|
+
/**
|
|
83
|
+
* 旧版定界框数据迁移为点集:仅历史文档(无 points 字段)加载时调用,
|
|
84
|
+
* 返回的点集会重新派生包围盒并把 rotation 归零。
|
|
85
|
+
*/
|
|
86
|
+
migrateRect?: (node: ElementNode) => Point[];
|
|
87
|
+
}
|
|
88
|
+
export interface InlineEditCapability {
|
|
89
|
+
read: (node: ElementNode) => string;
|
|
90
|
+
style?: (node: ElementNode, pxPerMm: number) => Record<string, string>;
|
|
91
|
+
variableText?: boolean;
|
|
92
|
+
write: (node: ElementNode, value: string) => Partial<ElementNode>;
|
|
93
|
+
}
|
|
94
|
+
export interface FileDropCapability {
|
|
95
|
+
accepts: (file: File) => boolean;
|
|
96
|
+
create: (context: {
|
|
97
|
+
file: File;
|
|
98
|
+
page: PageNode;
|
|
99
|
+
point: Point;
|
|
100
|
+
}) => Partial<ElementNode> | Promise<Partial<ElementNode>>;
|
|
101
|
+
}
|
|
102
|
+
export interface ElementDefinition {
|
|
103
|
+
aspectRatio?: number;
|
|
104
|
+
/** 是否允许用户主动重置自动尺寸。 */
|
|
105
|
+
canResetAutoSize?: (node: ElementNode) => boolean;
|
|
106
|
+
/** 创建实例时的类型专属属性 */
|
|
107
|
+
createProps: () => Record<string, unknown>;
|
|
108
|
+
/** 拖拽创建时的默认尺寸(mm) */
|
|
109
|
+
defaultSize: {
|
|
110
|
+
height: number;
|
|
111
|
+
width: number;
|
|
112
|
+
};
|
|
113
|
+
fileDrop?: FileDropCapability;
|
|
114
|
+
/**
|
|
115
|
+
* 元素的固有最小尺寸(mm):画布缩放手柄 / 多选整体缩放的下限,
|
|
116
|
+
* 例如表格不能缩小到行内容高度以下。未提供时使用全局默认最小值。
|
|
117
|
+
*/
|
|
118
|
+
getMinSize?: (ctx: ElementMinSizeContext) => {
|
|
119
|
+
height: number;
|
|
120
|
+
width: number;
|
|
121
|
+
};
|
|
122
|
+
getResources?: (ctx: ElementMeasureContext) => RenderResources;
|
|
123
|
+
/** 图标名称,见 designer/components/ui/icons.ts */
|
|
124
|
+
icon: string;
|
|
125
|
+
/** 双击是否进入画布内联编辑(文本类元素) */
|
|
126
|
+
inlineEditable?: InlineEditCapability;
|
|
127
|
+
/** 属性面板 Schema */
|
|
128
|
+
inspectorSections: InspectorSection[];
|
|
129
|
+
/** 显示名称(工具栏 / 图层面板 / 属性面板) */
|
|
130
|
+
label: string;
|
|
131
|
+
/**
|
|
132
|
+
* 内容自适应尺寸:声明后创建元素、属性更新与文档展开(绑定求值后)
|
|
133
|
+
* 按返回值修正节点宽高(如表格 auto 高度模式跟随行数 / 字号变化)。
|
|
134
|
+
* 返回空对象表示保持不变。
|
|
135
|
+
*/
|
|
136
|
+
measureSize?: (ctx: ElementMeasureContext) => Partial<Pick<ElementNode, 'height' | 'width'>>;
|
|
137
|
+
/**
|
|
138
|
+
* 旧文档属性归一化:反序列化与创建实例时调用(幂等)。
|
|
139
|
+
* 用于数据模型演进(如旧版边框字段迁移到新模型),元素自行声明迁移逻辑。
|
|
140
|
+
*/
|
|
141
|
+
normalizeProps?: (props: Record<string, unknown>) => Record<string, unknown>;
|
|
142
|
+
/** 工具栏排序,越小越靠前 */
|
|
143
|
+
order: number;
|
|
144
|
+
overflow?: (ctx: ElementOverflowContext) => ElementOverflowResult | null;
|
|
145
|
+
/** 声明元素持有的页面扩展资源,供迁移、复制及生命周期管理复用。 */
|
|
146
|
+
pageExtensions?: {
|
|
147
|
+
rebind: (node: ElementNode, purpose: string, templateId: string, elementId: string) => void;
|
|
148
|
+
reconcile?: (document: PrintDocument, node: ElementNode) => void;
|
|
149
|
+
references: (node: ElementNode) => {
|
|
150
|
+
elementId: string;
|
|
151
|
+
purpose: string;
|
|
152
|
+
templateId: string;
|
|
153
|
+
}[];
|
|
154
|
+
resolveTarget?: (source: ElementNode, target: ElementNode, purpose: string) => ElementNode;
|
|
155
|
+
targetInspectorFields?: (purpose: string) => InspectorField[];
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* 打印跨页能力:文档展开阶段按可用页高把元素切成多块,块 0 留在原页,
|
|
159
|
+
* 其余块生成延续页,跨页公共内容由页面模板提供。返回 null 表示不分页。
|
|
160
|
+
*/
|
|
161
|
+
paginate?: (ctx: ElementPaginateContext) => ElementPaginateChunk[] | null;
|
|
162
|
+
/** 点驱动能力(见 PointBasedCapability):未声明时元素为定界框几何 */
|
|
163
|
+
pointBased?: PointBasedCapability;
|
|
164
|
+
/** 画布内的设计时预览组件 */
|
|
165
|
+
previewComponent?: unknown;
|
|
166
|
+
previewExpressionKeys?: readonly string[];
|
|
167
|
+
resolveBindings?: (ctx: {
|
|
168
|
+
context: DataContext;
|
|
169
|
+
node: ElementNode;
|
|
170
|
+
warnings: WarningCollector;
|
|
171
|
+
}) => {
|
|
172
|
+
props: Record<string, unknown>;
|
|
173
|
+
skipKeys?: ReadonlySet<string>;
|
|
174
|
+
};
|
|
175
|
+
/** 独立画布预览属性;声明后跳过数据绑定和表达式求值。 */
|
|
176
|
+
resolvePreviewProps?: (ctx: ElementMinSizeContext) => Record<string, unknown>;
|
|
177
|
+
settingsDialog?: {
|
|
178
|
+
layout: 'workspace';
|
|
179
|
+
};
|
|
180
|
+
/** 主工具快捷键(无修饰键) */
|
|
181
|
+
shortcut?: string;
|
|
182
|
+
/**
|
|
183
|
+
* 输出该元素的 HTML 片段(元素内部内容,不含定位外壳)。
|
|
184
|
+
* 必须是合法的 XHTML 片段(标签闭合、属性引号),因为 PDF 解析器
|
|
185
|
+
* 会通过 foreignObject 把这段 HTML 光栅化以支持旋转元素。
|
|
186
|
+
*/
|
|
187
|
+
toHtml: (ctx: HtmlElementContext) => string;
|
|
188
|
+
/** 在 jsPDF 上绘制该元素(仅在无旋转时调用,旋转由解析器统一光栅化处理) */
|
|
189
|
+
toPdf: (ctx: PdfElementContext) => Promise<void> | void;
|
|
190
|
+
transformFields?: InspectorField[];
|
|
191
|
+
/** 全局唯一类型标识 */
|
|
192
|
+
type: string;
|
|
193
|
+
worker?: {
|
|
194
|
+
canExpand: (node: ElementNode) => boolean;
|
|
195
|
+
html: boolean;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
export declare class ElementRegistry {
|
|
199
|
+
private definitions;
|
|
200
|
+
private listeners;
|
|
201
|
+
get(type: string): ElementDefinition | undefined;
|
|
202
|
+
/** 稳定排序的全部定义(按 order,再按 type) */
|
|
203
|
+
list(): ElementDefinition[];
|
|
204
|
+
register(definition: ElementDefinition): void;
|
|
205
|
+
subscribe(listener: () => void): () => void;
|
|
206
|
+
/** 生成工具栏用的元素工具项 */
|
|
207
|
+
toolItems(): {
|
|
208
|
+
icon: string;
|
|
209
|
+
label: string;
|
|
210
|
+
shortcut?: string;
|
|
211
|
+
type: string;
|
|
212
|
+
}[];
|
|
213
|
+
unregister(type: string): boolean;
|
|
214
|
+
private notify;
|
|
215
|
+
}
|
|
216
|
+
/** 全局元素注册表单例 */
|
|
217
|
+
export declare const elementRegistry: ElementRegistry;
|
|
218
|
+
/** 定义元素的便捷函数,仅为类型推断服务 */
|
|
219
|
+
export declare function defineElement(definition: ElementDefinition): ElementDefinition;
|
|
220
|
+
/** 解析上下文绑定的元素注册表;未绑定时回退全局单例 */
|
|
221
|
+
export declare function resolveElementRegistry(context?: {
|
|
222
|
+
elements?: ElementRegistry;
|
|
223
|
+
}): ElementRegistry;
|
|
224
|
+
/**
|
|
225
|
+
* 元素本体的命中测试(页面坐标 mm):点驱动元素用其 pointBased.hitTest,
|
|
226
|
+
* 其余元素退化为旋转后包围盒包含。
|
|
227
|
+
*/
|
|
228
|
+
export declare function hitTestNode(node: ElementNode, point: Point, elements?: ElementRegistry): boolean;
|
|
229
|
+
export declare function paginateElement(registry: ElementRegistry, context: ElementPaginateContext): ElementPaginateChunk[] | null | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ElementRegistry } from './element-registry';
|
|
2
|
+
import { ElementNode } from './types';
|
|
3
|
+
export type TransformKey = 'height' | 'opacity' | 'rotation' | 'width' | 'x' | 'y';
|
|
4
|
+
export declare function getElementMinSize(node: ElementNode, elements?: ElementRegistry): {
|
|
5
|
+
height: number;
|
|
6
|
+
width: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function constrainElementSize(node: ElementNode, patch: Partial<ElementNode>, elements?: ElementRegistry, options?: {
|
|
9
|
+
enforceMinimum?: boolean;
|
|
10
|
+
}): Partial<ElementNode>;
|
|
11
|
+
export declare function readTransformValue(node: ElementNode, key: TransformKey): number;
|
|
12
|
+
export declare function transformValuePatch(node: ElementNode, key: TransformKey, value: unknown): Partial<ElementNode>;
|