ducjs 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (707) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/flatbuffers/duc/alternate-units.d.ts +21 -0
  4. package/dist/flatbuffers/duc/alternate-units.js +66 -0
  5. package/dist/flatbuffers/duc/angular-unit-system.d.ts +17 -0
  6. package/dist/flatbuffers/duc/angular-unit-system.js +50 -0
  7. package/dist/flatbuffers/duc/angular-units-format.d.ts +7 -0
  8. package/dist/flatbuffers/duc/angular-units-format.js +10 -0
  9. package/dist/flatbuffers/duc/axis.d.ts +5 -0
  10. package/dist/flatbuffers/duc/axis.js +8 -0
  11. package/dist/flatbuffers/duc/bezier-mirroring.d.ts +5 -0
  12. package/dist/flatbuffers/duc/bezier-mirroring.js +8 -0
  13. package/dist/flatbuffers/duc/blending.d.ts +9 -0
  14. package/dist/flatbuffers/duc/blending.js +12 -0
  15. package/dist/flatbuffers/duc/block-attachment.d.ts +4 -0
  16. package/dist/flatbuffers/duc/block-attachment.js +7 -0
  17. package/dist/flatbuffers/duc/boolean-operation.d.ts +6 -0
  18. package/dist/flatbuffers/duc/boolean-operation.js +9 -0
  19. package/dist/flatbuffers/duc/bound-element.d.ts +17 -0
  20. package/dist/flatbuffers/duc/bound-element.js +48 -0
  21. package/dist/flatbuffers/duc/checkpoint.d.ts +22 -0
  22. package/dist/flatbuffers/duc/checkpoint.js +75 -0
  23. package/dist/flatbuffers/duc/column-layout.d.ts +22 -0
  24. package/dist/flatbuffers/duc/column-layout.js +72 -0
  25. package/dist/flatbuffers/duc/column-type.d.ts +5 -0
  26. package/dist/flatbuffers/duc/column-type.js +8 -0
  27. package/dist/flatbuffers/duc/custom-hatch-pattern.d.ts +23 -0
  28. package/dist/flatbuffers/duc/custom-hatch-pattern.js +71 -0
  29. package/dist/flatbuffers/duc/datum-bracket-style.d.ts +5 -0
  30. package/dist/flatbuffers/duc/datum-bracket-style.js +8 -0
  31. package/dist/flatbuffers/duc/datum-reference.d.ts +17 -0
  32. package/dist/flatbuffers/duc/datum-reference.js +49 -0
  33. package/dist/flatbuffers/duc/datum-target-type.d.ts +6 -0
  34. package/dist/flatbuffers/duc/datum-target-type.js +9 -0
  35. package/dist/flatbuffers/duc/decimal-separator.d.ts +4 -0
  36. package/dist/flatbuffers/duc/decimal-separator.js +7 -0
  37. package/dist/flatbuffers/duc/delta.d.ts +20 -0
  38. package/dist/flatbuffers/duc/delta.js +64 -0
  39. package/dist/flatbuffers/duc/dictionary-entry.d.ts +17 -0
  40. package/dist/flatbuffers/duc/dictionary-entry.js +49 -0
  41. package/dist/flatbuffers/duc/dimension-baseline-data.d.ts +14 -0
  42. package/dist/flatbuffers/duc/dimension-baseline-data.js +40 -0
  43. package/dist/flatbuffers/duc/dimension-bindings.d.ts +17 -0
  44. package/dist/flatbuffers/duc/dimension-bindings.js +50 -0
  45. package/dist/flatbuffers/duc/dimension-continue-data.d.ts +14 -0
  46. package/dist/flatbuffers/duc/dimension-continue-data.js +40 -0
  47. package/dist/flatbuffers/duc/dimension-definition-points.d.ts +21 -0
  48. package/dist/flatbuffers/duc/dimension-definition-points.js +64 -0
  49. package/dist/flatbuffers/duc/dimension-ext-line-style.d.ts +18 -0
  50. package/dist/flatbuffers/duc/dimension-ext-line-style.js +57 -0
  51. package/dist/flatbuffers/duc/dimension-fit-rule.d.ts +6 -0
  52. package/dist/flatbuffers/duc/dimension-fit-rule.js +9 -0
  53. package/dist/flatbuffers/duc/dimension-fit-style.d.ts +19 -0
  54. package/dist/flatbuffers/duc/dimension-fit-style.js +58 -0
  55. package/dist/flatbuffers/duc/dimension-line-style.d.ts +16 -0
  56. package/dist/flatbuffers/duc/dimension-line-style.js +49 -0
  57. package/dist/flatbuffers/duc/dimension-symbol-style.d.ts +22 -0
  58. package/dist/flatbuffers/duc/dimension-symbol-style.js +72 -0
  59. package/dist/flatbuffers/duc/dimension-text-placement.d.ts +5 -0
  60. package/dist/flatbuffers/duc/dimension-text-placement.js +8 -0
  61. package/dist/flatbuffers/duc/dimension-tolerance-style.d.ts +24 -0
  62. package/dist/flatbuffers/duc/dimension-tolerance-style.js +71 -0
  63. package/dist/flatbuffers/duc/dimension-type.d.ts +15 -0
  64. package/dist/flatbuffers/duc/dimension-type.js +18 -0
  65. package/dist/flatbuffers/duc/dimension-units-format.d.ts +7 -0
  66. package/dist/flatbuffers/duc/dimension-units-format.js +10 -0
  67. package/dist/flatbuffers/duc/dimension-validation-rules.d.ts +25 -0
  68. package/dist/flatbuffers/duc/dimension-validation-rules.js +74 -0
  69. package/dist/flatbuffers/duc/duc-arrow-element.d.ts +16 -0
  70. package/dist/flatbuffers/duc/duc-arrow-element.js +49 -0
  71. package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.d.ts +16 -0
  72. package/dist/flatbuffers/duc/duc-block-attribute-definition-entry.js +44 -0
  73. package/dist/flatbuffers/duc/duc-block-attribute-definition.d.ts +22 -0
  74. package/dist/flatbuffers/duc/duc-block-attribute-definition.js +64 -0
  75. package/dist/flatbuffers/duc/duc-block-duplication-array.d.ts +19 -0
  76. package/dist/flatbuffers/duc/duc-block-duplication-array.js +64 -0
  77. package/dist/flatbuffers/duc/duc-block-instance-element.d.ts +30 -0
  78. package/dist/flatbuffers/duc/duc-block-instance-element.js +94 -0
  79. package/dist/flatbuffers/duc/duc-block.d.ts +34 -0
  80. package/dist/flatbuffers/duc/duc-block.js +111 -0
  81. package/dist/flatbuffers/duc/duc-common-style.d.ts +16 -0
  82. package/dist/flatbuffers/duc/duc-common-style.js +44 -0
  83. package/dist/flatbuffers/duc/duc-dimension-element.d.ts +45 -0
  84. package/dist/flatbuffers/duc/duc-dimension-element.js +120 -0
  85. package/dist/flatbuffers/duc/duc-dimension-style.d.ts +28 -0
  86. package/dist/flatbuffers/duc/duc-dimension-style.js +76 -0
  87. package/dist/flatbuffers/duc/duc-doc-element.d.ts +33 -0
  88. package/dist/flatbuffers/duc/duc-doc-element.js +95 -0
  89. package/dist/flatbuffers/duc/duc-doc-style.d.ts +19 -0
  90. package/dist/flatbuffers/duc/duc-doc-style.js +52 -0
  91. package/dist/flatbuffers/duc/duc-element-base.d.ts +88 -0
  92. package/dist/flatbuffers/duc/duc-element-base.js +269 -0
  93. package/dist/flatbuffers/duc/duc-element-styles-base.d.ts +30 -0
  94. package/dist/flatbuffers/duc/duc-element-styles-base.js +103 -0
  95. package/dist/flatbuffers/duc/duc-ellipse-element.d.ts +22 -0
  96. package/dist/flatbuffers/duc/duc-ellipse-element.js +73 -0
  97. package/dist/flatbuffers/duc/duc-embeddable-element.d.ts +14 -0
  98. package/dist/flatbuffers/duc/duc-embeddable-element.js +41 -0
  99. package/dist/flatbuffers/duc/duc-external-file-data.d.ts +27 -0
  100. package/dist/flatbuffers/duc/duc-external-file-data.js +92 -0
  101. package/dist/flatbuffers/duc/duc-external-file-entry.d.ts +16 -0
  102. package/dist/flatbuffers/duc/duc-external-file-entry.js +44 -0
  103. package/dist/flatbuffers/duc/duc-feature-control-frame-element.d.ts +31 -0
  104. package/dist/flatbuffers/duc/duc-feature-control-frame-element.js +89 -0
  105. package/dist/flatbuffers/duc/duc-feature-control-frame-style.d.ts +25 -0
  106. package/dist/flatbuffers/duc/duc-feature-control-frame-style.js +68 -0
  107. package/dist/flatbuffers/duc/duc-frame-element.d.ts +14 -0
  108. package/dist/flatbuffers/duc/duc-frame-element.js +41 -0
  109. package/dist/flatbuffers/duc/duc-free-draw-element.d.ts +52 -0
  110. package/dist/flatbuffers/duc/duc-free-draw-element.js +154 -0
  111. package/dist/flatbuffers/duc/duc-free-draw-ends.d.ts +18 -0
  112. package/dist/flatbuffers/duc/duc-free-draw-ends.js +56 -0
  113. package/dist/flatbuffers/duc/duc-global-state.d.ts +37 -0
  114. package/dist/flatbuffers/duc/duc-global-state.js +121 -0
  115. package/dist/flatbuffers/duc/duc-group.d.ts +16 -0
  116. package/dist/flatbuffers/duc/duc-group.js +44 -0
  117. package/dist/flatbuffers/duc/duc-hatch-style.d.ts +28 -0
  118. package/dist/flatbuffers/duc/duc-hatch-style.js +79 -0
  119. package/dist/flatbuffers/duc/duc-head.d.ts +19 -0
  120. package/dist/flatbuffers/duc/duc-head.js +57 -0
  121. package/dist/flatbuffers/duc/duc-image-element.d.ts +35 -0
  122. package/dist/flatbuffers/duc/duc-image-element.js +91 -0
  123. package/dist/flatbuffers/duc/duc-image-filter.d.ts +15 -0
  124. package/dist/flatbuffers/duc/duc-image-filter.js +48 -0
  125. package/dist/flatbuffers/duc/duc-layer-overrides.d.ts +16 -0
  126. package/dist/flatbuffers/duc/duc-layer-overrides.js +44 -0
  127. package/dist/flatbuffers/duc/duc-layer.d.ts +21 -0
  128. package/dist/flatbuffers/duc/duc-layer.js +59 -0
  129. package/dist/flatbuffers/duc/duc-leader-element.d.ts +22 -0
  130. package/dist/flatbuffers/duc/duc-leader-element.js +60 -0
  131. package/dist/flatbuffers/duc/duc-leader-style.d.ts +30 -0
  132. package/dist/flatbuffers/duc/duc-leader-style.js +87 -0
  133. package/dist/flatbuffers/duc/duc-line-reference.d.ts +15 -0
  134. package/dist/flatbuffers/duc/duc-line-reference.js +43 -0
  135. package/dist/flatbuffers/duc/duc-line.d.ts +15 -0
  136. package/dist/flatbuffers/duc/duc-line.js +43 -0
  137. package/dist/flatbuffers/duc/duc-linear-element-base.d.ts +38 -0
  138. package/dist/flatbuffers/duc/duc-linear-element-base.js +124 -0
  139. package/dist/flatbuffers/duc/duc-linear-element.d.ts +16 -0
  140. package/dist/flatbuffers/duc/duc-linear-element.js +49 -0
  141. package/dist/flatbuffers/duc/duc-local-state.d.ts +68 -0
  142. package/dist/flatbuffers/duc/duc-local-state.js +206 -0
  143. package/dist/flatbuffers/duc/duc-mermaid-element.d.ts +23 -0
  144. package/dist/flatbuffers/duc/duc-mermaid-element.js +65 -0
  145. package/dist/flatbuffers/duc/duc-parametric-element.d.ts +16 -0
  146. package/dist/flatbuffers/duc/duc-parametric-element.js +44 -0
  147. package/dist/flatbuffers/duc/duc-path.d.ts +26 -0
  148. package/dist/flatbuffers/duc/duc-path.js +69 -0
  149. package/dist/flatbuffers/duc/duc-pdf-element.d.ts +17 -0
  150. package/dist/flatbuffers/duc/duc-pdf-element.js +49 -0
  151. package/dist/flatbuffers/duc/duc-plot-element.d.ts +19 -0
  152. package/dist/flatbuffers/duc/duc-plot-element.js +52 -0
  153. package/dist/flatbuffers/duc/duc-plot-style.d.ts +14 -0
  154. package/dist/flatbuffers/duc/duc-plot-style.js +41 -0
  155. package/dist/flatbuffers/duc/duc-point-binding.d.ts +26 -0
  156. package/dist/flatbuffers/duc/duc-point-binding.js +73 -0
  157. package/dist/flatbuffers/duc/duc-point.d.ts +18 -0
  158. package/dist/flatbuffers/duc/duc-point.js +57 -0
  159. package/dist/flatbuffers/duc/duc-polygon-element.d.ts +16 -0
  160. package/dist/flatbuffers/duc/duc-polygon-element.js +49 -0
  161. package/dist/flatbuffers/duc/duc-rectangle-element.d.ts +14 -0
  162. package/dist/flatbuffers/duc/duc-rectangle-element.js +41 -0
  163. package/dist/flatbuffers/duc/duc-region.d.ts +19 -0
  164. package/dist/flatbuffers/duc/duc-region.js +51 -0
  165. package/dist/flatbuffers/duc/duc-stack-base.d.ts +27 -0
  166. package/dist/flatbuffers/duc/duc-stack-base.js +78 -0
  167. package/dist/flatbuffers/duc/duc-stack-element-base.d.ts +23 -0
  168. package/dist/flatbuffers/duc/duc-stack-element-base.js +65 -0
  169. package/dist/flatbuffers/duc/duc-stack-like-styles.d.ts +16 -0
  170. package/dist/flatbuffers/duc/duc-stack-like-styles.js +48 -0
  171. package/dist/flatbuffers/duc/duc-table-auto-size.d.ts +15 -0
  172. package/dist/flatbuffers/duc/duc-table-auto-size.js +48 -0
  173. package/dist/flatbuffers/duc/duc-table-cell-entry.d.ts +16 -0
  174. package/dist/flatbuffers/duc/duc-table-cell-entry.js +44 -0
  175. package/dist/flatbuffers/duc/duc-table-cell-span.d.ts +15 -0
  176. package/dist/flatbuffers/duc/duc-table-cell-span.js +48 -0
  177. package/dist/flatbuffers/duc/duc-table-cell-style.d.ts +22 -0
  178. package/dist/flatbuffers/duc/duc-table-cell-style.js +59 -0
  179. package/dist/flatbuffers/duc/duc-table-cell.d.ts +27 -0
  180. package/dist/flatbuffers/duc/duc-table-cell.js +72 -0
  181. package/dist/flatbuffers/duc/duc-table-column-entry.d.ts +16 -0
  182. package/dist/flatbuffers/duc/duc-table-column-entry.js +44 -0
  183. package/dist/flatbuffers/duc/duc-table-column.d.ts +18 -0
  184. package/dist/flatbuffers/duc/duc-table-column.js +51 -0
  185. package/dist/flatbuffers/duc/duc-table-element.d.ts +51 -0
  186. package/dist/flatbuffers/duc/duc-table-element.js +167 -0
  187. package/dist/flatbuffers/duc/duc-table-row-entry.d.ts +16 -0
  188. package/dist/flatbuffers/duc/duc-table-row-entry.js +44 -0
  189. package/dist/flatbuffers/duc/duc-table-row.d.ts +18 -0
  190. package/dist/flatbuffers/duc/duc-table-row.js +51 -0
  191. package/dist/flatbuffers/duc/duc-table-style.d.ts +23 -0
  192. package/dist/flatbuffers/duc/duc-table-style.js +65 -0
  193. package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.d.ts +14 -0
  194. package/dist/flatbuffers/duc/duc-text-dynamic-dictionary-source.js +40 -0
  195. package/dist/flatbuffers/duc/duc-text-dynamic-element-source.d.ts +17 -0
  196. package/dist/flatbuffers/duc/duc-text-dynamic-element-source.js +49 -0
  197. package/dist/flatbuffers/duc/duc-text-dynamic-part.d.ts +22 -0
  198. package/dist/flatbuffers/duc/duc-text-dynamic-part.js +58 -0
  199. package/dist/flatbuffers/duc/duc-text-dynamic-source-data.d.ts +9 -0
  200. package/dist/flatbuffers/duc/duc-text-dynamic-source-data.js +26 -0
  201. package/dist/flatbuffers/duc/duc-text-dynamic-source.d.ts +19 -0
  202. package/dist/flatbuffers/duc/duc-text-dynamic-source.js +58 -0
  203. package/dist/flatbuffers/duc/duc-text-element.d.ts +33 -0
  204. package/dist/flatbuffers/duc/duc-text-element.js +94 -0
  205. package/dist/flatbuffers/duc/duc-text-style.d.ts +44 -0
  206. package/dist/flatbuffers/duc/duc-text-style.js +128 -0
  207. package/dist/flatbuffers/duc/duc-ucs.d.ts +16 -0
  208. package/dist/flatbuffers/duc/duc-ucs.js +49 -0
  209. package/dist/flatbuffers/duc/duc-view.d.ts +24 -0
  210. package/dist/flatbuffers/duc/duc-view.js +71 -0
  211. package/dist/flatbuffers/duc/duc-viewport-element.d.ts +36 -0
  212. package/dist/flatbuffers/duc/duc-viewport-element.js +102 -0
  213. package/dist/flatbuffers/duc/duc-viewport-style.d.ts +16 -0
  214. package/dist/flatbuffers/duc/duc-viewport-style.js +49 -0
  215. package/dist/flatbuffers/duc/duc-xray-element.d.ts +23 -0
  216. package/dist/flatbuffers/duc/duc-xray-element.js +66 -0
  217. package/dist/flatbuffers/duc/duc-xray-style.d.ts +17 -0
  218. package/dist/flatbuffers/duc/duc-xray-style.js +49 -0
  219. package/dist/flatbuffers/duc/dynamic-snap-settings.d.ts +17 -0
  220. package/dist/flatbuffers/duc/dynamic-snap-settings.js +56 -0
  221. package/dist/flatbuffers/duc/element-background.d.ts +14 -0
  222. package/dist/flatbuffers/duc/element-background.js +41 -0
  223. package/dist/flatbuffers/duc/element-content-base.d.ts +29 -0
  224. package/dist/flatbuffers/duc/element-content-base.js +80 -0
  225. package/dist/flatbuffers/duc/element-content-preference.d.ts +8 -0
  226. package/dist/flatbuffers/duc/element-content-preference.js +11 -0
  227. package/dist/flatbuffers/duc/element-stroke.d.ts +24 -0
  228. package/dist/flatbuffers/duc/element-stroke.js +66 -0
  229. package/dist/flatbuffers/duc/element-wrapper.d.ts +16 -0
  230. package/dist/flatbuffers/duc/element-wrapper.js +49 -0
  231. package/dist/flatbuffers/duc/element.d.ts +49 -0
  232. package/dist/flatbuffers/duc/element.js +106 -0
  233. package/dist/flatbuffers/duc/exported-data-state.d.ts +87 -0
  234. package/dist/flatbuffers/duc/exported-data-state.js +290 -0
  235. package/dist/flatbuffers/duc/fcfbetween-modifier.d.ts +17 -0
  236. package/dist/flatbuffers/duc/fcfbetween-modifier.js +48 -0
  237. package/dist/flatbuffers/duc/fcfdatum-definition.d.ts +16 -0
  238. package/dist/flatbuffers/duc/fcfdatum-definition.js +43 -0
  239. package/dist/flatbuffers/duc/fcfdatum-style.d.ts +14 -0
  240. package/dist/flatbuffers/duc/fcfdatum-style.js +41 -0
  241. package/dist/flatbuffers/duc/fcfframe-modifiers.d.ts +22 -0
  242. package/dist/flatbuffers/duc/fcfframe-modifiers.js +65 -0
  243. package/dist/flatbuffers/duc/fcflayout-style.d.ts +17 -0
  244. package/dist/flatbuffers/duc/fcflayout-style.js +56 -0
  245. package/dist/flatbuffers/duc/fcfprojected-zone-modifier.d.ts +13 -0
  246. package/dist/flatbuffers/duc/fcfprojected-zone-modifier.js +40 -0
  247. package/dist/flatbuffers/duc/fcfsegment-row.d.ts +17 -0
  248. package/dist/flatbuffers/duc/fcfsegment-row.js +55 -0
  249. package/dist/flatbuffers/duc/fcfsymbol-style.d.ts +13 -0
  250. package/dist/flatbuffers/duc/fcfsymbol-style.js +40 -0
  251. package/dist/flatbuffers/duc/feature-control-frame-segment.d.ts +22 -0
  252. package/dist/flatbuffers/duc/feature-control-frame-segment.js +65 -0
  253. package/dist/flatbuffers/duc/feature-modifier.d.ts +18 -0
  254. package/dist/flatbuffers/duc/feature-modifier.js +21 -0
  255. package/dist/flatbuffers/duc/gdt-symbol.d.ts +22 -0
  256. package/dist/flatbuffers/duc/gdt-symbol.js +25 -0
  257. package/dist/flatbuffers/duc/geometric-point.d.ts +10 -0
  258. package/dist/flatbuffers/duc/geometric-point.js +27 -0
  259. package/dist/flatbuffers/duc/grid-display-type.d.ts +6 -0
  260. package/dist/flatbuffers/duc/grid-display-type.js +9 -0
  261. package/dist/flatbuffers/duc/grid-settings.d.ts +54 -0
  262. package/dist/flatbuffers/duc/grid-settings.js +165 -0
  263. package/dist/flatbuffers/duc/grid-style.d.ts +26 -0
  264. package/dist/flatbuffers/duc/grid-style.js +74 -0
  265. package/dist/flatbuffers/duc/grid-type.d.ts +7 -0
  266. package/dist/flatbuffers/duc/grid-type.js +10 -0
  267. package/dist/flatbuffers/duc/handle-type.d.ts +4 -0
  268. package/dist/flatbuffers/duc/handle-type.js +7 -0
  269. package/dist/flatbuffers/duc/hatch-pattern-line.d.ts +35 -0
  270. package/dist/flatbuffers/duc/hatch-pattern-line.js +93 -0
  271. package/dist/flatbuffers/duc/hatch-style.d.ts +5 -0
  272. package/dist/flatbuffers/duc/hatch-style.js +8 -0
  273. package/dist/flatbuffers/duc/identified-common-style.d.ts +16 -0
  274. package/dist/flatbuffers/duc/identified-common-style.js +44 -0
  275. package/dist/flatbuffers/duc/identified-dimension-style.d.ts +16 -0
  276. package/dist/flatbuffers/duc/identified-dimension-style.js +44 -0
  277. package/dist/flatbuffers/duc/identified-doc-style.d.ts +16 -0
  278. package/dist/flatbuffers/duc/identified-doc-style.js +44 -0
  279. package/dist/flatbuffers/duc/identified-fcfstyle.d.ts +16 -0
  280. package/dist/flatbuffers/duc/identified-fcfstyle.js +44 -0
  281. package/dist/flatbuffers/duc/identified-grid-settings.d.ts +16 -0
  282. package/dist/flatbuffers/duc/identified-grid-settings.js +44 -0
  283. package/dist/flatbuffers/duc/identified-hatch-style.d.ts +16 -0
  284. package/dist/flatbuffers/duc/identified-hatch-style.js +44 -0
  285. package/dist/flatbuffers/duc/identified-leader-style.d.ts +16 -0
  286. package/dist/flatbuffers/duc/identified-leader-style.js +44 -0
  287. package/dist/flatbuffers/duc/identified-snap-settings.d.ts +16 -0
  288. package/dist/flatbuffers/duc/identified-snap-settings.js +44 -0
  289. package/dist/flatbuffers/duc/identified-stack-like-style.d.ts +16 -0
  290. package/dist/flatbuffers/duc/identified-stack-like-style.js +44 -0
  291. package/dist/flatbuffers/duc/identified-table-style.d.ts +16 -0
  292. package/dist/flatbuffers/duc/identified-table-style.js +44 -0
  293. package/dist/flatbuffers/duc/identified-text-style.d.ts +16 -0
  294. package/dist/flatbuffers/duc/identified-text-style.js +44 -0
  295. package/dist/flatbuffers/duc/identified-ucs.d.ts +16 -0
  296. package/dist/flatbuffers/duc/identified-ucs.js +44 -0
  297. package/dist/flatbuffers/duc/identified-view.d.ts +16 -0
  298. package/dist/flatbuffers/duc/identified-view.js +44 -0
  299. package/dist/flatbuffers/duc/identified-viewport-style.d.ts +16 -0
  300. package/dist/flatbuffers/duc/identified-viewport-style.js +44 -0
  301. package/dist/flatbuffers/duc/identified-xray-style.d.ts +16 -0
  302. package/dist/flatbuffers/duc/identified-xray-style.js +44 -0
  303. package/dist/flatbuffers/duc/identifier.d.ts +20 -0
  304. package/dist/flatbuffers/duc/identifier.js +57 -0
  305. package/dist/flatbuffers/duc/image-crop.d.ts +23 -0
  306. package/dist/flatbuffers/duc/image-crop.js +80 -0
  307. package/dist/flatbuffers/duc/image-status.d.ts +5 -0
  308. package/dist/flatbuffers/duc/image-status.js +8 -0
  309. package/dist/flatbuffers/duc/isometric-grid-settings.d.ts +15 -0
  310. package/dist/flatbuffers/duc/isometric-grid-settings.js +48 -0
  311. package/dist/flatbuffers/duc/jsonpatch-operation.d.ts +23 -0
  312. package/dist/flatbuffers/duc/jsonpatch-operation.js +64 -0
  313. package/dist/flatbuffers/duc/layer-snap-filters.d.ts +23 -0
  314. package/dist/flatbuffers/duc/layer-snap-filters.js +76 -0
  315. package/dist/flatbuffers/duc/layer-validation-rules.d.ts +17 -0
  316. package/dist/flatbuffers/duc/layer-validation-rules.js +54 -0
  317. package/dist/flatbuffers/duc/leader-block-content.d.ts +25 -0
  318. package/dist/flatbuffers/duc/leader-block-content.js +85 -0
  319. package/dist/flatbuffers/duc/leader-content-data.d.ts +9 -0
  320. package/dist/flatbuffers/duc/leader-content-data.js +26 -0
  321. package/dist/flatbuffers/duc/leader-content-type.d.ts +4 -0
  322. package/dist/flatbuffers/duc/leader-content-type.js +7 -0
  323. package/dist/flatbuffers/duc/leader-content.d.ts +19 -0
  324. package/dist/flatbuffers/duc/leader-content.js +58 -0
  325. package/dist/flatbuffers/duc/leader-text-block-content.d.ts +14 -0
  326. package/dist/flatbuffers/duc/leader-text-block-content.js +40 -0
  327. package/dist/flatbuffers/duc/line-head.d.ts +17 -0
  328. package/dist/flatbuffers/duc/line-head.js +20 -0
  329. package/dist/flatbuffers/duc/line-spacing-type.d.ts +5 -0
  330. package/dist/flatbuffers/duc/line-spacing-type.js +8 -0
  331. package/dist/flatbuffers/duc/line-spacing.d.ts +16 -0
  332. package/dist/flatbuffers/duc/line-spacing.js +49 -0
  333. package/dist/flatbuffers/duc/linear-unit-system.d.ts +24 -0
  334. package/dist/flatbuffers/duc/linear-unit-system.js +75 -0
  335. package/dist/flatbuffers/duc/margins.d.ts +19 -0
  336. package/dist/flatbuffers/duc/margins.js +64 -0
  337. package/dist/flatbuffers/duc/mark-ellipse-center.d.ts +4 -0
  338. package/dist/flatbuffers/duc/mark-ellipse-center.js +7 -0
  339. package/dist/flatbuffers/duc/material-condition.d.ts +5 -0
  340. package/dist/flatbuffers/duc/material-condition.js +8 -0
  341. package/dist/flatbuffers/duc/object-snap-mode.d.ts +22 -0
  342. package/dist/flatbuffers/duc/object-snap-mode.js +25 -0
  343. package/dist/flatbuffers/duc/paragraph-formatting.d.ts +33 -0
  344. package/dist/flatbuffers/duc/paragraph-formatting.js +106 -0
  345. package/dist/flatbuffers/duc/parametric-source-type.d.ts +4 -0
  346. package/dist/flatbuffers/duc/parametric-source-type.js +7 -0
  347. package/dist/flatbuffers/duc/parametric-source.d.ts +20 -0
  348. package/dist/flatbuffers/duc/parametric-source.js +57 -0
  349. package/dist/flatbuffers/duc/plot-layout.d.ts +14 -0
  350. package/dist/flatbuffers/duc/plot-layout.js +41 -0
  351. package/dist/flatbuffers/duc/point-binding-point.d.ts +15 -0
  352. package/dist/flatbuffers/duc/point-binding-point.js +48 -0
  353. package/dist/flatbuffers/duc/polar-grid-settings.d.ts +17 -0
  354. package/dist/flatbuffers/duc/polar-grid-settings.js +56 -0
  355. package/dist/flatbuffers/duc/polar-tracking-settings.d.ts +29 -0
  356. package/dist/flatbuffers/duc/polar-tracking-settings.js +90 -0
  357. package/dist/flatbuffers/duc/primary-units.d.ts +16 -0
  358. package/dist/flatbuffers/duc/primary-units.js +44 -0
  359. package/dist/flatbuffers/duc/pruning-level.d.ts +5 -0
  360. package/dist/flatbuffers/duc/pruning-level.js +8 -0
  361. package/dist/flatbuffers/duc/snap-marker-settings.d.ts +23 -0
  362. package/dist/flatbuffers/duc/snap-marker-settings.js +79 -0
  363. package/dist/flatbuffers/duc/snap-marker-shape.d.ts +6 -0
  364. package/dist/flatbuffers/duc/snap-marker-shape.js +9 -0
  365. package/dist/flatbuffers/duc/snap-marker-style-entry.d.ts +16 -0
  366. package/dist/flatbuffers/duc/snap-marker-style-entry.js +43 -0
  367. package/dist/flatbuffers/duc/snap-marker-style.d.ts +17 -0
  368. package/dist/flatbuffers/duc/snap-marker-style.js +49 -0
  369. package/dist/flatbuffers/duc/snap-mode.d.ts +4 -0
  370. package/dist/flatbuffers/duc/snap-mode.js +7 -0
  371. package/dist/flatbuffers/duc/snap-override-behavior.d.ts +5 -0
  372. package/dist/flatbuffers/duc/snap-override-behavior.js +8 -0
  373. package/dist/flatbuffers/duc/snap-override.d.ts +17 -0
  374. package/dist/flatbuffers/duc/snap-override.js +49 -0
  375. package/dist/flatbuffers/duc/snap-settings.d.ts +75 -0
  376. package/dist/flatbuffers/duc/snap-settings.js +245 -0
  377. package/dist/flatbuffers/duc/stack-format-properties.d.ts +18 -0
  378. package/dist/flatbuffers/duc/stack-format-properties.js +57 -0
  379. package/dist/flatbuffers/duc/stack-format.d.ts +21 -0
  380. package/dist/flatbuffers/duc/stack-format.js +64 -0
  381. package/dist/flatbuffers/duc/stacked-text-align.d.ts +5 -0
  382. package/dist/flatbuffers/duc/stacked-text-align.js +8 -0
  383. package/dist/flatbuffers/duc/standard-overrides.d.ts +63 -0
  384. package/dist/flatbuffers/duc/standard-overrides.js +162 -0
  385. package/dist/flatbuffers/duc/standard-styles.d.ts +77 -0
  386. package/dist/flatbuffers/duc/standard-styles.js +285 -0
  387. package/dist/flatbuffers/duc/standard-units.d.ts +16 -0
  388. package/dist/flatbuffers/duc/standard-units.js +44 -0
  389. package/dist/flatbuffers/duc/standard-validation.d.ts +16 -0
  390. package/dist/flatbuffers/duc/standard-validation.js +44 -0
  391. package/dist/flatbuffers/duc/standard-view-settings.d.ts +35 -0
  392. package/dist/flatbuffers/duc/standard-view-settings.js +124 -0
  393. package/dist/flatbuffers/duc/standard.d.ts +33 -0
  394. package/dist/flatbuffers/duc/standard.js +90 -0
  395. package/dist/flatbuffers/duc/string-value-entry.d.ts +17 -0
  396. package/dist/flatbuffers/duc/string-value-entry.js +49 -0
  397. package/dist/flatbuffers/duc/stroke-cap.d.ts +5 -0
  398. package/dist/flatbuffers/duc/stroke-cap.js +8 -0
  399. package/dist/flatbuffers/duc/stroke-join.d.ts +5 -0
  400. package/dist/flatbuffers/duc/stroke-join.js +8 -0
  401. package/dist/flatbuffers/duc/stroke-placement.d.ts +5 -0
  402. package/dist/flatbuffers/duc/stroke-placement.js +8 -0
  403. package/dist/flatbuffers/duc/stroke-preference.d.ts +6 -0
  404. package/dist/flatbuffers/duc/stroke-preference.js +9 -0
  405. package/dist/flatbuffers/duc/stroke-side-preference.d.ts +8 -0
  406. package/dist/flatbuffers/duc/stroke-side-preference.js +11 -0
  407. package/dist/flatbuffers/duc/stroke-sides.d.ts +24 -0
  408. package/dist/flatbuffers/duc/stroke-sides.js +67 -0
  409. package/dist/flatbuffers/duc/stroke-style.d.ts +37 -0
  410. package/dist/flatbuffers/duc/stroke-style.js +111 -0
  411. package/dist/flatbuffers/duc/stroke-width.d.ts +5 -0
  412. package/dist/flatbuffers/duc/stroke-width.js +8 -0
  413. package/dist/flatbuffers/duc/table-cell-alignment.d.ts +11 -0
  414. package/dist/flatbuffers/duc/table-cell-alignment.js +14 -0
  415. package/dist/flatbuffers/duc/table-flow-direction.d.ts +4 -0
  416. package/dist/flatbuffers/duc/table-flow-direction.js +7 -0
  417. package/dist/flatbuffers/duc/text-align.d.ts +5 -0
  418. package/dist/flatbuffers/duc/text-align.js +8 -0
  419. package/dist/flatbuffers/duc/text-column.d.ts +15 -0
  420. package/dist/flatbuffers/duc/text-column.js +48 -0
  421. package/dist/flatbuffers/duc/text-field-source-property.d.ts +13 -0
  422. package/dist/flatbuffers/duc/text-field-source-property.js +16 -0
  423. package/dist/flatbuffers/duc/text-field-source-type.d.ts +4 -0
  424. package/dist/flatbuffers/duc/text-field-source-type.js +7 -0
  425. package/dist/flatbuffers/duc/text-flow-direction.d.ts +6 -0
  426. package/dist/flatbuffers/duc/text-flow-direction.js +9 -0
  427. package/dist/flatbuffers/duc/tiling-properties.d.ts +21 -0
  428. package/dist/flatbuffers/duc/tiling-properties.js +75 -0
  429. package/dist/flatbuffers/duc/tolerance-clause.d.ts +27 -0
  430. package/dist/flatbuffers/duc/tolerance-clause.js +84 -0
  431. package/dist/flatbuffers/duc/tolerance-display.d.ts +7 -0
  432. package/dist/flatbuffers/duc/tolerance-display.js +10 -0
  433. package/dist/flatbuffers/duc/tolerance-type.d.ts +5 -0
  434. package/dist/flatbuffers/duc/tolerance-type.js +8 -0
  435. package/dist/flatbuffers/duc/tolerance-zone-type.d.ts +7 -0
  436. package/dist/flatbuffers/duc/tolerance-zone-type.js +10 -0
  437. package/dist/flatbuffers/duc/tracking-line-style.d.ts +26 -0
  438. package/dist/flatbuffers/duc/tracking-line-style.js +74 -0
  439. package/dist/flatbuffers/duc/unit-precision.d.ts +19 -0
  440. package/dist/flatbuffers/duc/unit-precision.js +64 -0
  441. package/dist/flatbuffers/duc/unit-system-base.d.ts +20 -0
  442. package/dist/flatbuffers/duc/unit-system-base.js +65 -0
  443. package/dist/flatbuffers/duc/unit-system.d.ts +4 -0
  444. package/dist/flatbuffers/duc/unit-system.js +7 -0
  445. package/dist/flatbuffers/duc/version-base.d.ts +27 -0
  446. package/dist/flatbuffers/duc/version-base.js +80 -0
  447. package/dist/flatbuffers/duc/version-graph-metadata.d.ts +15 -0
  448. package/dist/flatbuffers/duc/version-graph-metadata.js +48 -0
  449. package/dist/flatbuffers/duc/version-graph.d.ts +31 -0
  450. package/dist/flatbuffers/duc/version-graph.js +94 -0
  451. package/dist/flatbuffers/duc/vertical-align.d.ts +5 -0
  452. package/dist/flatbuffers/duc/vertical-align.js +8 -0
  453. package/dist/flatbuffers/duc/viewport-shade-plot.d.ts +6 -0
  454. package/dist/flatbuffers/duc/viewport-shade-plot.js +9 -0
  455. package/dist/flatbuffers/duc/youtube-states.d.ts +8 -0
  456. package/dist/flatbuffers/duc/youtube-states.js +11 -0
  457. package/dist/flatbuffers/duc.d.ts +227 -0
  458. package/dist/flatbuffers/duc.js +229 -0
  459. package/dist/index.d.ts +8 -0
  460. package/dist/index.js +8 -0
  461. package/dist/legacy/index.d.ts +1 -0
  462. package/dist/legacy/index.js +1 -0
  463. package/dist/legacy/v1/duc/app-state.d.ts +124 -0
  464. package/dist/legacy/v1/duc/app-state.js +388 -0
  465. package/dist/legacy/v1/duc/binary-file-data.d.ts +27 -0
  466. package/dist/legacy/v1/duc/binary-file-data.js +90 -0
  467. package/dist/legacy/v1/duc/binary-files-entry.d.ts +16 -0
  468. package/dist/legacy/v1/duc/binary-files-entry.js +43 -0
  469. package/dist/legacy/v1/duc/binary-files.d.ts +17 -0
  470. package/dist/legacy/v1/duc/binary-files.js +55 -0
  471. package/dist/legacy/v1/duc/binding-point.d.ts +15 -0
  472. package/dist/legacy/v1/duc/binding-point.js +48 -0
  473. package/dist/legacy/v1/duc/bound-element.d.ts +17 -0
  474. package/dist/legacy/v1/duc/bound-element.js +48 -0
  475. package/dist/legacy/v1/duc/duc-block-attribute-details.d.ts +22 -0
  476. package/dist/legacy/v1/duc/duc-block-attribute-details.js +57 -0
  477. package/dist/legacy/v1/duc/duc-block-attribute.d.ts +16 -0
  478. package/dist/legacy/v1/duc/duc-block-attribute.js +43 -0
  479. package/dist/legacy/v1/duc/duc-block-instance-element-override.d.ts +17 -0
  480. package/dist/legacy/v1/duc/duc-block-instance-element-override.js +48 -0
  481. package/dist/legacy/v1/duc/duc-block.d.ts +34 -0
  482. package/dist/legacy/v1/duc/duc-block.js +110 -0
  483. package/dist/legacy/v1/duc/duc-element.d.ts +273 -0
  484. package/dist/legacy/v1/duc/duc-element.js +865 -0
  485. package/dist/legacy/v1/duc/duc-group.d.ts +40 -0
  486. package/dist/legacy/v1/duc/duc-group.js +114 -0
  487. package/dist/legacy/v1/duc/duc-line-reference.d.ts +15 -0
  488. package/dist/legacy/v1/duc/duc-line-reference.js +43 -0
  489. package/dist/legacy/v1/duc/duc-line.d.ts +15 -0
  490. package/dist/legacy/v1/duc/duc-line.js +43 -0
  491. package/dist/legacy/v1/duc/duc-path.d.ts +26 -0
  492. package/dist/legacy/v1/duc/duc-path.js +69 -0
  493. package/dist/legacy/v1/duc/duc-table-cell.d.ts +22 -0
  494. package/dist/legacy/v1/duc/duc-table-cell.js +57 -0
  495. package/dist/legacy/v1/duc/duc-table-column.d.ts +18 -0
  496. package/dist/legacy/v1/duc/duc-table-column.js +50 -0
  497. package/dist/legacy/v1/duc/duc-table-row.d.ts +18 -0
  498. package/dist/legacy/v1/duc/duc-table-row.js +50 -0
  499. package/dist/legacy/v1/duc/duc-table-style-props.d.ts +39 -0
  500. package/dist/legacy/v1/duc/duc-table-style-props.js +114 -0
  501. package/dist/legacy/v1/duc/duc-table-style.d.ts +14 -0
  502. package/dist/legacy/v1/duc/duc-table-style.js +41 -0
  503. package/dist/legacy/v1/duc/element-background.d.ts +14 -0
  504. package/dist/legacy/v1/duc/element-background.js +41 -0
  505. package/dist/legacy/v1/duc/element-content-base.d.ts +22 -0
  506. package/dist/legacy/v1/duc/element-content-base.js +64 -0
  507. package/dist/legacy/v1/duc/element-stroke.d.ts +23 -0
  508. package/dist/legacy/v1/duc/element-stroke.js +66 -0
  509. package/dist/legacy/v1/duc/exported-data-state.d.ts +51 -0
  510. package/dist/legacy/v1/duc/exported-data-state.js +155 -0
  511. package/dist/legacy/v1/duc/image-crop.d.ts +23 -0
  512. package/dist/legacy/v1/duc/image-crop.js +80 -0
  513. package/dist/legacy/v1/duc/linear-element-editor.d.ts +44 -0
  514. package/dist/legacy/v1/duc/linear-element-editor.js +119 -0
  515. package/dist/legacy/v1/duc/point-binding.d.ts +25 -0
  516. package/dist/legacy/v1/duc/point-binding.js +72 -0
  517. package/dist/legacy/v1/duc/point.d.ts +20 -0
  518. package/dist/legacy/v1/duc/point.js +63 -0
  519. package/dist/legacy/v1/duc/pointer-down-state.d.ts +32 -0
  520. package/dist/legacy/v1/duc/pointer-down-state.js +90 -0
  521. package/dist/legacy/v1/duc/renderer-state.d.ts +17 -0
  522. package/dist/legacy/v1/duc/renderer-state.js +54 -0
  523. package/dist/legacy/v1/duc/segment-midpoint-state.d.ts +18 -0
  524. package/dist/legacy/v1/duc/segment-midpoint-state.js +57 -0
  525. package/dist/legacy/v1/duc/simple-point.d.ts +15 -0
  526. package/dist/legacy/v1/duc/simple-point.js +48 -0
  527. package/dist/legacy/v1/duc/stroke-sides.d.ts +23 -0
  528. package/dist/legacy/v1/duc/stroke-sides.js +66 -0
  529. package/dist/legacy/v1/duc/stroke-style.d.ts +31 -0
  530. package/dist/legacy/v1/duc/stroke-style.js +102 -0
  531. package/dist/legacy/v1/duc/tiling-properties.d.ts +21 -0
  532. package/dist/legacy/v1/duc/tiling-properties.js +75 -0
  533. package/dist/legacy/v1/duc.d.ts +35 -0
  534. package/dist/legacy/v1/duc.js +37 -0
  535. package/dist/legacy/v1/index.d.ts +1 -0
  536. package/dist/legacy/v1/index.js +1 -0
  537. package/dist/legacy/v1/parse/index.d.ts +67 -0
  538. package/dist/legacy/v1/parse/index.js +101 -0
  539. package/dist/legacy/v1/parse/parseAppStateFromBinary.d.ts +3 -0
  540. package/dist/legacy/v1/parse/parseAppStateFromBinary.js +139 -0
  541. package/dist/legacy/v1/parse/parseBinaryFilesFromBinary.d.ts +4 -0
  542. package/dist/legacy/v1/parse/parseBinaryFilesFromBinary.js +32 -0
  543. package/dist/legacy/v1/parse/parseBlockFromBinary.d.ts +3 -0
  544. package/dist/legacy/v1/parse/parseBlockFromBinary.js +70 -0
  545. package/dist/legacy/v1/parse/parseElementFromBinary.d.ts +8 -0
  546. package/dist/legacy/v1/parse/parseElementFromBinary.js +387 -0
  547. package/dist/legacy/v1/parse/parseGroupFromBinary.d.ts +4 -0
  548. package/dist/legacy/v1/parse/parseGroupFromBinary.js +36 -0
  549. package/dist/legacy/v1/parse/parseRendererStateFromBinary.d.ts +4 -0
  550. package/dist/legacy/v1/parse/parseRendererStateFromBinary.js +15 -0
  551. package/dist/legacy/v1/serialize/index.d.ts +5 -0
  552. package/dist/legacy/v1/serialize/index.js +81 -0
  553. package/dist/legacy/v1/serialize/serializationUtils.d.ts +17 -0
  554. package/dist/legacy/v1/serialize/serializationUtils.js +27 -0
  555. package/dist/legacy/v1/serialize/serializeAppStateFromDuc.d.ts +4 -0
  556. package/dist/legacy/v1/serialize/serializeAppStateFromDuc.js +145 -0
  557. package/dist/legacy/v1/serialize/serializeBinaryFilesFromDuc.d.ts +4 -0
  558. package/dist/legacy/v1/serialize/serializeBinaryFilesFromDuc.js +46 -0
  559. package/dist/legacy/v1/serialize/serializeBlockFromDuc.d.ts +3 -0
  560. package/dist/legacy/v1/serialize/serializeBlockFromDuc.js +60 -0
  561. package/dist/legacy/v1/serialize/serializeElementFromDuc.d.ts +8 -0
  562. package/dist/legacy/v1/serialize/serializeElementFromDuc.js +435 -0
  563. package/dist/legacy/v1/serialize/serializeGroupFromDuc.d.ts +3 -0
  564. package/dist/legacy/v1/serialize/serializeGroupFromDuc.js +37 -0
  565. package/dist/legacy/v1/serialize/serializeRendererStateFromDuc.d.ts +4 -0
  566. package/dist/legacy/v1/serialize/serializeRendererStateFromDuc.js +7 -0
  567. package/dist/legacy/v1/types/elements/index.d.ts +480 -0
  568. package/dist/legacy/v1/types/elements/index.js +1 -0
  569. package/dist/legacy/v1/types/elements/typeChecks.d.ts +40 -0
  570. package/dist/legacy/v1/types/elements/typeChecks.js +179 -0
  571. package/dist/legacy/v1/types/geometryTypes.d.ts +78 -0
  572. package/dist/legacy/v1/types/geometryTypes.js +1 -0
  573. package/dist/legacy/v1/types/index.d.ts +496 -0
  574. package/dist/legacy/v1/types/index.js +1 -0
  575. package/dist/legacy/v1/types/utility-types.d.ts +31 -0
  576. package/dist/legacy/v1/types/utility-types.js +1 -0
  577. package/dist/legacy/v1/utils/bounds.d.ts +76 -0
  578. package/dist/legacy/v1/utils/bounds.js +415 -0
  579. package/dist/legacy/v1/utils/constants.d.ts +370 -0
  580. package/dist/legacy/v1/utils/constants.js +571 -0
  581. package/dist/legacy/v1/utils/elements/index.d.ts +26 -0
  582. package/dist/legacy/v1/utils/elements/index.js +108 -0
  583. package/dist/legacy/v1/utils/elements/linearElement.d.ts +133 -0
  584. package/dist/legacy/v1/utils/elements/linearElement.js +544 -0
  585. package/dist/legacy/v1/utils/elements/textElement.d.ts +89 -0
  586. package/dist/legacy/v1/utils/elements/textElement.js +563 -0
  587. package/dist/legacy/v1/utils/index.d.ts +26 -0
  588. package/dist/legacy/v1/utils/index.js +40 -0
  589. package/dist/legacy/v1/utils/math/algebra/ga.d.ts +63 -0
  590. package/dist/legacy/v1/utils/math/algebra/ga.js +268 -0
  591. package/dist/legacy/v1/utils/math/algebra/gadirections.d.ts +9 -0
  592. package/dist/legacy/v1/utils/math/algebra/gadirections.js +18 -0
  593. package/dist/legacy/v1/utils/math/algebra/galines.d.ts +23 -0
  594. package/dist/legacy/v1/utils/math/algebra/galines.js +32 -0
  595. package/dist/legacy/v1/utils/math/algebra/gapoints.d.ts +8 -0
  596. package/dist/legacy/v1/utils/math/algebra/gapoints.js +30 -0
  597. package/dist/legacy/v1/utils/math/algebra/gatransforms.d.ts +10 -0
  598. package/dist/legacy/v1/utils/math/algebra/gatransforms.js +23 -0
  599. package/dist/legacy/v1/utils/math/bbox.d.ts +10 -0
  600. package/dist/legacy/v1/utils/math/bbox.js +42 -0
  601. package/dist/legacy/v1/utils/math/geometry.d.ts +102 -0
  602. package/dist/legacy/v1/utils/math/geometry.js +790 -0
  603. package/dist/legacy/v1/utils/math/index.d.ts +309 -0
  604. package/dist/legacy/v1/utils/math/index.js +1140 -0
  605. package/dist/legacy/v1/utils/math/random.d.ts +4 -0
  606. package/dist/legacy/v1/utils/math/random.js +25 -0
  607. package/dist/legacy/v1/utils/measurements.d.ts +33 -0
  608. package/dist/legacy/v1/utils/measurements.js +65 -0
  609. package/dist/legacy/v1/utils/normalize.d.ts +14 -0
  610. package/dist/legacy/v1/utils/normalize.js +49 -0
  611. package/dist/legacy/v1/utils/restore.d.ts +197 -0
  612. package/dist/legacy/v1/utils/restore.js +1255 -0
  613. package/dist/legacy/v1/utils/scopes.d.ts +260 -0
  614. package/dist/legacy/v1/utils/scopes.js +661 -0
  615. package/dist/legacy/v1/utils/standards.d.ts +12 -0
  616. package/dist/legacy/v1/utils/standards.js +10 -0
  617. package/dist/legacy/v1/utils/state/index.d.ts +2 -0
  618. package/dist/legacy/v1/utils/state/index.js +68 -0
  619. package/dist/legacy/v1/utils/url.d.ts +8 -0
  620. package/dist/legacy/v1/utils/url.js +33 -0
  621. package/dist/parse.d.ts +54 -0
  622. package/dist/parse.js +1318 -0
  623. package/dist/restore/index.d.ts +3 -0
  624. package/dist/restore/index.js +3 -0
  625. package/dist/restore/restoreDataState.d.ts +191 -0
  626. package/dist/restore/restoreDataState.js +716 -0
  627. package/dist/restore/restoreElements.d.ts +34 -0
  628. package/dist/restore/restoreElements.js +1281 -0
  629. package/dist/restore/restoreStandards.d.ts +8 -0
  630. package/dist/restore/restoreStandards.js +224 -0
  631. package/dist/serialize.d.ts +3 -0
  632. package/dist/serialize.js +2465 -0
  633. package/dist/technical/index.d.ts +3 -0
  634. package/dist/technical/index.js +3 -0
  635. package/dist/technical/measurements.d.ts +31 -0
  636. package/dist/technical/measurements.js +64 -0
  637. package/dist/technical/scopes.d.ts +261 -0
  638. package/dist/technical/scopes.js +661 -0
  639. package/dist/technical/standards.d.ts +124 -0
  640. package/dist/technical/standards.js +10 -0
  641. package/dist/types/elements/index.d.ts +1356 -0
  642. package/dist/types/elements/index.js +1 -0
  643. package/dist/types/elements/typeChecks.d.ts +40 -0
  644. package/dist/types/elements/typeChecks.js +188 -0
  645. package/dist/types/geometryTypes.d.ts +90 -0
  646. package/dist/types/geometryTypes.js +1 -0
  647. package/dist/types/index.d.ts +591 -0
  648. package/dist/types/index.js +3 -0
  649. package/dist/types/utility-types.d.ts +31 -0
  650. package/dist/types/utility-types.js +1 -0
  651. package/dist/utils/bounds.d.ts +75 -0
  652. package/dist/utils/bounds.js +414 -0
  653. package/dist/utils/constants.d.ts +288 -0
  654. package/dist/utils/constants.js +529 -0
  655. package/dist/utils/elements/frameElement.d.ts +4 -0
  656. package/dist/utils/elements/frameElement.js +16 -0
  657. package/dist/utils/elements/freedrawElement.d.ts +2 -0
  658. package/dist/utils/elements/freedrawElement.js +46 -0
  659. package/dist/utils/elements/index.d.ts +51 -0
  660. package/dist/utils/elements/index.js +215 -0
  661. package/dist/utils/elements/linearElement.d.ts +53 -0
  662. package/dist/utils/elements/linearElement.js +539 -0
  663. package/dist/utils/elements/newElement.d.ts +72 -0
  664. package/dist/utils/elements/newElement.js +268 -0
  665. package/dist/utils/elements/textElement.d.ts +89 -0
  666. package/dist/utils/elements/textElement.js +565 -0
  667. package/dist/utils/elements/viewportElement.d.ts +6 -0
  668. package/dist/utils/elements/viewportElement.js +9 -0
  669. package/dist/utils/filebyte.d.ts +39 -0
  670. package/dist/utils/filebyte.js +117 -0
  671. package/dist/utils/functionCodec.d.ts +5 -0
  672. package/dist/utils/functionCodec.js +86 -0
  673. package/dist/utils/index.d.ts +32 -0
  674. package/dist/utils/index.js +53 -0
  675. package/dist/utils/math/algebra/ga.d.ts +63 -0
  676. package/dist/utils/math/algebra/ga.js +268 -0
  677. package/dist/utils/math/algebra/gadirections.d.ts +9 -0
  678. package/dist/utils/math/algebra/gadirections.js +18 -0
  679. package/dist/utils/math/algebra/galines.d.ts +23 -0
  680. package/dist/utils/math/algebra/galines.js +32 -0
  681. package/dist/utils/math/algebra/gapoints.d.ts +8 -0
  682. package/dist/utils/math/algebra/gapoints.js +30 -0
  683. package/dist/utils/math/algebra/gatransforms.d.ts +10 -0
  684. package/dist/utils/math/algebra/gatransforms.js +23 -0
  685. package/dist/utils/math/algebra/index.d.ts +5 -0
  686. package/dist/utils/math/algebra/index.js +5 -0
  687. package/dist/utils/math/bbox.d.ts +10 -0
  688. package/dist/utils/math/bbox.js +42 -0
  689. package/dist/utils/math/geometry.d.ts +102 -0
  690. package/dist/utils/math/geometry.js +790 -0
  691. package/dist/utils/math/index.d.ts +323 -0
  692. package/dist/utils/math/index.js +1188 -0
  693. package/dist/utils/math/random.d.ts +4 -0
  694. package/dist/utils/math/random.js +25 -0
  695. package/dist/utils/normalize.d.ts +14 -0
  696. package/dist/utils/normalize.js +49 -0
  697. package/dist/utils/shape.d.ts +15 -0
  698. package/dist/utils/shape.js +254 -0
  699. package/dist/utils/state/grid.d.ts +7 -0
  700. package/dist/utils/state/grid.js +25 -0
  701. package/dist/utils/state/index.d.ts +9 -0
  702. package/dist/utils/state/index.js +131 -0
  703. package/dist/utils/url.d.ts +8 -0
  704. package/dist/utils/url.js +33 -0
  705. package/dist/utils/version.d.ts +1 -0
  706. package/dist/utils/version.js +1 -0
  707. package/package.json +79 -0
@@ -0,0 +1,1281 @@
1
+ import { isValidBezierMirroringValue, isValidBlendingValue, isValidBoolean, isValidBoolean as isValidBooleanValue, // Renaming to avoid conflict
2
+ isValidColor, isValidDucHead, isValidEnumValue, isValidFunction, isValidImageScaleValue, isValidImageStatusValue, isValidPercentageValue, isValidPolygonSides, isValidRadianValue, isValidString, isValidTextAlignValue, isValidVerticalAlignValue, restoreDucStackProperties, restorePrecisionValue, validateBackground, validateStroke } from "ducjs/restore/restoreDataState";
3
+ import { getPrecisionValueFromRaw, getPrecisionValueFromScoped, getScaledZoomValueForScope, getScopedBezierPointFromDucPoint, getScopedZoomValue, NEUTRAL_SCOPE, ScaleFactors, } from "ducjs/technical/scopes";
4
+ import { isElbowArrow, isLinearElement, isTextElement, } from "ducjs/types";
5
+ import { arrayToMap, bumpVersion, DEFAULT_ELEMENT_PROPS, DEFAULT_ELLIPSE_ELEMENT, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FREEDRAW_ELEMENT, detectLineHeight, FONT_FAMILY, getContainerElement, getDefaultLocalState, getDefaultTableData, getNormalizedDimensions, getNormalizedPoints, getNormalizedZoom, getSizeFromPoints, getUpdatedTimestamp, isFiniteNumber, isInvisiblySmallElement, LINE_CONFIRM_THRESHOLD, mergeOverlappingPoints, migratePoints, normalizeFixedPoint, normalizeLink, randomId, refreshTextDimensions, validateClosedPath, } from "ducjs/utils";
6
+ import { AXIS, BLOCK_ATTACHMENT, COLUMN_TYPE, DATUM_BRACKET_STYLE, DIMENSION_FIT_RULE, DIMENSION_TEXT_PLACEMENT, DIMENSION_TYPE, GDT_SYMBOL, LEADER_CONTENT_TYPE, LINE_SPACING_TYPE, MARK_ELLIPSE_CENTER, MATERIAL_CONDITION, PARAMETRIC_SOURCE_TYPE, STACKED_TEXT_ALIGN, TABLE_CELL_ALIGNMENT, TABLE_FLOW_DIRECTION, TEXT_FLOW_DIRECTION, TOLERANCE_DISPLAY, TOLERANCE_ZONE_TYPE, VERTICAL_ALIGN, VIEWPORT_SHADE_PLOT, } from "ducjs/flatbuffers/duc";
7
+ import tinycolor from "tinycolor2";
8
+ const restoreElementWithProperties = (element, extra, localState, globalState) => {
9
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
10
+ const _element = Object.assign(Object.assign({}, element), extra);
11
+ const elementScope = isValidElementScopeValue(_element.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
12
+ const currentScope = isValidElementScopeValue(localState === null || localState === void 0 ? void 0 : localState.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
13
+ // Handle legacy stroke properties first
14
+ let stroke = [DEFAULT_ELEMENT_PROPS.stroke];
15
+ if (_element.strokeColor) {
16
+ // Legacy strokeColor property
17
+ stroke = [
18
+ Object.assign(Object.assign({}, DEFAULT_ELEMENT_PROPS.stroke), { content: validateDeprecatedElementContent(_element.strokeColor, DEFAULT_ELEMENT_PROPS.stroke.content), width: restorePrecisionValue(_element.strokeWidth ||
19
+ DEFAULT_ELEMENT_PROPS.stroke.width.value, elementScope, currentScope, DEFAULT_ELEMENT_PROPS.stroke.width.value) }),
20
+ ];
21
+ }
22
+ else if (_element.stroke) {
23
+ // New stroke array property
24
+ stroke = _element.stroke.map((s) => validateStroke(s, elementScope, currentScope));
25
+ }
26
+ // Handle legacy background properties
27
+ let background = [DEFAULT_ELEMENT_PROPS.background];
28
+ if (_element.backgroundColor) {
29
+ // Legacy backgroundColor property
30
+ background = [
31
+ Object.assign(Object.assign({}, DEFAULT_ELEMENT_PROPS.background), { content: validateDeprecatedElementContent(_element.backgroundColor, DEFAULT_ELEMENT_PROPS.background.content) }),
32
+ ];
33
+ }
34
+ else if (_element.background) {
35
+ // New background array property
36
+ background = _element.background.map((bg) => validateBackground(bg));
37
+ }
38
+ const base = {
39
+ id: _element.id || randomId(),
40
+ version: _element.version || 1,
41
+ versionNonce: (_a = _element.versionNonce) !== null && _a !== void 0 ? _a : 0,
42
+ index: (_b = _element.index) !== null && _b !== void 0 ? _b : null,
43
+ isDeleted: isValidBooleanValue(_element.isDeleted, false),
44
+ blending: isValidBlendingValue(_element.blending),
45
+ stroke,
46
+ background,
47
+ opacity: isValidPercentageValue(_element.opacity, DEFAULT_ELEMENT_PROPS.opacity),
48
+ angle: isValidRadianValue(_element.angle, DEFAULT_ELEMENT_PROPS.angle),
49
+ x: restorePrecisionValue(_element.x, elementScope, currentScope, 0),
50
+ y: restorePrecisionValue(_element.y, elementScope, currentScope, 0),
51
+ scope: elementScope,
52
+ label: (_c = _element.label) !== null && _c !== void 0 ? _c : "Lost Element Label",
53
+ isVisible: isValidBoolean(_element.isVisible, DEFAULT_ELEMENT_PROPS.isVisible),
54
+ isPlot: isValidBoolean(_element.isPlot, DEFAULT_ELEMENT_PROPS.isPlot),
55
+ isAnnotative: isValidBoolean(_element.isAnnotative, DEFAULT_ELEMENT_PROPS.isAnnotative),
56
+ layerId: (_d = _element.layerId) !== null && _d !== void 0 ? _d : null,
57
+ regionIds: Array.isArray(_element.regionIds) ? _element.regionIds : [],
58
+ width: restorePrecisionValue(_element.width, elementScope, currentScope, 0),
59
+ height: restorePrecisionValue(_element.height, elementScope, currentScope, 0),
60
+ seed: (_e = _element.seed) !== null && _e !== void 0 ? _e : 1,
61
+ groupIds: (_f = _element.groupIds) !== null && _f !== void 0 ? _f : [],
62
+ frameId: (_g = _element.frameId) !== null && _g !== void 0 ? _g : null,
63
+ roundness: restorePrecisionValue(_element.roundness, elementScope, currentScope, DEFAULT_ELEMENT_PROPS.roundness.value),
64
+ boundElements: (_h = _element.boundElements) !== null && _h !== void 0 ? _h : undefined,
65
+ updated: (_j = _element.updated) !== null && _j !== void 0 ? _j : getUpdatedTimestamp(),
66
+ link: _element.link ? normalizeLink(_element.link) : undefined,
67
+ locked: isValidBooleanValue(_element.locked, false),
68
+ description: (_k = _element.description) !== null && _k !== void 0 ? _k : undefined,
69
+ };
70
+ if ("customData" in element || "customData" in extra) {
71
+ base.customData = _element.customData;
72
+ }
73
+ const normalizedRaw = getNormalizedDimensions(base);
74
+ const normalized = {
75
+ x: restorePrecisionValue(normalizedRaw.x, elementScope, currentScope, 0, true),
76
+ y: restorePrecisionValue(normalizedRaw.y, elementScope, currentScope, 0, true),
77
+ width: restorePrecisionValue(normalizedRaw.width, elementScope, currentScope, 0, true),
78
+ height: restorePrecisionValue(normalizedRaw.height, elementScope, currentScope, 0, true),
79
+ };
80
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, _element), base), normalized), { type: _element.type });
81
+ };
82
+ const restoreElement = (element, currentScope, restoredBlocks, localState, globalState) => {
83
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
84
+ // Migration: convert deprecated 'diamond' to 'polygon' with 4 sides
85
+ if (element.type === "diamond") {
86
+ const migrated = Object.assign(Object.assign({}, element), { type: "polygon", sides: 4 });
87
+ return restoreElement(migrated, currentScope, restoredBlocks, localState);
88
+ }
89
+ switch (element.type) {
90
+ case "text": {
91
+ let fontSize = element.fontSize;
92
+ let fontFamily = element.fontFamily;
93
+ if ("font" in element) {
94
+ try {
95
+ const fontParts = String(element.font).split(" ");
96
+ if (fontParts.length === 2) {
97
+ const [fontSizeStr, fontFamilyName] = fontParts;
98
+ const parsedSize = parseFloat(fontSizeStr);
99
+ if (!isNaN(parsedSize) && Number.isFinite(parsedSize)) {
100
+ fontSize = parsedSize;
101
+ fontFamily = getFontFamilyByName(fontFamilyName);
102
+ }
103
+ }
104
+ }
105
+ catch (error) {
106
+ console.error("Failed to parse legacy font value:", error);
107
+ fontSize = DEFAULT_FONT_SIZE;
108
+ fontFamily = DEFAULT_FONT_FAMILY;
109
+ }
110
+ }
111
+ const text = (typeof element.text === "string" && element.text) || "";
112
+ const lineHeight = (element.lineHeight && Number.isFinite(element.lineHeight)
113
+ ? element.lineHeight
114
+ : detectLineHeight(element));
115
+ const restoredLineSpacing = restoreLineSpacing(element.lineSpacing, lineHeight, currentScope);
116
+ const textElementScope = isValidElementScopeValue(element.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
117
+ const finalFontSize = restorePrecisionValue(fontSize, textElementScope, currentScope, DEFAULT_FONT_SIZE);
118
+ const restoredTextElement = restoreElementWithProperties(element, {
119
+ // DucTextElement specific
120
+ text,
121
+ dynamic: restoreTextDynamicParts(element.dynamic),
122
+ autoResize: isValidBooleanValue(element.autoResize, true),
123
+ containerId: (_a = element.containerId) !== null && _a !== void 0 ? _a : null,
124
+ originalText: element.originalText || text,
125
+ // DucTextStyle specific
126
+ isLtr: isValidBooleanValue(element.isLtr, true),
127
+ fontFamily,
128
+ bigFontFamily: isValidString(element.bigFontFamily, "sans-serif"),
129
+ textAlign: isValidTextAlignValue(element.textAlign),
130
+ verticalAlign: isValidVerticalAlignValue(element.verticalAlign),
131
+ lineHeight: lineHeight,
132
+ lineSpacing: restoredLineSpacing,
133
+ obliqueAngle: isValidRadianValue(element.obliqueAngle, 0),
134
+ fontSize: finalFontSize,
135
+ paperTextHeight: element.paperTextHeight
136
+ ? restorePrecisionValue(element.paperTextHeight, textElementScope, currentScope)
137
+ : undefined,
138
+ widthFactor: typeof element.widthFactor === "number"
139
+ ? element.widthFactor
140
+ : 1,
141
+ isUpsideDown: isValidBooleanValue(element.isUpsideDown, false),
142
+ isBackwards: isValidBooleanValue(element.isBackwards, false),
143
+ }, localState);
144
+ // if empty text, mark as deleted. We keep in array
145
+ // for data integrity purposes (collab etc.)
146
+ if (!text && !isValidBooleanValue(element.isDeleted, false)) {
147
+ element = Object.assign(Object.assign({}, element), { originalText: text, isDeleted: true });
148
+ element = bumpVersion(element);
149
+ }
150
+ return restoredTextElement;
151
+ }
152
+ case "freedraw": {
153
+ const elementScope = isValidElementScopeValue(element.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
154
+ const points = restoreElementPoints({
155
+ points: element.points,
156
+ x: element.x,
157
+ y: element.y,
158
+ width: element.width,
159
+ height: element.height,
160
+ elementScope,
161
+ currentScope,
162
+ });
163
+ return restoreElementWithProperties(element, {
164
+ points,
165
+ size: restorePrecisionValue(element.size, elementScope, currentScope, DEFAULT_FREEDRAW_ELEMENT.size),
166
+ lastCommittedPoint: element.lastCommittedPoint
167
+ ? restorePoint(element.lastCommittedPoint, elementScope, currentScope)
168
+ : null,
169
+ simulatePressure: isValidBoolean(element.simulatePressure, false),
170
+ pressures: Array.isArray(element.pressures) ? element.pressures : [],
171
+ thinning: isValidPercentageValue(element.thinning, DEFAULT_FREEDRAW_ELEMENT.thinning, true),
172
+ smoothing: isValidPercentageValue(element.smoothing, DEFAULT_FREEDRAW_ELEMENT.smoothing),
173
+ streamline: isValidPercentageValue(element.streamline, DEFAULT_FREEDRAW_ELEMENT.streamline),
174
+ easing: isValidFreeDrawEasingValue(element.easing),
175
+ svgPath: isValidString(element.svgPath) || null,
176
+ start: restoreFreeDrawEnds(element.start),
177
+ end: restoreFreeDrawEnds(element.end),
178
+ }, localState);
179
+ }
180
+ case "image":
181
+ return restoreElementWithProperties(element, {
182
+ status: isValidImageStatusValue(element.status),
183
+ fileId: element.fileId,
184
+ scaleFlip: isValidImageScaleValue(element.scaleFlip),
185
+ crop: element.crop || null,
186
+ filter: element.filter || null,
187
+ }, localState);
188
+ case "line": {
189
+ // Don't normalize points if there are bindings
190
+ const hasBindings = !!(element.startBinding || element.endBinding);
191
+ const elementScope = isValidElementScopeValue(element.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
192
+ const { points, lines } = restoreLinearElementPointsAndLines({
193
+ points: element.points,
194
+ lines: element.lines,
195
+ x: element.x,
196
+ y: element.y,
197
+ width: element.width,
198
+ height: element.height,
199
+ elementScope,
200
+ currentScope,
201
+ skipNormalization: hasBindings,
202
+ });
203
+ const isEditing = false; // TODO: Handle editingLinearElement properly
204
+ let finalPoints = points;
205
+ // Ensure we have at least 2 points for visibility check
206
+ if (finalPoints.length < 2 && !isEditing) {
207
+ const elementWidth = restorePrecisionValue(element.width, elementScope, currentScope, 0);
208
+ const elementHeight = restorePrecisionValue(element.height, elementScope, currentScope, 0);
209
+ finalPoints = [
210
+ {
211
+ x: getPrecisionValueFromRaw(0, elementScope, currentScope),
212
+ y: getPrecisionValueFromRaw(0, elementScope, currentScope),
213
+ mirroring: undefined,
214
+ },
215
+ {
216
+ x: elementWidth,
217
+ y: elementHeight,
218
+ mirroring: undefined,
219
+ },
220
+ ];
221
+ }
222
+ // Handle bindings, with special case for head-only bindings
223
+ const startBinding = element.startBinding;
224
+ const endBinding = element.endBinding;
225
+ // Process bindings
226
+ const processedStartBinding = startBinding &&
227
+ startBinding.head !== undefined &&
228
+ (!startBinding.elementId || startBinding.elementId === "")
229
+ ? createHeadOnlyBinding(startBinding.head, restoredBlocks, currentScope)
230
+ : startBinding
231
+ ? repairBinding(element, startBinding, currentScope, restoredBlocks)
232
+ : null;
233
+ const processedEndBinding = endBinding &&
234
+ endBinding.head !== undefined &&
235
+ (!endBinding.elementId || endBinding.elementId === "")
236
+ ? createHeadOnlyBinding(endBinding.head, restoredBlocks, currentScope)
237
+ : endBinding
238
+ ? repairBinding(element, endBinding, currentScope, restoredBlocks)
239
+ : null;
240
+ // Create the base restored element
241
+ const sizeFromPoints = !hasBindings &&
242
+ getSizeFromPoints(finalPoints.map(getScopedBezierPointFromDucPoint));
243
+ let restoredElement = restoreElementWithProperties(element, Object.assign({ points: finalPoints, lines, lastCommittedPoint: element.lastCommittedPoint
244
+ ? restorePoint(element.lastCommittedPoint, element.scope, currentScope)
245
+ : null, startBinding: processedStartBinding, wipeoutBelow: isValidBooleanValue(element.wipeoutBelow, false), endBinding: processedEndBinding, x: element.x, y: element.y }, (!sizeFromPoints
246
+ ? {}
247
+ : {
248
+ width: getPrecisionValueFromScoped(sizeFromPoints.width, element.scope, currentScope),
249
+ height: getPrecisionValueFromScoped(sizeFromPoints.height, element.scope, currentScope),
250
+ })), localState);
251
+ const { points: updatedPoints, lines: updatedLines } = mergeOverlappingPoints(finalPoints, lines, LINE_CONFIRM_THRESHOLD);
252
+ restoredElement = Object.assign(Object.assign({}, restoredElement), { points: updatedPoints, lines: updatedLines });
253
+ // Validate path overrides after we have the final points and lines
254
+ const validatedPathOverrides = validatePathOverrides(element.pathOverrides, restoredElement, elementScope, currentScope);
255
+ return Object.assign(Object.assign({}, restoredElement), { pathOverrides: validatedPathOverrides });
256
+ }
257
+ case "arrow": {
258
+ // since arrow is deprecated, we convert it to line
259
+ return restoreElement(Object.assign(Object.assign({}, element), { type: "line", wipeoutBelow: false }), currentScope, restoredBlocks, localState);
260
+ }
261
+ case "ellipse": {
262
+ const ratio = isValidPercentageValue(element.ratio, DEFAULT_ELLIPSE_ELEMENT.ratio);
263
+ const startAngle = isValidCutAngleValue(element.startAngle, DEFAULT_ELLIPSE_ELEMENT.startAngle);
264
+ const endAngle = isValidCutAngleValue(element.endAngle, DEFAULT_ELLIPSE_ELEMENT.endAngle);
265
+ const showAuxCrosshair = (_b = element.showAuxCrosshair) !== null && _b !== void 0 ? _b : DEFAULT_ELLIPSE_ELEMENT.showAuxCrosshair;
266
+ return restoreElementWithProperties(element, {
267
+ ratio,
268
+ startAngle,
269
+ endAngle,
270
+ showAuxCrosshair,
271
+ }, localState);
272
+ }
273
+ case "rectangle":
274
+ case "embeddable":
275
+ return restoreElementWithProperties(element, {}, localState);
276
+ case "polygon": {
277
+ const sides = isValidPolygonSides(element.sides);
278
+ return restoreElementWithProperties(Object.assign(Object.assign({}, element), { sides }), {}, localState);
279
+ }
280
+ // Stack-like elements
281
+ case "frame": {
282
+ const frameElement = element;
283
+ return restoreElementWithProperties(frameElement, Object.assign({}, restoreStackElementProperties(frameElement, currentScope)), localState);
284
+ }
285
+ case "plot": {
286
+ const plotElement = element;
287
+ const elementScope = isValidElementScopeValue(plotElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
288
+ // Restore base stack element properties (label, visibility, etc.)
289
+ const stackProperties = restoreStackElementProperties(plotElement, currentScope);
290
+ // Restore layout-specific properties
291
+ const layout = {
292
+ margins: {
293
+ top: restorePrecisionValue((_d = (_c = plotElement.layout) === null || _c === void 0 ? void 0 : _c.margins) === null || _d === void 0 ? void 0 : _d.top, elementScope, currentScope, 0),
294
+ right: restorePrecisionValue((_f = (_e = plotElement.layout) === null || _e === void 0 ? void 0 : _e.margins) === null || _f === void 0 ? void 0 : _f.right, elementScope, currentScope, 0),
295
+ bottom: restorePrecisionValue((_h = (_g = plotElement.layout) === null || _g === void 0 ? void 0 : _g.margins) === null || _h === void 0 ? void 0 : _h.bottom, elementScope, currentScope, 0),
296
+ left: restorePrecisionValue((_k = (_j = plotElement.layout) === null || _j === void 0 ? void 0 : _j.margins) === null || _k === void 0 ? void 0 : _k.left, elementScope, currentScope, 0),
297
+ },
298
+ };
299
+ return restoreElementWithProperties(plotElement, Object.assign(Object.assign({}, stackProperties), { layout }), localState, globalState);
300
+ }
301
+ case "viewport": {
302
+ const viewportElement = element;
303
+ const elementScope = isValidElementScopeValue(viewportElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
304
+ // A viewport has both linear and stack properties
305
+ const { points, lines } = restoreLinearElementPointsAndLines({
306
+ points: viewportElement.points,
307
+ lines: viewportElement.lines,
308
+ x: viewportElement.x,
309
+ y: viewportElement.y,
310
+ width: viewportElement.width,
311
+ height: viewportElement.height,
312
+ elementScope,
313
+ currentScope,
314
+ skipNormalization: false, // Viewports are typically non-binding polygons
315
+ });
316
+ const stackProperties = restoreStackElementProperties(viewportElement, currentScope);
317
+ const defaults = getDefaultLocalState();
318
+ const zoomValue = getNormalizedZoom(isFiniteNumber((_l = localState === null || localState === void 0 ? void 0 : localState.zoom) === null || _l === void 0 ? void 0 : _l.value)
319
+ ? localState.zoom.value
320
+ : defaults.zoom.value);
321
+ const scopedZoom = getScopedZoomValue(zoomValue, currentScope);
322
+ const view = {
323
+ scrollX: restorePrecisionValue((_m = viewportElement.view) === null || _m === void 0 ? void 0 : _m.scrollX, NEUTRAL_SCOPE, currentScope, 0),
324
+ scrollY: restorePrecisionValue((_o = viewportElement.view) === null || _o === void 0 ? void 0 : _o.scrollY, NEUTRAL_SCOPE, currentScope, 0),
325
+ zoom: {
326
+ value: zoomValue,
327
+ scoped: scopedZoom,
328
+ scaled: getScaledZoomValueForScope(scopedZoom, currentScope),
329
+ },
330
+ twistAngle: isValidRadianValue((_p = viewportElement.view) === null || _p === void 0 ? void 0 : _p.twistAngle, 0),
331
+ centerPoint: restorePoint((_q = viewportElement.view) === null || _q === void 0 ? void 0 : _q.centerPoint, NEUTRAL_SCOPE, currentScope), // Assuming centerPoint is always present
332
+ scope: isValidElementScopeValue((_r = viewportElement.view) === null || _r === void 0 ? void 0 : _r.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope),
333
+ };
334
+ return restoreElementWithProperties(viewportElement, Object.assign(Object.assign({}, stackProperties), { points,
335
+ lines,
336
+ view, scale: (typeof viewportElement.scale === "number"
337
+ ? viewportElement.scale
338
+ : 1), shadePlot: isValidEnumValue(viewportElement.shadePlot, VIEWPORT_SHADE_PLOT, VIEWPORT_SHADE_PLOT.AS_DISPLAYED), frozenGroupIds: Array.isArray(viewportElement.frozenGroupIds)
339
+ ? viewportElement.frozenGroupIds
340
+ : [],
341
+ // viewport-specific style
342
+ scaleIndicatorVisible: isValidBoolean(viewportElement.scaleIndicatorVisible, true) }), localState, globalState);
343
+ }
344
+ // Other elements
345
+ case "pdf":
346
+ return restoreElementWithProperties(element, { fileId: isValidString(element.fileId) || null }, localState);
347
+ case "mermaid":
348
+ return restoreElementWithProperties(element, {
349
+ source: isValidString(element.source),
350
+ theme: isValidString(element.theme) || undefined,
351
+ svgPath: isValidString(element.svgPath) || null,
352
+ }, localState);
353
+ // Complex elements requiring specific restore logic
354
+ case "table": {
355
+ const tableElement = element;
356
+ const defaultData = getDefaultTableData(currentScope);
357
+ return restoreElementWithProperties(tableElement, {
358
+ columnOrder: Array.isArray(tableElement.columnOrder)
359
+ ? tableElement.columnOrder
360
+ : defaultData.columnOrder,
361
+ rowOrder: Array.isArray(tableElement.rowOrder)
362
+ ? tableElement.rowOrder
363
+ : defaultData.rowOrder,
364
+ columns: restoreTableColumns(tableElement.columns, currentScope, defaultData.columns),
365
+ rows: restoreTableRows(tableElement.rows, currentScope, defaultData.rows),
366
+ cells: restoreTableCells(tableElement.cells, defaultData.cells),
367
+ headerRowCount: typeof tableElement.headerRowCount === "number"
368
+ ? tableElement.headerRowCount
369
+ : defaultData.headerRowCount,
370
+ autoSize: tableElement.autoSize || defaultData.autoSize,
371
+ // DucTableStyle properties
372
+ flowDirection: (Object.values(TABLE_FLOW_DIRECTION)).includes(tableElement.flowDirection)
373
+ ? tableElement.flowDirection
374
+ : defaultData.flowDirection,
375
+ headerRowStyle: restoreTableCellStyle(tableElement.headerRowStyle, currentScope, defaultData.headerRowStyle),
376
+ dataRowStyle: restoreTableCellStyle(tableElement.dataRowStyle, currentScope, defaultData.dataRowStyle),
377
+ dataColumnStyle: restoreTableCellStyle(tableElement.dataColumnStyle, currentScope, defaultData.dataColumnStyle),
378
+ }, localState);
379
+ }
380
+ case "doc": {
381
+ const docElement = element;
382
+ return restoreElementWithProperties(element, Object.assign(Object.assign({}, restoreDocStyleProperties(docElement, currentScope)), { text: isValidString(docElement.text), dynamic: restoreTextDynamicParts(docElement.dynamic), flowDirection: (Object.values(TEXT_FLOW_DIRECTION)).includes(docElement.flowDirection)
383
+ ? docElement.flowDirection
384
+ : TEXT_FLOW_DIRECTION.TOP_TO_BOTTOM, columns: restoreTextColumns(docElement.columns, currentScope), autoResize: isValidBooleanValue(docElement.autoResize, true) }), localState);
385
+ }
386
+ case "xray": {
387
+ const xrayElement = element;
388
+ const elementScope = isValidElementScopeValue(xrayElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
389
+ return restoreElementWithProperties(xrayElement, {
390
+ origin: restorePoint(xrayElement.origin, elementScope, currentScope),
391
+ direction: restorePoint(xrayElement.direction, elementScope, currentScope),
392
+ startFromOrigin: isValidBoolean(xrayElement.startFromOrigin, false),
393
+ color: isValidColor(xrayElement.color, "#FF00FF"),
394
+ }, localState, globalState);
395
+ }
396
+ case "parametric": {
397
+ const parametricElement = element;
398
+ let source;
399
+ if (((_s = parametricElement.source) === null || _s === void 0 ? void 0 : _s.type) === PARAMETRIC_SOURCE_TYPE.FILE) {
400
+ source = {
401
+ type: PARAMETRIC_SOURCE_TYPE.FILE,
402
+ fileId: isValidString((_t = parametricElement.source) === null || _t === void 0 ? void 0 : _t.fileId),
403
+ };
404
+ }
405
+ else {
406
+ source = {
407
+ type: PARAMETRIC_SOURCE_TYPE.CODE,
408
+ code: isValidString((_u = parametricElement.source) === null || _u === void 0 ? void 0 : _u.code),
409
+ };
410
+ }
411
+ return restoreElementWithProperties(parametricElement, { source }, localState, globalState);
412
+ }
413
+ case "featurecontrolframe": {
414
+ const fcfElement = element;
415
+ const elementScope = isValidElementScopeValue(fcfElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
416
+ return restoreElementWithProperties(fcfElement, {
417
+ // Restore style properties
418
+ textStyle: restoreTextStyle(fcfElement.textStyle, currentScope),
419
+ layout: {
420
+ padding: restorePrecisionValue((_v = fcfElement.layout) === null || _v === void 0 ? void 0 : _v.padding, elementScope, currentScope, 2),
421
+ segmentSpacing: restorePrecisionValue((_w = fcfElement.layout) === null || _w === void 0 ? void 0 : _w.segmentSpacing, elementScope, currentScope, 2),
422
+ rowSpacing: restorePrecisionValue((_x = fcfElement.layout) === null || _x === void 0 ? void 0 : _x.rowSpacing, elementScope, currentScope, 2),
423
+ },
424
+ symbols: {
425
+ scale: (_z = (_y = fcfElement.symbols) === null || _y === void 0 ? void 0 : _y.scale) !== null && _z !== void 0 ? _z : 1,
426
+ },
427
+ datumStyle: {
428
+ bracketStyle: isValidEnumValue((_0 = fcfElement.datumStyle) === null || _0 === void 0 ? void 0 : _0.bracketStyle, DATUM_BRACKET_STYLE, DATUM_BRACKET_STYLE.SQUARE),
429
+ },
430
+ // Restore data properties
431
+ rows: restoreFcfRows(fcfElement.rows),
432
+ frameModifiers: restoreFcfFrameModifiers(fcfElement.frameModifiers, elementScope, currentScope),
433
+ leaderElementId: isValidString(fcfElement.leaderElementId) || null,
434
+ datumDefinition: restoreFcfDatumDefinition(fcfElement.datumDefinition, elementScope, currentScope, restoredBlocks),
435
+ }, localState, globalState);
436
+ }
437
+ case "leader": {
438
+ const leaderElement = element;
439
+ const elementScope = isValidElementScopeValue(leaderElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
440
+ // A leader is a linear element
441
+ const { points, lines } = restoreLinearElementPointsAndLines({
442
+ points: leaderElement.points,
443
+ lines: leaderElement.lines,
444
+ x: leaderElement.x,
445
+ y: leaderElement.y,
446
+ width: leaderElement.width,
447
+ height: leaderElement.height,
448
+ elementScope,
449
+ currentScope,
450
+ skipNormalization: !!(leaderElement.startBinding || leaderElement.endBinding),
451
+ });
452
+ return restoreElementWithProperties(leaderElement, {
453
+ points,
454
+ lines,
455
+ // DucLeaderStyle properties
456
+ headsOverride: restoreHeadsOverride(leaderElement.headsOverride, restoredBlocks, elementScope, currentScope),
457
+ dogleg: restorePrecisionValue(leaderElement.dogleg, elementScope, currentScope, 10),
458
+ textStyle: restoreTextStyle(leaderElement.textStyle, currentScope),
459
+ textAttachment: isValidEnumValue(leaderElement.textAttachment, VERTICAL_ALIGN, VERTICAL_ALIGN.TOP),
460
+ blockAttachment: isValidEnumValue(leaderElement.blockAttachment, BLOCK_ATTACHMENT, BLOCK_ATTACHMENT.CENTER_EXTENTS),
461
+ // Leader data
462
+ leaderContent: restoreLeaderContent(leaderElement.leaderContent),
463
+ contentAnchor: leaderElement.contentAnchor || { x: 0, y: 0 },
464
+ }, localState, globalState);
465
+ }
466
+ case "dimension": {
467
+ const dimElement = element;
468
+ const elementScope = isValidElementScopeValue(dimElement.scope, globalState === null || globalState === void 0 ? void 0 : globalState.mainScope);
469
+ return restoreElementWithProperties(dimElement, Object.assign(Object.assign({}, restoreDimensionStyle(dimElement, currentScope)), {
470
+ // Dimension data
471
+ dimensionType: isValidEnumValue(dimElement.dimensionType, DIMENSION_TYPE, DIMENSION_TYPE.LINEAR), definitionPoints: restoreDimensionDefinitionPoints(dimElement.definitionPoints), obliqueAngle: isValidRadianValue(dimElement.obliqueAngle, 0), ordinateAxis: isValidEnumValue(dimElement.ordinateAxis, AXIS, null), bindings: restoreDimensionBindings(dimElement.bindings, elementScope, currentScope, restoredBlocks), textOverride: isValidString(dimElement.textOverride) || null, textPosition: dimElement.textPosition || null, toleranceOverride: restoreDimensionToleranceStyle(dimElement.toleranceOverride, currentScope), baselineData: dimElement.baselineData
472
+ ? {
473
+ baseDimensionId: isValidString(dimElement.baselineData.baseDimensionId),
474
+ }
475
+ : undefined, continueData: dimElement.continueData
476
+ ? {
477
+ continueFromDimensionId: isValidString(dimElement.continueData.continueFromDimensionId),
478
+ }
479
+ : undefined }), localState, globalState);
480
+ }
481
+ }
482
+ return null;
483
+ };
484
+ /**
485
+ * Restores a point that might have legacy format (x,y as numbers)
486
+ * @param point - The point to restore
487
+ * @param elementScope - The scope to use for the precision values
488
+ * @returns A properly formatted DucPoint
489
+ */
490
+ export const restorePoint = (point, elementScope, currentScope) => {
491
+ if (!point) {
492
+ return null;
493
+ }
494
+ // Handle x and y conversion
495
+ const xValue = restorePrecisionValue(point.x, elementScope, currentScope);
496
+ const yValue = restorePrecisionValue(point.y, elementScope, currentScope);
497
+ if (!xValue || !yValue) {
498
+ return null;
499
+ }
500
+ // Only keep the new DucPoint structure, ignore legacy properties
501
+ return {
502
+ x: xValue,
503
+ y: yValue,
504
+ mirroring: isValidBezierMirroringValue(point.mirroring),
505
+ };
506
+ };
507
+ const restoreElementPoints = ({ points: oldPoints, x, y, width, height, elementScope, currentScope, }) => {
508
+ // Convert input parameters to plain numbers if they're precision values
509
+ const validatedWidth = restorePrecisionValue(width, elementScope, currentScope, 0);
510
+ const validatedHeight = restorePrecisionValue(height, elementScope, currentScope, 0);
511
+ // Process the points array with proper conversion
512
+ let points = [];
513
+ if (typeof oldPoints === "object" && Array.isArray(oldPoints)) {
514
+ const migratedPoints = migratePoints(oldPoints);
515
+ points = migratedPoints
516
+ .map((point) => {
517
+ const restoredPoint = restorePoint(point, elementScope, currentScope);
518
+ if (!restoredPoint) {
519
+ return null;
520
+ }
521
+ return restoredPoint;
522
+ })
523
+ .filter(Boolean);
524
+ // Ensure we have at least 2 points for linear elements
525
+ if (points.length === 1) {
526
+ points.push({
527
+ x: validatedWidth,
528
+ y: validatedHeight,
529
+ mirroring: undefined,
530
+ });
531
+ }
532
+ }
533
+ else {
534
+ // Default two points
535
+ points = [
536
+ {
537
+ x: getPrecisionValueFromRaw(0, elementScope, currentScope),
538
+ y: getPrecisionValueFromRaw(0, elementScope, currentScope),
539
+ mirroring: undefined,
540
+ },
541
+ {
542
+ x: validatedWidth,
543
+ y: validatedHeight,
544
+ mirroring: undefined,
545
+ },
546
+ ];
547
+ }
548
+ if (points.length === 2 &&
549
+ points[1] && // Should always be true if points.length === 2
550
+ points[1].x.value === 0 &&
551
+ points[1].y.value === 0 &&
552
+ (validatedWidth.value !== 0 || validatedHeight.value !== 0)) {
553
+ points[1] = Object.assign(Object.assign({}, points[1]), { x: validatedWidth, y: validatedHeight });
554
+ }
555
+ return points;
556
+ };
557
+ const restoreLinearElementPointsAndLines = ({ points: oldPoints, lines: oldLines, x, y, width, height, elementScope, currentScope, skipNormalization, }) => {
558
+ const validatedX = restorePrecisionValue(x, elementScope, currentScope, 0);
559
+ const validatedY = restorePrecisionValue(y, elementScope, currentScope, 0);
560
+ const validatedWidth = restorePrecisionValue(width, elementScope, currentScope, 0);
561
+ const validatedHeight = restorePrecisionValue(height, elementScope, currentScope, 0);
562
+ let points = restoreElementPoints({
563
+ points: oldPoints,
564
+ x,
565
+ y,
566
+ width,
567
+ height,
568
+ elementScope,
569
+ currentScope,
570
+ });
571
+ let lines = oldLines;
572
+ if (lines === undefined || lines === null) {
573
+ lines = [];
574
+ for (let i = 0; i < points.length - 1; i++) {
575
+ lines.push([
576
+ { index: i, handle: null },
577
+ { index: i + 1, handle: null },
578
+ ]);
579
+ }
580
+ }
581
+ else {
582
+ lines = lines.map((line) => {
583
+ return [
584
+ {
585
+ index: line[0].index,
586
+ handle: line[0].handle
587
+ ? restorePoint(line[0].handle, elementScope, currentScope)
588
+ : null,
589
+ },
590
+ {
591
+ index: line[1].index,
592
+ handle: line[1].handle
593
+ ? restorePoint(line[1].handle, elementScope, currentScope)
594
+ : null,
595
+ },
596
+ ];
597
+ });
598
+ }
599
+ if (!skipNormalization &&
600
+ points.length >= 2 &&
601
+ (points[0].x.value !== 0 || points[0].y.value !== 0)) {
602
+ const normalizedResult = getNormalizedPoints({
603
+ points,
604
+ lines,
605
+ x: validatedX,
606
+ y: validatedY,
607
+ scope: elementScope,
608
+ }, currentScope);
609
+ const firstPoint = points[0];
610
+ const lastPoint = points[points.length - 1];
611
+ points = normalizedResult.points;
612
+ lines = normalizedResult.lines;
613
+ if (oldPoints && oldPoints.length === points.length) {
614
+ if (firstPoint.x.value !== 0 || firstPoint.y.value !== 0) {
615
+ points[0] = Object.assign({}, points[0]);
616
+ }
617
+ if (lastPoint.x.value !== validatedWidth.value ||
618
+ lastPoint.y.value !== validatedHeight.value) {
619
+ points[points.length - 1] = Object.assign({}, points[points.length - 1]);
620
+ }
621
+ }
622
+ }
623
+ return { points, lines };
624
+ };
625
+ /**
626
+ * Repairs container element's boundElements array by removing duplicates and
627
+ * fixing containerId of bound elements if not present. Also removes any
628
+ * bound elements that do not exist in the elements array.
629
+ *
630
+ * NOTE mutates elements.
631
+ */
632
+ const repairContainerElement = (container, elementsMap) => {
633
+ if (container.boundElements) {
634
+ const boundElements = container.boundElements.slice();
635
+ const boundIds = new Set();
636
+ container.boundElements = boundElements.reduce((acc, binding) => {
637
+ const boundElement = elementsMap.get(binding.id);
638
+ if (boundElement && !boundIds.has(binding.id)) {
639
+ boundIds.add(binding.id);
640
+ if (boundElement.isDeleted) {
641
+ return acc;
642
+ }
643
+ acc.push(binding);
644
+ if (isTextElement(boundElement) && !boundElement.containerId) {
645
+ boundElement.containerId =
646
+ container.id;
647
+ }
648
+ }
649
+ return acc;
650
+ }, []);
651
+ }
652
+ };
653
+ /**
654
+ * Repairs target bound element's container's boundElements array,
655
+ * or removes contaienrId if container does not exist.
656
+ *
657
+ * NOTE mutates elements.
658
+ */
659
+ const repairBoundElement = (boundElement, elementsMap) => {
660
+ const container = boundElement.containerId
661
+ ? elementsMap.get(boundElement.containerId)
662
+ : null;
663
+ if (!container) {
664
+ boundElement.containerId = null;
665
+ return;
666
+ }
667
+ if (boundElement.isDeleted) {
668
+ return;
669
+ }
670
+ if (container.boundElements &&
671
+ !container.boundElements.find((binding) => binding.id === boundElement.id)) {
672
+ const boundElements = (container.boundElements || (container.boundElements = [])).slice();
673
+ boundElements.push({ type: "text", id: boundElement.id });
674
+ container.boundElements = boundElements;
675
+ }
676
+ };
677
+ /**
678
+ * Remove an element's frameId if its containing frame is non-existent
679
+ *
680
+ * NOTE mutates elements.
681
+ */
682
+ const repairFrameMembership = (element, elementsMap) => {
683
+ if (element.frameId) {
684
+ const containingFrame = elementsMap.get(element.frameId);
685
+ if (!containingFrame) {
686
+ element.frameId = null;
687
+ }
688
+ }
689
+ };
690
+ /**
691
+ * Assigns z-index values to elements based on their position in the array.
692
+ * This recreates the original visual stacking that was implied by array order
693
+ * before explicit z-index support was added.
694
+ */
695
+ export const migrateArrayOrderToZIndex = (elements) => {
696
+ // Check if we need to do a migration (if any element lacks z-index)
697
+ const needsMigration = elements.some((el) => el.zIndex === undefined || el.zIndex === null);
698
+ if (!needsMigration) {
699
+ return elements;
700
+ }
701
+ // Create a new array with explicit z-index values
702
+ return [...elements].map((element, index) => {
703
+ // Only update elements that don't already have a valid z-index
704
+ if (element.zIndex === undefined || element.zIndex === null) {
705
+ return Object.assign(Object.assign({}, element), { zIndex: index });
706
+ }
707
+ return element;
708
+ });
709
+ };
710
+ export const restoreElements = (elements, currentScope, restoredBlocks, opts) => {
711
+ const existingIds = new Set();
712
+ // First restore all elements with their original properties
713
+ const restored = (elements || []).reduce((elements, element) => {
714
+ if (element.type !== "selection") {
715
+ let migratedElement = restoreElement(element, currentScope, restoredBlocks, opts === null || opts === void 0 ? void 0 : opts.localState);
716
+ // Allow forced pass-through for specific element ids
717
+ const isPassThrough = Array.isArray(opts === null || opts === void 0 ? void 0 : opts.passThroughElementIds) &&
718
+ migratedElement &&
719
+ migratedElement.id &&
720
+ opts.passThroughElementIds.includes(migratedElement.id);
721
+ if (migratedElement &&
722
+ (isPassThrough || !isInvisiblySmallElement(migratedElement))) {
723
+ if (existingIds.has(migratedElement.id)) {
724
+ migratedElement = Object.assign(Object.assign({}, migratedElement), { id: randomId() });
725
+ }
726
+ existingIds.add(migratedElement.id);
727
+ elements.push(migratedElement);
728
+ }
729
+ }
730
+ return elements;
731
+ }, []);
732
+ let restoredElements = (opts === null || opts === void 0 ? void 0 : opts.syncInvalidIndices)
733
+ ? opts.syncInvalidIndices(restored, currentScope)
734
+ : restored;
735
+ // Migrate array ordering to explicit z-index values if needed
736
+ restoredElements = migrateArrayOrderToZIndex(restoredElements);
737
+ if (!(opts === null || opts === void 0 ? void 0 : opts.repairBindings)) {
738
+ return restoredElements;
739
+ }
740
+ const restoredElementsMap = arrayToMap(restoredElements);
741
+ for (const element of restoredElements) {
742
+ if (element.frameId) {
743
+ repairFrameMembership(element, restoredElementsMap);
744
+ }
745
+ if (isTextElement(element) && element.containerId) {
746
+ repairBoundElement(element, restoredElementsMap);
747
+ }
748
+ else if (element.boundElements) {
749
+ repairContainerElement(element, restoredElementsMap);
750
+ }
751
+ if (opts.refreshDimensions && isTextElement(element)) {
752
+ Object.assign(element, refreshTextDimensions(element, getContainerElement(element, restoredElementsMap), restoredElementsMap, currentScope));
753
+ }
754
+ if (isLinearElement(element)) {
755
+ // Helper function to check if we should keep a binding
756
+ const shouldKeepBinding = (binding) => {
757
+ if (!binding)
758
+ return true; // No binding, nothing to remove
759
+ // Keep head-only bindings
760
+ if (binding.head !== undefined &&
761
+ (!binding.elementId || binding.elementId === "")) {
762
+ return true;
763
+ }
764
+ // If binding has an elementId, check if it points to a valid element
765
+ const elementExists = restoredElementsMap.has(binding.elementId);
766
+ // For linear-to-linear bindings, ensure the point attribute is valid
767
+ if (binding.point && elementExists) {
768
+ const targetElement = restoredElementsMap.get(binding.elementId);
769
+ if (isLinearElement(targetElement)) {
770
+ // Check if the point index is within bounds of the target element's points
771
+ if (binding.point.index >= 0 &&
772
+ binding.point.index < targetElement.points.length &&
773
+ Math.abs(binding.point.offset) <= 1) {
774
+ return true;
775
+ }
776
+ }
777
+ }
778
+ return elementExists;
779
+ };
780
+ // Process start binding
781
+ if (element.startBinding && !shouldKeepBinding(element.startBinding)) {
782
+ element.startBinding = null;
783
+ }
784
+ // Process end binding
785
+ if (element.endBinding && !shouldKeepBinding(element.endBinding)) {
786
+ element.endBinding = null;
787
+ }
788
+ // Update the bound elements reference for each valid binding
789
+ // This ensures both sides of the binding relationship are updated
790
+ const updateBoundElementsRef = (binding) => {
791
+ var _a;
792
+ if (!binding || !binding.elementId)
793
+ return;
794
+ const targetElement = restoredElementsMap.get(binding.elementId);
795
+ if (targetElement && !targetElement.isDeleted) {
796
+ // Add the linear element to the target's boundElements if not already there
797
+ if (!((_a = targetElement.boundElements) === null || _a === void 0 ? void 0 : _a.some((be) => be.id === element.id))) {
798
+ const boundElements = targetElement.boundElements || [];
799
+ targetElement.boundElements = [
800
+ ...boundElements,
801
+ {
802
+ id: element.id,
803
+ type: element.type,
804
+ },
805
+ ];
806
+ }
807
+ }
808
+ };
809
+ // Update bound elements references
810
+ updateBoundElementsRef(element.startBinding);
811
+ updateBoundElementsRef(element.endBinding);
812
+ }
813
+ }
814
+ return restoredElements;
815
+ };
816
+ export const isValidElementScopeValue = (value, mainScope = NEUTRAL_SCOPE) => {
817
+ // Only check if the provided value is valid
818
+ if (value !== undefined && Object.keys(ScaleFactors).includes(value)) {
819
+ return value;
820
+ }
821
+ return mainScope;
822
+ };
823
+ const restoreTextDynamicParts = (dynamic) => {
824
+ if (!Array.isArray(dynamic)) {
825
+ return [];
826
+ }
827
+ return dynamic
828
+ .map((part) => ({
829
+ tag: isValidString(part.tag),
830
+ source: part.source, // Assuming source is valid, could be further validated
831
+ formatting: part.formatting, // Assuming valid
832
+ cachedValue: isValidString(part.cachedValue),
833
+ }))
834
+ .filter((part) => part.tag);
835
+ };
836
+ const restoreLineSpacing = (lineSpacing, legacyLineHeight, currentScope) => {
837
+ if (lineSpacing && lineSpacing.type && lineSpacing.value) {
838
+ return {
839
+ type: isValidLineSpacingTypeValue(lineSpacing.type),
840
+ value: restorePrecisionValue(lineSpacing.value, currentScope, currentScope, 1.15, true),
841
+ };
842
+ }
843
+ // Fallback to legacy lineHeight
844
+ return {
845
+ type: LINE_SPACING_TYPE.MULTIPLE,
846
+ value: legacyLineHeight,
847
+ };
848
+ };
849
+ const restoreTableCellStyle = (style, currentScope, defaultStyle) => {
850
+ if (!style || typeof style !== "object") {
851
+ return defaultStyle;
852
+ }
853
+ return Object.assign(Object.assign(Object.assign({}, defaultStyle), style), { alignment: Object.values(TABLE_CELL_ALIGNMENT).includes(style.alignment)
854
+ ? style.alignment
855
+ : defaultStyle.alignment });
856
+ };
857
+ const restoreTableColumns = (columns, currentScope, defaultColumns) => {
858
+ if (!columns || typeof columns !== "object") {
859
+ return defaultColumns;
860
+ }
861
+ const restored = {};
862
+ for (const id in columns) {
863
+ const col = columns[id];
864
+ if (col && typeof col === "object" && isValidString(col.id)) {
865
+ restored[id] = {
866
+ id: col.id,
867
+ width: restorePrecisionValue(col.width, currentScope, currentScope, 100),
868
+ styleOverrides: col.styleOverrides
869
+ ? restoreTableCellStyle(col.styleOverrides, currentScope, {})
870
+ : undefined,
871
+ };
872
+ }
873
+ }
874
+ return restored;
875
+ };
876
+ const restoreTableRows = (rows, currentScope, defaultRows) => {
877
+ if (!rows || typeof rows !== "object") {
878
+ return defaultRows;
879
+ }
880
+ const restored = {};
881
+ for (const id in rows) {
882
+ const row = rows[id];
883
+ if (row && typeof row === "object" && isValidString(row.id)) {
884
+ restored[id] = {
885
+ id: row.id,
886
+ height: restorePrecisionValue(row.height, currentScope, currentScope, 40),
887
+ styleOverrides: row.styleOverrides
888
+ ? restoreTableCellStyle(row.styleOverrides, currentScope, {})
889
+ : undefined,
890
+ };
891
+ }
892
+ }
893
+ return restored;
894
+ };
895
+ const restoreTableCells = (cells, defaultCells) => {
896
+ if (!cells || typeof cells !== "object") {
897
+ return defaultCells;
898
+ }
899
+ const restored = {};
900
+ for (const id in cells) {
901
+ const cell = cells[id];
902
+ if (cell &&
903
+ typeof cell === "object" &&
904
+ isValidString(cell.rowId) &&
905
+ isValidString(cell.columnId)) {
906
+ restored[id] = {
907
+ rowId: cell.rowId,
908
+ columnId: cell.columnId,
909
+ data: isValidString(cell.data),
910
+ locked: isValidBooleanValue(cell.locked, false),
911
+ span: cell.span
912
+ ? {
913
+ columns: typeof cell.span.columns === "number" ? cell.span.columns : 1,
914
+ rows: typeof cell.span.rows === "number" ? cell.span.rows : 1,
915
+ }
916
+ : undefined,
917
+ styleOverrides: cell.styleOverrides, // Not deeply restored for now
918
+ };
919
+ }
920
+ }
921
+ return restored;
922
+ };
923
+ const restoreDocStyleProperties = (doc, currentScope) => {
924
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
925
+ const elementScope = isValidElementScopeValue(doc.scope, currentScope);
926
+ // Use the new helper to restore all properties from DucTextStyle
927
+ const restoredTextStyle = restoreTextStyle(doc, currentScope);
928
+ // Restore properties specific to DucDocStyle
929
+ const paragraph = {
930
+ firstLineIndent: restorePrecisionValue((_a = doc.paragraph) === null || _a === void 0 ? void 0 : _a.firstLineIndent, elementScope, currentScope, 0),
931
+ hangingIndent: restorePrecisionValue((_b = doc.paragraph) === null || _b === void 0 ? void 0 : _b.hangingIndent, elementScope, currentScope, 0),
932
+ leftIndent: restorePrecisionValue((_c = doc.paragraph) === null || _c === void 0 ? void 0 : _c.leftIndent, elementScope, currentScope, 0),
933
+ rightIndent: restorePrecisionValue((_d = doc.paragraph) === null || _d === void 0 ? void 0 : _d.rightIndent, elementScope, currentScope, 0),
934
+ spaceBefore: restorePrecisionValue((_e = doc.paragraph) === null || _e === void 0 ? void 0 : _e.spaceBefore, elementScope, currentScope, 0),
935
+ spaceAfter: restorePrecisionValue((_f = doc.paragraph) === null || _f === void 0 ? void 0 : _f.spaceAfter, elementScope, currentScope, 0),
936
+ tabStops: Array.isArray((_g = doc.paragraph) === null || _g === void 0 ? void 0 : _g.tabStops)
937
+ ? doc.paragraph.tabStops.map(ts => restorePrecisionValue(ts, elementScope, currentScope, 0))
938
+ : [],
939
+ };
940
+ const stackFormat = {
941
+ autoStack: isValidBoolean((_h = doc.stackFormat) === null || _h === void 0 ? void 0 : _h.autoStack, false),
942
+ stackChars: Array.isArray((_j = doc.stackFormat) === null || _j === void 0 ? void 0 : _j.stackChars) ? doc.stackFormat.stackChars.map(String) : [],
943
+ properties: {
944
+ upperScale: typeof ((_l = (_k = doc.stackFormat) === null || _k === void 0 ? void 0 : _k.properties) === null || _l === void 0 ? void 0 : _l.upperScale) === 'number' ? doc.stackFormat.properties.upperScale : 0.7,
945
+ lowerScale: typeof ((_o = (_m = doc.stackFormat) === null || _m === void 0 ? void 0 : _m.properties) === null || _o === void 0 ? void 0 : _o.lowerScale) === 'number' ? doc.stackFormat.properties.lowerScale : 0.7,
946
+ alignment: isValidEnumValue((_q = (_p = doc.stackFormat) === null || _p === void 0 ? void 0 : _p.properties) === null || _q === void 0 ? void 0 : _q.alignment, STACKED_TEXT_ALIGN, STACKED_TEXT_ALIGN.CENTER),
947
+ },
948
+ };
949
+ return Object.assign(Object.assign({}, restoredTextStyle), { paragraph,
950
+ stackFormat });
951
+ };
952
+ const restoreTextColumns = (columns, currentScope) => {
953
+ const defaultGutter = getPrecisionValueFromRaw(5, currentScope, currentScope);
954
+ const defaultWidth = getPrecisionValueFromRaw(100, currentScope, currentScope);
955
+ if (!columns || typeof columns !== "object") {
956
+ return {
957
+ type: COLUMN_TYPE.NO_COLUMNS,
958
+ definitions: [],
959
+ autoHeight: true,
960
+ };
961
+ }
962
+ const definitions = Array.isArray(columns.definitions)
963
+ ? columns.definitions.map((def) => ({
964
+ width: restorePrecisionValue(def === null || def === void 0 ? void 0 : def.width, currentScope, currentScope, defaultWidth.value),
965
+ gutter: restorePrecisionValue(def === null || def === void 0 ? void 0 : def.gutter, currentScope, currentScope, defaultGutter.value),
966
+ }))
967
+ : [];
968
+ return {
969
+ type: Object.values(COLUMN_TYPE).includes(columns.type)
970
+ ? columns.type
971
+ : COLUMN_TYPE.NO_COLUMNS,
972
+ definitions,
973
+ autoHeight: isValidBooleanValue(columns.autoHeight, true),
974
+ };
975
+ };
976
+ const getFontFamilyByName = (fontFamilyName) => {
977
+ if (Object.keys(FONT_FAMILY).includes(fontFamilyName)) {
978
+ return FONT_FAMILY[fontFamilyName];
979
+ }
980
+ return DEFAULT_FONT_FAMILY;
981
+ };
982
+ const repairBinding = (element, binding, currentScope, restoredBlocks) => {
983
+ var _a;
984
+ if (!binding) {
985
+ return null;
986
+ }
987
+ // If this is a head-only binding, normalize it
988
+ if (binding.head !== undefined &&
989
+ (!binding.elementId || binding.elementId === "")) {
990
+ return createHeadOnlyBinding(binding.head, restoredBlocks, currentScope);
991
+ }
992
+ // Get the element's scope for conversion
993
+ const elementScope = element ? element.scope : NEUTRAL_SCOPE;
994
+ // Ensure we preserve the point attribute for linear-to-linear bindings
995
+ const pointData = binding.point
996
+ ? {
997
+ point: {
998
+ index: typeof binding.point.index === "number" ? binding.point.index : 0,
999
+ offset: typeof binding.point.offset === "number"
1000
+ ? // Clamp offset between -1 and 1
1001
+ Math.max(-1, Math.min(1, binding.point.offset))
1002
+ : 0,
1003
+ },
1004
+ }
1005
+ : { point: null };
1006
+ return Object.assign({ elementId: binding.elementId || "", focus: typeof binding.focus === "number" ? binding.focus : 0, gap: restorePrecisionValue(typeof binding.gap === "number" ? Math.max(0, binding.gap) : 0, elementScope, currentScope), head: isValidDucHead(binding.head, restoredBlocks, elementScope, currentScope), fixedPoint: element && isElbowArrow(element)
1007
+ ? normalizeFixedPoint((_a = binding.fixedPoint) !== null && _a !== void 0 ? _a : { x: 0.5, y: 0.5 })
1008
+ : null }, pointData);
1009
+ };
1010
+ /**
1011
+ * Validates a DucPath object and ensures its line indices form a valid closed path
1012
+ */
1013
+ const validateDucPath = (path, element, elementScope, currentScope) => {
1014
+ if (!path || !path.lineIndices || !Array.isArray(path.lineIndices)) {
1015
+ return null;
1016
+ }
1017
+ // Validate line indices are numbers and within valid range
1018
+ const validLineIndices = path.lineIndices.filter((index) => typeof index === "number" &&
1019
+ Number.isInteger(index) &&
1020
+ index >= 0 &&
1021
+ index < element.lines.length);
1022
+ if (validLineIndices.length === 0) {
1023
+ return null;
1024
+ }
1025
+ // Check if the line indices form a valid closed path
1026
+ const isValidClosedPath = validateClosedPath(element, validLineIndices);
1027
+ if (!isValidClosedPath) {
1028
+ return null;
1029
+ }
1030
+ return {
1031
+ lineIndices: validLineIndices,
1032
+ background: path.background ? validateBackground(path.background) : null,
1033
+ stroke: path.stroke
1034
+ ? validateStroke(path.stroke, elementScope, currentScope)
1035
+ : null,
1036
+ };
1037
+ };
1038
+ /**
1039
+ * Validates and filters path overrides for a linear element
1040
+ */
1041
+ const validatePathOverrides = (pathOverrides, element, elementScope, currentScope) => {
1042
+ if (!pathOverrides || !Array.isArray(pathOverrides)) {
1043
+ return [];
1044
+ }
1045
+ const validPaths = [];
1046
+ const usedLineIndices = new Set();
1047
+ for (const pathOverride of pathOverrides) {
1048
+ const validatedPath = validateDucPath(pathOverride, element, elementScope, currentScope);
1049
+ if (validatedPath) {
1050
+ // Check for overlapping line indices with previously validated paths
1051
+ const hasOverlap = validatedPath.lineIndices.some((index) => usedLineIndices.has(index));
1052
+ if (!hasOverlap) {
1053
+ // Mark these line indices as used
1054
+ validatedPath.lineIndices.forEach((index) => usedLineIndices.add(index));
1055
+ validPaths.push(validatedPath);
1056
+ }
1057
+ }
1058
+ }
1059
+ return validPaths;
1060
+ };
1061
+ export const isValidFreeDrawEasingValue = (value) => {
1062
+ return isValidFunction(value, DEFAULT_FREEDRAW_ELEMENT.easing);
1063
+ };
1064
+ /**
1065
+ * Restores the FreeDrawEnds structure validating its members.
1066
+ */
1067
+ const restoreFreeDrawEnds = (ends) => {
1068
+ if (!ends)
1069
+ return null;
1070
+ return {
1071
+ cap: isValidBoolean(ends.cap, false),
1072
+ taper: isValidPercentageValue(ends.taper, 0),
1073
+ easing: isValidFreeDrawEasingValue(ends.easing),
1074
+ };
1075
+ };
1076
+ const isValidCutAngleValue = (value, defaultValue) => {
1077
+ const radian = isValidRadianValue(value, defaultValue);
1078
+ if (radian < 0) {
1079
+ return defaultValue;
1080
+ }
1081
+ return radian;
1082
+ };
1083
+ const createHeadOnlyBinding = (head, restoredBlocks, currentScope) => {
1084
+ return {
1085
+ elementId: "",
1086
+ focus: 0,
1087
+ gap: getPrecisionValueFromRaw(0, currentScope, currentScope),
1088
+ fixedPoint: null,
1089
+ point: null,
1090
+ head: isValidDucHead(head, restoredBlocks, currentScope, currentScope),
1091
+ };
1092
+ };
1093
+ const validateDeprecatedElementContent = (color, defaultContent) => {
1094
+ const oldContent = tinycolor(color);
1095
+ return Object.assign(Object.assign({}, defaultContent), { src: isValidColor(oldContent.toHexString(), defaultContent.src), opacity: oldContent.getAlpha() });
1096
+ };
1097
+ const isValidLineSpacingTypeValue = (value) => {
1098
+ // Add implementation based on LINE_SPACING_TYPE enum
1099
+ return value || "multiple";
1100
+ };
1101
+ /**
1102
+ * Restore properties specific to Stack-like elements (_DucStackElementBase)
1103
+ */
1104
+ const restoreStackElementProperties = (element, currentScope) => {
1105
+ return Object.assign(Object.assign({}, restoreDucStackProperties(element)), { clip: isValidBooleanValue(element.clip, false), labelVisible: isValidBooleanValue(element.labelVisible, true), standardOverride: isValidString(element.standardOverride) || null });
1106
+ };
1107
+ // --- Dimension Restoration Helpers ---
1108
+ const restoreDimensionStyle = (dim, currentScope) => {
1109
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
1110
+ const defaultTextStyle = restoreTextStyle(undefined, currentScope);
1111
+ return {
1112
+ dimLine: {
1113
+ stroke: ((_a = dim.dimLine) === null || _a === void 0 ? void 0 : _a.stroke)
1114
+ ? validateStroke(dim.dimLine.stroke, dim.scope, currentScope)
1115
+ : DEFAULT_ELEMENT_PROPS.stroke,
1116
+ textGap: restorePrecisionValue((_b = dim.dimLine) === null || _b === void 0 ? void 0 : _b.textGap, dim.scope, currentScope, 2),
1117
+ },
1118
+ extLine: {
1119
+ stroke: ((_c = dim.extLine) === null || _c === void 0 ? void 0 : _c.stroke)
1120
+ ? validateStroke(dim.extLine.stroke, dim.scope, currentScope)
1121
+ : DEFAULT_ELEMENT_PROPS.stroke,
1122
+ overshoot: restorePrecisionValue((_d = dim.extLine) === null || _d === void 0 ? void 0 : _d.overshoot, dim.scope, currentScope, 2),
1123
+ offset: restorePrecisionValue((_e = dim.extLine) === null || _e === void 0 ? void 0 : _e.offset, dim.scope, currentScope, 2),
1124
+ },
1125
+ textStyle: restoreTextStyle(dim.textStyle, currentScope),
1126
+ symbols: {
1127
+ headsOverride: restoreHeadsOverride((_f = dim.symbols) === null || _f === void 0 ? void 0 : _f.headsOverride, [], dim.scope, currentScope), // Assuming no blocks initially
1128
+ centerMark: {
1129
+ type: isValidEnumValue((_h = (_g = dim.symbols) === null || _g === void 0 ? void 0 : _g.centerMark) === null || _h === void 0 ? void 0 : _h.type, MARK_ELLIPSE_CENTER, MARK_ELLIPSE_CENTER.MARK),
1130
+ size: restorePrecisionValue((_k = (_j = dim.symbols) === null || _j === void 0 ? void 0 : _j.centerMark) === null || _k === void 0 ? void 0 : _k.size, dim.scope, currentScope, 5),
1131
+ },
1132
+ },
1133
+ tolerance: restoreDimensionToleranceStyle(dim.tolerance, currentScope, defaultTextStyle),
1134
+ fit: {
1135
+ rule: isValidEnumValue((_l = dim.fit) === null || _l === void 0 ? void 0 : _l.rule, DIMENSION_FIT_RULE, DIMENSION_FIT_RULE.BEST_FIT),
1136
+ textPlacement: isValidEnumValue((_m = dim.fit) === null || _m === void 0 ? void 0 : _m.textPlacement, DIMENSION_TEXT_PLACEMENT, DIMENSION_TEXT_PLACEMENT.BESIDE_LINE),
1137
+ forceTextInside: isValidBoolean((_o = dim.fit) === null || _o === void 0 ? void 0 : _o.forceTextInside, false),
1138
+ },
1139
+ };
1140
+ };
1141
+ const restoreDimensionToleranceStyle = (tol, currentScope, defaultTextStyle) => {
1142
+ var _a, _b, _c;
1143
+ return {
1144
+ enabled: isValidBoolean(tol === null || tol === void 0 ? void 0 : tol.enabled, false),
1145
+ displayMethod: isValidEnumValue(tol === null || tol === void 0 ? void 0 : tol.displayMethod, TOLERANCE_DISPLAY, TOLERANCE_DISPLAY.NONE),
1146
+ upperValue: (_a = tol === null || tol === void 0 ? void 0 : tol.upperValue) !== null && _a !== void 0 ? _a : 0,
1147
+ lowerValue: (_b = tol === null || tol === void 0 ? void 0 : tol.lowerValue) !== null && _b !== void 0 ? _b : 0,
1148
+ precision: (_c = tol === null || tol === void 0 ? void 0 : tol.precision) !== null && _c !== void 0 ? _c : 2,
1149
+ textStyle: (tol === null || tol === void 0 ? void 0 : tol.textStyle)
1150
+ ? restoreTextStyle(tol.textStyle, currentScope)
1151
+ : defaultTextStyle || restoreTextStyle(undefined, currentScope),
1152
+ };
1153
+ };
1154
+ const restoreDimensionDefinitionPoints = (points) => {
1155
+ return {
1156
+ origin1: (points === null || points === void 0 ? void 0 : points.origin1) || { x: 0, y: 0 },
1157
+ origin2: points === null || points === void 0 ? void 0 : points.origin2,
1158
+ location: (points === null || points === void 0 ? void 0 : points.location) || { x: 0, y: 0 },
1159
+ center: points === null || points === void 0 ? void 0 : points.center,
1160
+ jog: points === null || points === void 0 ? void 0 : points.jog,
1161
+ };
1162
+ };
1163
+ const restoreDimensionBindings = (bindings, elementScope, currentScope, restoredBlocks) => {
1164
+ var _a, _b, _c;
1165
+ if (!bindings)
1166
+ return undefined;
1167
+ return {
1168
+ origin1: bindings.origin1
1169
+ ? repairBinding(undefined, (_a = bindings.origin1) !== null && _a !== void 0 ? _a : null, currentScope, restoredBlocks)
1170
+ : null,
1171
+ origin2: bindings.origin2
1172
+ ? repairBinding(undefined, (_b = bindings.origin2) !== null && _b !== void 0 ? _b : null, currentScope, restoredBlocks)
1173
+ : null,
1174
+ center: bindings.center
1175
+ ? repairBinding(undefined, (_c = bindings.center) !== null && _c !== void 0 ? _c : null, currentScope, restoredBlocks)
1176
+ : null,
1177
+ };
1178
+ };
1179
+ // --- Leader Restoration Helpers ---
1180
+ const restoreLeaderContent = (content) => {
1181
+ var _a, _b;
1182
+ if (!content)
1183
+ return null;
1184
+ const type = isValidEnumValue(content.type, LEADER_CONTENT_TYPE, null);
1185
+ if (type === LEADER_CONTENT_TYPE.TEXT) {
1186
+ // Only access text if type is "text"
1187
+ if ('text' in content) {
1188
+ return { type: "text", text: isValidString(content.text) };
1189
+ }
1190
+ }
1191
+ if (type === LEADER_CONTENT_TYPE.BLOCK) {
1192
+ // Only access blockId and instanceData if type is "block"
1193
+ if ('blockId' in content && 'instanceData' in content) {
1194
+ return {
1195
+ type: "block",
1196
+ blockId: isValidString(content.blockId),
1197
+ instanceData: {
1198
+ attributeValues: (_a = content.instanceData) === null || _a === void 0 ? void 0 : _a.attributeValues,
1199
+ elementOverrides: (_b = content.instanceData) === null || _b === void 0 ? void 0 : _b.elementOverrides,
1200
+ },
1201
+ };
1202
+ }
1203
+ }
1204
+ return null;
1205
+ };
1206
+ // --- FCF Restoration Helpers ---
1207
+ const restoreFcfRows = (rows) => {
1208
+ return rows ? rows.map((row) => row ? row.map((segment) => {
1209
+ var _a, _b, _c, _d;
1210
+ return ({
1211
+ symbol: isValidEnumValue(segment.symbol, GDT_SYMBOL, GDT_SYMBOL.POSITION),
1212
+ tolerance: {
1213
+ value: isValidString((_a = segment.tolerance) === null || _a === void 0 ? void 0 : _a.value),
1214
+ zoneType: isValidEnumValue((_b = segment.tolerance) === null || _b === void 0 ? void 0 : _b.zoneType, TOLERANCE_ZONE_TYPE, undefined),
1215
+ featureModifiers: Array.isArray((_c = segment.tolerance) === null || _c === void 0 ? void 0 : _c.featureModifiers)
1216
+ ? segment.tolerance.featureModifiers
1217
+ : [],
1218
+ materialCondition: isValidEnumValue((_d = segment.tolerance) === null || _d === void 0 ? void 0 : _d.materialCondition, MATERIAL_CONDITION, undefined),
1219
+ },
1220
+ datums: (Array.isArray(segment.datums)
1221
+ ? segment.datums.map((datum) => ({
1222
+ letters: isValidString(datum === null || datum === void 0 ? void 0 : datum.letters),
1223
+ modifier: isValidEnumValue(datum === null || datum === void 0 ? void 0 : datum.modifier, MATERIAL_CONDITION, undefined),
1224
+ }))
1225
+ : []),
1226
+ });
1227
+ })
1228
+ : []) : [];
1229
+ };
1230
+ const restoreFcfFrameModifiers = (mods, elementScope, currentScope) => {
1231
+ if (!mods)
1232
+ return undefined;
1233
+ return {
1234
+ allAround: isValidBoolean(mods.allAround),
1235
+ allOver: isValidBoolean(mods.allOver),
1236
+ continuousFeature: isValidBoolean(mods.continuousFeature),
1237
+ between: mods.between
1238
+ ? {
1239
+ start: isValidString(mods.between.start),
1240
+ end: isValidString(mods.between.end),
1241
+ }
1242
+ : undefined,
1243
+ projectedToleranceZone: mods.projectedToleranceZone
1244
+ ? restorePrecisionValue(mods.projectedToleranceZone.value, elementScope, currentScope)
1245
+ : undefined,
1246
+ };
1247
+ };
1248
+ const restoreFcfDatumDefinition = (def, elementScope, currentScope, restoredBlocks) => {
1249
+ var _a, _b;
1250
+ if (!def || !isValidString(def.letter))
1251
+ return undefined;
1252
+ return {
1253
+ letter: isValidString(def.letter, ""),
1254
+ featureBinding: (_b = repairBinding(undefined, (_a = def.featureBinding) !== null && _a !== void 0 ? _a : null, currentScope, restoredBlocks)) !== null && _b !== void 0 ? _b : undefined,
1255
+ };
1256
+ };
1257
+ // --- Shared & Generic Style Helpers ---
1258
+ const restoreTextStyle = (style, currentScope) => {
1259
+ var _a, _b, _c;
1260
+ const defaultLineHeight = 1.15;
1261
+ return Object.assign(Object.assign(Object.assign({}, ((style === null || style === void 0 ? void 0 : style.background)
1262
+ ? { background: style.background.map(validateBackground) }
1263
+ : { background: [DEFAULT_ELEMENT_PROPS.background] })), ((style === null || style === void 0 ? void 0 : style.stroke)
1264
+ ? {
1265
+ stroke: style.stroke.map((s) => validateStroke(s, NEUTRAL_SCOPE, currentScope)),
1266
+ }
1267
+ : { stroke: [DEFAULT_ELEMENT_PROPS.stroke] })), { roundness: restorePrecisionValue(style === null || style === void 0 ? void 0 : style.roundness, NEUTRAL_SCOPE, currentScope, DEFAULT_ELEMENT_PROPS.roundness.value), opacity: isValidPercentageValue(style === null || style === void 0 ? void 0 : style.opacity, DEFAULT_ELEMENT_PROPS.opacity), blending: isValidBlendingValue(style === null || style === void 0 ? void 0 : style.blending),
1268
+ // Text-specific styles
1269
+ isLtr: isValidBoolean(style === null || style === void 0 ? void 0 : style.isLtr, true), fontFamily: getFontFamilyByName(style === null || style === void 0 ? void 0 : style.fontFamily), bigFontFamily: isValidString(style === null || style === void 0 ? void 0 : style.bigFontFamily, "sans-serif"), textAlign: isValidTextAlignValue(style === null || style === void 0 ? void 0 : style.textAlign), verticalAlign: isValidVerticalAlignValue(style === null || style === void 0 ? void 0 : style.verticalAlign), lineHeight: (_a = style === null || style === void 0 ? void 0 : style.lineHeight) !== null && _a !== void 0 ? _a : defaultLineHeight, lineSpacing: restoreLineSpacing(style === null || style === void 0 ? void 0 : style.lineSpacing, (_b = style === null || style === void 0 ? void 0 : style.lineHeight) !== null && _b !== void 0 ? _b : defaultLineHeight.valueOf(), currentScope), obliqueAngle: isValidRadianValue(style === null || style === void 0 ? void 0 : style.obliqueAngle, 0), fontSize: restorePrecisionValue(style === null || style === void 0 ? void 0 : style.fontSize, NEUTRAL_SCOPE, currentScope, DEFAULT_FONT_SIZE), paperTextHeight: (style === null || style === void 0 ? void 0 : style.paperTextHeight)
1270
+ ? restorePrecisionValue(style.paperTextHeight, NEUTRAL_SCOPE, currentScope)
1271
+ : undefined, widthFactor: (_c = style === null || style === void 0 ? void 0 : style.widthFactor) !== null && _c !== void 0 ? _c : 1, isUpsideDown: isValidBoolean(style === null || style === void 0 ? void 0 : style.isUpsideDown, false), isBackwards: isValidBoolean(style === null || style === void 0 ? void 0 : style.isBackwards, false) });
1272
+ };
1273
+ const restoreHeadsOverride = (heads, restoredBlocks, elementScope, currentScope) => {
1274
+ if (!Array.isArray(heads) || heads.length !== 2)
1275
+ return undefined;
1276
+ const startHead = isValidDucHead(heads[0], restoredBlocks, elementScope, currentScope);
1277
+ const endHead = isValidDucHead(heads[1], restoredBlocks, elementScope, currentScope);
1278
+ if (!startHead || !endHead)
1279
+ return undefined;
1280
+ return [startHead, endHead];
1281
+ };