ducjs 2.3.0 → 3.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/README.md +2 -2
- package/dist/enums.d.ts +135 -0
- package/dist/enums.js +155 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +8 -4
- package/dist/lazy-files.d.ts +44 -0
- package/dist/lazy-files.js +129 -0
- package/dist/parse.d.ts +21 -55
- package/dist/parse.js +58 -1445
- package/dist/restore/index.d.ts +0 -1
- package/dist/restore/index.js +0 -1
- package/dist/restore/restoreDataState.d.ts +6 -10
- package/dist/restore/restoreDataState.js +117 -127
- package/dist/restore/restoreElements.d.ts +1 -1
- package/dist/restore/restoreElements.js +37 -494
- package/dist/serialize.d.ts +11 -4
- package/dist/serialize.js +58 -2545
- package/dist/technical/index.d.ts +0 -1
- package/dist/technical/index.js +0 -1
- package/dist/technical/scopes.d.ts +1 -1
- package/dist/technical/scopes.js +1 -1
- package/dist/transform.d.ts +12 -0
- package/dist/transform.js +442 -0
- package/dist/types/elements/index.d.ts +120 -693
- package/dist/types/elements/typeChecks.d.ts +6 -3
- package/dist/types/elements/typeChecks.js +9 -8
- package/dist/types/geometryTypes.d.ts +1 -1
- package/dist/types/index.d.ts +38 -305
- package/dist/utils/constants.d.ts +21 -100
- package/dist/utils/constants.js +29 -212
- package/dist/utils/elements/freedrawElement.d.ts +6 -0
- package/dist/utils/elements/freedrawElement.js +28 -11
- package/dist/utils/elements/index.d.ts +3 -14
- package/dist/utils/elements/index.js +7 -99
- package/dist/utils/elements/linearElement.d.ts +2 -2
- package/dist/utils/elements/newElement.d.ts +2 -12
- package/dist/utils/elements/newElement.js +32 -52
- package/dist/utils/elements/textElement.d.ts +3 -3
- package/dist/utils/elements/textElement.js +44 -17
- package/dist/utils/math/index.d.ts +5 -4
- package/dist/utils/math/index.js +3 -3
- package/dist/utils/shape.js +2 -2
- package/dist/utils/state/index.d.ts +0 -1
- package/dist/utils/state/index.js +5 -71
- package/dist/utils/traverse.d.ts +8 -0
- package/dist/utils/traverse.js +37 -0
- package/dist/version-control.d.ts +61 -0
- package/dist/version-control.js +84 -0
- package/dist/wasm.d.ts +20 -0
- package/dist/wasm.js +52 -0
- package/package.json +2 -2
- package/dist/flatbuffers/duc/alternate-units.d.ts +0 -21
- package/dist/flatbuffers/duc/alternate-units.js +0 -66
- package/dist/flatbuffers/duc/angular-unit-system.d.ts +0 -17
- package/dist/flatbuffers/duc/angular-unit-system.js +0 -50
- package/dist/flatbuffers/duc/angular-units-format.d.ts +0 -7
- package/dist/flatbuffers/duc/angular-units-format.js +0 -10
- package/dist/flatbuffers/duc/axis.d.ts +0 -5
- package/dist/flatbuffers/duc/axis.js +0 -8
- package/dist/flatbuffers/duc/bezier-mirroring.d.ts +0 -5
- package/dist/flatbuffers/duc/bezier-mirroring.js +0 -8
- package/dist/flatbuffers/duc/blending.d.ts +0 -9
- package/dist/flatbuffers/duc/blending.js +0 -12
- package/dist/flatbuffers/duc/block-attachment.d.ts +0 -4
- package/dist/flatbuffers/duc/block-attachment.js +0 -7
- package/dist/flatbuffers/duc/boolean-operation.d.ts +0 -6
- package/dist/flatbuffers/duc/boolean-operation.js +0 -9
- package/dist/flatbuffers/duc/bound-element.d.ts +0 -17
- package/dist/flatbuffers/duc/bound-element.js +0 -48
- package/dist/flatbuffers/duc/checkpoint.d.ts +0 -22
- package/dist/flatbuffers/duc/checkpoint.js +0 -75
- package/dist/flatbuffers/duc/column-layout.d.ts +0 -22
- package/dist/flatbuffers/duc/column-layout.js +0 -72
- package/dist/flatbuffers/duc/column-type.d.ts +0 -5
- package/dist/flatbuffers/duc/column-type.js +0 -8
- package/dist/flatbuffers/duc/custom-hatch-pattern.d.ts +0 -23
- package/dist/flatbuffers/duc/custom-hatch-pattern.js +0 -71
- package/dist/flatbuffers/duc/datum-bracket-style.d.ts +0 -5
- package/dist/flatbuffers/duc/datum-bracket-style.js +0 -8
- package/dist/flatbuffers/duc/datum-reference.d.ts +0 -17
- package/dist/flatbuffers/duc/datum-reference.js +0 -49
- package/dist/flatbuffers/duc/datum-target-type.d.ts +0 -6
- package/dist/flatbuffers/duc/datum-target-type.js +0 -9
- package/dist/flatbuffers/duc/decimal-separator.d.ts +0 -4
- package/dist/flatbuffers/duc/decimal-separator.js +0 -7
- package/dist/flatbuffers/duc/delta.d.ts +0 -22
- package/dist/flatbuffers/duc/delta.js +0 -75
- package/dist/flatbuffers/duc/dictionary-entry.d.ts +0 -17
- package/dist/flatbuffers/duc/dictionary-entry.js +0 -49
- package/dist/flatbuffers/duc/dimension-baseline-data.d.ts +0 -14
- package/dist/flatbuffers/duc/dimension-baseline-data.js +0 -40
- package/dist/flatbuffers/duc/dimension-bindings.d.ts +0 -17
- package/dist/flatbuffers/duc/dimension-bindings.js +0 -50
- package/dist/flatbuffers/duc/dimension-continue-data.d.ts +0 -14
- package/dist/flatbuffers/duc/dimension-continue-data.js +0 -40
- package/dist/flatbuffers/duc/dimension-definition-points.d.ts +0 -21
- package/dist/flatbuffers/duc/dimension-definition-points.js +0 -64
- package/dist/flatbuffers/duc/dimension-ext-line-style.d.ts +0 -18
- package/dist/flatbuffers/duc/dimension-ext-line-style.js +0 -57
- package/dist/flatbuffers/duc/dimension-fit-rule.d.ts +0 -6
- package/dist/flatbuffers/duc/dimension-fit-rule.js +0 -9
- package/dist/flatbuffers/duc/dimension-fit-style.d.ts +0 -19
- package/dist/flatbuffers/duc/dimension-fit-style.js +0 -58
- package/dist/flatbuffers/duc/dimension-line-style.d.ts +0 -16
- package/dist/flatbuffers/duc/dimension-line-style.js +0 -49
- package/dist/flatbuffers/duc/dimension-symbol-style.d.ts +0 -22
- package/dist/flatbuffers/duc/dimension-symbol-style.js +0 -72
- package/dist/flatbuffers/duc/dimension-text-placement.d.ts +0 -5
- package/dist/flatbuffers/duc/dimension-text-placement.js +0 -8
- package/dist/flatbuffers/duc/dimension-tolerance-style.d.ts +0 -24
- package/dist/flatbuffers/duc/dimension-tolerance-style.js +0 -71
- package/dist/flatbuffers/duc/dimension-type.d.ts +0 -15
- package/dist/flatbuffers/duc/dimension-type.js +0 -18
- package/dist/flatbuffers/duc/dimension-units-format.d.ts +0 -7
- package/dist/flatbuffers/duc/dimension-units-format.js +0 -10
- package/dist/flatbuffers/duc/dimension-validation-rules.d.ts +0 -25
- package/dist/flatbuffers/duc/dimension-validation-rules.js +0 -74
- package/dist/flatbuffers/duc/document-grid-align-items.d.ts +0 -5
- package/dist/flatbuffers/duc/document-grid-align-items.js +0 -8
- package/dist/flatbuffers/duc/document-grid-config.d.ts +0 -22
- package/dist/flatbuffers/duc/document-grid-config.js +0 -73
- package/dist/flatbuffers/duc/duc-arrow-element.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-arrow-element.js +0 -49
- package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.js +0 -44
- package/dist/flatbuffers/duc/duc-block-attribute-definition.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-block-attribute-definition.js +0 -64
- package/dist/flatbuffers/duc/duc-block-collection-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-block-collection-entry.js +0 -48
- package/dist/flatbuffers/duc/duc-block-collection.d.ts +0 -31
- package/dist/flatbuffers/duc/duc-block-collection.js +0 -97
- package/dist/flatbuffers/duc/duc-block-duplication-array.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-block-duplication-array.js +0 -64
- package/dist/flatbuffers/duc/duc-block-instance-element.d.ts +0 -10
- package/dist/flatbuffers/duc/duc-block-instance-element.js +0 -28
- package/dist/flatbuffers/duc/duc-block-instance.d.ts +0 -32
- package/dist/flatbuffers/duc/duc-block-instance.js +0 -100
- package/dist/flatbuffers/duc/duc-block-metadata.d.ts +0 -26
- package/dist/flatbuffers/duc/duc-block-metadata.js +0 -90
- package/dist/flatbuffers/duc/duc-block.d.ts +0 -36
- package/dist/flatbuffers/duc/duc-block.js +0 -112
- package/dist/flatbuffers/duc/duc-common-style.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-common-style.js +0 -44
- package/dist/flatbuffers/duc/duc-dimension-element.d.ts +0 -45
- package/dist/flatbuffers/duc/duc-dimension-element.js +0 -120
- package/dist/flatbuffers/duc/duc-dimension-style.d.ts +0 -28
- package/dist/flatbuffers/duc/duc-dimension-style.js +0 -76
- package/dist/flatbuffers/duc/duc-doc-element.d.ts +0 -39
- package/dist/flatbuffers/duc/duc-doc-element.js +0 -110
- package/dist/flatbuffers/duc/duc-doc-style.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-doc-style.js +0 -52
- package/dist/flatbuffers/duc/duc-element-base.d.ts +0 -100
- package/dist/flatbuffers/duc/duc-element-base.js +0 -315
- package/dist/flatbuffers/duc/duc-element-styles-base.d.ts +0 -30
- package/dist/flatbuffers/duc/duc-element-styles-base.js +0 -103
- package/dist/flatbuffers/duc/duc-ellipse-element.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-ellipse-element.js +0 -73
- package/dist/flatbuffers/duc/duc-embeddable-element.d.ts +0 -14
- package/dist/flatbuffers/duc/duc-embeddable-element.js +0 -41
- package/dist/flatbuffers/duc/duc-external-file-data.d.ts +0 -27
- package/dist/flatbuffers/duc/duc-external-file-data.js +0 -92
- package/dist/flatbuffers/duc/duc-external-file-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-external-file-entry.js +0 -44
- package/dist/flatbuffers/duc/duc-feature-control-frame-element.d.ts +0 -31
- package/dist/flatbuffers/duc/duc-feature-control-frame-element.js +0 -89
- package/dist/flatbuffers/duc/duc-feature-control-frame-style.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-feature-control-frame-style.js +0 -60
- package/dist/flatbuffers/duc/duc-frame-element.d.ts +0 -14
- package/dist/flatbuffers/duc/duc-frame-element.js +0 -41
- package/dist/flatbuffers/duc/duc-free-draw-element.d.ts +0 -52
- package/dist/flatbuffers/duc/duc-free-draw-element.js +0 -154
- package/dist/flatbuffers/duc/duc-free-draw-ends.d.ts +0 -18
- package/dist/flatbuffers/duc/duc-free-draw-ends.js +0 -56
- package/dist/flatbuffers/duc/duc-global-state.d.ts +0 -37
- package/dist/flatbuffers/duc/duc-global-state.js +0 -121
- package/dist/flatbuffers/duc/duc-group.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-group.js +0 -44
- package/dist/flatbuffers/duc/duc-hatch-style.d.ts +0 -28
- package/dist/flatbuffers/duc/duc-hatch-style.js +0 -79
- package/dist/flatbuffers/duc/duc-head.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-head.js +0 -57
- package/dist/flatbuffers/duc/duc-image-element.d.ts +0 -35
- package/dist/flatbuffers/duc/duc-image-element.js +0 -91
- package/dist/flatbuffers/duc/duc-image-filter.d.ts +0 -15
- package/dist/flatbuffers/duc/duc-image-filter.js +0 -48
- package/dist/flatbuffers/duc/duc-layer-overrides.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-layer-overrides.js +0 -44
- package/dist/flatbuffers/duc/duc-layer.d.ts +0 -21
- package/dist/flatbuffers/duc/duc-layer.js +0 -59
- package/dist/flatbuffers/duc/duc-leader-element.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-leader-element.js +0 -60
- package/dist/flatbuffers/duc/duc-leader-style.d.ts +0 -27
- package/dist/flatbuffers/duc/duc-leader-style.js +0 -79
- package/dist/flatbuffers/duc/duc-line-reference.d.ts +0 -15
- package/dist/flatbuffers/duc/duc-line-reference.js +0 -43
- package/dist/flatbuffers/duc/duc-line.d.ts +0 -15
- package/dist/flatbuffers/duc/duc-line.js +0 -43
- package/dist/flatbuffers/duc/duc-linear-element-base.d.ts +0 -38
- package/dist/flatbuffers/duc/duc-linear-element-base.js +0 -124
- package/dist/flatbuffers/duc/duc-linear-element.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-linear-element.js +0 -49
- package/dist/flatbuffers/duc/duc-local-state.d.ts +0 -68
- package/dist/flatbuffers/duc/duc-local-state.js +0 -206
- package/dist/flatbuffers/duc/duc-mermaid-element.d.ts +0 -23
- package/dist/flatbuffers/duc/duc-mermaid-element.js +0 -65
- package/dist/flatbuffers/duc/duc-model-element.d.ts +0 -26
- package/dist/flatbuffers/duc/duc-model-element.js +0 -79
- package/dist/flatbuffers/duc/duc-parametric-element.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-parametric-element.js +0 -44
- package/dist/flatbuffers/duc/duc-path.d.ts +0 -26
- package/dist/flatbuffers/duc/duc-path.js +0 -69
- package/dist/flatbuffers/duc/duc-pdf-element.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-pdf-element.js +0 -51
- package/dist/flatbuffers/duc/duc-plot-element.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-plot-element.js +0 -52
- package/dist/flatbuffers/duc/duc-plot-style.d.ts +0 -11
- package/dist/flatbuffers/duc/duc-plot-style.js +0 -32
- package/dist/flatbuffers/duc/duc-point-binding.d.ts +0 -26
- package/dist/flatbuffers/duc/duc-point-binding.js +0 -73
- package/dist/flatbuffers/duc/duc-point.d.ts +0 -18
- package/dist/flatbuffers/duc/duc-point.js +0 -57
- package/dist/flatbuffers/duc/duc-polygon-element.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-polygon-element.js +0 -49
- package/dist/flatbuffers/duc/duc-rectangle-element.d.ts +0 -14
- package/dist/flatbuffers/duc/duc-rectangle-element.js +0 -41
- package/dist/flatbuffers/duc/duc-region.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-region.js +0 -51
- package/dist/flatbuffers/duc/duc-stack-base.d.ts +0 -27
- package/dist/flatbuffers/duc/duc-stack-base.js +0 -78
- package/dist/flatbuffers/duc/duc-stack-element-base.d.ts +0 -23
- package/dist/flatbuffers/duc/duc-stack-element-base.js +0 -65
- package/dist/flatbuffers/duc/duc-stack-like-styles.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-stack-like-styles.js +0 -48
- package/dist/flatbuffers/duc/duc-table-auto-size.d.ts +0 -15
- package/dist/flatbuffers/duc/duc-table-auto-size.js +0 -48
- package/dist/flatbuffers/duc/duc-table-cell-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-table-cell-entry.js +0 -44
- package/dist/flatbuffers/duc/duc-table-cell-span.d.ts +0 -15
- package/dist/flatbuffers/duc/duc-table-cell-span.js +0 -48
- package/dist/flatbuffers/duc/duc-table-cell-style.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-table-cell-style.js +0 -59
- package/dist/flatbuffers/duc/duc-table-cell.d.ts +0 -27
- package/dist/flatbuffers/duc/duc-table-cell.js +0 -72
- package/dist/flatbuffers/duc/duc-table-column-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-table-column-entry.js +0 -44
- package/dist/flatbuffers/duc/duc-table-column.d.ts +0 -18
- package/dist/flatbuffers/duc/duc-table-column.js +0 -51
- package/dist/flatbuffers/duc/duc-table-element.d.ts +0 -51
- package/dist/flatbuffers/duc/duc-table-element.js +0 -167
- package/dist/flatbuffers/duc/duc-table-row-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-table-row-entry.js +0 -44
- package/dist/flatbuffers/duc/duc-table-row.d.ts +0 -18
- package/dist/flatbuffers/duc/duc-table-row.js +0 -51
- package/dist/flatbuffers/duc/duc-table-style.d.ts +0 -20
- package/dist/flatbuffers/duc/duc-table-style.js +0 -57
- package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.d.ts +0 -14
- package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.js +0 -40
- package/dist/flatbuffers/duc/duc-text-dynamic-element-source.d.ts +0 -17
- package/dist/flatbuffers/duc/duc-text-dynamic-element-source.js +0 -49
- package/dist/flatbuffers/duc/duc-text-dynamic-part.d.ts +0 -22
- package/dist/flatbuffers/duc/duc-text-dynamic-part.js +0 -58
- package/dist/flatbuffers/duc/duc-text-dynamic-source-data.d.ts +0 -9
- package/dist/flatbuffers/duc/duc-text-dynamic-source-data.js +0 -26
- package/dist/flatbuffers/duc/duc-text-dynamic-source.d.ts +0 -19
- package/dist/flatbuffers/duc/duc-text-dynamic-source.js +0 -58
- package/dist/flatbuffers/duc/duc-text-element.d.ts +0 -33
- package/dist/flatbuffers/duc/duc-text-element.js +0 -94
- package/dist/flatbuffers/duc/duc-text-style.d.ts +0 -41
- package/dist/flatbuffers/duc/duc-text-style.js +0 -120
- package/dist/flatbuffers/duc/duc-ucs.d.ts +0 -16
- package/dist/flatbuffers/duc/duc-ucs.js +0 -49
- package/dist/flatbuffers/duc/duc-view.d.ts +0 -24
- package/dist/flatbuffers/duc/duc-view.js +0 -71
- package/dist/flatbuffers/duc/duc-viewport-element.d.ts +0 -36
- package/dist/flatbuffers/duc/duc-viewport-element.js +0 -102
- package/dist/flatbuffers/duc/duc-viewport-style.d.ts +0 -13
- package/dist/flatbuffers/duc/duc-viewport-style.js +0 -40
- package/dist/flatbuffers/duc/duc-xray-element.d.ts +0 -23
- package/dist/flatbuffers/duc/duc-xray-element.js +0 -66
- package/dist/flatbuffers/duc/duc-xray-style.d.ts +0 -14
- package/dist/flatbuffers/duc/duc-xray-style.js +0 -40
- package/dist/flatbuffers/duc/dynamic-snap-settings.d.ts +0 -17
- package/dist/flatbuffers/duc/dynamic-snap-settings.js +0 -56
- package/dist/flatbuffers/duc/element-background.d.ts +0 -14
- package/dist/flatbuffers/duc/element-background.js +0 -41
- package/dist/flatbuffers/duc/element-content-base.d.ts +0 -29
- package/dist/flatbuffers/duc/element-content-base.js +0 -80
- package/dist/flatbuffers/duc/element-content-preference.d.ts +0 -8
- package/dist/flatbuffers/duc/element-content-preference.js +0 -11
- package/dist/flatbuffers/duc/element-stroke.d.ts +0 -24
- package/dist/flatbuffers/duc/element-stroke.js +0 -66
- package/dist/flatbuffers/duc/element-wrapper.d.ts +0 -16
- package/dist/flatbuffers/duc/element-wrapper.js +0 -49
- package/dist/flatbuffers/duc/element.d.ts +0 -51
- package/dist/flatbuffers/duc/element.js +0 -110
- package/dist/flatbuffers/duc/exported-data-state.d.ts +0 -102
- package/dist/flatbuffers/duc/exported-data-state.js +0 -341
- package/dist/flatbuffers/duc/fcfbetween-modifier.d.ts +0 -17
- package/dist/flatbuffers/duc/fcfbetween-modifier.js +0 -48
- package/dist/flatbuffers/duc/fcfdatum-definition.d.ts +0 -16
- package/dist/flatbuffers/duc/fcfdatum-definition.js +0 -43
- package/dist/flatbuffers/duc/fcfdatum-style.d.ts +0 -14
- package/dist/flatbuffers/duc/fcfdatum-style.js +0 -41
- package/dist/flatbuffers/duc/fcfframe-modifiers.d.ts +0 -22
- package/dist/flatbuffers/duc/fcfframe-modifiers.js +0 -65
- package/dist/flatbuffers/duc/fcflayout-style.d.ts +0 -17
- package/dist/flatbuffers/duc/fcflayout-style.js +0 -56
- package/dist/flatbuffers/duc/fcfprojected-zone-modifier.d.ts +0 -13
- package/dist/flatbuffers/duc/fcfprojected-zone-modifier.js +0 -40
- package/dist/flatbuffers/duc/fcfsegment-row.d.ts +0 -17
- package/dist/flatbuffers/duc/fcfsegment-row.js +0 -55
- package/dist/flatbuffers/duc/fcfsymbol-style.d.ts +0 -13
- package/dist/flatbuffers/duc/fcfsymbol-style.js +0 -40
- package/dist/flatbuffers/duc/feature-control-frame-segment.d.ts +0 -22
- package/dist/flatbuffers/duc/feature-control-frame-segment.js +0 -65
- package/dist/flatbuffers/duc/feature-modifier.d.ts +0 -18
- package/dist/flatbuffers/duc/feature-modifier.js +0 -21
- package/dist/flatbuffers/duc/gdt-symbol.d.ts +0 -22
- package/dist/flatbuffers/duc/gdt-symbol.js +0 -25
- package/dist/flatbuffers/duc/geometric-point.d.ts +0 -10
- package/dist/flatbuffers/duc/geometric-point.js +0 -27
- package/dist/flatbuffers/duc/grid-display-type.d.ts +0 -6
- package/dist/flatbuffers/duc/grid-display-type.js +0 -9
- package/dist/flatbuffers/duc/grid-settings.d.ts +0 -54
- package/dist/flatbuffers/duc/grid-settings.js +0 -165
- package/dist/flatbuffers/duc/grid-style.d.ts +0 -26
- package/dist/flatbuffers/duc/grid-style.js +0 -74
- package/dist/flatbuffers/duc/grid-type.d.ts +0 -7
- package/dist/flatbuffers/duc/grid-type.js +0 -10
- package/dist/flatbuffers/duc/handle-type.d.ts +0 -4
- package/dist/flatbuffers/duc/handle-type.js +0 -7
- package/dist/flatbuffers/duc/hatch-pattern-line.d.ts +0 -35
- package/dist/flatbuffers/duc/hatch-pattern-line.js +0 -93
- package/dist/flatbuffers/duc/hatch-style.d.ts +0 -5
- package/dist/flatbuffers/duc/hatch-style.js +0 -8
- package/dist/flatbuffers/duc/identified-common-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-common-style.js +0 -44
- package/dist/flatbuffers/duc/identified-dimension-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-dimension-style.js +0 -44
- package/dist/flatbuffers/duc/identified-doc-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-doc-style.js +0 -44
- package/dist/flatbuffers/duc/identified-fcfstyle.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-fcfstyle.js +0 -44
- package/dist/flatbuffers/duc/identified-grid-settings.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-grid-settings.js +0 -44
- package/dist/flatbuffers/duc/identified-hatch-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-hatch-style.js +0 -44
- package/dist/flatbuffers/duc/identified-leader-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-leader-style.js +0 -44
- package/dist/flatbuffers/duc/identified-snap-settings.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-snap-settings.js +0 -44
- package/dist/flatbuffers/duc/identified-stack-like-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-stack-like-style.js +0 -44
- package/dist/flatbuffers/duc/identified-table-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-table-style.js +0 -44
- package/dist/flatbuffers/duc/identified-text-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-text-style.js +0 -44
- package/dist/flatbuffers/duc/identified-ucs.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-ucs.js +0 -44
- package/dist/flatbuffers/duc/identified-view.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-view.js +0 -44
- package/dist/flatbuffers/duc/identified-viewport-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-viewport-style.js +0 -44
- package/dist/flatbuffers/duc/identified-xray-style.d.ts +0 -16
- package/dist/flatbuffers/duc/identified-xray-style.js +0 -44
- package/dist/flatbuffers/duc/identifier.d.ts +0 -20
- package/dist/flatbuffers/duc/identifier.js +0 -57
- package/dist/flatbuffers/duc/image-crop.d.ts +0 -23
- package/dist/flatbuffers/duc/image-crop.js +0 -80
- package/dist/flatbuffers/duc/image-status.d.ts +0 -5
- package/dist/flatbuffers/duc/image-status.js +0 -8
- package/dist/flatbuffers/duc/isometric-grid-settings.d.ts +0 -15
- package/dist/flatbuffers/duc/isometric-grid-settings.js +0 -48
- package/dist/flatbuffers/duc/jsonpatch-operation.d.ts +0 -23
- package/dist/flatbuffers/duc/jsonpatch-operation.js +0 -64
- package/dist/flatbuffers/duc/layer-snap-filters.d.ts +0 -23
- package/dist/flatbuffers/duc/layer-snap-filters.js +0 -76
- package/dist/flatbuffers/duc/layer-validation-rules.d.ts +0 -17
- package/dist/flatbuffers/duc/layer-validation-rules.js +0 -54
- package/dist/flatbuffers/duc/leader-block-content.d.ts +0 -25
- package/dist/flatbuffers/duc/leader-block-content.js +0 -85
- package/dist/flatbuffers/duc/leader-content-data.d.ts +0 -9
- package/dist/flatbuffers/duc/leader-content-data.js +0 -26
- package/dist/flatbuffers/duc/leader-content-type.d.ts +0 -4
- package/dist/flatbuffers/duc/leader-content-type.js +0 -7
- package/dist/flatbuffers/duc/leader-content.d.ts +0 -19
- package/dist/flatbuffers/duc/leader-content.js +0 -58
- package/dist/flatbuffers/duc/leader-text-block-content.d.ts +0 -14
- package/dist/flatbuffers/duc/leader-text-block-content.js +0 -40
- package/dist/flatbuffers/duc/line-head.d.ts +0 -17
- package/dist/flatbuffers/duc/line-head.js +0 -20
- package/dist/flatbuffers/duc/line-spacing-type.d.ts +0 -5
- package/dist/flatbuffers/duc/line-spacing-type.js +0 -8
- package/dist/flatbuffers/duc/line-spacing.d.ts +0 -16
- package/dist/flatbuffers/duc/line-spacing.js +0 -49
- package/dist/flatbuffers/duc/linear-unit-system.d.ts +0 -24
- package/dist/flatbuffers/duc/linear-unit-system.js +0 -75
- package/dist/flatbuffers/duc/margins.d.ts +0 -19
- package/dist/flatbuffers/duc/margins.js +0 -64
- package/dist/flatbuffers/duc/mark-ellipse-center.d.ts +0 -4
- package/dist/flatbuffers/duc/mark-ellipse-center.js +0 -7
- package/dist/flatbuffers/duc/material-condition.d.ts +0 -5
- package/dist/flatbuffers/duc/material-condition.js +0 -8
- package/dist/flatbuffers/duc/object-snap-mode.d.ts +0 -22
- package/dist/flatbuffers/duc/object-snap-mode.js +0 -25
- package/dist/flatbuffers/duc/paragraph-formatting.d.ts +0 -33
- package/dist/flatbuffers/duc/paragraph-formatting.js +0 -106
- package/dist/flatbuffers/duc/parametric-source-type.d.ts +0 -4
- package/dist/flatbuffers/duc/parametric-source-type.js +0 -7
- package/dist/flatbuffers/duc/parametric-source.d.ts +0 -20
- package/dist/flatbuffers/duc/parametric-source.js +0 -57
- package/dist/flatbuffers/duc/plot-layout.d.ts +0 -14
- package/dist/flatbuffers/duc/plot-layout.js +0 -41
- package/dist/flatbuffers/duc/point-binding-point.d.ts +0 -15
- package/dist/flatbuffers/duc/point-binding-point.js +0 -48
- package/dist/flatbuffers/duc/polar-grid-settings.d.ts +0 -17
- package/dist/flatbuffers/duc/polar-grid-settings.js +0 -56
- package/dist/flatbuffers/duc/polar-tracking-settings.d.ts +0 -29
- package/dist/flatbuffers/duc/polar-tracking-settings.js +0 -90
- package/dist/flatbuffers/duc/primary-units.d.ts +0 -16
- package/dist/flatbuffers/duc/primary-units.js +0 -44
- package/dist/flatbuffers/duc/pruning-level.d.ts +0 -5
- package/dist/flatbuffers/duc/pruning-level.js +0 -8
- package/dist/flatbuffers/duc/snap-marker-settings.d.ts +0 -23
- package/dist/flatbuffers/duc/snap-marker-settings.js +0 -79
- package/dist/flatbuffers/duc/snap-marker-shape.d.ts +0 -6
- package/dist/flatbuffers/duc/snap-marker-shape.js +0 -9
- package/dist/flatbuffers/duc/snap-marker-style-entry.d.ts +0 -16
- package/dist/flatbuffers/duc/snap-marker-style-entry.js +0 -43
- package/dist/flatbuffers/duc/snap-marker-style.d.ts +0 -17
- package/dist/flatbuffers/duc/snap-marker-style.js +0 -49
- package/dist/flatbuffers/duc/snap-mode.d.ts +0 -4
- package/dist/flatbuffers/duc/snap-mode.js +0 -7
- package/dist/flatbuffers/duc/snap-override-behavior.d.ts +0 -5
- package/dist/flatbuffers/duc/snap-override-behavior.js +0 -8
- package/dist/flatbuffers/duc/snap-override.d.ts +0 -17
- package/dist/flatbuffers/duc/snap-override.js +0 -49
- package/dist/flatbuffers/duc/snap-settings.d.ts +0 -75
- package/dist/flatbuffers/duc/snap-settings.js +0 -245
- package/dist/flatbuffers/duc/stack-format-properties.d.ts +0 -18
- package/dist/flatbuffers/duc/stack-format-properties.js +0 -57
- package/dist/flatbuffers/duc/stack-format.d.ts +0 -21
- package/dist/flatbuffers/duc/stack-format.js +0 -64
- package/dist/flatbuffers/duc/stacked-text-align.d.ts +0 -5
- package/dist/flatbuffers/duc/stacked-text-align.js +0 -8
- package/dist/flatbuffers/duc/standard-overrides.d.ts +0 -63
- package/dist/flatbuffers/duc/standard-overrides.js +0 -162
- package/dist/flatbuffers/duc/standard-styles.d.ts +0 -77
- package/dist/flatbuffers/duc/standard-styles.js +0 -285
- package/dist/flatbuffers/duc/standard-units.d.ts +0 -16
- package/dist/flatbuffers/duc/standard-units.js +0 -44
- package/dist/flatbuffers/duc/standard-validation.d.ts +0 -16
- package/dist/flatbuffers/duc/standard-validation.js +0 -44
- package/dist/flatbuffers/duc/standard-view-settings.d.ts +0 -35
- package/dist/flatbuffers/duc/standard-view-settings.js +0 -124
- package/dist/flatbuffers/duc/standard.d.ts +0 -33
- package/dist/flatbuffers/duc/standard.js +0 -90
- package/dist/flatbuffers/duc/string-value-entry.d.ts +0 -17
- package/dist/flatbuffers/duc/string-value-entry.js +0 -49
- package/dist/flatbuffers/duc/stroke-cap.d.ts +0 -5
- package/dist/flatbuffers/duc/stroke-cap.js +0 -8
- package/dist/flatbuffers/duc/stroke-join.d.ts +0 -5
- package/dist/flatbuffers/duc/stroke-join.js +0 -8
- package/dist/flatbuffers/duc/stroke-placement.d.ts +0 -5
- package/dist/flatbuffers/duc/stroke-placement.js +0 -8
- package/dist/flatbuffers/duc/stroke-preference.d.ts +0 -6
- package/dist/flatbuffers/duc/stroke-preference.js +0 -9
- package/dist/flatbuffers/duc/stroke-side-preference.d.ts +0 -8
- package/dist/flatbuffers/duc/stroke-side-preference.js +0 -11
- package/dist/flatbuffers/duc/stroke-sides.d.ts +0 -24
- package/dist/flatbuffers/duc/stroke-sides.js +0 -67
- package/dist/flatbuffers/duc/stroke-style.d.ts +0 -37
- package/dist/flatbuffers/duc/stroke-style.js +0 -111
- package/dist/flatbuffers/duc/stroke-width.d.ts +0 -5
- package/dist/flatbuffers/duc/stroke-width.js +0 -8
- package/dist/flatbuffers/duc/table-cell-alignment.d.ts +0 -11
- package/dist/flatbuffers/duc/table-cell-alignment.js +0 -14
- package/dist/flatbuffers/duc/table-flow-direction.d.ts +0 -4
- package/dist/flatbuffers/duc/table-flow-direction.js +0 -7
- package/dist/flatbuffers/duc/text-align.d.ts +0 -5
- package/dist/flatbuffers/duc/text-align.js +0 -8
- package/dist/flatbuffers/duc/text-column.d.ts +0 -15
- package/dist/flatbuffers/duc/text-column.js +0 -48
- package/dist/flatbuffers/duc/text-field-source-property.d.ts +0 -13
- package/dist/flatbuffers/duc/text-field-source-property.js +0 -16
- package/dist/flatbuffers/duc/text-field-source-type.d.ts +0 -4
- package/dist/flatbuffers/duc/text-field-source-type.js +0 -7
- package/dist/flatbuffers/duc/text-flow-direction.d.ts +0 -6
- package/dist/flatbuffers/duc/text-flow-direction.js +0 -9
- package/dist/flatbuffers/duc/tiling-properties.d.ts +0 -21
- package/dist/flatbuffers/duc/tiling-properties.js +0 -75
- package/dist/flatbuffers/duc/tolerance-clause.d.ts +0 -27
- package/dist/flatbuffers/duc/tolerance-clause.js +0 -84
- package/dist/flatbuffers/duc/tolerance-display.d.ts +0 -7
- package/dist/flatbuffers/duc/tolerance-display.js +0 -10
- package/dist/flatbuffers/duc/tolerance-type.d.ts +0 -5
- package/dist/flatbuffers/duc/tolerance-type.js +0 -8
- package/dist/flatbuffers/duc/tolerance-zone-type.d.ts +0 -7
- package/dist/flatbuffers/duc/tolerance-zone-type.js +0 -10
- package/dist/flatbuffers/duc/tracking-line-style.d.ts +0 -26
- package/dist/flatbuffers/duc/tracking-line-style.js +0 -74
- package/dist/flatbuffers/duc/unit-precision.d.ts +0 -19
- package/dist/flatbuffers/duc/unit-precision.js +0 -64
- package/dist/flatbuffers/duc/unit-system-base.d.ts +0 -20
- package/dist/flatbuffers/duc/unit-system-base.js +0 -65
- package/dist/flatbuffers/duc/unit-system.d.ts +0 -4
- package/dist/flatbuffers/duc/unit-system.js +0 -7
- package/dist/flatbuffers/duc/version-base.d.ts +0 -27
- package/dist/flatbuffers/duc/version-base.js +0 -80
- package/dist/flatbuffers/duc/version-graph-metadata.d.ts +0 -15
- package/dist/flatbuffers/duc/version-graph-metadata.js +0 -48
- package/dist/flatbuffers/duc/version-graph.d.ts +0 -31
- package/dist/flatbuffers/duc/version-graph.js +0 -94
- package/dist/flatbuffers/duc/vertical-align.d.ts +0 -5
- package/dist/flatbuffers/duc/vertical-align.js +0 -8
- package/dist/flatbuffers/duc/viewport-shade-plot.d.ts +0 -6
- package/dist/flatbuffers/duc/viewport-shade-plot.js +0 -9
- package/dist/flatbuffers/duc/youtube-states.d.ts +0 -8
- package/dist/flatbuffers/duc/youtube-states.js +0 -11
- package/dist/flatbuffers/duc.d.ts +0 -234
- package/dist/flatbuffers/duc.js +0 -236
- package/dist/restore/restoreStandards.d.ts +0 -8
- package/dist/restore/restoreStandards.js +0 -224
- package/dist/technical/standards.d.ts +0 -124
- package/dist/technical/standards.js +0 -10
- package/dist/utils/elements/viewportElement.d.ts +0 -6
- package/dist/utils/elements/viewportElement.js +0 -9
- package/dist/utils/state/grid.d.ts +0 -7
- package/dist/utils/state/grid.js +0 -25
package/dist/parse.js
CHANGED
|
@@ -7,1455 +7,68 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { decompressSync, strFromU8 } from 'fflate';
|
|
11
|
-
import * as flatbuffers from "flatbuffers";
|
|
12
|
-
import { nanoid } from 'nanoid';
|
|
13
|
-
import { DOCUMENT_GRID_ALIGN_ITEMS, DucArrowElement as DucArrowElementFb, DucDimensionElement as DucDimensionElementFb, DucDocElement as DucDocElementFb, DucEllipseElement as DucEllipseElementFb, DucEmbeddableElement as DucEmbeddableElementFb, DucFeatureControlFrameElement as DucFeatureControlFrameElementFb, DucFrameElement as DucFrameElementFb, DucFreeDrawElement as DucFreeDrawElementFb, DucImageElement as DucImageElementFb, DucLeaderElement as DucLeaderElementFb, DucLinearElement as DucLinearElementFb, DucMermaidElement as DucMermaidElementFb, DucModelElement as DucModelElementFb, DucPdfElement as DucPdfElementFb, DucPlotElement as DucPlotElementFb, DucPolygonElement as DucPolygonElementFb, DucRectangleElement as DucRectangleElementFb, DucTableElement as DucTableElementFb, DucTextDynamicDictionarySource as DucTextDynamicDictionarySourceFb, DucTextDynamicElementSource as DucTextDynamicElementSourceFb, DucTextElement as DucTextElementFb, DucViewportElement as DucViewportElementFb, DucXRayElement as DucXRayElementFb, Element as ElementUnion, ExportedDataState, LEADER_CONTENT_TYPE as LEADER_CONTENT_TYPE_ENUM, LeaderBlockContent as LeaderBlockContentFb, LeaderTextBlockContent as LeaderTextBlockContentFb, TEXT_FIELD_SOURCE_TYPE } from "./flatbuffers/duc";
|
|
14
10
|
import { restore } from "./restore";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
return JSON.parse(text);
|
|
38
|
-
}
|
|
39
|
-
catch (e) {
|
|
40
|
-
// Fall back to legacy format: plain JSON string (for old file compatibility)
|
|
11
|
+
import { transformFromRust } from "./transform";
|
|
12
|
+
import { ensureWasm, wasmParseDuc, wasmParseDucLazy } from "./wasm";
|
|
13
|
+
// Re-export from lazy-files for backwards compatibility
|
|
14
|
+
import { LazyExternalFileStore } from "./lazy-files";
|
|
15
|
+
export { LazyExternalFileStore };
|
|
16
|
+
/**
|
|
17
|
+
* Parse a `.duc` file (Blob/File) into a RestoredDataState.
|
|
18
|
+
*
|
|
19
|
+
* 1. Read file bytes
|
|
20
|
+
* 2. WASM parse (SQLite → Rust → JS via serde-wasm-bindgen)
|
|
21
|
+
* 3. Element fixups (stack element flattening)
|
|
22
|
+
* 4. restore() for defaults & migrations
|
|
23
|
+
*/
|
|
24
|
+
export function parseDuc(blob, _fileHandle, elementsConfig, restoreConfig) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
yield ensureWasm();
|
|
27
|
+
const buffer = new Uint8Array(yield blob.arrayBuffer());
|
|
28
|
+
if (buffer.byteLength === 0) {
|
|
29
|
+
throw new Error(`[parseDuc] buffer too small (${buffer.byteLength} bytes) — not a valid .duc file`);
|
|
30
|
+
}
|
|
31
|
+
const header = new TextDecoder().decode(buffer.slice(0, 15));
|
|
32
|
+
let raw;
|
|
41
33
|
try {
|
|
42
|
-
|
|
43
|
-
return JSON.parse(text);
|
|
34
|
+
raw = wasmParseDuc(buffer);
|
|
44
35
|
}
|
|
45
|
-
catch (
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
catch (error) {
|
|
37
|
+
const prefixHex = Array.from(buffer.slice(0, 16))
|
|
38
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
39
|
+
.join(" ");
|
|
40
|
+
throw new Error(`[parseDuc] wasm parse failed (size=${buffer.byteLength}, header="${header}", prefix=${prefixHex}): ${error instanceof Error ? error.message : String(error)}`);
|
|
48
41
|
}
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
// #region GEOMETRY & UTILITY PARSERS
|
|
52
|
-
export function parseGeometricPoint(point) {
|
|
53
|
-
return {
|
|
54
|
-
x: point.x(),
|
|
55
|
-
y: point.y(),
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export function parsePoint(point) {
|
|
59
|
-
return {
|
|
60
|
-
x: toPrecisionValue(point.x()),
|
|
61
|
-
y: toPrecisionValue(point.y()),
|
|
62
|
-
mirroring: point.mirroring() || undefined,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
export function parseMargins(margins) {
|
|
66
|
-
return {
|
|
67
|
-
top: toPrecisionValue(margins.top()),
|
|
68
|
-
right: toPrecisionValue(margins.right()),
|
|
69
|
-
bottom: toPrecisionValue(margins.bottom()),
|
|
70
|
-
left: toPrecisionValue(margins.left()),
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export function parseDocumentGridConfig(gridConfig) {
|
|
74
|
-
return {
|
|
75
|
-
columns: gridConfig.columns(),
|
|
76
|
-
gapX: gridConfig.gapX(),
|
|
77
|
-
gapY: gridConfig.gapY(),
|
|
78
|
-
alignItems: (() => {
|
|
79
|
-
const align = gridConfig.alignItems();
|
|
80
|
-
if (align === DOCUMENT_GRID_ALIGN_ITEMS.START)
|
|
81
|
-
return 'start';
|
|
82
|
-
if (align === DOCUMENT_GRID_ALIGN_ITEMS.CENTER)
|
|
83
|
-
return 'center';
|
|
84
|
-
if (align === DOCUMENT_GRID_ALIGN_ITEMS.END)
|
|
85
|
-
return 'end';
|
|
86
|
-
return 'start';
|
|
87
|
-
})(),
|
|
88
|
-
firstPageAlone: gridConfig.firstPageAlone(),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
export function parseHead(head) {
|
|
92
|
-
return {
|
|
93
|
-
type: head.type(),
|
|
94
|
-
blockId: head.blockId(),
|
|
95
|
-
size: toPrecisionValue(head.size()),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
// #endregion
|
|
99
|
-
// #region STYLE PARSERS (LOW-LEVEL)
|
|
100
|
-
export function parseHatchPatternLine(line) {
|
|
101
|
-
return {
|
|
102
|
-
angle: toRadian(line.angle()),
|
|
103
|
-
origin: parsePoint(line.origin()),
|
|
104
|
-
offset: [toPrecisionValue(line.offset(0)), toPrecisionValue(line.offset(1))],
|
|
105
|
-
dashPattern: Array.from(line.dashPatternArray() || []).map(toPrecisionValue),
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
export function parseCustomHatchPattern(pattern) {
|
|
109
|
-
return {
|
|
110
|
-
name: pattern.name(),
|
|
111
|
-
description: pattern.description() || undefined,
|
|
112
|
-
lines: Array.from({ length: pattern.linesLength() }, (_, i) => parseHatchPatternLine(pattern.lines(i))),
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
export function parseHatchStyle(hatch) {
|
|
116
|
-
return {
|
|
117
|
-
hatchStyle: hatch.hatchStyle(),
|
|
118
|
-
pattern: {
|
|
119
|
-
name: hatch.patternName(),
|
|
120
|
-
scale: hatch.patternScale(),
|
|
121
|
-
angle: toRadian(hatch.patternAngle()),
|
|
122
|
-
origin: parsePoint(hatch.patternOrigin()),
|
|
123
|
-
double: hatch.patternDouble(),
|
|
124
|
-
},
|
|
125
|
-
customPattern: hatch.customPattern() ? parseCustomHatchPattern(hatch.customPattern()) : undefined,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
export function parseTilingProperties(tiling) {
|
|
129
|
-
var _a, _b, _c;
|
|
130
|
-
return {
|
|
131
|
-
sizeInPercent: toPercentage(tiling.sizeInPercent()),
|
|
132
|
-
angle: toRadian(tiling.angle()),
|
|
133
|
-
spacing: (_a = tiling.spacing()) !== null && _a !== void 0 ? _a : undefined,
|
|
134
|
-
offsetX: (_b = tiling.offsetX()) !== null && _b !== void 0 ? _b : undefined,
|
|
135
|
-
offsetY: (_c = tiling.offsetY()) !== null && _c !== void 0 ? _c : undefined,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
export function parseImageFilter(filter) {
|
|
139
|
-
return {
|
|
140
|
-
brightness: toPercentage(filter.brightness()),
|
|
141
|
-
contrast: toPercentage(filter.contrast()),
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
export function parseElementContentBase(content) {
|
|
145
|
-
var _a;
|
|
146
|
-
return {
|
|
147
|
-
preference: ((_a = content.preference()) !== null && _a !== void 0 ? _a : undefined),
|
|
148
|
-
src: content.src(),
|
|
149
|
-
visible: content.visible(),
|
|
150
|
-
opacity: toPercentage(content.opacity()),
|
|
151
|
-
tiling: content.tiling() ? parseTilingProperties(content.tiling()) : undefined,
|
|
152
|
-
hatch: content.hatch() ? parseHatchStyle(content.hatch()) : undefined,
|
|
153
|
-
imageFilter: content.imageFilter() ? parseImageFilter(content.imageFilter()) : undefined,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
export function parseStrokeStyle(style) {
|
|
157
|
-
var _a, _b;
|
|
158
|
-
return {
|
|
159
|
-
preference: ((_a = style.preference()) !== null && _a !== void 0 ? _a : undefined),
|
|
160
|
-
cap: style.cap() || undefined,
|
|
161
|
-
join: style.join() || undefined,
|
|
162
|
-
dash: Array.from(style.dashArray() || []),
|
|
163
|
-
dashLineOverride: style.dashLineOverride() || undefined,
|
|
164
|
-
dashCap: style.dashCap() || undefined,
|
|
165
|
-
miterLimit: (_b = style.miterLimit()) !== null && _b !== void 0 ? _b : undefined,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
export function parseStrokeSides(sides) {
|
|
169
|
-
var _a;
|
|
170
|
-
return {
|
|
171
|
-
preference: ((_a = sides.preference()) !== null && _a !== void 0 ? _a : undefined),
|
|
172
|
-
values: Array.from(sides.valuesArray() || []),
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
export function parseElementStroke(stroke) {
|
|
176
|
-
var _a;
|
|
177
|
-
return {
|
|
178
|
-
content: parseElementContentBase(stroke.content()),
|
|
179
|
-
width: toPrecisionValue(stroke.width()),
|
|
180
|
-
style: parseStrokeStyle(stroke.style()),
|
|
181
|
-
placement: ((_a = stroke.placement()) !== null && _a !== void 0 ? _a : undefined),
|
|
182
|
-
strokeSides: stroke.strokeSides() ? parseStrokeSides(stroke.strokeSides()) : undefined,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
export function parseElementBackground(background) {
|
|
186
|
-
return {
|
|
187
|
-
content: parseElementContentBase(background.content()),
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
export function parseElementStylesBase(styles) {
|
|
191
|
-
return {
|
|
192
|
-
roundness: toPrecisionValue(styles.roundness()),
|
|
193
|
-
blending: styles.blending() || undefined,
|
|
194
|
-
background: Array.from({ length: styles.backgroundLength() }, (_, i) => parseElementBackground(styles.background(i))),
|
|
195
|
-
stroke: Array.from({ length: styles.strokeLength() }, (_, i) => parseElementStroke(styles.stroke(i))),
|
|
196
|
-
opacity: toPercentage(styles.opacity()),
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
// #endregion
|
|
200
|
-
// #region BASE ELEMENT PARSERS
|
|
201
|
-
export function parseElementBase(base) {
|
|
202
|
-
const styles = base.styles();
|
|
203
|
-
const parsedStyles = styles ? parseElementStylesBase(styles) : {
|
|
204
|
-
roundness: toPrecisionValue(0),
|
|
205
|
-
blending: undefined,
|
|
206
|
-
background: [],
|
|
207
|
-
stroke: [],
|
|
208
|
-
opacity: toPercentage(1),
|
|
209
|
-
};
|
|
210
|
-
return Object.assign({ id: base.id(), x: toPrecisionValue(base.x()), y: toPrecisionValue(base.y()), width: toPrecisionValue(base.width()), height: toPrecisionValue(base.height()), angle: toRadian(base.angle()), scope: base.scope(), label: base.label(), description: base.description(), isVisible: base.isVisible(), seed: base.seed(), version: base.version(), versionNonce: base.versionNonce(), updated: Number(base.updated()), index: base.index(), isPlot: base.isPlot(), isAnnotative: base.isAnnotative(), isDeleted: base.isDeleted(), groupIds: Array.from({ length: base.groupIdsLength() }, (_, i) => base.groupIds(i)), regionIds: Array.from({ length: base.regionIdsLength() }, (_, i) => base.regionIds(i)), blockIds: Array.from({ length: base.blockIdsLength() }, (_, i) => base.blockIds(i)), instanceId: base.instanceId(), layerId: base.layerId(), frameId: base.frameId(), boundElements: base.boundElementsLength() > 0 ? Array.from({ length: base.boundElementsLength() }, (_, i) => ({
|
|
211
|
-
id: base.boundElements(i).id(),
|
|
212
|
-
type: base.boundElements(i).type(),
|
|
213
|
-
})) : null, zIndex: base.zIndex(), link: base.link(), locked: base.locked(), customData: parseBinaryToJson(base.customDataArray()) }, parsedStyles);
|
|
214
|
-
}
|
|
215
|
-
export function parseLineReference(ref) {
|
|
216
|
-
return {
|
|
217
|
-
index: ref.index(),
|
|
218
|
-
handle: ref.handle() ? { x: toPrecisionValue(ref.handle().x()), y: toPrecisionValue(ref.handle().y()) } : null,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
export function parseLine(line) {
|
|
222
|
-
return [
|
|
223
|
-
parseLineReference(line.start()),
|
|
224
|
-
parseLineReference(line.end()),
|
|
225
|
-
];
|
|
226
|
-
}
|
|
227
|
-
export function parsePath(path) {
|
|
228
|
-
return {
|
|
229
|
-
lineIndices: Array.from(path.lineIndicesArray() || []),
|
|
230
|
-
background: path.background() ? parseElementBackground(path.background()) : null,
|
|
231
|
-
stroke: path.stroke() ? parseElementStroke(path.stroke()) : null,
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
export function parsePointBinding(binding) {
|
|
235
|
-
const pointBindingPoint = binding.point();
|
|
236
|
-
return {
|
|
237
|
-
elementId: binding.elementId(),
|
|
238
|
-
focus: binding.focus(),
|
|
239
|
-
gap: toPrecisionValue(binding.gap()),
|
|
240
|
-
fixedPoint: binding.fixedPoint() ? parseGeometricPoint(binding.fixedPoint()) : null,
|
|
241
|
-
point: pointBindingPoint ? {
|
|
242
|
-
index: pointBindingPoint.index(),
|
|
243
|
-
offset: pointBindingPoint.offset(),
|
|
244
|
-
} : null,
|
|
245
|
-
head: binding.head() ? parseHead(binding.head()) : null,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
export function parseLinearElementBase(base) {
|
|
249
|
-
return Object.assign(Object.assign({}, parseElementBase(base.base())), { points: Array.from({ length: base.pointsLength() }, (_, i) => parsePoint(base.points(i))), lines: Array.from({ length: base.linesLength() }, (_, i) => parseLine(base.lines(i))), pathOverrides: Array.from({ length: base.pathOverridesLength() }, (_, i) => parsePath(base.pathOverrides(i))), lastCommittedPoint: base.lastCommittedPoint() ? parsePoint(base.lastCommittedPoint()) : null, startBinding: base.startBinding() ? parsePointBinding(base.startBinding()) : null, endBinding: base.endBinding() ? parsePointBinding(base.endBinding()) : null });
|
|
250
|
-
}
|
|
251
|
-
export function parseStackLikeStyles(styles) {
|
|
252
|
-
return {
|
|
253
|
-
opacity: toPercentage(styles.opacity()),
|
|
254
|
-
labelingColor: styles.labelingColor(),
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
export function parseStackBase(base) {
|
|
258
|
-
return Object.assign({ label: base.label(), description: base.description(), isCollapsed: base.isCollapsed(), isPlot: base.isPlot(), isVisible: base.isVisible(), locked: base.locked() }, parseStackLikeStyles(base.styles()));
|
|
259
|
-
}
|
|
260
|
-
export function parseStackElementBase(base) {
|
|
261
|
-
return Object.assign(Object.assign(Object.assign({}, parseElementBase(base.base())), parseStackBase(base.stackBase())), { clip: base.clip(), labelVisible: base.labelVisible(), standardOverride: base.standardOverride() });
|
|
262
|
-
}
|
|
263
|
-
// #endregion
|
|
264
|
-
// #region ELEMENT-SPECIFIC PARSERS
|
|
265
|
-
function parseRectangleElement(element) {
|
|
266
|
-
return Object.assign({ type: "rectangle" }, parseElementBase(element.base()));
|
|
267
|
-
}
|
|
268
|
-
function parsePolygonElement(element) {
|
|
269
|
-
return Object.assign(Object.assign({ type: "polygon" }, parseElementBase(element.base())), { sides: element.sides() });
|
|
270
|
-
}
|
|
271
|
-
function parseEllipseElement(element) {
|
|
272
|
-
return Object.assign(Object.assign({ type: "ellipse" }, parseElementBase(element.base())), { ratio: toPercentage(element.ratio()), startAngle: toRadian(element.startAngle()), endAngle: toRadian(element.endAngle()), showAuxCrosshair: element.showAuxCrosshair() });
|
|
273
|
-
}
|
|
274
|
-
function parseEmbeddableElement(element) {
|
|
275
|
-
return Object.assign({ type: "embeddable" }, parseElementBase(element.base()));
|
|
276
|
-
}
|
|
277
|
-
function parsePdfElement(element) {
|
|
278
|
-
const gridConfig = element.gridConfig();
|
|
279
|
-
return Object.assign(Object.assign({ type: "pdf" }, parseElementBase(element.base())), { fileId: element.fileId(), gridConfig: gridConfig ? parseDocumentGridConfig(gridConfig) : {
|
|
280
|
-
columns: 1,
|
|
281
|
-
gapX: 0,
|
|
282
|
-
gapY: 0,
|
|
283
|
-
alignItems: 'start',
|
|
284
|
-
firstPageAlone: false,
|
|
285
|
-
} });
|
|
286
|
-
}
|
|
287
|
-
function parseMermaidElement(element) {
|
|
288
|
-
return Object.assign(Object.assign({ type: "mermaid" }, parseElementBase(element.base())), { source: element.source(), theme: element.theme() || undefined, svgPath: element.svgPath() });
|
|
289
|
-
}
|
|
290
|
-
function parseTableElement(element) {
|
|
291
|
-
const style = element.style();
|
|
292
|
-
const columns = {};
|
|
293
|
-
for (let i = 0; i < element.columnsLength(); i++) {
|
|
294
|
-
const entry = element.columns(i);
|
|
295
|
-
const col = entry.value();
|
|
296
|
-
columns[entry.key()] = {
|
|
297
|
-
id: col.id(),
|
|
298
|
-
width: toPrecisionValue(col.width()),
|
|
299
|
-
styleOverrides: col.styleOverrides() ? parseTableCellStyle(col.styleOverrides()) : undefined,
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
const rows = {};
|
|
303
|
-
for (let i = 0; i < element.rowsLength(); i++) {
|
|
304
|
-
const entry = element.rows(i);
|
|
305
|
-
const row = entry.value();
|
|
306
|
-
rows[entry.key()] = {
|
|
307
|
-
id: row.id(),
|
|
308
|
-
height: toPrecisionValue(row.height()),
|
|
309
|
-
styleOverrides: row.styleOverrides() ? parseTableCellStyle(row.styleOverrides()) : undefined,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
const cells = {};
|
|
313
|
-
for (let i = 0; i < element.cellsLength(); i++) {
|
|
314
|
-
const entry = element.cells(i);
|
|
315
|
-
const cell = entry.value();
|
|
316
|
-
const span = cell.span();
|
|
317
|
-
cells[entry.key()] = {
|
|
318
|
-
rowId: cell.rowId(),
|
|
319
|
-
columnId: cell.columnId(),
|
|
320
|
-
data: cell.data(),
|
|
321
|
-
span: span ? { columns: span.columns(), rows: span.rows() } : undefined,
|
|
322
|
-
locked: cell.locked(),
|
|
323
|
-
styleOverrides: cell.styleOverrides() ? parseTableCellStyle(cell.styleOverrides()) : undefined,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
return Object.assign(Object.assign(Object.assign({ type: "table" }, parseElementBase(element.base())), parseTableStyle(style)), { columnOrder: Array.from({ length: element.columnOrderLength() }, (_, i) => element.columnOrder(i)), rowOrder: Array.from({ length: element.rowOrderLength() }, (_, i) => element.rowOrder(i)), columns,
|
|
327
|
-
rows,
|
|
328
|
-
cells, headerRowCount: element.headerRowCount(), autoSize: {
|
|
329
|
-
columns: element.autoSize().columns(),
|
|
330
|
-
rows: element.autoSize().rows(),
|
|
331
|
-
} });
|
|
332
|
-
}
|
|
333
|
-
function parseImageElement(element) {
|
|
334
|
-
const crop = element.crop();
|
|
335
|
-
const filter = element.filter();
|
|
336
|
-
return Object.assign(Object.assign({ type: "image" }, parseElementBase(element.base())), { fileId: element.fileId(), status: element.status(), scaleFlip: [element.scale(0), element.scale(1)], crop: crop ? {
|
|
337
|
-
x: crop.x(),
|
|
338
|
-
y: crop.y(),
|
|
339
|
-
width: crop.width(),
|
|
340
|
-
height: crop.height(),
|
|
341
|
-
naturalWidth: crop.naturalWidth(),
|
|
342
|
-
naturalHeight: crop.naturalHeight(),
|
|
343
|
-
} : null, filter: filter ? parseImageFilter(filter) : null });
|
|
344
|
-
}
|
|
345
|
-
function parseTextElement(element) {
|
|
346
|
-
const dynamicParts = [];
|
|
347
|
-
for (let i = 0; i < element.dynamicLength(); i++) {
|
|
348
|
-
const partFb = element.dynamic(i);
|
|
349
|
-
const sourceFb = partFb.source();
|
|
350
|
-
let source;
|
|
351
|
-
if (sourceFb.textSourceType() === TEXT_FIELD_SOURCE_TYPE.ELEMENT) {
|
|
352
|
-
const elementSource = sourceFb.source(new DucTextDynamicElementSourceFb());
|
|
353
|
-
source = {
|
|
354
|
-
sourceType: TEXT_FIELD_SOURCE_TYPE.ELEMENT,
|
|
355
|
-
elementId: elementSource.elementId(),
|
|
356
|
-
property: elementSource.property(),
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
const dictSource = sourceFb.source(new DucTextDynamicDictionarySourceFb());
|
|
361
|
-
source = {
|
|
362
|
-
sourceType: TEXT_FIELD_SOURCE_TYPE.DICTIONARY,
|
|
363
|
-
key: dictSource.key(),
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
dynamicParts.push({
|
|
367
|
-
tag: partFb.tag(),
|
|
368
|
-
source,
|
|
369
|
-
formatting: partFb.formatting() ? parsePrimaryUnits(partFb.formatting()) : undefined,
|
|
370
|
-
cachedValue: partFb.cachedValue(),
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
return Object.assign(Object.assign(Object.assign({ type: "text" }, parseElementBase(element.base())), parseTextStyle(element.style())), { text: element.text(), dynamic: dynamicParts, autoResize: element.autoResize(), containerId: element.containerId(), originalText: element.originalText() });
|
|
374
|
-
}
|
|
375
|
-
function parseLinearElement(element) {
|
|
376
|
-
return Object.assign(Object.assign({ type: "line" }, parseLinearElementBase(element.linearBase())), { wipeoutBelow: element.wipeoutBelow() });
|
|
377
|
-
}
|
|
378
|
-
function parseArrowElement(element) {
|
|
379
|
-
return Object.assign(Object.assign({ type: "arrow" }, parseLinearElementBase(element.linearBase())), { elbowed: element.elbowed() });
|
|
380
|
-
}
|
|
381
|
-
function parseFreeDrawElement(element) {
|
|
382
|
-
const start = element.start();
|
|
383
|
-
const end = element.end();
|
|
384
|
-
return Object.assign(Object.assign({ type: "freedraw" }, parseElementBase(element.base())), { points: Array.from({ length: element.pointsLength() }, (_, i) => parsePoint(element.points(i))), size: toPrecisionValue(element.size()), thinning: toPercentage(element.thinning()), smoothing: toPercentage(element.smoothing()), streamline: toPercentage(element.streamline()), easing: element.easing(), start: start ? { cap: start.cap(), taper: start.taper(), easing: start.easing() } : null, end: end ? { cap: end.cap(), taper: end.taper(), easing: end.easing() } : null, pressures: Array.from(element.pressuresArray() || []), simulatePressure: element.simulatePressure(), lastCommittedPoint: element.lastCommittedPoint() ? parsePoint(element.lastCommittedPoint()) : null, svgPath: element.svgPath() });
|
|
385
|
-
}
|
|
386
|
-
function parseBlockInstance(instance) {
|
|
387
|
-
const duplicationArray = instance.duplicationArray();
|
|
388
|
-
const attributeValues = {};
|
|
389
|
-
for (let i = 0; i < instance.attributeValuesLength(); i++) {
|
|
390
|
-
const entry = instance.attributeValues(i);
|
|
391
|
-
attributeValues[entry.key()] = entry.value();
|
|
392
|
-
}
|
|
393
|
-
const elementOverrides = {};
|
|
394
|
-
for (let i = 0; i < instance.elementOverridesLength(); i++) {
|
|
395
|
-
const entry = instance.elementOverrides(i);
|
|
396
|
-
elementOverrides[entry.key()] = entry.value();
|
|
397
|
-
}
|
|
398
|
-
return {
|
|
399
|
-
id: instance.id(),
|
|
400
|
-
blockId: instance.blockId(),
|
|
401
|
-
version: instance.version(),
|
|
402
|
-
attributeValues: attributeValues,
|
|
403
|
-
elementOverrides: elementOverrides,
|
|
404
|
-
duplicationArray: duplicationArray ? {
|
|
405
|
-
rows: duplicationArray.rows(),
|
|
406
|
-
cols: duplicationArray.cols(),
|
|
407
|
-
rowSpacing: toPrecisionValue(duplicationArray.rowSpacing()),
|
|
408
|
-
colSpacing: toPrecisionValue(duplicationArray.colSpacing()),
|
|
409
|
-
} : null,
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
// Helper function to parse block metadata from FlatBuffers
|
|
413
|
-
function parseBlockMetadata(metadataFb) {
|
|
414
|
-
if (!metadataFb)
|
|
415
|
-
return undefined;
|
|
416
|
-
// localization is now binary JSON data (Uint8Array)
|
|
417
|
-
const localization = parseBinaryToJson(metadataFb.localizationArray());
|
|
418
|
-
const rawSource = metadataFb.source();
|
|
419
|
-
const source = typeof rawSource === "string" && rawSource.trim().length
|
|
420
|
-
? rawSource.trim()
|
|
421
|
-
: undefined;
|
|
422
|
-
return Object.assign(Object.assign({}, (source ? { source } : {})), { usageCount: metadataFb.usageCount(), createdAt: Number(metadataFb.createdAt()), updatedAt: Number(metadataFb.updatedAt()), localization });
|
|
423
|
-
}
|
|
424
|
-
function parseBlockCollection(collection) {
|
|
425
|
-
const children = Array.from({ length: collection.childrenLength() }, (_, i) => {
|
|
426
|
-
const child = collection.children(i);
|
|
427
|
-
return {
|
|
428
|
-
id: child.id(),
|
|
429
|
-
isCollection: child.isCollection(),
|
|
430
|
-
};
|
|
42
|
+
const data = transformFromRust(raw);
|
|
43
|
+
return restore(data, elementsConfig !== null && elementsConfig !== void 0 ? elementsConfig : { syncInvalidIndices: (els) => els }, restoreConfig);
|
|
431
44
|
});
|
|
432
|
-
const metadata = parseBlockMetadata(collection.metadata());
|
|
433
|
-
return {
|
|
434
|
-
id: collection.id(),
|
|
435
|
-
label: collection.label(),
|
|
436
|
-
children,
|
|
437
|
-
metadata,
|
|
438
|
-
thumbnail: collection.thumbnailArray() || undefined,
|
|
439
|
-
};
|
|
440
|
-
}
|
|
441
|
-
function parseFrameElement(element) {
|
|
442
|
-
return Object.assign({ type: "frame" }, parseStackElementBase(element.stackElementBase()));
|
|
443
|
-
}
|
|
444
|
-
function parsePlotElement(element) {
|
|
445
|
-
const layout = element.layout();
|
|
446
|
-
return Object.assign(Object.assign(Object.assign({ type: "plot" }, parseStackElementBase(element.stackElementBase())), parsePlotStyle(element.style())), { layout: {
|
|
447
|
-
margins: parseMargins(layout.margins()),
|
|
448
|
-
} });
|
|
449
|
-
}
|
|
450
|
-
function parseViewportElement(element) {
|
|
451
|
-
return Object.assign(Object.assign(Object.assign(Object.assign({ type: "viewport" }, parseLinearElementBase(element.linearBase())), parseStackBase(element.stackBase())), parseViewportStyle(element.style())), { view: parseView(element.view()), scale: element.scale(), shadePlot: element.shadePlot(), frozenGroupIds: Array.from({ length: element.frozenGroupIdsLength() }, (_, i) => element.frozenGroupIds(i)), standardOverride: element.standardOverride() });
|
|
452
|
-
}
|
|
453
|
-
function parseXRayElement(element) {
|
|
454
|
-
return Object.assign(Object.assign(Object.assign({ type: "xray" }, parseElementBase(element.base())), parseXRayStyle(element.style())), { origin: parsePoint(element.origin()), direction: parsePoint(element.direction()), startFromOrigin: element.startFromOrigin() });
|
|
455
|
-
}
|
|
456
|
-
function parseLeaderElement(element) {
|
|
457
|
-
const contentFb = element.content();
|
|
458
|
-
let leaderContent = null;
|
|
459
|
-
if (contentFb) {
|
|
460
|
-
const contentType = contentFb.leaderContentType();
|
|
461
|
-
if (contentType === LEADER_CONTENT_TYPE_ENUM.TEXT) {
|
|
462
|
-
const textContent = contentFb.content(new LeaderTextBlockContentFb());
|
|
463
|
-
leaderContent = {
|
|
464
|
-
type: "text",
|
|
465
|
-
text: textContent.text(),
|
|
466
|
-
};
|
|
467
|
-
}
|
|
468
|
-
else if (contentType === LEADER_CONTENT_TYPE_ENUM.BLOCK) {
|
|
469
|
-
const blockContent = contentFb.content(new LeaderBlockContentFb());
|
|
470
|
-
const attributeValues = {};
|
|
471
|
-
for (let i = 0; i < blockContent.attributeValuesLength(); i++) {
|
|
472
|
-
const entry = blockContent.attributeValues(i);
|
|
473
|
-
attributeValues[entry.key()] = entry.value();
|
|
474
|
-
}
|
|
475
|
-
const elementOverrides = {};
|
|
476
|
-
for (let i = 0; i < blockContent.elementOverridesLength(); i++) {
|
|
477
|
-
const entry = blockContent.elementOverrides(i);
|
|
478
|
-
elementOverrides[entry.key()] = entry.value();
|
|
479
|
-
}
|
|
480
|
-
leaderContent = {
|
|
481
|
-
type: "block",
|
|
482
|
-
blockId: blockContent.blockId(),
|
|
483
|
-
instanceData: {
|
|
484
|
-
attributeValues,
|
|
485
|
-
elementOverrides,
|
|
486
|
-
},
|
|
487
|
-
};
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
return Object.assign(Object.assign(Object.assign({ type: "leader" }, parseLinearElementBase(element.linearBase())), parseLeaderStyle(element.style())), { leaderContent, contentAnchor: parseGeometricPoint(element.contentAnchor()) });
|
|
491
|
-
}
|
|
492
|
-
function parseDimensionElement(element) {
|
|
493
|
-
const defPoints = element.definitionPoints();
|
|
494
|
-
const bindings = element.bindings();
|
|
495
|
-
const toleranceOverride = element.toleranceOverride();
|
|
496
|
-
return Object.assign(Object.assign(Object.assign({ type: "dimension" }, parseElementBase(element.base())), parseDimensionStyle(element.style())), { dimensionType: element.dimensionType(), definitionPoints: {
|
|
497
|
-
origin1: parseGeometricPoint(defPoints.origin1()),
|
|
498
|
-
origin2: defPoints.origin2() ? parseGeometricPoint(defPoints.origin2()) : undefined,
|
|
499
|
-
location: parseGeometricPoint(defPoints.location()),
|
|
500
|
-
center: defPoints.center() ? parseGeometricPoint(defPoints.center()) : undefined,
|
|
501
|
-
jog: defPoints.jog() ? parseGeometricPoint(defPoints.jog()) : undefined,
|
|
502
|
-
}, obliqueAngle: toRadian(element.obliqueAngle()), ordinateAxis: element.ordinateAxis() || null, bindings: bindings ? {
|
|
503
|
-
origin1: bindings.origin1() ? parsePointBinding(bindings.origin1()) : null,
|
|
504
|
-
origin2: bindings.origin2() ? parsePointBinding(bindings.origin2()) : null,
|
|
505
|
-
center: bindings.center() ? parsePointBinding(bindings.center()) : null,
|
|
506
|
-
} : undefined, textOverride: element.textOverride(), textPosition: element.textPosition() ? parseGeometricPoint(element.textPosition()) : null, toleranceOverride: toleranceOverride ? parseDimensionToleranceStyle(toleranceOverride) : undefined, baselineData: element.baselineData() ? { baseDimensionId: element.baselineData().baseDimensionId() } : undefined, continueData: element.continueData() ? { continueFromDimensionId: element.continueData().continueFromDimensionId() } : undefined, calculatedValue: toPrecisionValue(0) });
|
|
507
|
-
}
|
|
508
|
-
function parseFeatureControlFrameElement(element) {
|
|
509
|
-
const frameModifiers = element.frameModifiers();
|
|
510
|
-
const datumDef = element.datumDefinition();
|
|
511
|
-
return Object.assign(Object.assign(Object.assign({ type: "featurecontrolframe" }, parseElementBase(element.base())), parseFeatureControlFrameStyle(element.style())), { rows: Array.from({ length: element.rowsLength() }, (_, i) => {
|
|
512
|
-
const row = element.rows(i);
|
|
513
|
-
return Array.from({ length: row.segmentsLength() }, (_, j) => {
|
|
514
|
-
const seg = row.segments(j);
|
|
515
|
-
const tol = seg.tolerance();
|
|
516
|
-
return {
|
|
517
|
-
symbol: seg.symbol(),
|
|
518
|
-
tolerance: {
|
|
519
|
-
value: tol.value(),
|
|
520
|
-
zoneType: tol.zoneType() || undefined,
|
|
521
|
-
featureModifiers: Array.from(tol.featureModifiersArray() || []),
|
|
522
|
-
materialCondition: tol.materialCondition() || undefined,
|
|
523
|
-
},
|
|
524
|
-
datums: Array.from({ length: seg.datumsLength() }, (_, k) => {
|
|
525
|
-
const datum = seg.datums(k);
|
|
526
|
-
return {
|
|
527
|
-
letters: datum.letters(),
|
|
528
|
-
modifier: datum.modifier() || undefined,
|
|
529
|
-
};
|
|
530
|
-
}),
|
|
531
|
-
};
|
|
532
|
-
});
|
|
533
|
-
}), frameModifiers: frameModifiers ? {
|
|
534
|
-
allAround: frameModifiers.allAround(),
|
|
535
|
-
allOver: frameModifiers.allOver(),
|
|
536
|
-
continuousFeature: frameModifiers.continuousFeature(),
|
|
537
|
-
between: frameModifiers.between() ? { start: frameModifiers.between().start(), end: frameModifiers.between().end() } : undefined,
|
|
538
|
-
projectedToleranceZone: frameModifiers.projectedToleranceZone() ? toPrecisionValue(frameModifiers.projectedToleranceZone().value()) : undefined,
|
|
539
|
-
} : undefined, leaderElementId: element.leaderElementId(), datumDefinition: datumDef ? {
|
|
540
|
-
letter: datumDef.letter(),
|
|
541
|
-
featureBinding: datumDef.featureBinding() ? parsePointBinding(datumDef.featureBinding()) : undefined,
|
|
542
|
-
} : undefined });
|
|
543
|
-
}
|
|
544
|
-
function parseDocElement(element) {
|
|
545
|
-
const dynamicParts = [];
|
|
546
|
-
for (let i = 0; i < element.dynamicLength(); i++) {
|
|
547
|
-
const partFb = element.dynamic(i);
|
|
548
|
-
const sourceFb = partFb.source();
|
|
549
|
-
let source;
|
|
550
|
-
if (sourceFb.textSourceType() === TEXT_FIELD_SOURCE_TYPE.ELEMENT) {
|
|
551
|
-
const elementSource = sourceFb.source(new DucTextDynamicElementSourceFb());
|
|
552
|
-
source = {
|
|
553
|
-
sourceType: TEXT_FIELD_SOURCE_TYPE.ELEMENT,
|
|
554
|
-
elementId: elementSource.elementId(),
|
|
555
|
-
property: elementSource.property(),
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
else {
|
|
559
|
-
const dictSource = sourceFb.source(new DucTextDynamicDictionarySourceFb());
|
|
560
|
-
source = {
|
|
561
|
-
sourceType: TEXT_FIELD_SOURCE_TYPE.DICTIONARY,
|
|
562
|
-
key: dictSource.key(),
|
|
563
|
-
};
|
|
564
|
-
}
|
|
565
|
-
dynamicParts.push({
|
|
566
|
-
tag: partFb.tag(),
|
|
567
|
-
source,
|
|
568
|
-
formatting: partFb.formatting() ? parsePrimaryUnits(partFb.formatting()) : undefined,
|
|
569
|
-
cachedValue: partFb.cachedValue(),
|
|
570
|
-
});
|
|
571
|
-
}
|
|
572
|
-
const columns = element.columns();
|
|
573
|
-
const gridConfig = element.gridConfig();
|
|
574
|
-
return Object.assign(Object.assign(Object.assign({ type: "doc" }, parseElementBase(element.base())), parseDocStyle(element.style())), { text: element.text(), dynamic: dynamicParts, flowDirection: element.flowDirection(), columns: {
|
|
575
|
-
type: columns.type(),
|
|
576
|
-
definitions: Array.from({ length: columns.definitionsLength() }, (_, i) => {
|
|
577
|
-
const col = columns.definitions(i);
|
|
578
|
-
return {
|
|
579
|
-
width: toPrecisionValue(col.width()),
|
|
580
|
-
gutter: toPrecisionValue(col.gutter()),
|
|
581
|
-
};
|
|
582
|
-
}),
|
|
583
|
-
autoHeight: columns.autoHeight(),
|
|
584
|
-
}, autoResize: element.autoResize(), fileId: element.fileId(), gridConfig: gridConfig ? parseDocumentGridConfig(gridConfig) : {
|
|
585
|
-
columns: 1,
|
|
586
|
-
gapX: 0,
|
|
587
|
-
gapY: 0,
|
|
588
|
-
alignItems: 'start',
|
|
589
|
-
firstPageAlone: false,
|
|
590
|
-
} });
|
|
591
|
-
}
|
|
592
|
-
function parseModelElement(element) {
|
|
593
|
-
return Object.assign(Object.assign({ type: "model" }, parseElementBase(element.base())), { source: element.source(), svgPath: element.svgPath(), fileIds: Array.from({ length: element.fileIdsLength() }, (_, i) => element.fileIds(i)) });
|
|
594
|
-
}
|
|
595
|
-
// #endregion
|
|
596
|
-
// #region STYLE PARSERS (ELEMENT-LEVEL)
|
|
597
|
-
export function parseTextStyle(style) {
|
|
598
|
-
const lineSpacing = style.lineSpacing();
|
|
599
|
-
return {
|
|
600
|
-
isLtr: style.isLtr(),
|
|
601
|
-
fontFamily: style.fontFamily(), // For now will use as any because this will be a string in the future
|
|
602
|
-
bigFontFamily: style.bigFontFamily(),
|
|
603
|
-
textAlign: style.textAlign(),
|
|
604
|
-
verticalAlign: style.verticalAlign(),
|
|
605
|
-
lineHeight: style.lineHeight(),
|
|
606
|
-
lineSpacing: {
|
|
607
|
-
value: toPrecisionValue(lineSpacing.value()),
|
|
608
|
-
type: lineSpacing.type(),
|
|
609
|
-
},
|
|
610
|
-
obliqueAngle: toRadian(style.obliqueAngle()),
|
|
611
|
-
fontSize: toPrecisionValue(style.fontSize()),
|
|
612
|
-
paperTextHeight: toPrecisionValue(style.paperTextHeight()),
|
|
613
|
-
widthFactor: toScaleFactor(style.widthFactor()),
|
|
614
|
-
isUpsideDown: style.isUpsideDown(),
|
|
615
|
-
isBackwards: style.isBackwards(),
|
|
616
|
-
};
|
|
617
|
-
}
|
|
618
|
-
export function parseTableCellStyle(style) {
|
|
619
|
-
return Object.assign(Object.assign({}, parseElementStylesBase(style.baseStyle())), { textStyle: parseTextStyle(style.textStyle()), margins: parseMargins(style.margins()), alignment: style.alignment() });
|
|
620
|
-
}
|
|
621
|
-
export function parseTableStyle(style) {
|
|
622
|
-
return {
|
|
623
|
-
flowDirection: style.flowDirection(),
|
|
624
|
-
headerRowStyle: parseTableCellStyle(style.headerRowStyle()),
|
|
625
|
-
dataRowStyle: parseTableCellStyle(style.dataRowStyle()),
|
|
626
|
-
dataColumnStyle: parseTableCellStyle(style.dataColumnStyle()),
|
|
627
|
-
};
|
|
628
|
-
}
|
|
629
|
-
export function parsePlotStyle(style) {
|
|
630
|
-
return {};
|
|
631
|
-
}
|
|
632
|
-
export function parseViewportStyle(style) {
|
|
633
|
-
return {
|
|
634
|
-
scaleIndicatorVisible: style.scaleIndicatorVisible(),
|
|
635
|
-
};
|
|
636
|
-
}
|
|
637
|
-
export function parseXRayStyle(style) {
|
|
638
|
-
return {
|
|
639
|
-
color: style.color(),
|
|
640
|
-
};
|
|
641
|
-
}
|
|
642
|
-
export function parseLeaderStyle(style) {
|
|
643
|
-
var _a, _b;
|
|
644
|
-
return {
|
|
645
|
-
headsOverride: style.headsOverrideLength() > 0 ? [parseHead(style.headsOverride(0)), parseHead(style.headsOverride(1))] : undefined,
|
|
646
|
-
dogleg: style.dogleg() ? toPrecisionValue(style.dogleg()) : undefined,
|
|
647
|
-
textStyle: parseTextStyle(style.textStyle()),
|
|
648
|
-
textAttachment: ((_a = style.textAttachment()) !== null && _a !== void 0 ? _a : undefined),
|
|
649
|
-
blockAttachment: ((_b = style.blockAttachment()) !== null && _b !== void 0 ? _b : undefined),
|
|
650
|
-
};
|
|
651
|
-
}
|
|
652
|
-
export function parseDimensionToleranceStyle(style) {
|
|
653
|
-
return {
|
|
654
|
-
enabled: style.enabled(),
|
|
655
|
-
displayMethod: style.displayMethod(),
|
|
656
|
-
upperValue: style.upperValue(),
|
|
657
|
-
lowerValue: style.lowerValue(),
|
|
658
|
-
precision: style.precision(),
|
|
659
|
-
textStyle: style.textStyle() ? parseTextStyle(style.textStyle()) : {},
|
|
660
|
-
};
|
|
661
|
-
}
|
|
662
|
-
export function parseDimensionStyle(style) {
|
|
663
|
-
const dimLine = style.dimLine();
|
|
664
|
-
const extLine = style.extLine();
|
|
665
|
-
const symbols = style.symbols();
|
|
666
|
-
const centerMark = symbols.centerMarkType() ? { type: symbols.centerMarkType(), size: toPrecisionValue(symbols.centerMarkSize()) } : undefined;
|
|
667
|
-
const fit = style.fit();
|
|
668
|
-
return {
|
|
669
|
-
dimLine: {
|
|
670
|
-
stroke: parseElementStroke(dimLine.stroke()),
|
|
671
|
-
textGap: toPrecisionValue(dimLine.textGap()),
|
|
672
|
-
},
|
|
673
|
-
extLine: {
|
|
674
|
-
stroke: parseElementStroke(extLine.stroke()),
|
|
675
|
-
overshoot: toPrecisionValue(extLine.overshoot()),
|
|
676
|
-
offset: toPrecisionValue(extLine.offset()),
|
|
677
|
-
},
|
|
678
|
-
textStyle: parseTextStyle(style.textStyle()),
|
|
679
|
-
symbols: {
|
|
680
|
-
headsOverride: symbols.headsOverrideLength() > 0 ? [parseHead(symbols.headsOverride(0)), parseHead(symbols.headsOverride(1))] : undefined,
|
|
681
|
-
centerMark: centerMark,
|
|
682
|
-
},
|
|
683
|
-
tolerance: parseDimensionToleranceStyle(style.tolerance()),
|
|
684
|
-
fit: {
|
|
685
|
-
rule: fit.rule(),
|
|
686
|
-
textPlacement: fit.textPlacement(),
|
|
687
|
-
forceTextInside: fit.forceTextInside(),
|
|
688
|
-
},
|
|
689
|
-
};
|
|
690
|
-
}
|
|
691
|
-
export function parseFeatureControlFrameStyle(style) {
|
|
692
|
-
const layout = style.layout();
|
|
693
|
-
return {
|
|
694
|
-
textStyle: parseTextStyle(style.textStyle()),
|
|
695
|
-
layout: {
|
|
696
|
-
padding: toPrecisionValue(layout.padding()),
|
|
697
|
-
segmentSpacing: toPrecisionValue(layout.segmentSpacing()),
|
|
698
|
-
rowSpacing: toPrecisionValue(layout.rowSpacing()),
|
|
699
|
-
},
|
|
700
|
-
symbols: {
|
|
701
|
-
scale: style.symbols().scale(),
|
|
702
|
-
},
|
|
703
|
-
datumStyle: {
|
|
704
|
-
bracketStyle: style.datumStyle().bracketStyle(),
|
|
705
|
-
},
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
export function parseDocStyle(style) {
|
|
709
|
-
const paragraph = style.paragraph();
|
|
710
|
-
const stackFormat = style.stackFormat();
|
|
711
|
-
const stackProps = stackFormat.properties();
|
|
712
|
-
return Object.assign(Object.assign({}, parseTextStyle(style.textStyle())), { paragraph: {
|
|
713
|
-
firstLineIndent: toPrecisionValue(paragraph.firstLineIndent()),
|
|
714
|
-
hangingIndent: toPrecisionValue(paragraph.hangingIndent()),
|
|
715
|
-
leftIndent: toPrecisionValue(paragraph.leftIndent()),
|
|
716
|
-
rightIndent: toPrecisionValue(paragraph.rightIndent()),
|
|
717
|
-
spaceBefore: toPrecisionValue(paragraph.spaceBefore()),
|
|
718
|
-
spaceAfter: toPrecisionValue(paragraph.spaceAfter()),
|
|
719
|
-
tabStops: Array.from({ length: paragraph.tabStopsLength() }, (_, i) => toPrecisionValue(paragraph.tabStops(i))),
|
|
720
|
-
}, stackFormat: {
|
|
721
|
-
autoStack: stackFormat.autoStack(),
|
|
722
|
-
stackChars: Array.from({ length: stackFormat.stackCharsLength() }, (_, i) => stackFormat.stackChars(i)),
|
|
723
|
-
properties: {
|
|
724
|
-
upperScale: stackProps.upperScale(),
|
|
725
|
-
lowerScale: stackProps.lowerScale(),
|
|
726
|
-
alignment: stackProps.alignment(),
|
|
727
|
-
},
|
|
728
|
-
} });
|
|
729
|
-
}
|
|
730
|
-
// #endregion
|
|
731
|
-
// #region MAIN ELEMENT PARSER
|
|
732
|
-
export function parseElementFromBinary(wrapper) {
|
|
733
|
-
const elementType = wrapper.elementType();
|
|
734
|
-
// Skip if no type is set
|
|
735
|
-
if (elementType === ElementUnion.NONE || elementType == null) {
|
|
736
|
-
return null;
|
|
737
|
-
}
|
|
738
|
-
// Request the union only after type is known. Some flatc runtimes return null when the field is absent,
|
|
739
|
-
// which previously led to __union being called with invalid state in downstream code.
|
|
740
|
-
let element = null;
|
|
741
|
-
switch (elementType) {
|
|
742
|
-
case ElementUnion.DucRectangleElement:
|
|
743
|
-
element = wrapper.element(new DucRectangleElementFb());
|
|
744
|
-
break;
|
|
745
|
-
case ElementUnion.DucPolygonElement:
|
|
746
|
-
element = wrapper.element(new DucPolygonElementFb());
|
|
747
|
-
break;
|
|
748
|
-
case ElementUnion.DucEllipseElement:
|
|
749
|
-
element = wrapper.element(new DucEllipseElementFb());
|
|
750
|
-
break;
|
|
751
|
-
case ElementUnion.DucEmbeddableElement:
|
|
752
|
-
element = wrapper.element(new DucEmbeddableElementFb());
|
|
753
|
-
break;
|
|
754
|
-
case ElementUnion.DucPdfElement:
|
|
755
|
-
element = wrapper.element(new DucPdfElementFb());
|
|
756
|
-
break;
|
|
757
|
-
case ElementUnion.DucMermaidElement:
|
|
758
|
-
element = wrapper.element(new DucMermaidElementFb());
|
|
759
|
-
break;
|
|
760
|
-
case ElementUnion.DucTableElement:
|
|
761
|
-
element = wrapper.element(new DucTableElementFb());
|
|
762
|
-
break;
|
|
763
|
-
case ElementUnion.DucImageElement:
|
|
764
|
-
element = wrapper.element(new DucImageElementFb());
|
|
765
|
-
break;
|
|
766
|
-
case ElementUnion.DucTextElement:
|
|
767
|
-
element = wrapper.element(new DucTextElementFb());
|
|
768
|
-
break;
|
|
769
|
-
case ElementUnion.DucLinearElement:
|
|
770
|
-
element = wrapper.element(new DucLinearElementFb());
|
|
771
|
-
break;
|
|
772
|
-
case ElementUnion.DucArrowElement:
|
|
773
|
-
element = wrapper.element(new DucArrowElementFb());
|
|
774
|
-
break;
|
|
775
|
-
case ElementUnion.DucFreeDrawElement:
|
|
776
|
-
element = wrapper.element(new DucFreeDrawElementFb());
|
|
777
|
-
break;
|
|
778
|
-
case ElementUnion.DucFrameElement:
|
|
779
|
-
element = wrapper.element(new DucFrameElementFb());
|
|
780
|
-
break;
|
|
781
|
-
case ElementUnion.DucPlotElement:
|
|
782
|
-
element = wrapper.element(new DucPlotElementFb());
|
|
783
|
-
break;
|
|
784
|
-
case ElementUnion.DucViewportElement:
|
|
785
|
-
element = wrapper.element(new DucViewportElementFb());
|
|
786
|
-
break;
|
|
787
|
-
case ElementUnion.DucXRayElement:
|
|
788
|
-
element = wrapper.element(new DucXRayElementFb());
|
|
789
|
-
break;
|
|
790
|
-
case ElementUnion.DucLeaderElement:
|
|
791
|
-
element = wrapper.element(new DucLeaderElementFb());
|
|
792
|
-
break;
|
|
793
|
-
case ElementUnion.DucDimensionElement:
|
|
794
|
-
element = wrapper.element(new DucDimensionElementFb());
|
|
795
|
-
break;
|
|
796
|
-
case ElementUnion.DucFeatureControlFrameElement:
|
|
797
|
-
element = wrapper.element(new DucFeatureControlFrameElementFb());
|
|
798
|
-
break;
|
|
799
|
-
case ElementUnion.DucDocElement:
|
|
800
|
-
element = wrapper.element(new DucDocElementFb());
|
|
801
|
-
break;
|
|
802
|
-
case ElementUnion.DucModelElement:
|
|
803
|
-
element = wrapper.element(new DucModelElementFb());
|
|
804
|
-
break;
|
|
805
|
-
default:
|
|
806
|
-
return null;
|
|
807
|
-
}
|
|
808
|
-
if (!element) {
|
|
809
|
-
// Gracefully skip malformed/missing element entries
|
|
810
|
-
return null;
|
|
811
|
-
}
|
|
812
|
-
switch (elementType) {
|
|
813
|
-
case ElementUnion.DucRectangleElement:
|
|
814
|
-
return parseRectangleElement(element);
|
|
815
|
-
case ElementUnion.DucPolygonElement:
|
|
816
|
-
return parsePolygonElement(element);
|
|
817
|
-
case ElementUnion.DucEllipseElement:
|
|
818
|
-
return parseEllipseElement(element);
|
|
819
|
-
case ElementUnion.DucEmbeddableElement:
|
|
820
|
-
return parseEmbeddableElement(element);
|
|
821
|
-
case ElementUnion.DucPdfElement:
|
|
822
|
-
return parsePdfElement(element);
|
|
823
|
-
case ElementUnion.DucMermaidElement:
|
|
824
|
-
return parseMermaidElement(element);
|
|
825
|
-
case ElementUnion.DucTableElement:
|
|
826
|
-
return parseTableElement(element);
|
|
827
|
-
case ElementUnion.DucImageElement:
|
|
828
|
-
return parseImageElement(element);
|
|
829
|
-
case ElementUnion.DucTextElement:
|
|
830
|
-
return parseTextElement(element);
|
|
831
|
-
case ElementUnion.DucLinearElement:
|
|
832
|
-
return parseLinearElement(element);
|
|
833
|
-
case ElementUnion.DucArrowElement:
|
|
834
|
-
return parseArrowElement(element);
|
|
835
|
-
case ElementUnion.DucFreeDrawElement:
|
|
836
|
-
return parseFreeDrawElement(element);
|
|
837
|
-
case ElementUnion.DucFrameElement:
|
|
838
|
-
return parseFrameElement(element);
|
|
839
|
-
case ElementUnion.DucPlotElement:
|
|
840
|
-
return parsePlotElement(element);
|
|
841
|
-
case ElementUnion.DucViewportElement:
|
|
842
|
-
return parseViewportElement(element);
|
|
843
|
-
case ElementUnion.DucXRayElement:
|
|
844
|
-
return parseXRayElement(element);
|
|
845
|
-
case ElementUnion.DucLeaderElement:
|
|
846
|
-
return parseLeaderElement(element);
|
|
847
|
-
case ElementUnion.DucDimensionElement:
|
|
848
|
-
return parseDimensionElement(element);
|
|
849
|
-
case ElementUnion.DucFeatureControlFrameElement:
|
|
850
|
-
return parseFeatureControlFrameElement(element);
|
|
851
|
-
case ElementUnion.DucDocElement:
|
|
852
|
-
return parseDocElement(element);
|
|
853
|
-
case ElementUnion.DucModelElement:
|
|
854
|
-
return parseModelElement(element);
|
|
855
|
-
default:
|
|
856
|
-
return null;
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
// #endregion
|
|
860
|
-
// #region TOP-LEVEL STRUCTURE PARSERS
|
|
861
|
-
export function parseBlockFromBinary(block) {
|
|
862
|
-
const attributeDefinitions = {};
|
|
863
|
-
for (let i = 0; i < block.attributeDefinitionsLength(); i++) {
|
|
864
|
-
const entry = block.attributeDefinitions(i);
|
|
865
|
-
const def = entry.value();
|
|
866
|
-
attributeDefinitions[entry.key()] = {
|
|
867
|
-
tag: def.tag(),
|
|
868
|
-
prompt: def.prompt() || undefined,
|
|
869
|
-
defaultValue: def.defaultValue(),
|
|
870
|
-
isConstant: def.isConstant(),
|
|
871
|
-
};
|
|
872
|
-
}
|
|
873
|
-
// Parse metadata if present
|
|
874
|
-
const metadata = parseBlockMetadata(block.metadata());
|
|
875
|
-
// Parse thumbnail if present
|
|
876
|
-
const thumbnail = block.thumbnailArray();
|
|
877
|
-
return {
|
|
878
|
-
id: block.id(),
|
|
879
|
-
label: block.label(),
|
|
880
|
-
description: block.description() || undefined,
|
|
881
|
-
version: block.version(),
|
|
882
|
-
attributeDefinitions,
|
|
883
|
-
metadata,
|
|
884
|
-
thumbnail: thumbnail || undefined,
|
|
885
|
-
};
|
|
886
|
-
}
|
|
887
|
-
export function parseDictionaryFromBinary(data) {
|
|
888
|
-
const dictionary = {};
|
|
889
|
-
for (let i = 0; i < data.dictionaryLength(); i++) {
|
|
890
|
-
const entry = data.dictionary(i);
|
|
891
|
-
dictionary[entry.key()] = entry.value();
|
|
892
|
-
}
|
|
893
|
-
return dictionary;
|
|
894
|
-
}
|
|
895
|
-
export function parseExternalFilesFromBinary(entry) {
|
|
896
|
-
const fileData = entry.value();
|
|
897
|
-
const data = fileData.dataArray();
|
|
898
|
-
const key = entry.key();
|
|
899
|
-
const id = fileData.id();
|
|
900
|
-
return {
|
|
901
|
-
[key]: {
|
|
902
|
-
id,
|
|
903
|
-
mimeType: fileData.mimeType(),
|
|
904
|
-
data,
|
|
905
|
-
created: Number(fileData.created()),
|
|
906
|
-
lastRetrieved: Number(fileData.lastRetrieved()) || undefined,
|
|
907
|
-
}
|
|
908
|
-
};
|
|
909
|
-
}
|
|
910
|
-
export function parseGlobalStateFromBinary(state) {
|
|
911
|
-
return {
|
|
912
|
-
name: state.name(),
|
|
913
|
-
viewBackgroundColor: state.viewBackgroundColor(),
|
|
914
|
-
mainScope: state.mainScope(),
|
|
915
|
-
dashSpacingScale: toScaleFactor(state.dashSpacingScale()),
|
|
916
|
-
isDashSpacingAffectedByViewportScale: state.isDashSpacingAffectedByViewportScale(),
|
|
917
|
-
scopeExponentThreshold: state.scopeExponentThreshold(),
|
|
918
|
-
dimensionsAssociativeByDefault: state.dimensionsAssociativeByDefault(),
|
|
919
|
-
useAnnotativeScaling: state.useAnnotativeScaling(),
|
|
920
|
-
displayPrecision: {
|
|
921
|
-
linear: state.displayPrecisionLinear(),
|
|
922
|
-
angular: state.displayPrecisionAngular(),
|
|
923
|
-
},
|
|
924
|
-
pruningLevel: state.pruningLevel(),
|
|
925
|
-
};
|
|
926
45
|
}
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
return
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
currentItemRoundness: toPrecisionValue(state.currentItemRoundness()),
|
|
956
|
-
gridSize: 0, // deprecated
|
|
957
|
-
gridStep: 0, // deprecated
|
|
958
|
-
penMode: state.penMode(),
|
|
959
|
-
viewModeEnabled: state.viewModeEnabled(),
|
|
960
|
-
objectsSnapModeEnabled: state.objectsSnapModeEnabled(),
|
|
961
|
-
gridModeEnabled: state.gridModeEnabled(),
|
|
962
|
-
outlineModeEnabled: state.outlineModeEnabled(),
|
|
963
|
-
manualSaveMode: state.manualSaveMode(),
|
|
964
|
-
};
|
|
965
|
-
}
|
|
966
|
-
export function parseRegionFromBinary(region) {
|
|
967
|
-
return Object.assign(Object.assign({ id: region.id() }, parseStackBase(region.stackBase())), { booleanOperation: region.booleanOperation() });
|
|
968
|
-
}
|
|
969
|
-
export function parsePrimaryUnits(units) {
|
|
970
|
-
const linear = units.linear();
|
|
971
|
-
const angular = units.angular();
|
|
972
|
-
return {
|
|
973
|
-
linear: {
|
|
974
|
-
format: linear.format(),
|
|
975
|
-
system: linear.base().system(),
|
|
976
|
-
precision: linear.base().precision(),
|
|
977
|
-
suppressLeadingZeros: linear.base().suppressLeadingZeros(),
|
|
978
|
-
suppressTrailingZeros: linear.base().suppressTrailingZeros(),
|
|
979
|
-
decimalSeparator: linear.decimalSeparator(),
|
|
980
|
-
suppressZeroFeet: linear.suppressZeroFeet(),
|
|
981
|
-
suppressZeroInches: linear.suppressZeroInches(),
|
|
982
|
-
},
|
|
983
|
-
angular: {
|
|
984
|
-
format: angular.format(),
|
|
985
|
-
system: angular.base().system(),
|
|
986
|
-
precision: angular.base().precision(),
|
|
987
|
-
suppressLeadingZeros: angular.base().suppressLeadingZeros(),
|
|
988
|
-
suppressTrailingZeros: angular.base().suppressTrailingZeros(),
|
|
989
|
-
},
|
|
990
|
-
};
|
|
991
|
-
}
|
|
992
|
-
export function parseStandardFromBinary(standard) {
|
|
993
|
-
const overrides = standard.overrides();
|
|
994
|
-
const styles = standard.styles();
|
|
995
|
-
const viewSettings = standard.viewSettings();
|
|
996
|
-
const units = standard.units();
|
|
997
|
-
const validation = standard.validation();
|
|
998
|
-
const primaryUnits = units === null || units === void 0 ? void 0 : units.primaryUnits();
|
|
999
|
-
const alternateUnits = units === null || units === void 0 ? void 0 : units.alternateUnits();
|
|
1000
|
-
return {
|
|
1001
|
-
id: standard.identifier().id(),
|
|
1002
|
-
name: standard.identifier().name(),
|
|
1003
|
-
description: standard.identifier().description() || undefined,
|
|
1004
|
-
version: standard.version(),
|
|
1005
|
-
readonly: standard.readonly(),
|
|
1006
|
-
overrides: overrides ? {
|
|
1007
|
-
mainScope: overrides.mainScope() || undefined,
|
|
1008
|
-
elementsStrokeWidthOverride: overrides.elementsStrokeWidthOverride() ? toPrecisionValue(overrides.elementsStrokeWidthOverride()) : undefined,
|
|
1009
|
-
commonStyleId: overrides.commonStyleId() || undefined,
|
|
1010
|
-
stackLikeStyleId: overrides.stackLikeStyleId() || undefined,
|
|
1011
|
-
textStyleId: overrides.textStyleId() || undefined,
|
|
1012
|
-
dimensionStyleId: overrides.dimensionStyleId() || undefined,
|
|
1013
|
-
leaderStyleId: overrides.leaderStyleId() || undefined,
|
|
1014
|
-
featureControlFrameStyleId: overrides.featureControlFrameStyleId() || undefined,
|
|
1015
|
-
tableStyleId: overrides.tableStyleId() || undefined,
|
|
1016
|
-
docStyleId: overrides.docStyleId() || undefined,
|
|
1017
|
-
viewportStyleId: overrides.viewportStyleId() || undefined,
|
|
1018
|
-
plotStyleId: overrides.plotStyleId() || undefined,
|
|
1019
|
-
hatchStyleId: overrides.hatchStyleId() || undefined,
|
|
1020
|
-
activeGridSettingsId: Array.from({ length: overrides.activeGridSettingsIdLength() }, (_, i) => overrides.activeGridSettingsId(i)),
|
|
1021
|
-
activeSnapSettingsId: overrides.activeSnapSettingsId() || undefined,
|
|
1022
|
-
dashLineOverride: overrides.dashLineOverride() || undefined,
|
|
1023
|
-
unitPrecision: overrides.unitPrecision() ? {
|
|
1024
|
-
linear: overrides.unitPrecision().linear(),
|
|
1025
|
-
angular: overrides.unitPrecision().angular(),
|
|
1026
|
-
area: overrides.unitPrecision().area(),
|
|
1027
|
-
volume: overrides.unitPrecision().volume(),
|
|
1028
|
-
} : undefined,
|
|
1029
|
-
} : null,
|
|
1030
|
-
styles: styles ? {
|
|
1031
|
-
commonStyles: Array.from({ length: styles.commonStylesLength() }, (_, i) => {
|
|
1032
|
-
const s = styles.commonStyles(i);
|
|
1033
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseCommonStyle(s.style()));
|
|
1034
|
-
}),
|
|
1035
|
-
stackLikeStyles: Array.from({ length: styles.stackLikeStylesLength() }, (_, i) => {
|
|
1036
|
-
const s = styles.stackLikeStyles(i);
|
|
1037
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseStackLikeStyles(s.style()));
|
|
1038
|
-
}),
|
|
1039
|
-
textStyles: Array.from({ length: styles.textStylesLength() }, (_, i) => {
|
|
1040
|
-
const s = styles.textStyles(i);
|
|
1041
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseTextStyle(s.style()));
|
|
1042
|
-
}),
|
|
1043
|
-
dimensionStyles: Array.from({ length: styles.dimensionStylesLength() }, (_, i) => {
|
|
1044
|
-
const s = styles.dimensionStyles(i);
|
|
1045
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseDimensionStyle(s.style()));
|
|
1046
|
-
}),
|
|
1047
|
-
leaderStyles: Array.from({ length: styles.leaderStylesLength() }, (_, i) => {
|
|
1048
|
-
const s = styles.leaderStyles(i);
|
|
1049
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseLeaderStyle(s.style()));
|
|
1050
|
-
}),
|
|
1051
|
-
featureControlFrameStyles: Array.from({ length: styles.featureControlFrameStylesLength() }, (_, i) => {
|
|
1052
|
-
const s = styles.featureControlFrameStyles(i);
|
|
1053
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseFeatureControlFrameStyle(s.style()));
|
|
1054
|
-
}),
|
|
1055
|
-
tableStyles: Array.from({ length: styles.tableStylesLength() }, (_, i) => {
|
|
1056
|
-
const s = styles.tableStyles(i);
|
|
1057
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseTableStyle(s.style()));
|
|
1058
|
-
}),
|
|
1059
|
-
docStyles: Array.from({ length: styles.docStylesLength() }, (_, i) => {
|
|
1060
|
-
const s = styles.docStyles(i);
|
|
1061
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseDocStyle(s.style()));
|
|
1062
|
-
}),
|
|
1063
|
-
viewportStyles: Array.from({ length: styles.viewportStylesLength() }, (_, i) => {
|
|
1064
|
-
const s = styles.viewportStyles(i);
|
|
1065
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseViewportStyle(s.style()));
|
|
1066
|
-
}),
|
|
1067
|
-
hatchStyles: Array.from({ length: styles.hatchStylesLength() }, (_, i) => {
|
|
1068
|
-
const s = styles.hatchStyles(i);
|
|
1069
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseHatchStyle(s.style()));
|
|
1070
|
-
}),
|
|
1071
|
-
xrayStyles: Array.from({ length: styles.xrayStylesLength() }, (_, i) => {
|
|
1072
|
-
const s = styles.xrayStyles(i);
|
|
1073
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseXRayStyle(s.style()));
|
|
1074
|
-
}),
|
|
1075
|
-
} : null,
|
|
1076
|
-
viewSettings: viewSettings ? {
|
|
1077
|
-
views: Array.from({ length: viewSettings.viewsLength() }, (_, i) => {
|
|
1078
|
-
const v = viewSettings.views(i);
|
|
1079
|
-
return Object.assign({ id: v.id().id(), name: v.id().name(), description: v.id().description() || undefined }, parseView(v.view()));
|
|
1080
|
-
}),
|
|
1081
|
-
ucs: Array.from({ length: viewSettings.ucsLength() }, (_, i) => {
|
|
1082
|
-
const u = viewSettings.ucs(i);
|
|
1083
|
-
return Object.assign({ id: u.id().id(), name: u.id().name(), description: u.id().description() || undefined }, parseUcs(u.ucs()));
|
|
1084
|
-
}),
|
|
1085
|
-
gridSettings: Array.from({ length: viewSettings.gridSettingsLength() }, (_, i) => {
|
|
1086
|
-
const g = viewSettings.gridSettings(i);
|
|
1087
|
-
return Object.assign({ id: g.id().id(), name: g.id().name(), description: g.id().description() || undefined }, parseGridSettings(g.settings()));
|
|
1088
|
-
}),
|
|
1089
|
-
snapSettings: Array.from({ length: viewSettings.snapSettingsLength() }, (_, i) => {
|
|
1090
|
-
const s = viewSettings.snapSettings(i);
|
|
1091
|
-
return Object.assign({ id: s.id().id(), name: s.id().name(), description: s.id().description() || undefined }, parseSnapSettings(s.settings()));
|
|
1092
|
-
}),
|
|
1093
|
-
} : null,
|
|
1094
|
-
units: units && primaryUnits && alternateUnits ? {
|
|
1095
|
-
primaryUnits: parsePrimaryUnits(primaryUnits),
|
|
1096
|
-
alternateUnits: Object.assign(Object.assign({}, parseUnitSystemBase(alternateUnits.base(), alternateUnits.format())), { isVisible: alternateUnits.isVisible(), multiplier: alternateUnits.multiplier() }),
|
|
1097
|
-
} : null,
|
|
1098
|
-
validation: validation ? {
|
|
1099
|
-
dimensionRules: validation.dimensionRules() ? {
|
|
1100
|
-
minTextHeight: toPrecisionValue(validation.dimensionRules().minTextHeight()),
|
|
1101
|
-
maxTextHeight: toPrecisionValue(validation.dimensionRules().maxTextHeight()),
|
|
1102
|
-
allowedPrecisions: Array.from({ length: validation.dimensionRules().allowedPrecisionsLength() }, (_, i) => validation.dimensionRules().allowedPrecisions(i)),
|
|
1103
|
-
} : undefined,
|
|
1104
|
-
layerRules: validation.layerRules() ? {
|
|
1105
|
-
prohibitedLayerNames: Array.from({ length: validation.layerRules().prohibitedLayerNamesLength() }, (_, i) => validation.layerRules().prohibitedLayerNames(i)),
|
|
1106
|
-
} : undefined,
|
|
1107
|
-
} : null,
|
|
1108
|
-
};
|
|
1109
|
-
}
|
|
1110
|
-
// #region STANDARDS & SETTINGS PARSERS
|
|
1111
|
-
function parseCommonStyle(style) {
|
|
1112
|
-
return {
|
|
1113
|
-
background: parseElementBackground(style.background()),
|
|
1114
|
-
stroke: parseElementStroke(style.stroke()),
|
|
1115
|
-
};
|
|
1116
|
-
}
|
|
1117
|
-
// #endregion
|
|
1118
|
-
function parseUnitSystemBase(base, format) {
|
|
1119
|
-
return {
|
|
1120
|
-
format,
|
|
1121
|
-
system: base.system(),
|
|
1122
|
-
precision: base.precision(),
|
|
1123
|
-
suppressLeadingZeros: base.suppressLeadingZeros(),
|
|
1124
|
-
suppressTrailingZeros: base.suppressTrailingZeros(),
|
|
1125
|
-
};
|
|
1126
|
-
}
|
|
1127
|
-
function parseView(view) {
|
|
1128
|
-
return {
|
|
1129
|
-
scrollX: toPrecisionValue(view.scrollX()),
|
|
1130
|
-
scrollY: toPrecisionValue(view.scrollY()),
|
|
1131
|
-
zoom: toZoom(view.zoom()),
|
|
1132
|
-
twistAngle: toRadian(view.twistAngle()),
|
|
1133
|
-
centerPoint: parsePoint(view.centerPoint()),
|
|
1134
|
-
scope: view.scope(),
|
|
1135
|
-
};
|
|
1136
|
-
}
|
|
1137
|
-
function parseUcs(ucs) {
|
|
1138
|
-
return {
|
|
1139
|
-
origin: parseGeometricPoint(ucs.origin()),
|
|
1140
|
-
angle: toRadian(ucs.angle()),
|
|
1141
|
-
};
|
|
1142
|
-
}
|
|
1143
|
-
function parseGridSettings(settings) {
|
|
1144
|
-
const polar = settings.polarSettings();
|
|
1145
|
-
const isometric = settings.isometricSettings();
|
|
1146
|
-
return {
|
|
1147
|
-
type: settings.type(),
|
|
1148
|
-
readonly: settings.readonly(),
|
|
1149
|
-
displayType: settings.displayType(),
|
|
1150
|
-
isAdaptive: settings.isAdaptive(),
|
|
1151
|
-
xSpacing: toPrecisionValue(settings.xSpacing()),
|
|
1152
|
-
ySpacing: toPrecisionValue(settings.ySpacing()),
|
|
1153
|
-
subdivisions: settings.subdivisions(),
|
|
1154
|
-
origin: parseGeometricPoint(settings.origin()),
|
|
1155
|
-
rotation: toRadian(settings.rotation()),
|
|
1156
|
-
followUCS: settings.followUcs(),
|
|
1157
|
-
majorStyle: {
|
|
1158
|
-
color: settings.majorStyle().color(),
|
|
1159
|
-
opacity: toPercentage(settings.majorStyle().opacity()),
|
|
1160
|
-
dashPattern: Array.from(settings.majorStyle().dashPatternArray() || []),
|
|
1161
|
-
},
|
|
1162
|
-
minorStyle: {
|
|
1163
|
-
color: settings.minorStyle().color(),
|
|
1164
|
-
opacity: toPercentage(settings.minorStyle().opacity()),
|
|
1165
|
-
dashPattern: Array.from(settings.minorStyle().dashPatternArray() || []),
|
|
1166
|
-
},
|
|
1167
|
-
showMinor: settings.showMinor(),
|
|
1168
|
-
minZoom: settings.minZoom(),
|
|
1169
|
-
maxZoom: settings.maxZoom(),
|
|
1170
|
-
autoHide: settings.autoHide(),
|
|
1171
|
-
polarSettings: polar ? {
|
|
1172
|
-
radialDivisions: polar.radialDivisions(),
|
|
1173
|
-
radialSpacing: toPrecisionValue(polar.radialSpacing()),
|
|
1174
|
-
showLabels: polar.showLabels(),
|
|
1175
|
-
} : undefined,
|
|
1176
|
-
isometricSettings: isometric ? {
|
|
1177
|
-
leftAngle: toRadian(isometric.leftAngle()),
|
|
1178
|
-
rightAngle: toRadian(isometric.rightAngle()),
|
|
1179
|
-
} : undefined,
|
|
1180
|
-
enableSnapping: settings.enableSnapping(),
|
|
1181
|
-
};
|
|
1182
|
-
}
|
|
1183
|
-
function parseSnapSettings(settings) {
|
|
1184
|
-
const polar = settings.polarTracking();
|
|
1185
|
-
const dynamic = settings.dynamicSnap();
|
|
1186
|
-
const markers = settings.snapMarkers();
|
|
1187
|
-
const markerStyles = {};
|
|
1188
|
-
for (let i = 0; i < markers.stylesLength(); i++) {
|
|
1189
|
-
const entry = markers.styles(i);
|
|
1190
|
-
markerStyles[entry.key()] = {
|
|
1191
|
-
shape: entry.value().shape(),
|
|
1192
|
-
color: entry.value().color(),
|
|
1193
|
-
};
|
|
1194
|
-
}
|
|
1195
|
-
return {
|
|
1196
|
-
readonly: settings.readonly(),
|
|
1197
|
-
twistAngle: toRadian(settings.twistAngle()),
|
|
1198
|
-
snapTolerance: settings.snapTolerance(),
|
|
1199
|
-
objectSnapAperture: settings.objectSnapAperture(),
|
|
1200
|
-
isOrthoModeOn: settings.isOrthoModeOn(),
|
|
1201
|
-
polarTracking: {
|
|
1202
|
-
enabled: polar.enabled(),
|
|
1203
|
-
angles: Array.from(polar.anglesArray() || []).map(toRadian),
|
|
1204
|
-
incrementAngle: polar.incrementAngle() ? toRadian(polar.incrementAngle()) : undefined,
|
|
1205
|
-
trackFromLastPoint: polar.trackFromLastPoint(),
|
|
1206
|
-
showPolarCoordinates: polar.showPolarCoordinates(),
|
|
1207
|
-
},
|
|
1208
|
-
isObjectSnapOn: settings.isObjectSnapOn(),
|
|
1209
|
-
activeObjectSnapModes: Array.from(settings.activeObjectSnapModesArray() || []),
|
|
1210
|
-
snapPriority: Array.from(settings.snapPriorityArray() || []),
|
|
1211
|
-
showTrackingLines: settings.showTrackingLines(),
|
|
1212
|
-
trackingLineStyle: settings.trackingLineStyle() ? {
|
|
1213
|
-
color: settings.trackingLineStyle().color(),
|
|
1214
|
-
opacity: toPercentage(settings.trackingLineStyle().opacity()),
|
|
1215
|
-
dashPattern: Array.from(settings.trackingLineStyle().dashPatternArray() || []),
|
|
1216
|
-
} : undefined,
|
|
1217
|
-
dynamicSnap: {
|
|
1218
|
-
enabledDuringDrag: dynamic.enabledDuringDrag(),
|
|
1219
|
-
enabledDuringRotation: dynamic.enabledDuringRotation(),
|
|
1220
|
-
enabledDuringScale: dynamic.enabledDuringScale(),
|
|
1221
|
-
},
|
|
1222
|
-
temporaryOverrides: Array.from({ length: settings.temporaryOverridesLength() }, (_, i) => {
|
|
1223
|
-
const o = settings.temporaryOverrides(i);
|
|
1224
|
-
return { key: o.key(), behavior: o.behavior() };
|
|
1225
|
-
}),
|
|
1226
|
-
incrementalDistance: settings.incrementalDistance(),
|
|
1227
|
-
magneticStrength: settings.magneticStrength(),
|
|
1228
|
-
layerSnapFilters: settings.layerSnapFilters() ? {
|
|
1229
|
-
includeLayers: Array.from({ length: settings.layerSnapFilters().includeLayersLength() }, (_, i) => settings.layerSnapFilters().includeLayers(i)),
|
|
1230
|
-
excludeLayers: Array.from({ length: settings.layerSnapFilters().excludeLayersLength() }, (_, i) => settings.layerSnapFilters().excludeLayers(i)),
|
|
1231
|
-
} : undefined,
|
|
1232
|
-
elementTypeFilters: Array.from({ length: settings.elementTypeFiltersLength() }, (_, i) => settings.elementTypeFilters(i)),
|
|
1233
|
-
snapMode: settings.snapMode(),
|
|
1234
|
-
snapMarkers: {
|
|
1235
|
-
enabled: markers.enabled(),
|
|
1236
|
-
size: markers.size(),
|
|
1237
|
-
duration: markers.duration(),
|
|
1238
|
-
styles: markerStyles,
|
|
1239
|
-
},
|
|
1240
|
-
constructionSnapEnabled: settings.constructionSnapEnabled(),
|
|
1241
|
-
snapToGridIntersections: settings.snapToGridIntersections(),
|
|
1242
|
-
};
|
|
1243
|
-
}
|
|
1244
|
-
// #region VERSIONING & MISC
|
|
1245
|
-
export function parseThumbnailFromBinary(data) {
|
|
1246
|
-
return data.thumbnailArray() || undefined;
|
|
1247
|
-
}
|
|
1248
|
-
export function parseVersionGraphFromBinary(graph) {
|
|
1249
|
-
if (!graph)
|
|
1250
|
-
return null;
|
|
1251
|
-
const metadata = graph.metadata();
|
|
1252
|
-
return {
|
|
1253
|
-
userCheckpointVersionId: graph.userCheckpointVersionId(),
|
|
1254
|
-
latestVersionId: graph.latestVersionId(),
|
|
1255
|
-
checkpoints: Array.from({ length: graph.checkpointsLength() }, (_, i) => {
|
|
1256
|
-
const c = graph.checkpoints(i);
|
|
1257
|
-
const base = c.base();
|
|
1258
|
-
return {
|
|
1259
|
-
type: "checkpoint",
|
|
1260
|
-
id: base.id(),
|
|
1261
|
-
parentId: base.parentId(),
|
|
1262
|
-
timestamp: Number(base.timestamp()),
|
|
1263
|
-
description: base.description() || undefined,
|
|
1264
|
-
isManualSave: base.isManualSave(),
|
|
1265
|
-
userId: base.userId() || undefined,
|
|
1266
|
-
data: c.dataArray(),
|
|
1267
|
-
sizeBytes: Number(c.sizeBytes()),
|
|
1268
|
-
};
|
|
1269
|
-
}),
|
|
1270
|
-
deltas: Array.from({ length: graph.deltasLength() }, (_, i) => {
|
|
1271
|
-
const d = graph.deltas(i);
|
|
1272
|
-
const base = d.base();
|
|
1273
|
-
return {
|
|
1274
|
-
type: "delta",
|
|
1275
|
-
id: base.id(),
|
|
1276
|
-
parentId: base.parentId(),
|
|
1277
|
-
timestamp: Number(base.timestamp()),
|
|
1278
|
-
description: base.description() || undefined,
|
|
1279
|
-
isManualSave: base.isManualSave(),
|
|
1280
|
-
userId: base.userId() || undefined,
|
|
1281
|
-
patch: parseBinaryToJson(d.patchArray()),
|
|
1282
|
-
};
|
|
1283
|
-
}),
|
|
1284
|
-
metadata: {
|
|
1285
|
-
lastPruned: Number(metadata.lastPruned()),
|
|
1286
|
-
totalSize: Number(metadata.totalSize()),
|
|
1287
|
-
},
|
|
1288
|
-
};
|
|
46
|
+
/**
|
|
47
|
+
* Parse a `.duc` file lazily — returns everything EXCEPT external file data blobs.
|
|
48
|
+
* Use `LazyExternalFileStore` for on-demand file access.
|
|
49
|
+
*/
|
|
50
|
+
export function parseDucLazy(buffer, elementsConfig, restoreConfig) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
yield ensureWasm();
|
|
53
|
+
if (buffer.byteLength === 0) {
|
|
54
|
+
throw new Error(`[parseDucLazy] buffer too small (${buffer.byteLength} bytes) — not a valid .duc file`);
|
|
55
|
+
}
|
|
56
|
+
const header = new TextDecoder().decode(buffer.slice(0, 15));
|
|
57
|
+
let raw;
|
|
58
|
+
try {
|
|
59
|
+
raw = wasmParseDucLazy(buffer);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
const prefixHex = Array.from(buffer.slice(0, 16))
|
|
63
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
64
|
+
.join(" ");
|
|
65
|
+
throw new Error(`[parseDucLazy] wasm parse failed (size=${buffer.byteLength}, header="${header}", prefix=${prefixHex}): ${error instanceof Error ? error.message : String(error)}`);
|
|
66
|
+
}
|
|
67
|
+
const data = transformFromRust(raw);
|
|
68
|
+
const lazyFileStore = new LazyExternalFileStore(buffer);
|
|
69
|
+
const files = {};
|
|
70
|
+
const restored = restore(Object.assign(Object.assign({}, data), { files }), elementsConfig !== null && elementsConfig !== void 0 ? elementsConfig : { syncInvalidIndices: (els) => els }, restoreConfig);
|
|
71
|
+
restored.lazyFileStore = lazyFileStore;
|
|
72
|
+
return restored;
|
|
73
|
+
});
|
|
1289
74
|
}
|
|
1290
|
-
// #endregion
|
|
1291
|
-
// #region ROOT PARSER
|
|
1292
|
-
export const parseDuc = (blob_1, ...args_1) => __awaiter(void 0, [blob_1, ...args_1], void 0, function* (blob, fileHandle = null, restoreConfig = {}) {
|
|
1293
|
-
var _a;
|
|
1294
|
-
const arrayBuffer = yield blob.arrayBuffer();
|
|
1295
|
-
if (!arrayBuffer || arrayBuffer.byteLength === 0) {
|
|
1296
|
-
throw new Error('Invalid DUC buffer: empty file');
|
|
1297
|
-
}
|
|
1298
|
-
const byteBuffer = new flatbuffers.ByteBuffer(new Uint8Array(arrayBuffer));
|
|
1299
|
-
// Validate that the root can be read; flatbuffers will throw if buffer is not well-formed.
|
|
1300
|
-
let data;
|
|
1301
|
-
try {
|
|
1302
|
-
data = ExportedDataState.getRootAsExportedDataState(byteBuffer);
|
|
1303
|
-
}
|
|
1304
|
-
catch (e) {
|
|
1305
|
-
throw new Error('Invalid DUC buffer: cannot read root table');
|
|
1306
|
-
}
|
|
1307
|
-
const legacyVersion = data.versionLegacy();
|
|
1308
|
-
if (legacyVersion) {
|
|
1309
|
-
throw new Error(`Unsupported DUC version: ${legacyVersion}. Please use version ducjs@2.0.1 or lower to support this file.`);
|
|
1310
|
-
}
|
|
1311
|
-
const version = data.version();
|
|
1312
|
-
const localState = data.ducLocalState();
|
|
1313
|
-
const parsedLocalState = localState && parseLocalStateFromBinary(localState);
|
|
1314
|
-
// Parse global state
|
|
1315
|
-
const globalState = data.ducGlobalState();
|
|
1316
|
-
const parsedGlobalState = globalState && parseGlobalStateFromBinary(globalState);
|
|
1317
|
-
// Parse elements
|
|
1318
|
-
const elements = [];
|
|
1319
|
-
for (let i = 0; i < data.elementsLength(); i++) {
|
|
1320
|
-
const e = data.elements(i);
|
|
1321
|
-
if (e) {
|
|
1322
|
-
const element = parseElementFromBinary(e);
|
|
1323
|
-
if (element) {
|
|
1324
|
-
elements.push(element);
|
|
1325
|
-
}
|
|
1326
|
-
}
|
|
1327
|
-
}
|
|
1328
|
-
// Parse files
|
|
1329
|
-
let parsedFiles = {};
|
|
1330
|
-
for (let i = 0; i < data.externalFilesLength(); i++) {
|
|
1331
|
-
const externalFile = data.externalFiles(i);
|
|
1332
|
-
if (externalFile) {
|
|
1333
|
-
const parsedFile = parseExternalFilesFromBinary(externalFile);
|
|
1334
|
-
parsedFiles = Object.assign(Object.assign({}, parsedFiles), parsedFile);
|
|
1335
|
-
}
|
|
1336
|
-
}
|
|
1337
|
-
// Parse blocks
|
|
1338
|
-
const blocks = [];
|
|
1339
|
-
for (let i = 0; i < data.blocksLength(); i++) {
|
|
1340
|
-
const block = data.blocks(i);
|
|
1341
|
-
if (block) {
|
|
1342
|
-
const parsedBlock = parseBlockFromBinary(block);
|
|
1343
|
-
if (parsedBlock) {
|
|
1344
|
-
blocks.push(parsedBlock);
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1347
|
-
}
|
|
1348
|
-
// Parse block instances
|
|
1349
|
-
const blockInstances = [];
|
|
1350
|
-
for (let i = 0; i < data.blockInstancesLength(); i++) {
|
|
1351
|
-
const blockInstance = data.blockInstances(i);
|
|
1352
|
-
if (blockInstance) {
|
|
1353
|
-
const parsedBlockInstance = parseBlockInstance(blockInstance);
|
|
1354
|
-
if (parsedBlockInstance) {
|
|
1355
|
-
blockInstances.push(parsedBlockInstance);
|
|
1356
|
-
}
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1359
|
-
// Parse block collections
|
|
1360
|
-
const blockCollections = [];
|
|
1361
|
-
for (let i = 0; i < data.blockCollectionsLength(); i++) {
|
|
1362
|
-
const blockCollection = data.blockCollections(i);
|
|
1363
|
-
if (blockCollection) {
|
|
1364
|
-
const parsedBlockCollection = parseBlockCollection(blockCollection);
|
|
1365
|
-
if (parsedBlockCollection) {
|
|
1366
|
-
blockCollections.push(parsedBlockCollection);
|
|
1367
|
-
}
|
|
1368
|
-
}
|
|
1369
|
-
}
|
|
1370
|
-
// Parse groups
|
|
1371
|
-
const groups = [];
|
|
1372
|
-
for (let i = 0; i < data.groupsLength(); i++) {
|
|
1373
|
-
const group = data.groups(i);
|
|
1374
|
-
if (group) {
|
|
1375
|
-
const parsedGroup = parseGroupFromBinary(group);
|
|
1376
|
-
if (parsedGroup) {
|
|
1377
|
-
groups.push(parsedGroup);
|
|
1378
|
-
}
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
// Parse dictionary
|
|
1382
|
-
const dictionary = parseDictionaryFromBinary(data);
|
|
1383
|
-
// Parse thumbnail
|
|
1384
|
-
const thumbnail = parseThumbnailFromBinary(data);
|
|
1385
|
-
// Parse version graph
|
|
1386
|
-
const versionGraphData = data.versionGraph();
|
|
1387
|
-
const versionGraph = parseVersionGraphFromBinary(versionGraphData);
|
|
1388
|
-
// Parse regions
|
|
1389
|
-
const regions = [];
|
|
1390
|
-
for (let i = 0; i < data.regionsLength(); i++) {
|
|
1391
|
-
const region = data.regions(i);
|
|
1392
|
-
if (region) {
|
|
1393
|
-
const parsedRegion = parseRegionFromBinary(region);
|
|
1394
|
-
if (parsedRegion) {
|
|
1395
|
-
regions.push(parsedRegion);
|
|
1396
|
-
}
|
|
1397
|
-
}
|
|
1398
|
-
}
|
|
1399
|
-
// Parse layers
|
|
1400
|
-
const layers = [];
|
|
1401
|
-
for (let i = 0; i < data.layersLength(); i++) {
|
|
1402
|
-
const layer = data.layers(i);
|
|
1403
|
-
if (layer) {
|
|
1404
|
-
const parsedLayer = parseLayerFromBinary(layer);
|
|
1405
|
-
if (parsedLayer) {
|
|
1406
|
-
layers.push(parsedLayer);
|
|
1407
|
-
}
|
|
1408
|
-
}
|
|
1409
|
-
}
|
|
1410
|
-
// Parse standards
|
|
1411
|
-
const standards = [];
|
|
1412
|
-
for (let i = 0; i < data.standardsLength(); i++) {
|
|
1413
|
-
const standard = data.standards(i);
|
|
1414
|
-
if (standard) {
|
|
1415
|
-
const parsedStandard = parseStandardFromBinary(standard);
|
|
1416
|
-
if (parsedStandard) {
|
|
1417
|
-
standards.push(parsedStandard);
|
|
1418
|
-
}
|
|
1419
|
-
}
|
|
1420
|
-
}
|
|
1421
|
-
const exportData = {
|
|
1422
|
-
thumbnail,
|
|
1423
|
-
dictionary,
|
|
1424
|
-
elements: elements,
|
|
1425
|
-
localState: parsedLocalState,
|
|
1426
|
-
globalState: parsedGlobalState,
|
|
1427
|
-
blocks,
|
|
1428
|
-
blockInstances,
|
|
1429
|
-
blockCollections,
|
|
1430
|
-
groups,
|
|
1431
|
-
regions,
|
|
1432
|
-
layers,
|
|
1433
|
-
standards,
|
|
1434
|
-
files: parsedFiles,
|
|
1435
|
-
versionGraph: versionGraph !== null && versionGraph !== void 0 ? versionGraph : undefined,
|
|
1436
|
-
id: (_a = data.id()) !== null && _a !== void 0 ? _a : nanoid(),
|
|
1437
|
-
};
|
|
1438
|
-
const sanitized = restore(exportData, {
|
|
1439
|
-
syncInvalidIndices: (elements) => elements,
|
|
1440
|
-
repairBindings: true,
|
|
1441
|
-
refreshDimensions: false,
|
|
1442
|
-
}, restoreConfig);
|
|
1443
|
-
return {
|
|
1444
|
-
thumbnail: sanitized.thumbnail,
|
|
1445
|
-
dictionary: sanitized.dictionary,
|
|
1446
|
-
elements: sanitized.elements,
|
|
1447
|
-
localState: sanitized.localState,
|
|
1448
|
-
globalState: sanitized.globalState,
|
|
1449
|
-
files: sanitized.files,
|
|
1450
|
-
blocks: sanitized.blocks,
|
|
1451
|
-
blockInstances: sanitized.blockInstances,
|
|
1452
|
-
groups: sanitized.groups,
|
|
1453
|
-
regions: sanitized.regions,
|
|
1454
|
-
layers: sanitized.layers,
|
|
1455
|
-
blockCollections: sanitized.blockCollections,
|
|
1456
|
-
standards: sanitized.standards,
|
|
1457
|
-
versionGraph: sanitized.versionGraph,
|
|
1458
|
-
id: sanitized.id,
|
|
1459
|
-
};
|
|
1460
|
-
});
|
|
1461
|
-
// #endregion
|