ducjs 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/flatbuffers/duc/alternate-units.d.ts +21 -0
- package/dist/flatbuffers/duc/alternate-units.js +66 -0
- package/dist/flatbuffers/duc/angular-unit-system.d.ts +17 -0
- package/dist/flatbuffers/duc/angular-unit-system.js +50 -0
- package/dist/flatbuffers/duc/angular-units-format.d.ts +7 -0
- package/dist/flatbuffers/duc/angular-units-format.js +10 -0
- package/dist/flatbuffers/duc/axis.d.ts +5 -0
- package/dist/flatbuffers/duc/axis.js +8 -0
- package/dist/flatbuffers/duc/bezier-mirroring.d.ts +5 -0
- package/dist/flatbuffers/duc/bezier-mirroring.js +8 -0
- package/dist/flatbuffers/duc/blending.d.ts +9 -0
- package/dist/flatbuffers/duc/blending.js +12 -0
- package/dist/flatbuffers/duc/block-attachment.d.ts +4 -0
- package/dist/flatbuffers/duc/block-attachment.js +7 -0
- package/dist/flatbuffers/duc/boolean-operation.d.ts +6 -0
- package/dist/flatbuffers/duc/boolean-operation.js +9 -0
- package/dist/flatbuffers/duc/bound-element.d.ts +17 -0
- package/dist/flatbuffers/duc/bound-element.js +48 -0
- package/dist/flatbuffers/duc/checkpoint.d.ts +22 -0
- package/dist/flatbuffers/duc/checkpoint.js +75 -0
- package/dist/flatbuffers/duc/column-layout.d.ts +22 -0
- package/dist/flatbuffers/duc/column-layout.js +72 -0
- package/dist/flatbuffers/duc/column-type.d.ts +5 -0
- package/dist/flatbuffers/duc/column-type.js +8 -0
- package/dist/flatbuffers/duc/custom-hatch-pattern.d.ts +23 -0
- package/dist/flatbuffers/duc/custom-hatch-pattern.js +71 -0
- package/dist/flatbuffers/duc/datum-bracket-style.d.ts +5 -0
- package/dist/flatbuffers/duc/datum-bracket-style.js +8 -0
- package/dist/flatbuffers/duc/datum-reference.d.ts +17 -0
- package/dist/flatbuffers/duc/datum-reference.js +49 -0
- package/dist/flatbuffers/duc/datum-target-type.d.ts +6 -0
- package/dist/flatbuffers/duc/datum-target-type.js +9 -0
- package/dist/flatbuffers/duc/decimal-separator.d.ts +4 -0
- package/dist/flatbuffers/duc/decimal-separator.js +7 -0
- package/dist/flatbuffers/duc/delta.d.ts +20 -0
- package/dist/flatbuffers/duc/delta.js +64 -0
- package/dist/flatbuffers/duc/dictionary-entry.d.ts +17 -0
- package/dist/flatbuffers/duc/dictionary-entry.js +49 -0
- package/dist/flatbuffers/duc/dimension-baseline-data.d.ts +14 -0
- package/dist/flatbuffers/duc/dimension-baseline-data.js +40 -0
- package/dist/flatbuffers/duc/dimension-bindings.d.ts +17 -0
- package/dist/flatbuffers/duc/dimension-bindings.js +50 -0
- package/dist/flatbuffers/duc/dimension-continue-data.d.ts +14 -0
- package/dist/flatbuffers/duc/dimension-continue-data.js +40 -0
- package/dist/flatbuffers/duc/dimension-definition-points.d.ts +21 -0
- package/dist/flatbuffers/duc/dimension-definition-points.js +64 -0
- package/dist/flatbuffers/duc/dimension-ext-line-style.d.ts +18 -0
- package/dist/flatbuffers/duc/dimension-ext-line-style.js +57 -0
- package/dist/flatbuffers/duc/dimension-fit-rule.d.ts +6 -0
- package/dist/flatbuffers/duc/dimension-fit-rule.js +9 -0
- package/dist/flatbuffers/duc/dimension-fit-style.d.ts +19 -0
- package/dist/flatbuffers/duc/dimension-fit-style.js +58 -0
- package/dist/flatbuffers/duc/dimension-line-style.d.ts +16 -0
- package/dist/flatbuffers/duc/dimension-line-style.js +49 -0
- package/dist/flatbuffers/duc/dimension-symbol-style.d.ts +22 -0
- package/dist/flatbuffers/duc/dimension-symbol-style.js +72 -0
- package/dist/flatbuffers/duc/dimension-text-placement.d.ts +5 -0
- package/dist/flatbuffers/duc/dimension-text-placement.js +8 -0
- package/dist/flatbuffers/duc/dimension-tolerance-style.d.ts +24 -0
- package/dist/flatbuffers/duc/dimension-tolerance-style.js +71 -0
- package/dist/flatbuffers/duc/dimension-type.d.ts +15 -0
- package/dist/flatbuffers/duc/dimension-type.js +18 -0
- package/dist/flatbuffers/duc/dimension-units-format.d.ts +7 -0
- package/dist/flatbuffers/duc/dimension-units-format.js +10 -0
- package/dist/flatbuffers/duc/dimension-validation-rules.d.ts +25 -0
- package/dist/flatbuffers/duc/dimension-validation-rules.js +74 -0
- package/dist/flatbuffers/duc/duc-arrow-element.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-arrow-element.js +49 -0
- package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.js +44 -0
- package/dist/flatbuffers/duc/duc-block-attribute-definition.d.ts +22 -0
- package/dist/flatbuffers/duc/duc-block-attribute-definition.js +64 -0
- package/dist/flatbuffers/duc/duc-block-duplication-array.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-block-duplication-array.js +64 -0
- package/dist/flatbuffers/duc/duc-block-instance-element.d.ts +30 -0
- package/dist/flatbuffers/duc/duc-block-instance-element.js +94 -0
- package/dist/flatbuffers/duc/duc-block.d.ts +34 -0
- package/dist/flatbuffers/duc/duc-block.js +111 -0
- package/dist/flatbuffers/duc/duc-common-style.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-common-style.js +44 -0
- package/dist/flatbuffers/duc/duc-dimension-element.d.ts +45 -0
- package/dist/flatbuffers/duc/duc-dimension-element.js +120 -0
- package/dist/flatbuffers/duc/duc-dimension-style.d.ts +28 -0
- package/dist/flatbuffers/duc/duc-dimension-style.js +76 -0
- package/dist/flatbuffers/duc/duc-doc-element.d.ts +33 -0
- package/dist/flatbuffers/duc/duc-doc-element.js +95 -0
- package/dist/flatbuffers/duc/duc-doc-style.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-doc-style.js +52 -0
- package/dist/flatbuffers/duc/duc-element-base.d.ts +88 -0
- package/dist/flatbuffers/duc/duc-element-base.js +269 -0
- package/dist/flatbuffers/duc/duc-element-styles-base.d.ts +30 -0
- package/dist/flatbuffers/duc/duc-element-styles-base.js +103 -0
- package/dist/flatbuffers/duc/duc-ellipse-element.d.ts +22 -0
- package/dist/flatbuffers/duc/duc-ellipse-element.js +73 -0
- package/dist/flatbuffers/duc/duc-embeddable-element.d.ts +14 -0
- package/dist/flatbuffers/duc/duc-embeddable-element.js +41 -0
- package/dist/flatbuffers/duc/duc-external-file-data.d.ts +27 -0
- package/dist/flatbuffers/duc/duc-external-file-data.js +92 -0
- package/dist/flatbuffers/duc/duc-external-file-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-external-file-entry.js +44 -0
- package/dist/flatbuffers/duc/duc-feature-control-frame-element.d.ts +31 -0
- package/dist/flatbuffers/duc/duc-feature-control-frame-element.js +89 -0
- package/dist/flatbuffers/duc/duc-feature-control-frame-style.d.ts +25 -0
- package/dist/flatbuffers/duc/duc-feature-control-frame-style.js +68 -0
- package/dist/flatbuffers/duc/duc-frame-element.d.ts +14 -0
- package/dist/flatbuffers/duc/duc-frame-element.js +41 -0
- package/dist/flatbuffers/duc/duc-free-draw-element.d.ts +52 -0
- package/dist/flatbuffers/duc/duc-free-draw-element.js +154 -0
- package/dist/flatbuffers/duc/duc-free-draw-ends.d.ts +18 -0
- package/dist/flatbuffers/duc/duc-free-draw-ends.js +56 -0
- package/dist/flatbuffers/duc/duc-global-state.d.ts +37 -0
- package/dist/flatbuffers/duc/duc-global-state.js +121 -0
- package/dist/flatbuffers/duc/duc-group.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-group.js +44 -0
- package/dist/flatbuffers/duc/duc-hatch-style.d.ts +28 -0
- package/dist/flatbuffers/duc/duc-hatch-style.js +79 -0
- package/dist/flatbuffers/duc/duc-head.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-head.js +57 -0
- package/dist/flatbuffers/duc/duc-image-element.d.ts +35 -0
- package/dist/flatbuffers/duc/duc-image-element.js +91 -0
- package/dist/flatbuffers/duc/duc-image-filter.d.ts +15 -0
- package/dist/flatbuffers/duc/duc-image-filter.js +48 -0
- package/dist/flatbuffers/duc/duc-layer-overrides.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-layer-overrides.js +44 -0
- package/dist/flatbuffers/duc/duc-layer.d.ts +21 -0
- package/dist/flatbuffers/duc/duc-layer.js +59 -0
- package/dist/flatbuffers/duc/duc-leader-element.d.ts +22 -0
- package/dist/flatbuffers/duc/duc-leader-element.js +60 -0
- package/dist/flatbuffers/duc/duc-leader-style.d.ts +30 -0
- package/dist/flatbuffers/duc/duc-leader-style.js +87 -0
- package/dist/flatbuffers/duc/duc-line-reference.d.ts +15 -0
- package/dist/flatbuffers/duc/duc-line-reference.js +43 -0
- package/dist/flatbuffers/duc/duc-line.d.ts +15 -0
- package/dist/flatbuffers/duc/duc-line.js +43 -0
- package/dist/flatbuffers/duc/duc-linear-element-base.d.ts +38 -0
- package/dist/flatbuffers/duc/duc-linear-element-base.js +124 -0
- package/dist/flatbuffers/duc/duc-linear-element.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-linear-element.js +49 -0
- package/dist/flatbuffers/duc/duc-local-state.d.ts +68 -0
- package/dist/flatbuffers/duc/duc-local-state.js +206 -0
- package/dist/flatbuffers/duc/duc-mermaid-element.d.ts +23 -0
- package/dist/flatbuffers/duc/duc-mermaid-element.js +65 -0
- package/dist/flatbuffers/duc/duc-parametric-element.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-parametric-element.js +44 -0
- package/dist/flatbuffers/duc/duc-path.d.ts +26 -0
- package/dist/flatbuffers/duc/duc-path.js +69 -0
- package/dist/flatbuffers/duc/duc-pdf-element.d.ts +17 -0
- package/dist/flatbuffers/duc/duc-pdf-element.js +49 -0
- package/dist/flatbuffers/duc/duc-plot-element.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-plot-element.js +52 -0
- package/dist/flatbuffers/duc/duc-plot-style.d.ts +14 -0
- package/dist/flatbuffers/duc/duc-plot-style.js +41 -0
- package/dist/flatbuffers/duc/duc-point-binding.d.ts +26 -0
- package/dist/flatbuffers/duc/duc-point-binding.js +73 -0
- package/dist/flatbuffers/duc/duc-point.d.ts +18 -0
- package/dist/flatbuffers/duc/duc-point.js +57 -0
- package/dist/flatbuffers/duc/duc-polygon-element.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-polygon-element.js +49 -0
- package/dist/flatbuffers/duc/duc-rectangle-element.d.ts +14 -0
- package/dist/flatbuffers/duc/duc-rectangle-element.js +41 -0
- package/dist/flatbuffers/duc/duc-region.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-region.js +51 -0
- package/dist/flatbuffers/duc/duc-stack-base.d.ts +27 -0
- package/dist/flatbuffers/duc/duc-stack-base.js +78 -0
- package/dist/flatbuffers/duc/duc-stack-element-base.d.ts +23 -0
- package/dist/flatbuffers/duc/duc-stack-element-base.js +65 -0
- package/dist/flatbuffers/duc/duc-stack-like-styles.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-stack-like-styles.js +48 -0
- package/dist/flatbuffers/duc/duc-table-auto-size.d.ts +15 -0
- package/dist/flatbuffers/duc/duc-table-auto-size.js +48 -0
- package/dist/flatbuffers/duc/duc-table-cell-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-table-cell-entry.js +44 -0
- package/dist/flatbuffers/duc/duc-table-cell-span.d.ts +15 -0
- package/dist/flatbuffers/duc/duc-table-cell-span.js +48 -0
- package/dist/flatbuffers/duc/duc-table-cell-style.d.ts +22 -0
- package/dist/flatbuffers/duc/duc-table-cell-style.js +59 -0
- package/dist/flatbuffers/duc/duc-table-cell.d.ts +27 -0
- package/dist/flatbuffers/duc/duc-table-cell.js +72 -0
- package/dist/flatbuffers/duc/duc-table-column-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-table-column-entry.js +44 -0
- package/dist/flatbuffers/duc/duc-table-column.d.ts +18 -0
- package/dist/flatbuffers/duc/duc-table-column.js +51 -0
- package/dist/flatbuffers/duc/duc-table-element.d.ts +51 -0
- package/dist/flatbuffers/duc/duc-table-element.js +167 -0
- package/dist/flatbuffers/duc/duc-table-row-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-table-row-entry.js +44 -0
- package/dist/flatbuffers/duc/duc-table-row.d.ts +18 -0
- package/dist/flatbuffers/duc/duc-table-row.js +51 -0
- package/dist/flatbuffers/duc/duc-table-style.d.ts +23 -0
- package/dist/flatbuffers/duc/duc-table-style.js +65 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.d.ts +14 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.js +40 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-element-source.d.ts +17 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-element-source.js +49 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-part.d.ts +22 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-part.js +58 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-source-data.d.ts +9 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-source-data.js +26 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-source.d.ts +19 -0
- package/dist/flatbuffers/duc/duc-text-dynamic-source.js +58 -0
- package/dist/flatbuffers/duc/duc-text-element.d.ts +33 -0
- package/dist/flatbuffers/duc/duc-text-element.js +94 -0
- package/dist/flatbuffers/duc/duc-text-style.d.ts +44 -0
- package/dist/flatbuffers/duc/duc-text-style.js +128 -0
- package/dist/flatbuffers/duc/duc-ucs.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-ucs.js +49 -0
- package/dist/flatbuffers/duc/duc-view.d.ts +24 -0
- package/dist/flatbuffers/duc/duc-view.js +71 -0
- package/dist/flatbuffers/duc/duc-viewport-element.d.ts +36 -0
- package/dist/flatbuffers/duc/duc-viewport-element.js +102 -0
- package/dist/flatbuffers/duc/duc-viewport-style.d.ts +16 -0
- package/dist/flatbuffers/duc/duc-viewport-style.js +49 -0
- package/dist/flatbuffers/duc/duc-xray-element.d.ts +23 -0
- package/dist/flatbuffers/duc/duc-xray-element.js +66 -0
- package/dist/flatbuffers/duc/duc-xray-style.d.ts +17 -0
- package/dist/flatbuffers/duc/duc-xray-style.js +49 -0
- package/dist/flatbuffers/duc/dynamic-snap-settings.d.ts +17 -0
- package/dist/flatbuffers/duc/dynamic-snap-settings.js +56 -0
- package/dist/flatbuffers/duc/element-background.d.ts +14 -0
- package/dist/flatbuffers/duc/element-background.js +41 -0
- package/dist/flatbuffers/duc/element-content-base.d.ts +29 -0
- package/dist/flatbuffers/duc/element-content-base.js +80 -0
- package/dist/flatbuffers/duc/element-content-preference.d.ts +8 -0
- package/dist/flatbuffers/duc/element-content-preference.js +11 -0
- package/dist/flatbuffers/duc/element-stroke.d.ts +24 -0
- package/dist/flatbuffers/duc/element-stroke.js +66 -0
- package/dist/flatbuffers/duc/element-wrapper.d.ts +16 -0
- package/dist/flatbuffers/duc/element-wrapper.js +49 -0
- package/dist/flatbuffers/duc/element.d.ts +49 -0
- package/dist/flatbuffers/duc/element.js +106 -0
- package/dist/flatbuffers/duc/exported-data-state.d.ts +87 -0
- package/dist/flatbuffers/duc/exported-data-state.js +290 -0
- package/dist/flatbuffers/duc/fcfbetween-modifier.d.ts +17 -0
- package/dist/flatbuffers/duc/fcfbetween-modifier.js +48 -0
- package/dist/flatbuffers/duc/fcfdatum-definition.d.ts +16 -0
- package/dist/flatbuffers/duc/fcfdatum-definition.js +43 -0
- package/dist/flatbuffers/duc/fcfdatum-style.d.ts +14 -0
- package/dist/flatbuffers/duc/fcfdatum-style.js +41 -0
- package/dist/flatbuffers/duc/fcfframe-modifiers.d.ts +22 -0
- package/dist/flatbuffers/duc/fcfframe-modifiers.js +65 -0
- package/dist/flatbuffers/duc/fcflayout-style.d.ts +17 -0
- package/dist/flatbuffers/duc/fcflayout-style.js +56 -0
- package/dist/flatbuffers/duc/fcfprojected-zone-modifier.d.ts +13 -0
- package/dist/flatbuffers/duc/fcfprojected-zone-modifier.js +40 -0
- package/dist/flatbuffers/duc/fcfsegment-row.d.ts +17 -0
- package/dist/flatbuffers/duc/fcfsegment-row.js +55 -0
- package/dist/flatbuffers/duc/fcfsymbol-style.d.ts +13 -0
- package/dist/flatbuffers/duc/fcfsymbol-style.js +40 -0
- package/dist/flatbuffers/duc/feature-control-frame-segment.d.ts +22 -0
- package/dist/flatbuffers/duc/feature-control-frame-segment.js +65 -0
- package/dist/flatbuffers/duc/feature-modifier.d.ts +18 -0
- package/dist/flatbuffers/duc/feature-modifier.js +21 -0
- package/dist/flatbuffers/duc/gdt-symbol.d.ts +22 -0
- package/dist/flatbuffers/duc/gdt-symbol.js +25 -0
- package/dist/flatbuffers/duc/geometric-point.d.ts +10 -0
- package/dist/flatbuffers/duc/geometric-point.js +27 -0
- package/dist/flatbuffers/duc/grid-display-type.d.ts +6 -0
- package/dist/flatbuffers/duc/grid-display-type.js +9 -0
- package/dist/flatbuffers/duc/grid-settings.d.ts +54 -0
- package/dist/flatbuffers/duc/grid-settings.js +165 -0
- package/dist/flatbuffers/duc/grid-style.d.ts +26 -0
- package/dist/flatbuffers/duc/grid-style.js +74 -0
- package/dist/flatbuffers/duc/grid-type.d.ts +7 -0
- package/dist/flatbuffers/duc/grid-type.js +10 -0
- package/dist/flatbuffers/duc/handle-type.d.ts +4 -0
- package/dist/flatbuffers/duc/handle-type.js +7 -0
- package/dist/flatbuffers/duc/hatch-pattern-line.d.ts +35 -0
- package/dist/flatbuffers/duc/hatch-pattern-line.js +93 -0
- package/dist/flatbuffers/duc/hatch-style.d.ts +5 -0
- package/dist/flatbuffers/duc/hatch-style.js +8 -0
- package/dist/flatbuffers/duc/identified-common-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-common-style.js +44 -0
- package/dist/flatbuffers/duc/identified-dimension-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-dimension-style.js +44 -0
- package/dist/flatbuffers/duc/identified-doc-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-doc-style.js +44 -0
- package/dist/flatbuffers/duc/identified-fcfstyle.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-fcfstyle.js +44 -0
- package/dist/flatbuffers/duc/identified-grid-settings.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-grid-settings.js +44 -0
- package/dist/flatbuffers/duc/identified-hatch-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-hatch-style.js +44 -0
- package/dist/flatbuffers/duc/identified-leader-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-leader-style.js +44 -0
- package/dist/flatbuffers/duc/identified-snap-settings.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-snap-settings.js +44 -0
- package/dist/flatbuffers/duc/identified-stack-like-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-stack-like-style.js +44 -0
- package/dist/flatbuffers/duc/identified-table-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-table-style.js +44 -0
- package/dist/flatbuffers/duc/identified-text-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-text-style.js +44 -0
- package/dist/flatbuffers/duc/identified-ucs.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-ucs.js +44 -0
- package/dist/flatbuffers/duc/identified-view.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-view.js +44 -0
- package/dist/flatbuffers/duc/identified-viewport-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-viewport-style.js +44 -0
- package/dist/flatbuffers/duc/identified-xray-style.d.ts +16 -0
- package/dist/flatbuffers/duc/identified-xray-style.js +44 -0
- package/dist/flatbuffers/duc/identifier.d.ts +20 -0
- package/dist/flatbuffers/duc/identifier.js +57 -0
- package/dist/flatbuffers/duc/image-crop.d.ts +23 -0
- package/dist/flatbuffers/duc/image-crop.js +80 -0
- package/dist/flatbuffers/duc/image-status.d.ts +5 -0
- package/dist/flatbuffers/duc/image-status.js +8 -0
- package/dist/flatbuffers/duc/isometric-grid-settings.d.ts +15 -0
- package/dist/flatbuffers/duc/isometric-grid-settings.js +48 -0
- package/dist/flatbuffers/duc/jsonpatch-operation.d.ts +23 -0
- package/dist/flatbuffers/duc/jsonpatch-operation.js +64 -0
- package/dist/flatbuffers/duc/layer-snap-filters.d.ts +23 -0
- package/dist/flatbuffers/duc/layer-snap-filters.js +76 -0
- package/dist/flatbuffers/duc/layer-validation-rules.d.ts +17 -0
- package/dist/flatbuffers/duc/layer-validation-rules.js +54 -0
- package/dist/flatbuffers/duc/leader-block-content.d.ts +25 -0
- package/dist/flatbuffers/duc/leader-block-content.js +85 -0
- package/dist/flatbuffers/duc/leader-content-data.d.ts +9 -0
- package/dist/flatbuffers/duc/leader-content-data.js +26 -0
- package/dist/flatbuffers/duc/leader-content-type.d.ts +4 -0
- package/dist/flatbuffers/duc/leader-content-type.js +7 -0
- package/dist/flatbuffers/duc/leader-content.d.ts +19 -0
- package/dist/flatbuffers/duc/leader-content.js +58 -0
- package/dist/flatbuffers/duc/leader-text-block-content.d.ts +14 -0
- package/dist/flatbuffers/duc/leader-text-block-content.js +40 -0
- package/dist/flatbuffers/duc/line-head.d.ts +17 -0
- package/dist/flatbuffers/duc/line-head.js +20 -0
- package/dist/flatbuffers/duc/line-spacing-type.d.ts +5 -0
- package/dist/flatbuffers/duc/line-spacing-type.js +8 -0
- package/dist/flatbuffers/duc/line-spacing.d.ts +16 -0
- package/dist/flatbuffers/duc/line-spacing.js +49 -0
- package/dist/flatbuffers/duc/linear-unit-system.d.ts +24 -0
- package/dist/flatbuffers/duc/linear-unit-system.js +75 -0
- package/dist/flatbuffers/duc/margins.d.ts +19 -0
- package/dist/flatbuffers/duc/margins.js +64 -0
- package/dist/flatbuffers/duc/mark-ellipse-center.d.ts +4 -0
- package/dist/flatbuffers/duc/mark-ellipse-center.js +7 -0
- package/dist/flatbuffers/duc/material-condition.d.ts +5 -0
- package/dist/flatbuffers/duc/material-condition.js +8 -0
- package/dist/flatbuffers/duc/object-snap-mode.d.ts +22 -0
- package/dist/flatbuffers/duc/object-snap-mode.js +25 -0
- package/dist/flatbuffers/duc/paragraph-formatting.d.ts +33 -0
- package/dist/flatbuffers/duc/paragraph-formatting.js +106 -0
- package/dist/flatbuffers/duc/parametric-source-type.d.ts +4 -0
- package/dist/flatbuffers/duc/parametric-source-type.js +7 -0
- package/dist/flatbuffers/duc/parametric-source.d.ts +20 -0
- package/dist/flatbuffers/duc/parametric-source.js +57 -0
- package/dist/flatbuffers/duc/plot-layout.d.ts +14 -0
- package/dist/flatbuffers/duc/plot-layout.js +41 -0
- package/dist/flatbuffers/duc/point-binding-point.d.ts +15 -0
- package/dist/flatbuffers/duc/point-binding-point.js +48 -0
- package/dist/flatbuffers/duc/polar-grid-settings.d.ts +17 -0
- package/dist/flatbuffers/duc/polar-grid-settings.js +56 -0
- package/dist/flatbuffers/duc/polar-tracking-settings.d.ts +29 -0
- package/dist/flatbuffers/duc/polar-tracking-settings.js +90 -0
- package/dist/flatbuffers/duc/primary-units.d.ts +16 -0
- package/dist/flatbuffers/duc/primary-units.js +44 -0
- package/dist/flatbuffers/duc/pruning-level.d.ts +5 -0
- package/dist/flatbuffers/duc/pruning-level.js +8 -0
- package/dist/flatbuffers/duc/snap-marker-settings.d.ts +23 -0
- package/dist/flatbuffers/duc/snap-marker-settings.js +79 -0
- package/dist/flatbuffers/duc/snap-marker-shape.d.ts +6 -0
- package/dist/flatbuffers/duc/snap-marker-shape.js +9 -0
- package/dist/flatbuffers/duc/snap-marker-style-entry.d.ts +16 -0
- package/dist/flatbuffers/duc/snap-marker-style-entry.js +43 -0
- package/dist/flatbuffers/duc/snap-marker-style.d.ts +17 -0
- package/dist/flatbuffers/duc/snap-marker-style.js +49 -0
- package/dist/flatbuffers/duc/snap-mode.d.ts +4 -0
- package/dist/flatbuffers/duc/snap-mode.js +7 -0
- package/dist/flatbuffers/duc/snap-override-behavior.d.ts +5 -0
- package/dist/flatbuffers/duc/snap-override-behavior.js +8 -0
- package/dist/flatbuffers/duc/snap-override.d.ts +17 -0
- package/dist/flatbuffers/duc/snap-override.js +49 -0
- package/dist/flatbuffers/duc/snap-settings.d.ts +75 -0
- package/dist/flatbuffers/duc/snap-settings.js +245 -0
- package/dist/flatbuffers/duc/stack-format-properties.d.ts +18 -0
- package/dist/flatbuffers/duc/stack-format-properties.js +57 -0
- package/dist/flatbuffers/duc/stack-format.d.ts +21 -0
- package/dist/flatbuffers/duc/stack-format.js +64 -0
- package/dist/flatbuffers/duc/stacked-text-align.d.ts +5 -0
- package/dist/flatbuffers/duc/stacked-text-align.js +8 -0
- package/dist/flatbuffers/duc/standard-overrides.d.ts +63 -0
- package/dist/flatbuffers/duc/standard-overrides.js +162 -0
- package/dist/flatbuffers/duc/standard-styles.d.ts +77 -0
- package/dist/flatbuffers/duc/standard-styles.js +285 -0
- package/dist/flatbuffers/duc/standard-units.d.ts +16 -0
- package/dist/flatbuffers/duc/standard-units.js +44 -0
- package/dist/flatbuffers/duc/standard-validation.d.ts +16 -0
- package/dist/flatbuffers/duc/standard-validation.js +44 -0
- package/dist/flatbuffers/duc/standard-view-settings.d.ts +35 -0
- package/dist/flatbuffers/duc/standard-view-settings.js +124 -0
- package/dist/flatbuffers/duc/standard.d.ts +33 -0
- package/dist/flatbuffers/duc/standard.js +90 -0
- package/dist/flatbuffers/duc/string-value-entry.d.ts +17 -0
- package/dist/flatbuffers/duc/string-value-entry.js +49 -0
- package/dist/flatbuffers/duc/stroke-cap.d.ts +5 -0
- package/dist/flatbuffers/duc/stroke-cap.js +8 -0
- package/dist/flatbuffers/duc/stroke-join.d.ts +5 -0
- package/dist/flatbuffers/duc/stroke-join.js +8 -0
- package/dist/flatbuffers/duc/stroke-placement.d.ts +5 -0
- package/dist/flatbuffers/duc/stroke-placement.js +8 -0
- package/dist/flatbuffers/duc/stroke-preference.d.ts +6 -0
- package/dist/flatbuffers/duc/stroke-preference.js +9 -0
- package/dist/flatbuffers/duc/stroke-side-preference.d.ts +8 -0
- package/dist/flatbuffers/duc/stroke-side-preference.js +11 -0
- package/dist/flatbuffers/duc/stroke-sides.d.ts +24 -0
- package/dist/flatbuffers/duc/stroke-sides.js +67 -0
- package/dist/flatbuffers/duc/stroke-style.d.ts +37 -0
- package/dist/flatbuffers/duc/stroke-style.js +111 -0
- package/dist/flatbuffers/duc/stroke-width.d.ts +5 -0
- package/dist/flatbuffers/duc/stroke-width.js +8 -0
- package/dist/flatbuffers/duc/table-cell-alignment.d.ts +11 -0
- package/dist/flatbuffers/duc/table-cell-alignment.js +14 -0
- package/dist/flatbuffers/duc/table-flow-direction.d.ts +4 -0
- package/dist/flatbuffers/duc/table-flow-direction.js +7 -0
- package/dist/flatbuffers/duc/text-align.d.ts +5 -0
- package/dist/flatbuffers/duc/text-align.js +8 -0
- package/dist/flatbuffers/duc/text-column.d.ts +15 -0
- package/dist/flatbuffers/duc/text-column.js +48 -0
- package/dist/flatbuffers/duc/text-field-source-property.d.ts +13 -0
- package/dist/flatbuffers/duc/text-field-source-property.js +16 -0
- package/dist/flatbuffers/duc/text-field-source-type.d.ts +4 -0
- package/dist/flatbuffers/duc/text-field-source-type.js +7 -0
- package/dist/flatbuffers/duc/text-flow-direction.d.ts +6 -0
- package/dist/flatbuffers/duc/text-flow-direction.js +9 -0
- package/dist/flatbuffers/duc/tiling-properties.d.ts +21 -0
- package/dist/flatbuffers/duc/tiling-properties.js +75 -0
- package/dist/flatbuffers/duc/tolerance-clause.d.ts +27 -0
- package/dist/flatbuffers/duc/tolerance-clause.js +84 -0
- package/dist/flatbuffers/duc/tolerance-display.d.ts +7 -0
- package/dist/flatbuffers/duc/tolerance-display.js +10 -0
- package/dist/flatbuffers/duc/tolerance-type.d.ts +5 -0
- package/dist/flatbuffers/duc/tolerance-type.js +8 -0
- package/dist/flatbuffers/duc/tolerance-zone-type.d.ts +7 -0
- package/dist/flatbuffers/duc/tolerance-zone-type.js +10 -0
- package/dist/flatbuffers/duc/tracking-line-style.d.ts +26 -0
- package/dist/flatbuffers/duc/tracking-line-style.js +74 -0
- package/dist/flatbuffers/duc/unit-precision.d.ts +19 -0
- package/dist/flatbuffers/duc/unit-precision.js +64 -0
- package/dist/flatbuffers/duc/unit-system-base.d.ts +20 -0
- package/dist/flatbuffers/duc/unit-system-base.js +65 -0
- package/dist/flatbuffers/duc/unit-system.d.ts +4 -0
- package/dist/flatbuffers/duc/unit-system.js +7 -0
- package/dist/flatbuffers/duc/version-base.d.ts +27 -0
- package/dist/flatbuffers/duc/version-base.js +80 -0
- package/dist/flatbuffers/duc/version-graph-metadata.d.ts +15 -0
- package/dist/flatbuffers/duc/version-graph-metadata.js +48 -0
- package/dist/flatbuffers/duc/version-graph.d.ts +31 -0
- package/dist/flatbuffers/duc/version-graph.js +94 -0
- package/dist/flatbuffers/duc/vertical-align.d.ts +5 -0
- package/dist/flatbuffers/duc/vertical-align.js +8 -0
- package/dist/flatbuffers/duc/viewport-shade-plot.d.ts +6 -0
- package/dist/flatbuffers/duc/viewport-shade-plot.js +9 -0
- package/dist/flatbuffers/duc/youtube-states.d.ts +8 -0
- package/dist/flatbuffers/duc/youtube-states.js +11 -0
- package/dist/flatbuffers/duc.d.ts +227 -0
- package/dist/flatbuffers/duc.js +229 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/legacy/index.d.ts +1 -0
- package/dist/legacy/index.js +1 -0
- package/dist/legacy/v1/duc/app-state.d.ts +124 -0
- package/dist/legacy/v1/duc/app-state.js +388 -0
- package/dist/legacy/v1/duc/binary-file-data.d.ts +27 -0
- package/dist/legacy/v1/duc/binary-file-data.js +90 -0
- package/dist/legacy/v1/duc/binary-files-entry.d.ts +16 -0
- package/dist/legacy/v1/duc/binary-files-entry.js +43 -0
- package/dist/legacy/v1/duc/binary-files.d.ts +17 -0
- package/dist/legacy/v1/duc/binary-files.js +55 -0
- package/dist/legacy/v1/duc/binding-point.d.ts +15 -0
- package/dist/legacy/v1/duc/binding-point.js +48 -0
- package/dist/legacy/v1/duc/bound-element.d.ts +17 -0
- package/dist/legacy/v1/duc/bound-element.js +48 -0
- package/dist/legacy/v1/duc/duc-block-attribute-details.d.ts +22 -0
- package/dist/legacy/v1/duc/duc-block-attribute-details.js +57 -0
- package/dist/legacy/v1/duc/duc-block-attribute.d.ts +16 -0
- package/dist/legacy/v1/duc/duc-block-attribute.js +43 -0
- package/dist/legacy/v1/duc/duc-block-instance-element-override.d.ts +17 -0
- package/dist/legacy/v1/duc/duc-block-instance-element-override.js +48 -0
- package/dist/legacy/v1/duc/duc-block.d.ts +34 -0
- package/dist/legacy/v1/duc/duc-block.js +110 -0
- package/dist/legacy/v1/duc/duc-element.d.ts +273 -0
- package/dist/legacy/v1/duc/duc-element.js +865 -0
- package/dist/legacy/v1/duc/duc-group.d.ts +40 -0
- package/dist/legacy/v1/duc/duc-group.js +114 -0
- package/dist/legacy/v1/duc/duc-line-reference.d.ts +15 -0
- package/dist/legacy/v1/duc/duc-line-reference.js +43 -0
- package/dist/legacy/v1/duc/duc-line.d.ts +15 -0
- package/dist/legacy/v1/duc/duc-line.js +43 -0
- package/dist/legacy/v1/duc/duc-path.d.ts +26 -0
- package/dist/legacy/v1/duc/duc-path.js +69 -0
- package/dist/legacy/v1/duc/duc-table-cell.d.ts +22 -0
- package/dist/legacy/v1/duc/duc-table-cell.js +57 -0
- package/dist/legacy/v1/duc/duc-table-column.d.ts +18 -0
- package/dist/legacy/v1/duc/duc-table-column.js +50 -0
- package/dist/legacy/v1/duc/duc-table-row.d.ts +18 -0
- package/dist/legacy/v1/duc/duc-table-row.js +50 -0
- package/dist/legacy/v1/duc/duc-table-style-props.d.ts +39 -0
- package/dist/legacy/v1/duc/duc-table-style-props.js +114 -0
- package/dist/legacy/v1/duc/duc-table-style.d.ts +14 -0
- package/dist/legacy/v1/duc/duc-table-style.js +41 -0
- package/dist/legacy/v1/duc/element-background.d.ts +14 -0
- package/dist/legacy/v1/duc/element-background.js +41 -0
- package/dist/legacy/v1/duc/element-content-base.d.ts +22 -0
- package/dist/legacy/v1/duc/element-content-base.js +64 -0
- package/dist/legacy/v1/duc/element-stroke.d.ts +23 -0
- package/dist/legacy/v1/duc/element-stroke.js +66 -0
- package/dist/legacy/v1/duc/exported-data-state.d.ts +51 -0
- package/dist/legacy/v1/duc/exported-data-state.js +155 -0
- package/dist/legacy/v1/duc/image-crop.d.ts +23 -0
- package/dist/legacy/v1/duc/image-crop.js +80 -0
- package/dist/legacy/v1/duc/linear-element-editor.d.ts +44 -0
- package/dist/legacy/v1/duc/linear-element-editor.js +119 -0
- package/dist/legacy/v1/duc/point-binding.d.ts +25 -0
- package/dist/legacy/v1/duc/point-binding.js +72 -0
- package/dist/legacy/v1/duc/point.d.ts +20 -0
- package/dist/legacy/v1/duc/point.js +63 -0
- package/dist/legacy/v1/duc/pointer-down-state.d.ts +32 -0
- package/dist/legacy/v1/duc/pointer-down-state.js +90 -0
- package/dist/legacy/v1/duc/renderer-state.d.ts +17 -0
- package/dist/legacy/v1/duc/renderer-state.js +54 -0
- package/dist/legacy/v1/duc/segment-midpoint-state.d.ts +18 -0
- package/dist/legacy/v1/duc/segment-midpoint-state.js +57 -0
- package/dist/legacy/v1/duc/simple-point.d.ts +15 -0
- package/dist/legacy/v1/duc/simple-point.js +48 -0
- package/dist/legacy/v1/duc/stroke-sides.d.ts +23 -0
- package/dist/legacy/v1/duc/stroke-sides.js +66 -0
- package/dist/legacy/v1/duc/stroke-style.d.ts +31 -0
- package/dist/legacy/v1/duc/stroke-style.js +102 -0
- package/dist/legacy/v1/duc/tiling-properties.d.ts +21 -0
- package/dist/legacy/v1/duc/tiling-properties.js +75 -0
- package/dist/legacy/v1/duc.d.ts +35 -0
- package/dist/legacy/v1/duc.js +37 -0
- package/dist/legacy/v1/index.d.ts +1 -0
- package/dist/legacy/v1/index.js +1 -0
- package/dist/legacy/v1/parse/index.d.ts +67 -0
- package/dist/legacy/v1/parse/index.js +101 -0
- package/dist/legacy/v1/parse/parseAppStateFromBinary.d.ts +3 -0
- package/dist/legacy/v1/parse/parseAppStateFromBinary.js +139 -0
- package/dist/legacy/v1/parse/parseBinaryFilesFromBinary.d.ts +4 -0
- package/dist/legacy/v1/parse/parseBinaryFilesFromBinary.js +32 -0
- package/dist/legacy/v1/parse/parseBlockFromBinary.d.ts +3 -0
- package/dist/legacy/v1/parse/parseBlockFromBinary.js +70 -0
- package/dist/legacy/v1/parse/parseElementFromBinary.d.ts +8 -0
- package/dist/legacy/v1/parse/parseElementFromBinary.js +387 -0
- package/dist/legacy/v1/parse/parseGroupFromBinary.d.ts +4 -0
- package/dist/legacy/v1/parse/parseGroupFromBinary.js +36 -0
- package/dist/legacy/v1/parse/parseRendererStateFromBinary.d.ts +4 -0
- package/dist/legacy/v1/parse/parseRendererStateFromBinary.js +15 -0
- package/dist/legacy/v1/serialize/index.d.ts +5 -0
- package/dist/legacy/v1/serialize/index.js +81 -0
- package/dist/legacy/v1/serialize/serializationUtils.d.ts +17 -0
- package/dist/legacy/v1/serialize/serializationUtils.js +27 -0
- package/dist/legacy/v1/serialize/serializeAppStateFromDuc.d.ts +4 -0
- package/dist/legacy/v1/serialize/serializeAppStateFromDuc.js +145 -0
- package/dist/legacy/v1/serialize/serializeBinaryFilesFromDuc.d.ts +4 -0
- package/dist/legacy/v1/serialize/serializeBinaryFilesFromDuc.js +46 -0
- package/dist/legacy/v1/serialize/serializeBlockFromDuc.d.ts +3 -0
- package/dist/legacy/v1/serialize/serializeBlockFromDuc.js +60 -0
- package/dist/legacy/v1/serialize/serializeElementFromDuc.d.ts +8 -0
- package/dist/legacy/v1/serialize/serializeElementFromDuc.js +435 -0
- package/dist/legacy/v1/serialize/serializeGroupFromDuc.d.ts +3 -0
- package/dist/legacy/v1/serialize/serializeGroupFromDuc.js +37 -0
- package/dist/legacy/v1/serialize/serializeRendererStateFromDuc.d.ts +4 -0
- package/dist/legacy/v1/serialize/serializeRendererStateFromDuc.js +7 -0
- package/dist/legacy/v1/types/elements/index.d.ts +480 -0
- package/dist/legacy/v1/types/elements/index.js +1 -0
- package/dist/legacy/v1/types/elements/typeChecks.d.ts +40 -0
- package/dist/legacy/v1/types/elements/typeChecks.js +179 -0
- package/dist/legacy/v1/types/geometryTypes.d.ts +78 -0
- package/dist/legacy/v1/types/geometryTypes.js +1 -0
- package/dist/legacy/v1/types/index.d.ts +496 -0
- package/dist/legacy/v1/types/index.js +1 -0
- package/dist/legacy/v1/types/utility-types.d.ts +31 -0
- package/dist/legacy/v1/types/utility-types.js +1 -0
- package/dist/legacy/v1/utils/bounds.d.ts +76 -0
- package/dist/legacy/v1/utils/bounds.js +415 -0
- package/dist/legacy/v1/utils/constants.d.ts +370 -0
- package/dist/legacy/v1/utils/constants.js +571 -0
- package/dist/legacy/v1/utils/elements/index.d.ts +26 -0
- package/dist/legacy/v1/utils/elements/index.js +108 -0
- package/dist/legacy/v1/utils/elements/linearElement.d.ts +133 -0
- package/dist/legacy/v1/utils/elements/linearElement.js +544 -0
- package/dist/legacy/v1/utils/elements/textElement.d.ts +89 -0
- package/dist/legacy/v1/utils/elements/textElement.js +563 -0
- package/dist/legacy/v1/utils/index.d.ts +26 -0
- package/dist/legacy/v1/utils/index.js +40 -0
- package/dist/legacy/v1/utils/math/algebra/ga.d.ts +63 -0
- package/dist/legacy/v1/utils/math/algebra/ga.js +268 -0
- package/dist/legacy/v1/utils/math/algebra/gadirections.d.ts +9 -0
- package/dist/legacy/v1/utils/math/algebra/gadirections.js +18 -0
- package/dist/legacy/v1/utils/math/algebra/galines.d.ts +23 -0
- package/dist/legacy/v1/utils/math/algebra/galines.js +32 -0
- package/dist/legacy/v1/utils/math/algebra/gapoints.d.ts +8 -0
- package/dist/legacy/v1/utils/math/algebra/gapoints.js +30 -0
- package/dist/legacy/v1/utils/math/algebra/gatransforms.d.ts +10 -0
- package/dist/legacy/v1/utils/math/algebra/gatransforms.js +23 -0
- package/dist/legacy/v1/utils/math/bbox.d.ts +10 -0
- package/dist/legacy/v1/utils/math/bbox.js +42 -0
- package/dist/legacy/v1/utils/math/geometry.d.ts +102 -0
- package/dist/legacy/v1/utils/math/geometry.js +790 -0
- package/dist/legacy/v1/utils/math/index.d.ts +309 -0
- package/dist/legacy/v1/utils/math/index.js +1140 -0
- package/dist/legacy/v1/utils/math/random.d.ts +4 -0
- package/dist/legacy/v1/utils/math/random.js +25 -0
- package/dist/legacy/v1/utils/measurements.d.ts +33 -0
- package/dist/legacy/v1/utils/measurements.js +65 -0
- package/dist/legacy/v1/utils/normalize.d.ts +14 -0
- package/dist/legacy/v1/utils/normalize.js +49 -0
- package/dist/legacy/v1/utils/restore.d.ts +197 -0
- package/dist/legacy/v1/utils/restore.js +1255 -0
- package/dist/legacy/v1/utils/scopes.d.ts +260 -0
- package/dist/legacy/v1/utils/scopes.js +661 -0
- package/dist/legacy/v1/utils/standards.d.ts +12 -0
- package/dist/legacy/v1/utils/standards.js +10 -0
- package/dist/legacy/v1/utils/state/index.d.ts +2 -0
- package/dist/legacy/v1/utils/state/index.js +68 -0
- package/dist/legacy/v1/utils/url.d.ts +8 -0
- package/dist/legacy/v1/utils/url.js +33 -0
- package/dist/parse.d.ts +54 -0
- package/dist/parse.js +1318 -0
- package/dist/restore/index.d.ts +3 -0
- package/dist/restore/index.js +3 -0
- package/dist/restore/restoreDataState.d.ts +191 -0
- package/dist/restore/restoreDataState.js +716 -0
- package/dist/restore/restoreElements.d.ts +34 -0
- package/dist/restore/restoreElements.js +1281 -0
- package/dist/restore/restoreStandards.d.ts +8 -0
- package/dist/restore/restoreStandards.js +224 -0
- package/dist/serialize.d.ts +3 -0
- package/dist/serialize.js +2465 -0
- package/dist/technical/index.d.ts +3 -0
- package/dist/technical/index.js +3 -0
- package/dist/technical/measurements.d.ts +31 -0
- package/dist/technical/measurements.js +64 -0
- package/dist/technical/scopes.d.ts +261 -0
- package/dist/technical/scopes.js +661 -0
- package/dist/technical/standards.d.ts +124 -0
- package/dist/technical/standards.js +10 -0
- package/dist/types/elements/index.d.ts +1356 -0
- package/dist/types/elements/index.js +1 -0
- package/dist/types/elements/typeChecks.d.ts +40 -0
- package/dist/types/elements/typeChecks.js +188 -0
- package/dist/types/geometryTypes.d.ts +90 -0
- package/dist/types/geometryTypes.js +1 -0
- package/dist/types/index.d.ts +591 -0
- package/dist/types/index.js +3 -0
- package/dist/types/utility-types.d.ts +31 -0
- package/dist/types/utility-types.js +1 -0
- package/dist/utils/bounds.d.ts +75 -0
- package/dist/utils/bounds.js +414 -0
- package/dist/utils/constants.d.ts +288 -0
- package/dist/utils/constants.js +529 -0
- package/dist/utils/elements/frameElement.d.ts +4 -0
- package/dist/utils/elements/frameElement.js +16 -0
- package/dist/utils/elements/freedrawElement.d.ts +2 -0
- package/dist/utils/elements/freedrawElement.js +46 -0
- package/dist/utils/elements/index.d.ts +51 -0
- package/dist/utils/elements/index.js +215 -0
- package/dist/utils/elements/linearElement.d.ts +53 -0
- package/dist/utils/elements/linearElement.js +539 -0
- package/dist/utils/elements/newElement.d.ts +72 -0
- package/dist/utils/elements/newElement.js +268 -0
- package/dist/utils/elements/textElement.d.ts +89 -0
- package/dist/utils/elements/textElement.js +565 -0
- package/dist/utils/elements/viewportElement.d.ts +6 -0
- package/dist/utils/elements/viewportElement.js +9 -0
- package/dist/utils/filebyte.d.ts +39 -0
- package/dist/utils/filebyte.js +117 -0
- package/dist/utils/functionCodec.d.ts +5 -0
- package/dist/utils/functionCodec.js +86 -0
- package/dist/utils/index.d.ts +32 -0
- package/dist/utils/index.js +53 -0
- package/dist/utils/math/algebra/ga.d.ts +63 -0
- package/dist/utils/math/algebra/ga.js +268 -0
- package/dist/utils/math/algebra/gadirections.d.ts +9 -0
- package/dist/utils/math/algebra/gadirections.js +18 -0
- package/dist/utils/math/algebra/galines.d.ts +23 -0
- package/dist/utils/math/algebra/galines.js +32 -0
- package/dist/utils/math/algebra/gapoints.d.ts +8 -0
- package/dist/utils/math/algebra/gapoints.js +30 -0
- package/dist/utils/math/algebra/gatransforms.d.ts +10 -0
- package/dist/utils/math/algebra/gatransforms.js +23 -0
- package/dist/utils/math/algebra/index.d.ts +5 -0
- package/dist/utils/math/algebra/index.js +5 -0
- package/dist/utils/math/bbox.d.ts +10 -0
- package/dist/utils/math/bbox.js +42 -0
- package/dist/utils/math/geometry.d.ts +102 -0
- package/dist/utils/math/geometry.js +790 -0
- package/dist/utils/math/index.d.ts +323 -0
- package/dist/utils/math/index.js +1188 -0
- package/dist/utils/math/random.d.ts +4 -0
- package/dist/utils/math/random.js +25 -0
- package/dist/utils/normalize.d.ts +14 -0
- package/dist/utils/normalize.js +49 -0
- package/dist/utils/shape.d.ts +15 -0
- package/dist/utils/shape.js +254 -0
- package/dist/utils/state/grid.d.ts +7 -0
- package/dist/utils/state/grid.js +25 -0
- package/dist/utils/state/index.d.ts +9 -0
- package/dist/utils/state/index.js +131 -0
- package/dist/utils/url.d.ts +8 -0
- package/dist/utils/url.js +33 -0
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.js +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
import { getPrecisionValueFromRaw, getPrecisionValueFromScoped, getScopedBezierPointFromDucPoint } from "ducjs/technical/scopes";
|
|
2
|
+
import { getBoundTextElement, getElementAbsoluteCoords, getElementPointsCoords } from "ducjs/utils/bounds";
|
|
3
|
+
import { LINE_CONFIRM_THRESHOLD } from "ducjs/utils/constants";
|
|
4
|
+
import { centerPoint, getBezierXY, getControlPointsForBezierCurve, getCubicBezierBoundingBox, getQuadraticBezierBoundingBox, mapIntervalToBezierT, rotate, rotatePoint } from "ducjs/utils/math";
|
|
5
|
+
/**
|
|
6
|
+
* Merges overlapping points using the line-based system
|
|
7
|
+
* Returns updated points and lines arrays
|
|
8
|
+
*/
|
|
9
|
+
export const mergeOverlappingPoints = (points, lines, threshold = LINE_CONFIRM_THRESHOLD) => {
|
|
10
|
+
// Create copies to avoid mutating originals
|
|
11
|
+
const pointsCopy = structuredClone(points);
|
|
12
|
+
const linesCopy = structuredClone(lines);
|
|
13
|
+
// Step 1: Find overlapping points
|
|
14
|
+
const overlaps = findOverlappingPointGroups(pointsCopy, threshold);
|
|
15
|
+
// Process each group of overlapping points
|
|
16
|
+
const allPointsToRemove = [];
|
|
17
|
+
const newLinesToAdd = [];
|
|
18
|
+
for (const overlapGroup of overlaps) {
|
|
19
|
+
if (overlapGroup.length > 1) {
|
|
20
|
+
// Step 2: Choose target point (lowest index)
|
|
21
|
+
const targetIndex = Math.min(...overlapGroup);
|
|
22
|
+
const pointsToRemove = overlapGroup.filter(idx => idx !== targetIndex);
|
|
23
|
+
// Step 3: Create new lines to preserve connectivity before updating references
|
|
24
|
+
const newLines = createNewLinesForMergedPoints(linesCopy, pointsToRemove, targetIndex);
|
|
25
|
+
newLinesToAdd.push(...newLines);
|
|
26
|
+
// Step 4: Update all line references to point to target
|
|
27
|
+
updateLineReferences(linesCopy, pointsToRemove, targetIndex);
|
|
28
|
+
// Step 5: Merge any bezier properties if needed
|
|
29
|
+
mergeBezierProperties(pointsCopy, targetIndex, pointsToRemove);
|
|
30
|
+
// Collect points to remove
|
|
31
|
+
allPointsToRemove.push(...pointsToRemove);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Add new lines to preserve connectivity
|
|
35
|
+
linesCopy.push(...newLinesToAdd);
|
|
36
|
+
// Step 6: Remove duplicate points and update all indices
|
|
37
|
+
if (allPointsToRemove.length > 0) {
|
|
38
|
+
const { updatedPoints, updatedLines } = removePointsAndUpdateIndices(pointsCopy, linesCopy, allPointsToRemove);
|
|
39
|
+
// Step 7: Remove duplicate lines (keep only the one with the lowest index)
|
|
40
|
+
const finalLines = removeDuplicateLines(updatedLines);
|
|
41
|
+
return { points: updatedPoints, lines: finalLines };
|
|
42
|
+
}
|
|
43
|
+
return { points: pointsCopy, lines: linesCopy };
|
|
44
|
+
};
|
|
45
|
+
const findOverlappingPointGroups = (points, threshold) => {
|
|
46
|
+
const groups = {};
|
|
47
|
+
points.forEach((point, index) => {
|
|
48
|
+
// Create a key based on rounded coordinates for threshold-based grouping
|
|
49
|
+
const roundedX = Math.round(point.x.value / threshold) * threshold;
|
|
50
|
+
const roundedY = Math.round(point.y.value / threshold) * threshold;
|
|
51
|
+
const key = `${roundedX},${roundedY}`;
|
|
52
|
+
if (!groups[key]) {
|
|
53
|
+
groups[key] = [];
|
|
54
|
+
}
|
|
55
|
+
groups[key].push(index);
|
|
56
|
+
});
|
|
57
|
+
return Object.values(groups).filter(group => group.length > 1);
|
|
58
|
+
};
|
|
59
|
+
const updateLineReferences = (lines, pointsToRemove, targetIndex) => {
|
|
60
|
+
lines.forEach(line => {
|
|
61
|
+
// Update first point reference
|
|
62
|
+
if (pointsToRemove.includes(line[0].index)) {
|
|
63
|
+
line[0].index = targetIndex;
|
|
64
|
+
}
|
|
65
|
+
// Update second point reference
|
|
66
|
+
if (pointsToRemove.includes(line[1].index)) {
|
|
67
|
+
line[1].index = targetIndex;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// Remove lines that now connect a point to itself (self-loops)
|
|
71
|
+
const linesToRemove = [];
|
|
72
|
+
lines.forEach((line, index) => {
|
|
73
|
+
if (line[0].index === line[1].index) {
|
|
74
|
+
linesToRemove.push(index);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// Remove self-loop lines in reverse order
|
|
78
|
+
linesToRemove.reverse().forEach(index => {
|
|
79
|
+
lines.splice(index, 1);
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const mergeBezierProperties = (points, targetIndex, pointsToRemove) => {
|
|
83
|
+
// If target doesn't have mirroring but a removed point does, inherit it
|
|
84
|
+
if (!points[targetIndex].mirroring) {
|
|
85
|
+
for (const removeIndex of pointsToRemove) {
|
|
86
|
+
if (points[removeIndex].mirroring) {
|
|
87
|
+
points[targetIndex].mirroring = points[removeIndex].mirroring;
|
|
88
|
+
break; // Take the first one found
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const removePointsAndUpdateIndices = (points, lines, indicesToRemove) => {
|
|
94
|
+
const uniqueIndicesToRemove = Array.from(new Set(indicesToRemove));
|
|
95
|
+
const indexMap = createIndexMapping(points.length, uniqueIndicesToRemove);
|
|
96
|
+
const updatedPoints = points.filter((_, index) => !uniqueIndicesToRemove.includes(index));
|
|
97
|
+
const updatedLines = [];
|
|
98
|
+
for (const line of lines) {
|
|
99
|
+
const p1Index = indexMap[line[0].index];
|
|
100
|
+
const p2Index = indexMap[line[1].index];
|
|
101
|
+
if (p1Index !== -1 && p2Index !== -1) {
|
|
102
|
+
updatedLines.push([
|
|
103
|
+
Object.assign(Object.assign({}, line[0]), { index: p1Index }),
|
|
104
|
+
Object.assign(Object.assign({}, line[1]), { index: p2Index })
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { updatedPoints, updatedLines };
|
|
109
|
+
};
|
|
110
|
+
const createIndexMapping = (originalLength, removedIndices) => {
|
|
111
|
+
const indexMap = [];
|
|
112
|
+
let offset = 0;
|
|
113
|
+
for (let i = 0; i < originalLength; i++) {
|
|
114
|
+
if (removedIndices.includes(i)) {
|
|
115
|
+
offset++;
|
|
116
|
+
indexMap[i] = -1; // Mark as removed
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
indexMap[i] = i - offset;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return indexMap;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Creates new lines to preserve connectivity when points are merged
|
|
126
|
+
* This ensures that connections involving the removed points are maintained
|
|
127
|
+
*/
|
|
128
|
+
/**
|
|
129
|
+
* Creates new lines to preserve connectivity when points are merged
|
|
130
|
+
* This ensures that connections involving the removed points are maintained
|
|
131
|
+
*/
|
|
132
|
+
const createNewLinesForMergedPoints = (lines, pointsToRemove, targetIndex) => {
|
|
133
|
+
const newLines = [];
|
|
134
|
+
const connectionsToPreserve = new Set();
|
|
135
|
+
// Find all unique connections that involve points being removed
|
|
136
|
+
lines.forEach(line => {
|
|
137
|
+
const point1 = line[0].index;
|
|
138
|
+
const point2 = line[1].index;
|
|
139
|
+
// If either point is being removed, we need to check if we need new connections
|
|
140
|
+
if (pointsToRemove.includes(point1) || pointsToRemove.includes(point2)) {
|
|
141
|
+
// Determine what the connection will become after merge
|
|
142
|
+
const newPoint1 = pointsToRemove.includes(point1) ? targetIndex : point1;
|
|
143
|
+
const newPoint2 = pointsToRemove.includes(point2) ? targetIndex : point2;
|
|
144
|
+
// Skip self-loops
|
|
145
|
+
if (newPoint1 !== newPoint2) {
|
|
146
|
+
// Create normalized connection key to avoid duplicates
|
|
147
|
+
const connectionKey = [Math.min(newPoint1, newPoint2), Math.max(newPoint1, newPoint2)].join('-');
|
|
148
|
+
// If this is a new connection we haven't seen before
|
|
149
|
+
if (!connectionsToPreserve.has(connectionKey)) {
|
|
150
|
+
connectionsToPreserve.add(connectionKey);
|
|
151
|
+
// Check if this connection already exists in the original lines
|
|
152
|
+
const connectionExists = lines.some(existingLine => {
|
|
153
|
+
const ep1 = existingLine[0].index;
|
|
154
|
+
const ep2 = existingLine[1].index;
|
|
155
|
+
return (ep1 === newPoint1 && ep2 === newPoint2) ||
|
|
156
|
+
(ep1 === newPoint2 && ep2 === newPoint1);
|
|
157
|
+
});
|
|
158
|
+
// Only create new line if the connection doesn't already exist
|
|
159
|
+
if (!connectionExists) {
|
|
160
|
+
newLines.push([
|
|
161
|
+
{ index: newPoint1, handle: line[0].index === point1 ? line[0].handle : null },
|
|
162
|
+
{ index: newPoint2, handle: line[1].index === point2 ? line[1].handle : null }
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
return newLines;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Removes duplicate lines, keeping only the one with the lowest index
|
|
173
|
+
* Two lines are considered duplicates if they connect the same points (regardless of direction)
|
|
174
|
+
*/
|
|
175
|
+
const removeDuplicateLines = (lines) => {
|
|
176
|
+
const seenConnections = new Map();
|
|
177
|
+
const linesToKeep = [];
|
|
178
|
+
lines.forEach((line, index) => {
|
|
179
|
+
// Create a normalized key for the connection (sorted indices to handle bidirectional duplicates)
|
|
180
|
+
const point1 = line[0].index;
|
|
181
|
+
const point2 = line[1].index;
|
|
182
|
+
const connectionKey = [Math.min(point1, point2), Math.max(point1, point2)].join('-');
|
|
183
|
+
if (!seenConnections.has(connectionKey)) {
|
|
184
|
+
// First time seeing this connection, keep it
|
|
185
|
+
seenConnections.set(connectionKey, index);
|
|
186
|
+
linesToKeep.push(line);
|
|
187
|
+
}
|
|
188
|
+
// If we've seen this connection before, we skip it (removing the duplicate with higher index)
|
|
189
|
+
});
|
|
190
|
+
return linesToKeep;
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Normalizes line points so that the start point is at [0,0]. This is
|
|
194
|
+
* expected in various parts of the codebase. Also returns new x/y to account
|
|
195
|
+
* for the potential normalization.
|
|
196
|
+
*/
|
|
197
|
+
export const getNormalizedPoints = (element, currentScope) => {
|
|
198
|
+
const { points, x, y, lines } = element;
|
|
199
|
+
if (points.length === 0) {
|
|
200
|
+
// Handle empty points array: return element's current x/y and empty normalized points
|
|
201
|
+
return {
|
|
202
|
+
points: [],
|
|
203
|
+
x: getPrecisionValueFromRaw(x.value, element.scope, currentScope),
|
|
204
|
+
y: getPrecisionValueFromRaw(y.value, element.scope, currentScope),
|
|
205
|
+
lines: lines || [],
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const offsetX = points[0].x.value;
|
|
209
|
+
const offsetY = points[0].y.value;
|
|
210
|
+
const normalizedPoints = points.map((point) => {
|
|
211
|
+
return Object.assign(Object.assign({}, point), { x: getPrecisionValueFromRaw((point.x.value - offsetX), element.scope, currentScope), y: getPrecisionValueFromRaw((point.y.value - offsetY), element.scope, currentScope) });
|
|
212
|
+
});
|
|
213
|
+
const normalizedLines = (lines || []).map((line) => {
|
|
214
|
+
const [start, end] = line;
|
|
215
|
+
return [
|
|
216
|
+
Object.assign(Object.assign({}, start), { handle: start.handle
|
|
217
|
+
? {
|
|
218
|
+
x: getPrecisionValueFromRaw((start.handle.x.value - offsetX), element.scope, currentScope),
|
|
219
|
+
y: getPrecisionValueFromRaw((start.handle.y.value - offsetY), element.scope, currentScope),
|
|
220
|
+
}
|
|
221
|
+
: null }),
|
|
222
|
+
Object.assign(Object.assign({}, end), { handle: end.handle
|
|
223
|
+
? {
|
|
224
|
+
x: getPrecisionValueFromRaw((end.handle.x.value - offsetX), element.scope, currentScope),
|
|
225
|
+
y: getPrecisionValueFromRaw((end.handle.y.value - offsetY), element.scope, currentScope),
|
|
226
|
+
}
|
|
227
|
+
: null }),
|
|
228
|
+
];
|
|
229
|
+
});
|
|
230
|
+
return {
|
|
231
|
+
points: normalizedPoints,
|
|
232
|
+
lines: normalizedLines,
|
|
233
|
+
x: getPrecisionValueFromRaw((x.value + offsetX), element.scope, currentScope),
|
|
234
|
+
y: getPrecisionValueFromRaw((y.value + offsetY), element.scope, currentScope),
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
/** scene coords */
|
|
238
|
+
export const getPointsGlobalCoordinates = (element, elementsMap, currentScope) => {
|
|
239
|
+
const [x1, y1, x2, y2] = getElementAbsoluteCoords(element, elementsMap, currentScope);
|
|
240
|
+
const cx = (x1 + x2) / 2;
|
|
241
|
+
const cy = (y1 + y2) / 2;
|
|
242
|
+
return element.points.map((point) => {
|
|
243
|
+
let { x, y } = element;
|
|
244
|
+
// FIXME: We need to handle the element.lines handles here
|
|
245
|
+
// let handleIn = point.handleIn
|
|
246
|
+
// let handleOut = point.handleOut
|
|
247
|
+
const rotatePoint = rotate(x.scoped + point.x.scoped, y.scoped + point.y.scoped, cx, cy, element.angle);
|
|
248
|
+
// if (point.isCurve) {
|
|
249
|
+
// if(handleIn)
|
|
250
|
+
// handleIn = rotate(x + handleIn.x, y + handleIn.y, cx, cy, element.angle);
|
|
251
|
+
// if(handleOut)
|
|
252
|
+
// handleOut = rotate(x + handleOut.x, y + handleOut.y, cx, cy, element.angle);
|
|
253
|
+
// }
|
|
254
|
+
x = getPrecisionValueFromScoped(rotatePoint.x, element.scope, currentScope);
|
|
255
|
+
y = getPrecisionValueFromScoped(rotatePoint.y, element.scope, currentScope);
|
|
256
|
+
return Object.assign(Object.assign({}, point), { x, y });
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
/** scene coords */
|
|
260
|
+
export const getPointGlobalCoordinates = (element, point, elementsMap, currentScope) => {
|
|
261
|
+
const [x1_sv, y1_sv, x2_sv, y2_sv] = getElementAbsoluteCoords(element, elementsMap, currentScope);
|
|
262
|
+
const cx = (x1_sv + x2_sv) / 2;
|
|
263
|
+
const cy = (y1_sv + y2_sv) / 2;
|
|
264
|
+
let elementX = element.x.scoped;
|
|
265
|
+
let elementY = element.y.scoped;
|
|
266
|
+
const rotatedPoint = rotate(elementX + point.x, elementY + point.y, cx, cy, element.angle);
|
|
267
|
+
return { x: rotatedPoint.x, y: rotatedPoint.y };
|
|
268
|
+
};
|
|
269
|
+
export const getBoundTextElementPosition = (element, boundTextElement, elementsMap, currentScope) => {
|
|
270
|
+
const points = getPointsGlobalCoordinates(element, elementsMap, currentScope);
|
|
271
|
+
if (points.length < 2) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
let x = 0;
|
|
275
|
+
let y = 0;
|
|
276
|
+
if (element.points.length % 2 === 1) {
|
|
277
|
+
const index = Math.floor(element.points.length / 2);
|
|
278
|
+
const midPoint = getPointGlobalCoordinates(element, getScopedBezierPointFromDucPoint(element.points[index]), elementsMap, currentScope);
|
|
279
|
+
x = midPoint.x - boundTextElement.width.scoped / 2;
|
|
280
|
+
y = midPoint.y - boundTextElement.height.scoped / 2;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
const index = element.points.length / 2 - 1;
|
|
284
|
+
let midSegmentMidpoint = null;
|
|
285
|
+
if (element.points.length === 2) {
|
|
286
|
+
midSegmentMidpoint = centerPoint({ x: points[0].x.scoped, y: points[0].y.scoped }, { x: points[1].x.scoped, y: points[1].y.scoped });
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
midSegmentMidpoint = getSegmentMidPoint(element, getScopedBezierPointFromDucPoint(points[index]), getScopedBezierPointFromDucPoint(points[index + 1]), index + 1, elementsMap, currentScope);
|
|
290
|
+
}
|
|
291
|
+
if (midSegmentMidpoint) {
|
|
292
|
+
x = midSegmentMidpoint.x - boundTextElement.width.scoped / 2;
|
|
293
|
+
y = midSegmentMidpoint.y - boundTextElement.height.scoped / 2;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return { x, y };
|
|
297
|
+
};
|
|
298
|
+
export const getLinearElementAbsoluteCoords = (element, elementsMap, includeBoundText = false, currentScope, returnUnrotatedBoundsOnly = true) => {
|
|
299
|
+
const { points, lines, angle, x: elX, y: elY } = element;
|
|
300
|
+
// Get unrotated bounding box to determine the center of rotation
|
|
301
|
+
const [unrotatedX1, unrotatedY1, unrotatedX2, unrotatedY2] = getElementPointsCoords(element, points);
|
|
302
|
+
const cx = ((unrotatedX1 + unrotatedX2) / 2);
|
|
303
|
+
const cy = ((unrotatedY1 + unrotatedY2) / 2);
|
|
304
|
+
let coords;
|
|
305
|
+
if (!returnUnrotatedBoundsOnly && angle !== 0) {
|
|
306
|
+
let minX = Infinity;
|
|
307
|
+
let minY = Infinity;
|
|
308
|
+
let maxX = -Infinity;
|
|
309
|
+
let maxY = -Infinity;
|
|
310
|
+
if (lines && lines.length > 0) {
|
|
311
|
+
for (const line of lines) {
|
|
312
|
+
const startPoint = points[line[0].index];
|
|
313
|
+
const endPoint = points[line[1].index];
|
|
314
|
+
if (!startPoint || !endPoint) {
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
const absoluteStartPoint = {
|
|
318
|
+
x: elX.scoped + startPoint.x.scoped,
|
|
319
|
+
y: elY.scoped + startPoint.y.scoped,
|
|
320
|
+
};
|
|
321
|
+
const absoluteEndPoint = {
|
|
322
|
+
x: elX.scoped + endPoint.x.scoped,
|
|
323
|
+
y: elY.scoped + endPoint.y.scoped,
|
|
324
|
+
};
|
|
325
|
+
const startHandle = line[0].handle;
|
|
326
|
+
const endHandle = line[1].handle;
|
|
327
|
+
if (startHandle && endHandle) {
|
|
328
|
+
const absoluteStartHandle = {
|
|
329
|
+
x: elX.scoped + startHandle.x.scoped,
|
|
330
|
+
y: elY.scoped + startHandle.y.scoped,
|
|
331
|
+
};
|
|
332
|
+
const absoluteEndHandle = {
|
|
333
|
+
x: elX.scoped + endHandle.x.scoped,
|
|
334
|
+
y: elY.scoped + endHandle.y.scoped,
|
|
335
|
+
};
|
|
336
|
+
const p0 = rotate(absoluteStartPoint.x, absoluteStartPoint.y, cx, cy, angle);
|
|
337
|
+
const p1 = rotate(absoluteStartHandle.x, absoluteStartHandle.y, cx, cy, angle);
|
|
338
|
+
const p2 = rotate(absoluteEndHandle.x, absoluteEndHandle.y, cx, cy, angle);
|
|
339
|
+
const p3 = rotate(absoluteEndPoint.x, absoluteEndPoint.y, cx, cy, angle);
|
|
340
|
+
const bbox = getCubicBezierBoundingBox(p0, p1, p2, p3);
|
|
341
|
+
minX = Math.min(minX, bbox.minX);
|
|
342
|
+
minY = Math.min(minY, bbox.minY);
|
|
343
|
+
maxX = Math.max(maxX, bbox.maxX);
|
|
344
|
+
maxY = Math.max(maxY, bbox.maxY);
|
|
345
|
+
}
|
|
346
|
+
else if (startHandle || endHandle) {
|
|
347
|
+
const controlHandle = startHandle || endHandle;
|
|
348
|
+
const absoluteControlHandle = {
|
|
349
|
+
x: elX.scoped + controlHandle.x.scoped,
|
|
350
|
+
y: elY.scoped + controlHandle.y.scoped,
|
|
351
|
+
};
|
|
352
|
+
const p0 = rotate(absoluteStartPoint.x, absoluteStartPoint.y, cx, cy, angle);
|
|
353
|
+
const p1 = rotate(absoluteControlHandle.x, absoluteControlHandle.y, cx, cy, angle);
|
|
354
|
+
const p2 = rotate(absoluteEndPoint.x, absoluteEndPoint.y, cx, cy, angle);
|
|
355
|
+
const bbox = getQuadraticBezierBoundingBox(p0, p1, p2);
|
|
356
|
+
minX = Math.min(minX, bbox.minX);
|
|
357
|
+
minY = Math.min(minY, bbox.minY);
|
|
358
|
+
maxX = Math.max(maxX, bbox.maxX);
|
|
359
|
+
maxY = Math.max(maxY, bbox.maxY);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
const p0 = rotate(absoluteStartPoint.x, absoluteStartPoint.y, cx, cy, angle);
|
|
363
|
+
const p1 = rotate(absoluteEndPoint.x, absoluteEndPoint.y, cx, cy, angle);
|
|
364
|
+
minX = Math.min(minX, p0.x, p1.x);
|
|
365
|
+
minY = Math.min(minY, p0.y, p1.y);
|
|
366
|
+
maxX = Math.max(maxX, p0.x, p1.x);
|
|
367
|
+
maxY = Math.max(maxY, p0.y, p1.y);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
// Fallback for elements without lines
|
|
373
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
374
|
+
const p0 = rotate(elX.scoped + points[i].x.scoped, elY.scoped + points[i].y.scoped, cx, cy, angle);
|
|
375
|
+
const p1 = rotate(elX.scoped + points[i + 1].x.scoped, elY.scoped + points[i + 1].y.scoped, cx, cy, angle);
|
|
376
|
+
minX = Math.min(minX, p0.x, p1.x);
|
|
377
|
+
minY = Math.min(minY, p0.y, p1.y);
|
|
378
|
+
maxX = Math.max(maxX, p0.x, p1.x);
|
|
379
|
+
maxY = Math.max(maxY, p0.y, p1.y);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
coords = [
|
|
383
|
+
minX,
|
|
384
|
+
minY,
|
|
385
|
+
maxX,
|
|
386
|
+
maxY,
|
|
387
|
+
((minX + maxX) / 2),
|
|
388
|
+
((minY + maxY) / 2),
|
|
389
|
+
];
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
coords = [unrotatedX1, unrotatedY1, unrotatedX2, unrotatedY2, cx, cy];
|
|
393
|
+
}
|
|
394
|
+
if (includeBoundText) {
|
|
395
|
+
const boundTextElement = getBoundTextElement(element, elementsMap);
|
|
396
|
+
if (boundTextElement) {
|
|
397
|
+
coords = getMinMaxXYWithBoundText(element, elementsMap, [coords[0], coords[1], coords[2], coords[3]], boundTextElement, currentScope);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return coords;
|
|
401
|
+
};
|
|
402
|
+
export const getMinMaxXYWithBoundText = (element, elementsMap, elementBounds, boundTextElement, currentScope) => {
|
|
403
|
+
let [x1, y1, x2, y2] = elementBounds;
|
|
404
|
+
const cx = (x1 + x2) / 2;
|
|
405
|
+
const cy = (y1 + y2) / 2;
|
|
406
|
+
const boundTextCoords = getBoundTextElementPosition(element, boundTextElement, elementsMap, currentScope);
|
|
407
|
+
if (boundTextCoords === null) {
|
|
408
|
+
return [x1, y1, x2, y2, cx, cy];
|
|
409
|
+
}
|
|
410
|
+
const { x: boundTextX1, y: boundTextY1 } = boundTextCoords;
|
|
411
|
+
const boundTextX2 = boundTextX1 + boundTextElement.width.scoped;
|
|
412
|
+
const boundTextY2 = boundTextY1 + boundTextElement.height.scoped;
|
|
413
|
+
const topLeftRotatedPoint = rotatePoint({ x: x1, y: y1 }, { x: cx, y: cy }, element.angle);
|
|
414
|
+
const topRightRotatedPoint = rotatePoint({ x: x2, y: y1 }, { x: cx, y: cy }, element.angle);
|
|
415
|
+
const counterRotateBoundTextTopLeft = rotatePoint({ x: boundTextX1, y: boundTextY1 }, { x: cx, y: cy }, -element.angle);
|
|
416
|
+
const counterRotateBoundTextTopRight = rotatePoint({ x: boundTextX2, y: boundTextY1 }, { x: cx, y: cy }, -element.angle);
|
|
417
|
+
const counterRotateBoundTextBottomLeft = rotatePoint({ x: boundTextX1, y: boundTextY2 }, { x: cx, y: cy }, -element.angle);
|
|
418
|
+
const counterRotateBoundTextBottomRight = rotatePoint({ x: boundTextX2, y: boundTextY2 }, { x: cx, y: cy }, -element.angle);
|
|
419
|
+
if (topLeftRotatedPoint.x < topRightRotatedPoint.x &&
|
|
420
|
+
topLeftRotatedPoint.y >= topRightRotatedPoint.y) {
|
|
421
|
+
x1 = Math.min(x1, counterRotateBoundTextBottomLeft.x);
|
|
422
|
+
x2 = Math.max(x2, Math.max(counterRotateBoundTextTopRight.x, counterRotateBoundTextBottomRight.x));
|
|
423
|
+
y1 = Math.min(y1, counterRotateBoundTextTopLeft.y);
|
|
424
|
+
y2 = Math.max(y2, counterRotateBoundTextBottomRight.y);
|
|
425
|
+
}
|
|
426
|
+
else if (topLeftRotatedPoint.x >= topRightRotatedPoint.x &&
|
|
427
|
+
topLeftRotatedPoint.y > topRightRotatedPoint.y) {
|
|
428
|
+
x1 = Math.min(x1, counterRotateBoundTextBottomRight.x);
|
|
429
|
+
x2 = Math.max(x2, Math.max(counterRotateBoundTextTopLeft.x, counterRotateBoundTextTopRight.x));
|
|
430
|
+
y1 = Math.min(y1, counterRotateBoundTextBottomLeft.y);
|
|
431
|
+
y2 = Math.max(y2, counterRotateBoundTextTopRight.y);
|
|
432
|
+
}
|
|
433
|
+
else if (topLeftRotatedPoint.x >= topRightRotatedPoint.x) {
|
|
434
|
+
x1 = Math.min(x1, counterRotateBoundTextTopRight.x);
|
|
435
|
+
x2 = Math.max(x2, counterRotateBoundTextBottomLeft.x);
|
|
436
|
+
y1 = Math.min(y1, counterRotateBoundTextBottomRight.y);
|
|
437
|
+
y2 = Math.max(y2, counterRotateBoundTextTopLeft.y);
|
|
438
|
+
}
|
|
439
|
+
else if (topLeftRotatedPoint.y <= topRightRotatedPoint.y) {
|
|
440
|
+
x1 = Math.min(x1, Math.min(counterRotateBoundTextTopRight.x, counterRotateBoundTextTopLeft.x));
|
|
441
|
+
x2 = Math.max(x2, counterRotateBoundTextBottomRight.x);
|
|
442
|
+
y1 = Math.min(y1, counterRotateBoundTextTopRight.y);
|
|
443
|
+
y2 = Math.max(y2, counterRotateBoundTextBottomLeft.y);
|
|
444
|
+
}
|
|
445
|
+
return [x1, y1, x2, y2, cx, cy];
|
|
446
|
+
};
|
|
447
|
+
export const getSegmentMidPoint = (element, startPoint, endPoint, endPointIndex, elementsMap, currentScope) => {
|
|
448
|
+
let segmentMidPoint = centerPoint(startPoint, endPoint);
|
|
449
|
+
if (element.points.length > 2 && element.roundness) {
|
|
450
|
+
const controlPoints = getControlPointsForBezierCurve(element, getScopedBezierPointFromDucPoint(element.points[endPointIndex]));
|
|
451
|
+
if (controlPoints) {
|
|
452
|
+
const t = mapIntervalToBezierT(element, getScopedBezierPointFromDucPoint(element.points[endPointIndex]), 0.5);
|
|
453
|
+
const { x: tx, y: ty } = getBezierXY(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], t);
|
|
454
|
+
segmentMidPoint = getPointGlobalCoordinates(element, { x: tx, y: ty }, elementsMap, currentScope);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return segmentMidPoint;
|
|
458
|
+
};
|
|
459
|
+
/**
|
|
460
|
+
* Validates if the given line indices form a closed path in the element
|
|
461
|
+
* @param element The linear element containing the points and lines
|
|
462
|
+
* @param lineIndices Array of line indices to check
|
|
463
|
+
* @returns true if the line indices form a valid closed path, false otherwise
|
|
464
|
+
*/
|
|
465
|
+
export const validateClosedPath = (element, lineIndices) => {
|
|
466
|
+
if (!lineIndices || lineIndices.length < 3) {
|
|
467
|
+
// Need at least 3 lines to form a closed path
|
|
468
|
+
return false;
|
|
469
|
+
}
|
|
470
|
+
// Check if all line indices are valid
|
|
471
|
+
const invalidIndices = lineIndices.filter(index => index < 0 || index >= element.lines.length);
|
|
472
|
+
if (invalidIndices.length > 0) {
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
// Get the actual lines
|
|
476
|
+
const pathLines = lineIndices.map(index => element.lines[index]);
|
|
477
|
+
// Build adjacency map for the path lines only
|
|
478
|
+
const adjacency = new Map();
|
|
479
|
+
for (const line of pathLines) {
|
|
480
|
+
const startIdx = line[0].index;
|
|
481
|
+
const endIdx = line[1].index;
|
|
482
|
+
// Check if point indices are valid
|
|
483
|
+
if (startIdx < 0 || startIdx >= element.points.length ||
|
|
484
|
+
endIdx < 0 || endIdx >= element.points.length) {
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
// Add bidirectional connections
|
|
488
|
+
if (!adjacency.has(startIdx)) {
|
|
489
|
+
adjacency.set(startIdx, []);
|
|
490
|
+
}
|
|
491
|
+
if (!adjacency.has(endIdx)) {
|
|
492
|
+
adjacency.set(endIdx, []);
|
|
493
|
+
}
|
|
494
|
+
adjacency.get(startIdx).push(endIdx);
|
|
495
|
+
adjacency.get(endIdx).push(startIdx);
|
|
496
|
+
}
|
|
497
|
+
// For a closed path, every point should have exactly 2 connections
|
|
498
|
+
adjacency.forEach((connections) => {
|
|
499
|
+
if (connections.length !== 2) {
|
|
500
|
+
return false;
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
// Check if we can traverse all lines and return to start
|
|
504
|
+
const visitedLines = new Set();
|
|
505
|
+
const startLine = pathLines[0];
|
|
506
|
+
let currentPoint = startLine[0].index;
|
|
507
|
+
const targetPoint = startLine[1].index;
|
|
508
|
+
// Mark first line as visited
|
|
509
|
+
visitedLines.add(lineIndices[0]);
|
|
510
|
+
currentPoint = targetPoint;
|
|
511
|
+
while (visitedLines.size < lineIndices.length) {
|
|
512
|
+
let foundNextLine = false;
|
|
513
|
+
for (let i = 0; i < lineIndices.length; i++) {
|
|
514
|
+
const lineIndex = lineIndices[i];
|
|
515
|
+
if (visitedLines.has(lineIndex)) {
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
518
|
+
const line = pathLines[i];
|
|
519
|
+
let nextPoint = null;
|
|
520
|
+
if (line[0].index === currentPoint) {
|
|
521
|
+
nextPoint = line[1].index;
|
|
522
|
+
}
|
|
523
|
+
else if (line[1].index === currentPoint) {
|
|
524
|
+
nextPoint = line[0].index;
|
|
525
|
+
}
|
|
526
|
+
if (nextPoint !== null) {
|
|
527
|
+
visitedLines.add(lineIndex);
|
|
528
|
+
currentPoint = nextPoint;
|
|
529
|
+
foundNextLine = true;
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (!foundNextLine) {
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
// Check if we've returned to the starting point
|
|
538
|
+
return currentPoint === startLine[0].index;
|
|
539
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Scope } from "ducjs/types";
|
|
2
|
+
import { DucArrowElement, DucDimensionElement, DucDocElement, DucElement, DucEllipseElement, DucEmbeddableElement, DucFeatureControlFrameElement, DucFrameElement, DucFreeDrawElement, DucGenericElement, DucImageElement, DucLeaderElement, DucLinearElement, DucMermaidElement, DucParametricElement, DucPdfElement, DucPlotElement, DucPolygonElement, DucTableElement, DucTextElement, DucViewportElement, DucXRayElement, DucBlockInstanceElement, ElementConstructorOpts, ElementUpdate, NonDeleted } from "ducjs/types/elements";
|
|
3
|
+
import { Mutable } from "ducjs/types/utility-types";
|
|
4
|
+
export declare const newElementWith: <TElement extends DucElement>(element: TElement, updates: ElementUpdate<TElement>,
|
|
5
|
+
/** pass `true` to always regenerate */
|
|
6
|
+
force?: boolean) => TElement;
|
|
7
|
+
export declare const newElement: (currentScope: Scope, opts: {
|
|
8
|
+
type: DucGenericElement["type"];
|
|
9
|
+
} & ElementConstructorOpts) => NonDeleted<DucGenericElement>;
|
|
10
|
+
export declare const newEmbeddableElement: (currentScope: Scope, opts: {
|
|
11
|
+
type: "embeddable";
|
|
12
|
+
} & ElementConstructorOpts) => NonDeleted<DucEmbeddableElement>;
|
|
13
|
+
export declare const newFrameElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucFrameElement>;
|
|
14
|
+
export declare const newPlotElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucPlotElement>;
|
|
15
|
+
export declare const newViewportElement: (currentScope: Scope, opts: {
|
|
16
|
+
zoom?: number;
|
|
17
|
+
scopeExponentThreshold?: number;
|
|
18
|
+
mainScope?: Scope;
|
|
19
|
+
} & ElementConstructorOpts) => NonDeleted<DucViewportElement>;
|
|
20
|
+
export declare const newEllipseElement: (currentScope: Scope, opts: {
|
|
21
|
+
type: "ellipse";
|
|
22
|
+
ratio?: DucEllipseElement["ratio"];
|
|
23
|
+
startAngle?: DucEllipseElement["startAngle"];
|
|
24
|
+
endAngle?: DucEllipseElement["endAngle"];
|
|
25
|
+
showAuxCrosshair?: DucEllipseElement["showAuxCrosshair"];
|
|
26
|
+
} & ElementConstructorOpts) => NonDeleted<DucEllipseElement>;
|
|
27
|
+
export declare const newPolygonElement: (currentScope: Scope, opts: {
|
|
28
|
+
type: "polygon";
|
|
29
|
+
sides?: DucPolygonElement["sides"];
|
|
30
|
+
} & ElementConstructorOpts) => NonDeleted<DucPolygonElement>;
|
|
31
|
+
export declare const newTextElement: (currentScope: Scope, opts: {
|
|
32
|
+
text: string;
|
|
33
|
+
originalText?: string;
|
|
34
|
+
} & Partial<DucTextElement> & ElementConstructorOpts) => NonDeleted<DucTextElement>;
|
|
35
|
+
export declare const newFreeDrawElement: (currentScope: Scope, opts: {
|
|
36
|
+
simulatePressure: boolean;
|
|
37
|
+
} & Partial<DucFreeDrawElement> & ElementConstructorOpts) => NonDeleted<DucFreeDrawElement>;
|
|
38
|
+
export declare const newLinearElement: (currentScope: Scope, opts: Partial<DucLinearElement> & ElementConstructorOpts) => NonDeleted<DucLinearElement>;
|
|
39
|
+
export declare const newArrowElement: (currentScope: Scope, opts: Partial<DucArrowElement> & ElementConstructorOpts) => NonDeleted<DucArrowElement>;
|
|
40
|
+
export declare const newImageElement: (currentScope: Scope, opts: Partial<DucImageElement> & ElementConstructorOpts) => NonDeleted<DucImageElement>;
|
|
41
|
+
export declare const newTableElement: (currentScope: Scope, opts: Partial<DucTableElement> & ElementConstructorOpts) => NonDeleted<DucTableElement>;
|
|
42
|
+
export declare const newDocElement: (currentScope: Scope, opts: Partial<DucDocElement> & ElementConstructorOpts) => NonDeleted<DucDocElement>;
|
|
43
|
+
export declare const newPdfElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucPdfElement>;
|
|
44
|
+
export declare const newMermaidElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucMermaidElement>;
|
|
45
|
+
export declare const newXRayElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucXRayElement>;
|
|
46
|
+
export declare const newLeaderElement: (currentScope: Scope, opts: Partial<DucLeaderElement> & ElementConstructorOpts) => NonDeleted<DucLeaderElement>;
|
|
47
|
+
export declare const newDimensionElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucDimensionElement>;
|
|
48
|
+
export declare const newFeatureControlFrameElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucFeatureControlFrameElement>;
|
|
49
|
+
export declare const newBlockInstanceElement: (currentScope: Scope, opts: {
|
|
50
|
+
blockId: DucBlockInstanceElement["blockId"];
|
|
51
|
+
elementOverrides?: DucBlockInstanceElement["elementOverrides"];
|
|
52
|
+
attributeValues?: DucBlockInstanceElement["attributeValues"];
|
|
53
|
+
duplicationArray?: DucBlockInstanceElement["duplicationArray"];
|
|
54
|
+
} & ElementConstructorOpts) => NonDeleted<DucBlockInstanceElement>;
|
|
55
|
+
export declare const newParametricElement: (currentScope: Scope, opts: ElementConstructorOpts) => NonDeleted<DucParametricElement>;
|
|
56
|
+
/**
|
|
57
|
+
* Clones DucElement data structure. Does not regenerate id, nonce, or
|
|
58
|
+
* any value. The purpose is to to break object references for immutability
|
|
59
|
+
* reasons, whenever we want to keep the original element, but ensure it's not
|
|
60
|
+
* mutated.
|
|
61
|
+
*
|
|
62
|
+
* Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,
|
|
63
|
+
* Typed arrays and other non-null objects.
|
|
64
|
+
*/
|
|
65
|
+
export declare const deepCopyElement: <T extends DucElement>(val: T) => Mutable<T>;
|
|
66
|
+
/**
|
|
67
|
+
* utility wrapper to generate new id. In test env it reuses the old + postfix
|
|
68
|
+
* for test assertions.
|
|
69
|
+
*/
|
|
70
|
+
export declare const regenerateId: (
|
|
71
|
+
/** supply null if no previous id exists */
|
|
72
|
+
previousId: string | null) => string;
|