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,1255 @@
1
+ import { isElbowArrow, isLinearElement, isTextElement } from "ducjs/legacy/v1/types/elements/typeChecks";
2
+ import { arrayToMap, getUpdatedTimestamp, isFiniteNumber, updateActiveTool, } from "ducjs/legacy/v1/utils";
3
+ import { getContainerElement } from "ducjs/legacy/v1/utils/bounds";
4
+ import { BEZIER_MIRRORING, BLENDING, DEFAULT_ELEMENT_PROPS, DEFAULT_ELLIPSE_ELEMENT, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FREEDRAW_ELEMENT, DEFAULT_POLYGON_SIDES, DEFAULT_TEXT_ALIGN, DEFAULT_VERTICAL_ALIGN, DEFAULT_ZOOM_STEP, ELEMENT_CONTENT_PREFERENCE, ELEMENT_SUBSET, FONT_FAMILY, IMAGE_STATUS, LINE_CONFIRM_THRESHOLD, LINE_HEAD, MAX_ZOOM_STEP, MIN_ZOOM_STEP, STROKE_CAP, STROKE_JOIN, STROKE_PLACEMENT, STROKE_PREFERENCE, STROKE_SIDE_PREFERENCE, TEXT_ALIGN, VERTICAL_ALIGN } from "ducjs/legacy/v1/utils/constants";
5
+ import { bumpVersion, getDefaultStackProperties, getNonDeletedElements, isInvisiblySmallElement, migratePoints } from "ducjs/legacy/v1/utils/elements";
6
+ import { getNormalizedPoints, mergeOverlappingPoints, validateClosedPath } from "ducjs/legacy/v1/utils/elements/linearElement";
7
+ import { detectLineHeight, refreshTextDimensions } from "ducjs/legacy/v1/utils/elements/textElement";
8
+ import { getSizeFromPoints } from "ducjs/legacy/v1/utils/math";
9
+ import { randomId } from "ducjs/legacy/v1/utils/math/random";
10
+ import { getPrecisionScope, ScaleFactors } from "ducjs/legacy/v1/utils/measurements";
11
+ import { getNormalizedDimensions, getNormalizedGridSize, getNormalizedGridStep, getNormalizedZoom, normalizeFixedPoint, } from "ducjs/legacy/v1/utils/normalize";
12
+ import { getPrecisionValueFromRaw, getPrecisionValueFromScoped, getScaledZoomValueForScope, getScopedBezierPointFromDucPoint, getScopedZoomValue, NEUTRAL_SCOPE } from "ducjs/legacy/v1/utils/scopes";
13
+ import { DESIGN_STANDARD } from "ducjs/legacy/v1/utils/standards";
14
+ import { getDefaultDucState } from "ducjs/legacy/v1/utils/state";
15
+ import { normalizeLink } from "ducjs/legacy/v1/utils/url";
16
+ import tinycolor from "tinycolor2";
17
+ export const AllowedDucActiveTools = {
18
+ selection: true,
19
+ text: true,
20
+ rectangle: true,
21
+ polygon: true,
22
+ ellipse: true,
23
+ line: true,
24
+ image: true,
25
+ arrow: true,
26
+ freedraw: true,
27
+ eraser: false,
28
+ custom: true,
29
+ frame: true,
30
+ embeddable: true,
31
+ hand: true,
32
+ laser: false,
33
+ ruler: false,
34
+ magicframe: false,
35
+ lasso: true,
36
+ table: true,
37
+ };
38
+ export const isValidElementScopeValue = (value, appState) => {
39
+ var _a;
40
+ // Only check if the provided value is valid
41
+ if (value !== undefined && Object.keys(ScaleFactors).includes(value)) {
42
+ return value;
43
+ }
44
+ return (_a = appState === null || appState === void 0 ? void 0 : appState.mainScope) !== null && _a !== void 0 ? _a : NEUTRAL_SCOPE;
45
+ };
46
+ export const isValidAppStateScopeValue = (value) => {
47
+ // Only check if the provided value is valid
48
+ if (value !== undefined && Object.keys(ScaleFactors).includes(value)) {
49
+ return value;
50
+ }
51
+ return NEUTRAL_SCOPE;
52
+ };
53
+ export const isValidAppStateScopeExponentThresholdValue = (value, defaultValue) => {
54
+ const finite = isValidFinitePositiveByteValue(value, defaultValue);
55
+ if (finite >= 1 && finite <= 36) {
56
+ return finite;
57
+ }
58
+ return defaultValue;
59
+ };
60
+ export const isValidPrecisionScopeValue = (zoom, mainScope, scopeExponentThreshold) => {
61
+ return getPrecisionScope(zoom, mainScope, scopeExponentThreshold);
62
+ };
63
+ const createHeadOnlyBinding = (head, currentScope) => {
64
+ return {
65
+ elementId: "",
66
+ focus: 0,
67
+ gap: getPrecisionValueFromRaw(0, currentScope, currentScope),
68
+ fixedPoint: null,
69
+ point: null,
70
+ head: isValidLineHeadValue(head),
71
+ };
72
+ };
73
+ const restoreElementWithProperties = (element, extra, appState) => {
74
+ var _a, _b, _c, _d, _e, _f, _g, _h;
75
+ const _element = Object.assign(Object.assign({}, element), extra);
76
+ const elementScope = isValidElementScopeValue(_element.scope, appState);
77
+ const currentScope = isValidElementScopeValue(appState === null || appState === void 0 ? void 0 : appState.scope, appState);
78
+ // Handle legacy stroke properties first
79
+ let stroke = [DEFAULT_ELEMENT_PROPS.stroke];
80
+ if (_element.strokeColor) {
81
+ // Legacy strokeColor property
82
+ stroke = [Object.assign(Object.assign({}, DEFAULT_ELEMENT_PROPS.stroke), { content: validateDeprecatedElementContent(_element.strokeColor, DEFAULT_ELEMENT_PROPS.stroke.content), width: restorePrecisionValue((_element.strokeWidth) || DEFAULT_ELEMENT_PROPS.stroke.width.value, elementScope, currentScope, DEFAULT_ELEMENT_PROPS.stroke.width.value) })];
83
+ }
84
+ else if (_element.stroke) {
85
+ // New stroke array property
86
+ stroke = _element.stroke.map(s => validateStroke(s, elementScope, currentScope));
87
+ }
88
+ // Handle legacy background properties
89
+ let background = [DEFAULT_ELEMENT_PROPS.background];
90
+ if (_element.backgroundColor) {
91
+ // Legacy backgroundColor property
92
+ background = [Object.assign(Object.assign({}, DEFAULT_ELEMENT_PROPS.background), { content: validateDeprecatedElementContent(_element.backgroundColor, DEFAULT_ELEMENT_PROPS.background.content) })];
93
+ }
94
+ else if (_element.background) {
95
+ // New background array property
96
+ background = _element.background.map(bg => validateBackground(bg));
97
+ }
98
+ const base = {
99
+ type: _element.type,
100
+ id: _element.id || randomId(),
101
+ version: _element.version || 1,
102
+ versionNonce: (_a = _element.versionNonce) !== null && _a !== void 0 ? _a : 0,
103
+ index: (_b = _element.index) !== null && _b !== void 0 ? _b : null,
104
+ isDeleted: isValidBoolean(_element.isDeleted, false),
105
+ blending: isValidBlendingValue(_element.blending),
106
+ stroke,
107
+ background,
108
+ opacity: isValidPercentageValue(_element.opacity, DEFAULT_ELEMENT_PROPS.opacity),
109
+ angle: isValidRadianValue(_element.angle, DEFAULT_ELEMENT_PROPS.angle),
110
+ x: restorePrecisionValue(_element.x, elementScope, currentScope, 0),
111
+ y: restorePrecisionValue(_element.y, elementScope, currentScope, 0),
112
+ scope: elementScope,
113
+ subset: isValidSubsetValue(_element.subset),
114
+ label: (_c = _element.label) !== null && _c !== void 0 ? _c : "Lost Element Label",
115
+ isVisible: isValidBoolean(_element.isVisible, DEFAULT_ELEMENT_PROPS.isVisible),
116
+ width: restorePrecisionValue(_element.width, elementScope, currentScope, 0),
117
+ height: restorePrecisionValue(_element.height, elementScope, currentScope, 0),
118
+ seed: (_d = _element.seed) !== null && _d !== void 0 ? _d : 1,
119
+ groupIds: (_e = _element.groupIds) !== null && _e !== void 0 ? _e : [],
120
+ frameId: (_f = _element.frameId) !== null && _f !== void 0 ? _f : null,
121
+ roundness: restorePrecisionValue(_element.roundness, elementScope, currentScope, DEFAULT_ELEMENT_PROPS.roundness.value),
122
+ boundElements: (_g = _element.boundElements) !== null && _g !== void 0 ? _g : [],
123
+ updated: (_h = _element.updated) !== null && _h !== void 0 ? _h : getUpdatedTimestamp(),
124
+ link: _element.link ? normalizeLink(_element.link) : null,
125
+ locked: isValidBoolean(_element.locked, false),
126
+ };
127
+ if ("customData" in element || "customData" in extra) {
128
+ base.customData = _element.customData;
129
+ }
130
+ const normalizedRaw = getNormalizedDimensions(base);
131
+ const normalized = {
132
+ x: restorePrecisionValue(normalizedRaw.x, elementScope, currentScope, 0, true),
133
+ y: restorePrecisionValue(normalizedRaw.y, elementScope, currentScope, 0, true),
134
+ width: restorePrecisionValue(normalizedRaw.width, elementScope, currentScope, 0, true),
135
+ height: restorePrecisionValue(normalizedRaw.height, elementScope, currentScope, 0, true),
136
+ };
137
+ return Object.assign(Object.assign(Object.assign({}, _element), base), normalized);
138
+ };
139
+ const restoreElement = (element, currentScope, appState) => {
140
+ var _a, _b;
141
+ // Migration: convert deprecated 'diamond' to 'polygon' with 4 sides
142
+ if (element.type === "diamond") {
143
+ const migrated = Object.assign(Object.assign({}, element), { type: "polygon", sides: 4 });
144
+ return restoreElement(migrated, currentScope, appState);
145
+ }
146
+ switch (element.type) {
147
+ case "text": {
148
+ let fontSize = element.fontSize;
149
+ let fontFamily = element.fontFamily;
150
+ if ("font" in element) {
151
+ try {
152
+ const fontParts = String(element.font).split(" ");
153
+ if (fontParts.length === 2) {
154
+ const [fontSizeStr, fontFamilyName] = fontParts;
155
+ const parsedSize = parseFloat(fontSizeStr);
156
+ if (!isNaN(parsedSize) && Number.isFinite(parsedSize)) {
157
+ fontSize = parsedSize;
158
+ fontFamily = getFontFamilyByName(fontFamilyName);
159
+ }
160
+ }
161
+ }
162
+ catch (error) {
163
+ console.error("Failed to parse legacy font value:", error);
164
+ fontSize = DEFAULT_FONT_SIZE;
165
+ fontFamily = DEFAULT_FONT_FAMILY;
166
+ }
167
+ }
168
+ const text = (typeof element.text === "string" && element.text) || "";
169
+ const lineHeight = element.lineHeight && Number.isFinite(element.lineHeight)
170
+ ? element.lineHeight
171
+ : element.height && Number.isFinite(element.height)
172
+ ? detectLineHeight(element)
173
+ // : getLineHeight(element.fontFamily);
174
+ : 1; // FIXME: We need better handling to get the font line height
175
+ const textElementScope = isValidElementScopeValue(element.scope, appState);
176
+ const finalFontSize = restorePrecisionValue(fontSize, textElementScope, currentScope, DEFAULT_FONT_SIZE);
177
+ const textElement = restoreElementWithProperties(element, {
178
+ fontSize: finalFontSize,
179
+ fontFamily,
180
+ text,
181
+ textAlign: isValidTextAlignValue(element.textAlign),
182
+ verticalAlign: isValidVerticalAlignValue(element.verticalAlign),
183
+ containerId: (_a = element.containerId) !== null && _a !== void 0 ? _a : null,
184
+ originalText: element.originalText || text,
185
+ autoResize: isValidBoolean(element.autoResize, true),
186
+ lineHeight,
187
+ }, appState);
188
+ // if empty text, mark as deleted. We keep in array
189
+ // for data integrity purposes (collab etc.)
190
+ if (!text && !isValidBoolean(element.isDeleted, false)) {
191
+ element = Object.assign(Object.assign({}, element), { originalText: text, isDeleted: true });
192
+ element = bumpVersion(element);
193
+ }
194
+ return textElement;
195
+ }
196
+ case "freedraw": {
197
+ const elementScope = isValidElementScopeValue(element.scope, appState);
198
+ const points = restoreElementPoints({
199
+ points: element.points,
200
+ x: element.x,
201
+ y: element.y,
202
+ width: element.width,
203
+ height: element.height,
204
+ elementScope,
205
+ currentScope,
206
+ });
207
+ return restoreElementWithProperties(element, {
208
+ points,
209
+ size: restorePrecisionValue(element.size, elementScope, currentScope, DEFAULT_FREEDRAW_ELEMENT.size),
210
+ lastCommittedPoint: element.lastCommittedPoint
211
+ ? restorePoint(element.lastCommittedPoint, elementScope, currentScope)
212
+ : null,
213
+ simulatePressure: isValidBoolean(element.simulatePressure, false),
214
+ pressures: Array.isArray(element.pressures) ? element.pressures : [],
215
+ thinning: isValidPercentageValue(element.thinning, DEFAULT_FREEDRAW_ELEMENT.thinning, true),
216
+ smoothing: isValidPercentageValue(element.smoothing, DEFAULT_FREEDRAW_ELEMENT.smoothing),
217
+ streamline: isValidPercentageValue(element.streamline, DEFAULT_FREEDRAW_ELEMENT.streamline),
218
+ easing: isValidFreeDrawEasingValue(element.easing),
219
+ start: restoreFreeDrawEnds(element.start),
220
+ end: restoreFreeDrawEnds(element.end),
221
+ }, appState);
222
+ }
223
+ case "image":
224
+ return restoreElementWithProperties(element, {
225
+ status: isValidImageStatusValue(element.status),
226
+ fileId: element.fileId,
227
+ scale: isValidImageScaleValue(element.scale),
228
+ }, appState);
229
+ case "line": {
230
+ // Don't normalize points if there are bindings
231
+ const hasBindings = !!(element.startBinding || element.endBinding);
232
+ const elementScope = isValidElementScopeValue(element.scope, appState);
233
+ const { points, lines } = restoreLinearElementPointsAndLines({
234
+ points: element.points,
235
+ lines: element.lines,
236
+ x: element.x,
237
+ y: element.y,
238
+ width: element.width,
239
+ height: element.height,
240
+ elementScope,
241
+ currentScope,
242
+ skipNormalization: hasBindings,
243
+ });
244
+ const isEditing = false; // TODO: Handle editingLinearElement properly
245
+ let finalPoints = points;
246
+ // Ensure we have at least 2 points for visibility check
247
+ if (finalPoints.length < 2 && !isEditing) {
248
+ const elementWidth = restorePrecisionValue(element.width, elementScope, currentScope, 0);
249
+ const elementHeight = restorePrecisionValue(element.height, elementScope, currentScope, 0);
250
+ finalPoints = [
251
+ {
252
+ x: getPrecisionValueFromRaw(0, elementScope, currentScope),
253
+ y: getPrecisionValueFromRaw(0, elementScope, currentScope),
254
+ mirroring: undefined,
255
+ },
256
+ {
257
+ x: elementWidth,
258
+ y: elementHeight,
259
+ mirroring: undefined,
260
+ }
261
+ ];
262
+ }
263
+ // Handle bindings, with special case for head-only bindings
264
+ const startBinding = element.startBinding;
265
+ const endBinding = element.endBinding;
266
+ // Process bindings
267
+ const processedStartBinding = startBinding && startBinding.head !== undefined &&
268
+ (!startBinding.elementId || startBinding.elementId === "")
269
+ ? createHeadOnlyBinding(startBinding.head, currentScope)
270
+ : repairBinding(element, startBinding, currentScope);
271
+ const processedEndBinding = endBinding && endBinding.head !== undefined &&
272
+ (!endBinding.elementId || endBinding.elementId === "")
273
+ ? createHeadOnlyBinding(endBinding.head, currentScope)
274
+ : repairBinding(element, endBinding, currentScope);
275
+ // Create the base restored element
276
+ const sizeFromPoints = !hasBindings && getSizeFromPoints(finalPoints.map(getScopedBezierPointFromDucPoint));
277
+ let restoredElement = restoreElementWithProperties(element, Object.assign({ points: finalPoints, lines, lastCommittedPoint: element.lastCommittedPoint ? restorePoint(element.lastCommittedPoint, element.scope, currentScope) : null, startBinding: processedStartBinding, endBinding: processedEndBinding, x: element.x, y: element.y }, (!sizeFromPoints ? {} : {
278
+ width: getPrecisionValueFromScoped(sizeFromPoints.width, element.scope, currentScope),
279
+ height: getPrecisionValueFromScoped(sizeFromPoints.height, element.scope, currentScope),
280
+ })), appState);
281
+ const { points: updatedPoints, lines: updatedLines } = mergeOverlappingPoints(finalPoints, lines, LINE_CONFIRM_THRESHOLD);
282
+ restoredElement = Object.assign(Object.assign({}, restoredElement), { points: updatedPoints, lines: updatedLines });
283
+ // Validate path overrides after we have the final points and lines
284
+ const validatedPathOverrides = validatePathOverrides(element.pathOverrides, restoredElement, elementScope, currentScope);
285
+ return Object.assign(Object.assign({}, restoredElement), { pathOverrides: validatedPathOverrides });
286
+ }
287
+ case "arrow": {
288
+ // since arrow is deprecated, we convert it to line
289
+ return restoreElement(Object.assign(Object.assign({}, element), { type: "line" }), currentScope, appState);
290
+ }
291
+ case "ellipse": {
292
+ const ratio = isValidPercentageValue(element.ratio, DEFAULT_ELLIPSE_ELEMENT.ratio);
293
+ const startAngle = isValidCutAngleValue(element.startAngle, DEFAULT_ELLIPSE_ELEMENT.startAngle);
294
+ const endAngle = isValidCutAngleValue(element.endAngle, DEFAULT_ELLIPSE_ELEMENT.endAngle);
295
+ const showAuxCrosshair = (_b = element.showAuxCrosshair) !== null && _b !== void 0 ? _b : DEFAULT_ELLIPSE_ELEMENT.showAuxCrosshair;
296
+ return restoreElementWithProperties(element, {
297
+ ratio,
298
+ startAngle,
299
+ endAngle,
300
+ showAuxCrosshair,
301
+ }, appState);
302
+ }
303
+ case "rectangle":
304
+ case "embeddable":
305
+ return restoreElementWithProperties(element, {}, appState);
306
+ case "polygon": {
307
+ const sides = isValidPolygonSides(element.sides);
308
+ return restoreElementWithProperties(Object.assign(Object.assign({}, element), { sides }), {}, appState);
309
+ }
310
+ case "frame": {
311
+ const frameElement = element;
312
+ return restoreElementWithProperties(frameElement, Object.assign({}, restoreDucStackProperties(frameElement, currentScope)), appState);
313
+ }
314
+ case "table": {
315
+ const tableElement = element;
316
+ return restoreElementWithProperties(tableElement, {
317
+ columnOrder: tableElement.columnOrder || [],
318
+ rowOrder: tableElement.rowOrder || [],
319
+ columns: restoreTableColumns(tableElement.columns, element.scope, currentScope),
320
+ rows: restoreTableRows(tableElement.rows, element.scope, currentScope),
321
+ cells: restoreTableCells(tableElement.cells, element.scope, currentScope),
322
+ style: tableElement.style ? restoreTableStyleProps(tableElement.style, element.scope, currentScope) : undefined,
323
+ }, appState);
324
+ }
325
+ case "doc": {
326
+ const docElement = element;
327
+ return restoreElementWithProperties(docElement, {
328
+ content: docElement.content || "",
329
+ }, appState);
330
+ }
331
+ }
332
+ return null;
333
+ };
334
+ /**
335
+ * Converts a plain number or legacy value to a PrecisionValue object
336
+ * @param value - The value to convert (can be a raw number or legacy value)
337
+ * @param elementScope - The scope to use for the precision value
338
+ * @returns A properly formatted PrecisionValue object
339
+ */
340
+ export const restorePrecisionValue = (value, elementScope, currentScope, defaultValue, fromScoped = false) => {
341
+ const fallbackValue = getPrecisionValueFromRaw((defaultValue !== null && defaultValue !== void 0 ? defaultValue : 0), currentScope, currentScope);
342
+ if (value === undefined || value === null) {
343
+ // Return default value with given scope
344
+ return fallbackValue;
345
+ }
346
+ if (typeof value === 'number') {
347
+ // If value is a number, check if it's finite. Otherwise, use fallback.
348
+ if (!Number.isFinite(value)) {
349
+ return fallbackValue;
350
+ }
351
+ // Legacy value (finite number), convert to PrecisionValue
352
+ return fromScoped
353
+ ? getPrecisionValueFromScoped(value, elementScope, currentScope)
354
+ : getPrecisionValueFromRaw(value, elementScope, currentScope);
355
+ }
356
+ return getPrecisionValueFromRaw(value.value, elementScope, currentScope);
357
+ };
358
+ /**
359
+ * Restores a point that might have legacy format (x,y as numbers)
360
+ * @param point - The point to restore
361
+ * @param elementScope - The scope to use for the precision values
362
+ * @returns A properly formatted DucPoint
363
+ */
364
+ export const restorePoint = (point, elementScope, currentScope) => {
365
+ if (!point) {
366
+ return null;
367
+ }
368
+ // Handle x and y conversion
369
+ const xValue = restorePrecisionValue(point.x, elementScope, currentScope);
370
+ const yValue = restorePrecisionValue(point.y, elementScope, currentScope);
371
+ if (!xValue || !yValue) {
372
+ return null;
373
+ }
374
+ // Only keep the new DucPoint structure, ignore legacy properties
375
+ return {
376
+ x: xValue,
377
+ y: yValue,
378
+ mirroring: isValidBezierMirroringValue(point.mirroring),
379
+ };
380
+ };
381
+ const restoreElementPoints = ({ points: oldPoints, x, y, width, height, elementScope, currentScope, }) => {
382
+ // Convert input parameters to plain numbers if they're precision values
383
+ const validatedWidth = restorePrecisionValue(width, elementScope, currentScope, 0);
384
+ const validatedHeight = restorePrecisionValue(height, elementScope, currentScope, 0);
385
+ // Process the points array with proper conversion
386
+ let points = [];
387
+ if (typeof oldPoints === "object" && Array.isArray(oldPoints)) {
388
+ const migratedPoints = migratePoints(oldPoints);
389
+ points = migratedPoints
390
+ .map((point) => {
391
+ const restoredPoint = restorePoint(point, elementScope, currentScope);
392
+ if (!restoredPoint) {
393
+ return null;
394
+ }
395
+ return restoredPoint;
396
+ })
397
+ .filter(Boolean);
398
+ // Ensure we have at least 2 points for linear elements
399
+ if (points.length === 1) {
400
+ points.push({
401
+ x: validatedWidth,
402
+ y: validatedHeight,
403
+ mirroring: undefined,
404
+ });
405
+ }
406
+ }
407
+ else {
408
+ // Default two points
409
+ points = [
410
+ {
411
+ x: getPrecisionValueFromRaw(0, elementScope, currentScope),
412
+ y: getPrecisionValueFromRaw(0, elementScope, currentScope),
413
+ mirroring: undefined,
414
+ },
415
+ {
416
+ x: validatedWidth,
417
+ y: validatedHeight,
418
+ mirroring: undefined,
419
+ },
420
+ ];
421
+ }
422
+ if (points.length === 2 &&
423
+ points[1] && // Should always be true if points.length === 2
424
+ points[1].x.value === 0 &&
425
+ points[1].y.value === 0 &&
426
+ (validatedWidth.value !== 0 || validatedHeight.value !== 0)) {
427
+ points[1] = Object.assign(Object.assign({}, points[1]), { x: validatedWidth, y: validatedHeight });
428
+ }
429
+ return points;
430
+ };
431
+ const restoreLinearElementPointsAndLines = ({ points: oldPoints, lines: oldLines, x, y, width, height, elementScope, currentScope, skipNormalization, }) => {
432
+ const validatedX = restorePrecisionValue(x, elementScope, currentScope, 0);
433
+ const validatedY = restorePrecisionValue(y, elementScope, currentScope, 0);
434
+ const validatedWidth = restorePrecisionValue(width, elementScope, currentScope, 0);
435
+ const validatedHeight = restorePrecisionValue(height, elementScope, currentScope, 0);
436
+ let points = restoreElementPoints({
437
+ points: oldPoints,
438
+ x,
439
+ y,
440
+ width,
441
+ height,
442
+ elementScope,
443
+ currentScope,
444
+ });
445
+ let lines = oldLines;
446
+ if (lines === undefined || lines === null) {
447
+ lines = [];
448
+ for (let i = 0; i < points.length - 1; i++) {
449
+ lines.push([
450
+ { index: i, handle: null },
451
+ { index: i + 1, handle: null },
452
+ ]);
453
+ }
454
+ }
455
+ else {
456
+ lines = lines.map((line) => {
457
+ return [
458
+ {
459
+ index: line[0].index,
460
+ handle: line[0].handle
461
+ ? restorePoint(line[0].handle, elementScope, currentScope)
462
+ : null,
463
+ },
464
+ {
465
+ index: line[1].index,
466
+ handle: line[1].handle
467
+ ? restorePoint(line[1].handle, elementScope, currentScope)
468
+ : null,
469
+ },
470
+ ];
471
+ });
472
+ }
473
+ if (!skipNormalization &&
474
+ points.length >= 2 &&
475
+ (points[0].x.value !== 0 || points[0].y.value !== 0)) {
476
+ const normalizedResult = getNormalizedPoints({
477
+ points,
478
+ lines,
479
+ x: validatedX,
480
+ y: validatedY,
481
+ scope: elementScope,
482
+ }, currentScope);
483
+ const firstPoint = points[0];
484
+ const lastPoint = points[points.length - 1];
485
+ points = normalizedResult.points;
486
+ lines = normalizedResult.lines;
487
+ if (oldPoints && oldPoints.length === points.length) {
488
+ if (firstPoint.x.value !== 0 || firstPoint.y.value !== 0) {
489
+ points[0] = Object.assign({}, points[0]);
490
+ }
491
+ if (lastPoint.x.value !== validatedWidth.value ||
492
+ lastPoint.y.value !== validatedHeight.value) {
493
+ points[points.length - 1] = Object.assign({}, points[points.length - 1]);
494
+ }
495
+ }
496
+ }
497
+ return { points, lines };
498
+ };
499
+ /**
500
+ * Repairs container element's boundElements array by removing duplicates and
501
+ * fixing containerId of bound elements if not present. Also removes any
502
+ * bound elements that do not exist in the elements array.
503
+ *
504
+ * NOTE mutates elements.
505
+ */
506
+ const repairContainerElement = (container, elementsMap) => {
507
+ if (container.boundElements) {
508
+ const boundElements = container.boundElements.slice();
509
+ const boundIds = new Set();
510
+ container.boundElements = boundElements.reduce((acc, binding) => {
511
+ const boundElement = elementsMap.get(binding.id);
512
+ if (boundElement && !boundIds.has(binding.id)) {
513
+ boundIds.add(binding.id);
514
+ if (boundElement.isDeleted) {
515
+ return acc;
516
+ }
517
+ acc.push(binding);
518
+ if (isTextElement(boundElement) &&
519
+ !boundElement.containerId) {
520
+ boundElement.containerId =
521
+ container.id;
522
+ }
523
+ }
524
+ return acc;
525
+ }, []);
526
+ }
527
+ };
528
+ /**
529
+ * Repairs target bound element's container's boundElements array,
530
+ * or removes contaienrId if container does not exist.
531
+ *
532
+ * NOTE mutates elements.
533
+ */
534
+ const repairBoundElement = (boundElement, elementsMap) => {
535
+ const container = boundElement.containerId
536
+ ? elementsMap.get(boundElement.containerId)
537
+ : null;
538
+ if (!container) {
539
+ boundElement.containerId = null;
540
+ return;
541
+ }
542
+ if (boundElement.isDeleted) {
543
+ return;
544
+ }
545
+ if (container.boundElements &&
546
+ !container.boundElements.find((binding) => binding.id === boundElement.id)) {
547
+ const boundElements = (container.boundElements || (container.boundElements = [])).slice();
548
+ boundElements.push({ type: "text", id: boundElement.id });
549
+ container.boundElements = boundElements;
550
+ }
551
+ };
552
+ /**
553
+ * Remove an element's frameId if its containing frame is non-existent
554
+ *
555
+ * NOTE mutates elements.
556
+ */
557
+ const repairFrameMembership = (element, elementsMap) => {
558
+ if (element.frameId) {
559
+ const containingFrame = elementsMap.get(element.frameId);
560
+ if (!containingFrame) {
561
+ element.frameId = null;
562
+ }
563
+ }
564
+ };
565
+ // Add this function to handle migrating from array-based ordering to explicit z-index
566
+ /**
567
+ * Assigns z-index values to elements based on their position in the array.
568
+ * This recreates the original visual stacking that was implied by array order
569
+ * before explicit z-index support was added.
570
+ */
571
+ export const migrateArrayOrderToZIndex = (elements) => {
572
+ // Check if we need to do a migration (if any element lacks z-index)
573
+ const needsMigration = elements.some(el => el.zIndex === undefined || el.zIndex === null);
574
+ if (!needsMigration) {
575
+ return elements;
576
+ }
577
+ // Create a new array with explicit z-index values
578
+ return elements.map((element, index) => {
579
+ // Only update elements that don't already have a valid z-index
580
+ if (element.zIndex === undefined || element.zIndex === null) {
581
+ return Object.assign(Object.assign({}, element), { zIndex: index });
582
+ }
583
+ return element;
584
+ });
585
+ };
586
+ // Now update the restoreElements function to use our migration function
587
+ export const restoreElements = (elements, currentScope,
588
+ /** NOTE doesn't serve for reconciliation */
589
+ localElements, opts) => {
590
+ const existingIds = new Set();
591
+ const localElementsMap = localElements ? arrayToMap(localElements) : null;
592
+ // First restore all elements with their original properties
593
+ const restored = (elements || []).reduce((elements, element) => {
594
+ if (element.type !== "selection") {
595
+ let migratedElement = restoreElement(element, currentScope, opts === null || opts === void 0 ? void 0 : opts.appState);
596
+ const isEditing = false; // TODO: Handle editingLinearElement properly
597
+ if (migratedElement &&
598
+ (!isInvisiblySmallElement(migratedElement) || isEditing)) {
599
+ const localElement = localElementsMap === null || localElementsMap === void 0 ? void 0 : localElementsMap.get(element.id);
600
+ if (localElement && localElement.version > migratedElement.version) {
601
+ migratedElement = bumpVersion(migratedElement, localElement.version);
602
+ }
603
+ if (existingIds.has(migratedElement.id)) {
604
+ migratedElement = Object.assign(Object.assign({}, migratedElement), { id: randomId() });
605
+ }
606
+ existingIds.add(migratedElement.id);
607
+ elements.push(migratedElement);
608
+ }
609
+ }
610
+ return elements;
611
+ }, []);
612
+ let restoredElements = (opts === null || opts === void 0 ? void 0 : opts.syncInvalidIndices)
613
+ ? opts.syncInvalidIndices(restored, currentScope)
614
+ : restored;
615
+ // Migrate array ordering to explicit z-index values if needed
616
+ restoredElements = migrateArrayOrderToZIndex(restoredElements);
617
+ if (!(opts === null || opts === void 0 ? void 0 : opts.repairBindings)) {
618
+ return restoredElements;
619
+ }
620
+ const restoredElementsMap = arrayToMap(restoredElements);
621
+ for (const element of restoredElements) {
622
+ if (element.frameId) {
623
+ repairFrameMembership(element, restoredElementsMap);
624
+ }
625
+ if (isTextElement(element) && element.containerId) {
626
+ repairBoundElement(element, restoredElementsMap);
627
+ }
628
+ else if (element.boundElements) {
629
+ repairContainerElement(element, restoredElementsMap);
630
+ }
631
+ if (opts.refreshDimensions && isTextElement(element)) {
632
+ Object.assign(element, refreshTextDimensions(element, getContainerElement(element, restoredElementsMap), restoredElementsMap, currentScope));
633
+ }
634
+ if (isLinearElement(element)) {
635
+ // Helper function to check if we should keep a binding
636
+ const shouldKeepBinding = (binding) => {
637
+ if (!binding)
638
+ return true; // No binding, nothing to remove
639
+ // Keep head-only bindings
640
+ if (binding.head !== undefined && (!binding.elementId || binding.elementId === "")) {
641
+ return true;
642
+ }
643
+ // If binding has an elementId, check if it points to a valid element
644
+ const elementExists = restoredElementsMap.has(binding.elementId);
645
+ // For linear-to-linear bindings, ensure the point attribute is valid
646
+ if (binding.point && elementExists) {
647
+ const targetElement = restoredElementsMap.get(binding.elementId);
648
+ if (isLinearElement(targetElement)) {
649
+ // Check if the point index is within bounds of the target element's points
650
+ if (binding.point.index >= 0 &&
651
+ binding.point.index < targetElement.points.length &&
652
+ Math.abs(binding.point.offset) <= 1) {
653
+ return true;
654
+ }
655
+ }
656
+ }
657
+ return elementExists;
658
+ };
659
+ // Process start binding
660
+ if (element.startBinding && !shouldKeepBinding(element.startBinding)) {
661
+ element.startBinding = null;
662
+ }
663
+ // Process end binding
664
+ if (element.endBinding && !shouldKeepBinding(element.endBinding)) {
665
+ element.endBinding = null;
666
+ }
667
+ // Update the bound elements reference for each valid binding
668
+ // This ensures both sides of the binding relationship are updated
669
+ const updateBoundElementsRef = (binding) => {
670
+ var _a;
671
+ if (!binding || !binding.elementId)
672
+ return;
673
+ const targetElement = restoredElementsMap.get(binding.elementId);
674
+ if (targetElement && !targetElement.isDeleted) {
675
+ // Add the linear element to the target's boundElements if not already there
676
+ if (!((_a = targetElement.boundElements) === null || _a === void 0 ? void 0 : _a.some((be) => be.id === element.id))) {
677
+ const boundElements = targetElement.boundElements || [];
678
+ targetElement.boundElements = [...boundElements, {
679
+ id: element.id,
680
+ type: element.type
681
+ }];
682
+ }
683
+ }
684
+ };
685
+ // Update bound elements references
686
+ updateBoundElementsRef(element.startBinding);
687
+ updateBoundElementsRef(element.endBinding);
688
+ }
689
+ }
690
+ return restoredElements;
691
+ };
692
+ export const restoreDucState = (ducState, localDucState) => {
693
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
694
+ ducState = ducState || {};
695
+ const defaultDucState = getDefaultDucState();
696
+ const scopeExponentThreshold = isValidAppStateScopeExponentThresholdValue(ducState.scopeExponentThreshold, defaultDucState.scopeExponentThreshold);
697
+ const mainScope = isValidAppStateScopeValue(ducState.mainScope);
698
+ const zoomValue = getNormalizedZoom(isFiniteNumber(ducState.zoom)
699
+ ? ducState.zoom
700
+ : (_b = (_a = ducState.zoom) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : defaultDucState.zoom.value);
701
+ const scope = isValidPrecisionScopeValue(zoomValue, mainScope, scopeExponentThreshold);
702
+ const scopedZoom = getScopedZoomValue(zoomValue, scope);
703
+ return Object.assign(Object.assign({}, defaultDucState), { viewBackgroundColor: (_c = ducState.viewBackgroundColor) !== null && _c !== void 0 ? _c : defaultDucState.viewBackgroundColor, scope,
704
+ mainScope, standard: (_d = isValidStandard(ducState.standard)) !== null && _d !== void 0 ? _d : defaultDucState.standard, scrollX: ducState.scrollX ?
705
+ restorePrecisionValue(ducState.scrollX, NEUTRAL_SCOPE, scope) :
706
+ getPrecisionValueFromRaw(defaultDucState.scrollX.value, NEUTRAL_SCOPE, scope), scrollY: ducState.scrollY ?
707
+ restorePrecisionValue(ducState.scrollY, NEUTRAL_SCOPE, scope) :
708
+ getPrecisionValueFromRaw(defaultDucState.scrollY.value, NEUTRAL_SCOPE, scope), zoom: {
709
+ value: zoomValue,
710
+ scoped: scopedZoom,
711
+ scaled: getScaledZoomValueForScope(scopedZoom, scope),
712
+ }, name: (_e = ducState.name) !== null && _e !== void 0 ? _e : defaultDucState.name, scrolledOutside: isValidBoolean(ducState.scrolledOutside, defaultDucState.scrolledOutside), selectedElementIds: (_f = ducState.selectedElementIds) !== null && _f !== void 0 ? _f : defaultDucState.selectedElementIds, selectedGroupIds: (_g = ducState.selectedGroupIds) !== null && _g !== void 0 ? _g : defaultDucState.selectedGroupIds, displayAllPointDistances: isValidBoolean(ducState.displayAllPointDistances, defaultDucState.displayAllPointDistances), displayDistanceOnDrawing: isValidBoolean(ducState.displayDistanceOnDrawing, defaultDucState.displayDistanceOnDrawing), displayAllPointCoordinates: isValidBoolean(ducState.displayAllPointCoordinates, defaultDucState.displayAllPointCoordinates), displayAllPointInfoSelected: isValidBoolean(ducState.displayAllPointInfoSelected, defaultDucState.displayAllPointInfoSelected), displayRootAxis: isValidBoolean(ducState.displayRootAxis, defaultDucState.displayRootAxis), lineBendingMode: isValidBoolean(ducState.lineBendingMode, defaultDucState.lineBendingMode), coordDecimalPlaces: isValidFinitePositiveByteValue(ducState.coordDecimalPlaces, defaultDucState.coordDecimalPlaces), activeGridSettings: (_h = ducState.activeGridSettings) !== null && _h !== void 0 ? _h : defaultDucState.activeGridSettings, activeSnapSettings: (_j = ducState.activeSnapSettings) !== null && _j !== void 0 ? _j : defaultDucState.activeSnapSettings, gridSize: getNormalizedGridSize(isFiniteNumber(ducState.gridSize) ? ducState.gridSize : defaultDucState.gridSize), gridStep: getNormalizedGridStep(isFiniteNumber(ducState.gridStep) ? ducState.gridStep : defaultDucState.gridStep), debugRendering: isValidBoolean(ducState.debugRendering, defaultDucState.debugRendering), editingLinearElement: (_k = ducState.editingLinearElement) !== null && _k !== void 0 ? _k : defaultDucState.editingLinearElement, scopeExponentThreshold, elementHovered: (_l = ducState.elementHovered) !== null && _l !== void 0 ? _l : defaultDucState.elementHovered, elementsPendingErasure: (_m = ducState.elementsPendingErasure) !== null && _m !== void 0 ? _m : defaultDucState.elementsPendingErasure, suggestedBindings: (_o = ducState.suggestedBindings) !== null && _o !== void 0 ? _o : defaultDucState.suggestedBindings, isBindingEnabled: isValidBoolean(ducState.isBindingEnabled, defaultDucState.isBindingEnabled), penMode: isValidBoolean(ducState.penMode, defaultDucState.penMode), activeTool: Object.assign(Object.assign({}, updateActiveTool(defaultDucState, ((_p = ducState.activeTool) === null || _p === void 0 ? void 0 : _p.type) && AllowedDucActiveTools[ducState.activeTool.type]
713
+ ? ducState.activeTool
714
+ : { type: "selection" })), { lastActiveTool: null, locked: isValidBoolean((_q = ducState.activeTool) === null || _q === void 0 ? void 0 : _q.locked, false) }), currentItemBackground: validateBackground(ducState.currentItemBackground), currentItemStroke: validateStroke(ducState.currentItemStroke, scope, scope), currentItemStartLineHead: isValidLineHeadValue(ducState.currentItemStartLineHead), currentItemEndLineHead: isValidLineHeadValue(ducState.currentItemEndLineHead), currentItemOpacity: isValidPercentageValue(ducState.currentItemOpacity, DEFAULT_ELEMENT_PROPS.opacity) });
715
+ };
716
+ /**
717
+ * Creates an extended AppState restorer function that can be provided as a prop.
718
+ * This handles restoration of extended AppState that wraps around DucState.
719
+ *
720
+ * @param restoreExtendedProps - Function to restore extended properties beyond DucState
721
+ * @returns A function that can restore the full extended AppState
722
+ */
723
+ export const createExtendedAppStateRestorer = (restoreExtendedProps) => {
724
+ return (extendedAppState, localExtendedAppState, restoredDucState) => {
725
+ // Restore the extended properties
726
+ const extendedProps = restoreExtendedProps(extendedAppState, localExtendedAppState, restoredDucState);
727
+ // Combine DucState with extended properties
728
+ return Object.assign(Object.assign({}, restoredDucState), extendedProps);
729
+ };
730
+ };
731
+ // Old restore function
732
+ // export const restore = (
733
+ // data: Pick<ImportedDataState, "appState" | "elements" | "files" | "rendererState" | "blocks" | "groups"> | null,
734
+ // /**
735
+ // * Local DucState (`this.state` or initial state from localStorage) so that we
736
+ // * don't overwrite local state with default values (when values not
737
+ // * explicitly specified).
738
+ // * Supply `null` if you can't get access to it.
739
+ // */
740
+ // localDucState: Partial<DucState> | null | undefined,
741
+ // localElements: readonly DucElement[] | null | undefined,
742
+ // elementsConfig?: ElementsConfig,
743
+ // ): RestoredDataState => {
744
+ // const restoredDucState = restoreDucState(data?.appState, localDucState || null);
745
+ // const restoredBlocks = restoreBlocks(data?.blocks, restoredDucState.scope);
746
+ // const restoredGroups = restoreGroups(data?.groups, restoredDucState.scope);
747
+ // return {
748
+ // elements: restoreElements(data?.elements, restoredDucState.scope, localElements, {
749
+ // ...elementsConfig,
750
+ // appState: restoredDucState
751
+ // }),
752
+ // appState: restoredDucState,
753
+ // files: data?.files || {},
754
+ // rendererState: data?.rendererState || null,
755
+ // blocks: restoredBlocks,
756
+ // groups: restoredGroups,
757
+ // };
758
+ // };
759
+ export const noopExtendedAppStateRestorer = (extendedAppState, localExtendedAppState, restoredDucState) => {
760
+ return restoredDucState;
761
+ };
762
+ /**
763
+ * Extended restore function that supports restoring extended AppState.
764
+ * This allows users of the library to provide their own AppState restoration logic.
765
+ */
766
+ export function restore(data,
767
+ /**
768
+ * Local extended AppState for fallback values.
769
+ * Supply `null` if you can't get access to it.
770
+ */
771
+ localExtendedAppState, localElements,
772
+ /**
773
+ * Extended AppState restorer function that handles the extended properties.
774
+ * This should be created using `createExtendedAppStateRestorer`.
775
+ */
776
+ extendedAppStateRestorer, elementsConfig) {
777
+ // First restore the DucState portion
778
+ const restoredDucState = restoreDucState(data === null || data === void 0 ? void 0 : data.appState, localExtendedAppState);
779
+ // Use the provided restorer to handle the full extended AppState
780
+ const restoredExtendedAppState = extendedAppStateRestorer(data === null || data === void 0 ? void 0 : data.appState, localExtendedAppState, restoredDucState);
781
+ const restoredBlocks = restoreBlocks(data === null || data === void 0 ? void 0 : data.blocks, restoredDucState.scope);
782
+ const restoredGroups = restoreGroups(data === null || data === void 0 ? void 0 : data.groups, restoredDucState.scope);
783
+ return {
784
+ elements: restoreElements(data === null || data === void 0 ? void 0 : data.elements, restoredDucState.scope, localElements, Object.assign(Object.assign({}, elementsConfig), { appState: restoredDucState })),
785
+ appState: restoredExtendedAppState,
786
+ files: (data === null || data === void 0 ? void 0 : data.files) || {},
787
+ rendererState: (data === null || data === void 0 ? void 0 : data.rendererState) || null,
788
+ blocks: restoredBlocks,
789
+ groups: restoredGroups,
790
+ };
791
+ }
792
+ const restoreLibraryItem = (libraryItem, currentScope) => {
793
+ const elements = restoreElements(getNonDeletedElements(libraryItem.elements), currentScope, null);
794
+ return elements.length ? Object.assign(Object.assign({}, libraryItem), { elements }) : null;
795
+ };
796
+ export const restoreLibraryItems = (libraryItems = [], defaultStatus, currentScope) => {
797
+ const restoredItems = [];
798
+ for (const item of libraryItems) {
799
+ if (Array.isArray(item)) {
800
+ const restoredItem = restoreLibraryItem({
801
+ status: defaultStatus,
802
+ elements: item,
803
+ id: randomId(),
804
+ created: Date.now(),
805
+ }, currentScope);
806
+ if (restoredItem) {
807
+ restoredItems.push(restoredItem);
808
+ }
809
+ }
810
+ else {
811
+ const _item = item;
812
+ const restoredItem = restoreLibraryItem(Object.assign(Object.assign({}, _item), { id: _item.id || randomId(), status: _item.status || defaultStatus, created: _item.created || Date.now() }), currentScope);
813
+ if (restoredItem) {
814
+ restoredItems.push(restoredItem);
815
+ }
816
+ }
817
+ }
818
+ return restoredItems;
819
+ };
820
+ export const isValidFillStyleValue = (value) => {
821
+ if (value === undefined || !Object.values(ELEMENT_CONTENT_PREFERENCE).includes(value))
822
+ return ELEMENT_CONTENT_PREFERENCE.solid;
823
+ return value;
824
+ };
825
+ export const isValidStrokePreferenceValue = (value) => {
826
+ if (value === undefined || !Object.values(STROKE_PREFERENCE).includes(value))
827
+ return STROKE_PREFERENCE.solid;
828
+ return value;
829
+ };
830
+ export const isValidVerticalAlignValue = (value) => {
831
+ if (value === undefined || !Object.values(VERTICAL_ALIGN).includes(value))
832
+ return DEFAULT_VERTICAL_ALIGN;
833
+ return value;
834
+ };
835
+ export const isValidTextAlignValue = (value) => {
836
+ if (value === undefined || !Object.values(TEXT_ALIGN).includes(value))
837
+ return DEFAULT_TEXT_ALIGN;
838
+ return value;
839
+ };
840
+ export const isValidScopeValue = (value, appState) => {
841
+ // First check if the provided value is valid
842
+ if (value !== undefined && Object.keys(ScaleFactors).includes(value)) {
843
+ return value;
844
+ }
845
+ // Then check appState.mainScope if available
846
+ if ((appState === null || appState === void 0 ? void 0 : appState.mainScope) && Object.keys(ScaleFactors).includes(appState.mainScope)) {
847
+ return appState.mainScope;
848
+ }
849
+ // Then check appState.scope if available
850
+ if ((appState === null || appState === void 0 ? void 0 : appState.scope) && Object.keys(ScaleFactors).includes(appState.scope)) {
851
+ return appState.scope;
852
+ }
853
+ // Finally, use the default scope as last resort
854
+ return NEUTRAL_SCOPE;
855
+ };
856
+ export const isValidImageStatusValue = (value) => {
857
+ if (value === undefined || !Object.values(IMAGE_STATUS).includes(value))
858
+ return IMAGE_STATUS.pending;
859
+ return value;
860
+ };
861
+ export const isValidLineHeadValue = (value) => {
862
+ if (value === undefined || value === null || !Object.values(LINE_HEAD).includes(value))
863
+ return null;
864
+ return value;
865
+ };
866
+ export const isValidZoomStepValue = (value) => {
867
+ if (value === undefined || value < MIN_ZOOM_STEP || value > MAX_ZOOM_STEP)
868
+ return DEFAULT_ZOOM_STEP;
869
+ return value;
870
+ };
871
+ export const isValidImageScaleValue = (value) => {
872
+ if (value === undefined || value[0] === 0 || value[1] === 0)
873
+ return [1, 1];
874
+ return value;
875
+ };
876
+ export const isValidBezierMirroringValue = (value) => {
877
+ if (value === undefined || !Object.values(BEZIER_MIRRORING).includes(value))
878
+ return undefined;
879
+ return value;
880
+ };
881
+ export const isValidSubsetValue = (value) => {
882
+ if (value === undefined || value === null || !Object.values(ELEMENT_SUBSET).includes(value))
883
+ return null;
884
+ return value;
885
+ };
886
+ export const isValidStrokeSidePreferenceValue = (value) => {
887
+ if (value === undefined || !Object.values(STROKE_SIDE_PREFERENCE).includes(value))
888
+ return STROKE_SIDE_PREFERENCE.top;
889
+ return value;
890
+ };
891
+ export const isValidStrokeCapValue = (value) => {
892
+ if (value === undefined || !Object.values(STROKE_CAP).includes(value))
893
+ return STROKE_CAP.butt;
894
+ return value;
895
+ };
896
+ export const isValidStrokeJoinValue = (value) => {
897
+ if (value === undefined || !Object.values(STROKE_JOIN).includes(value))
898
+ return STROKE_JOIN.miter;
899
+ return value;
900
+ };
901
+ export const isValidStrokeDashValue = (value) => {
902
+ if (!value || !Array.isArray(value))
903
+ return [];
904
+ return value;
905
+ };
906
+ export const isValidStrokeMiterLimitValue = (value) => {
907
+ if (value === undefined || value < 0 || value > 100)
908
+ return 4;
909
+ return value;
910
+ };
911
+ export const isValidBlendingValue = (value) => {
912
+ if (value === undefined || !Object.values(BLENDING).includes(value))
913
+ return undefined;
914
+ return value;
915
+ };
916
+ const getFontFamilyByName = (fontFamilyName) => {
917
+ if (Object.keys(FONT_FAMILY).includes(fontFamilyName)) {
918
+ return FONT_FAMILY[fontFamilyName];
919
+ }
920
+ return DEFAULT_FONT_FAMILY;
921
+ };
922
+ const repairBinding = (element, binding, currentScope) => {
923
+ var _a;
924
+ if (!binding) {
925
+ return null;
926
+ }
927
+ // If this is a head-only binding, normalize it
928
+ if (binding.head !== undefined && (!binding.elementId || binding.elementId === "")) {
929
+ return createHeadOnlyBinding(binding.head, currentScope);
930
+ }
931
+ // Get the element's scope for conversion
932
+ const elementScope = element.scope;
933
+ // Ensure we preserve the point attribute for linear-to-linear bindings
934
+ const pointData = binding.point ? {
935
+ point: {
936
+ index: typeof binding.point.index === 'number' ? binding.point.index : 0,
937
+ offset: typeof binding.point.offset === 'number' ?
938
+ // Clamp offset between -1 and 1
939
+ Math.max(-1, Math.min(1, binding.point.offset)) :
940
+ 0
941
+ }
942
+ } : { point: null };
943
+ 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: isValidLineHeadValue(binding.head), fixedPoint: isElbowArrow(element)
944
+ ? normalizeFixedPoint((_a = binding.fixedPoint) !== null && _a !== void 0 ? _a : { x: 0.5, y: 0.5 })
945
+ : null }, pointData);
946
+ };
947
+ const validateElementContent = ({ content, defaultContent, }) => {
948
+ var _a;
949
+ return {
950
+ preference: isValidFillStyleValue(content === null || content === void 0 ? void 0 : content.preference),
951
+ src: (_a = content === null || content === void 0 ? void 0 : content.src) !== null && _a !== void 0 ? _a : defaultContent.src,
952
+ visible: isValidBoolean(content === null || content === void 0 ? void 0 : content.visible, defaultContent.visible),
953
+ opacity: isValidPercentageValue(content === null || content === void 0 ? void 0 : content.opacity, defaultContent.opacity),
954
+ tiling: (content === null || content === void 0 ? void 0 : content.tiling) || defaultContent.tiling,
955
+ };
956
+ };
957
+ const validateDeprecatedElementContent = (color, defaultContent) => {
958
+ const oldContent = tinycolor(color);
959
+ return Object.assign(Object.assign({}, defaultContent), { src: isValidColor(oldContent.toHexString(), defaultContent.src), opacity: oldContent.getAlpha() });
960
+ };
961
+ const validateStrokeStyle = (style) => {
962
+ if (!style) {
963
+ return {
964
+ preference: STROKE_PREFERENCE.solid,
965
+ cap: STROKE_CAP.butt,
966
+ join: STROKE_JOIN.miter,
967
+ dash: [],
968
+ miterLimit: 4,
969
+ };
970
+ }
971
+ return {
972
+ preference: isValidStrokePreferenceValue(style.preference),
973
+ cap: isValidStrokeCapValue(style.cap),
974
+ join: isValidStrokeJoinValue(style.join),
975
+ dash: isValidStrokeDashValue(style.dash),
976
+ miterLimit: isValidStrokeMiterLimitValue(style.miterLimit),
977
+ };
978
+ };
979
+ const validateStrokeSides = (sides) => {
980
+ if (!sides)
981
+ return undefined;
982
+ return {
983
+ preference: isValidStrokeSidePreferenceValue(sides.preference),
984
+ values: sides.values || undefined,
985
+ };
986
+ };
987
+ const validateStroke = (stroke, elementScope, currentScope) => {
988
+ var _a;
989
+ return {
990
+ content: validateElementContent({
991
+ content: stroke === null || stroke === void 0 ? void 0 : stroke.content,
992
+ defaultContent: DEFAULT_ELEMENT_PROPS.stroke.content,
993
+ }),
994
+ placement: (_a = stroke === null || stroke === void 0 ? void 0 : stroke.placement) !== null && _a !== void 0 ? _a : STROKE_PLACEMENT.center,
995
+ width: restorePrecisionValue(stroke === null || stroke === void 0 ? void 0 : stroke.width, elementScope, currentScope, DEFAULT_ELEMENT_PROPS.stroke.width.value),
996
+ style: validateStrokeStyle(stroke === null || stroke === void 0 ? void 0 : stroke.style),
997
+ strokeSides: validateStrokeSides(stroke === null || stroke === void 0 ? void 0 : stroke.strokeSides),
998
+ };
999
+ };
1000
+ const validateBackground = (bg) => {
1001
+ return {
1002
+ content: validateElementContent({
1003
+ content: bg === null || bg === void 0 ? void 0 : bg.content,
1004
+ defaultContent: DEFAULT_ELEMENT_PROPS.background.content,
1005
+ }),
1006
+ };
1007
+ };
1008
+ /**
1009
+ * Validates a DucPath object and ensures its line indices form a valid closed path
1010
+ */
1011
+ const validateDucPath = (path, element, elementScope, currentScope) => {
1012
+ if (!path || !path.lineIndices || !Array.isArray(path.lineIndices)) {
1013
+ return null;
1014
+ }
1015
+ // Validate line indices are numbers and within valid range
1016
+ const validLineIndices = path.lineIndices.filter((index) => typeof index === 'number' &&
1017
+ Number.isInteger(index) &&
1018
+ index >= 0 &&
1019
+ index < element.lines.length);
1020
+ if (validLineIndices.length === 0) {
1021
+ return null;
1022
+ }
1023
+ // Check if the line indices form a valid closed path
1024
+ const isValidClosedPath = validateClosedPath(element, validLineIndices);
1025
+ if (!isValidClosedPath) {
1026
+ return null;
1027
+ }
1028
+ return {
1029
+ lineIndices: validLineIndices,
1030
+ background: path.background ? validateBackground(path.background) : null,
1031
+ stroke: path.stroke ? validateStroke(path.stroke, elementScope, currentScope) : null,
1032
+ };
1033
+ };
1034
+ /**
1035
+ * Validates and filters path overrides for a linear element
1036
+ */
1037
+ const validatePathOverrides = (pathOverrides, element, elementScope, currentScope) => {
1038
+ if (!pathOverrides || !Array.isArray(pathOverrides)) {
1039
+ return [];
1040
+ }
1041
+ const validPaths = [];
1042
+ const usedLineIndices = new Set();
1043
+ for (const pathOverride of pathOverrides) {
1044
+ const validatedPath = validateDucPath(pathOverride, element, elementScope, currentScope);
1045
+ if (validatedPath) {
1046
+ // Check for overlapping line indices with previously validated paths
1047
+ const hasOverlap = validatedPath.lineIndices.some(index => usedLineIndices.has(index));
1048
+ if (!hasOverlap) {
1049
+ // Mark these line indices as used
1050
+ validatedPath.lineIndices.forEach(index => usedLineIndices.add(index));
1051
+ validPaths.push(validatedPath);
1052
+ }
1053
+ }
1054
+ }
1055
+ return validPaths;
1056
+ };
1057
+ export const isValidFinitePositiveByteValue = (value, defaultValue) => {
1058
+ // Return default if value is undefined or not a finite number
1059
+ if (value === undefined || !Number.isFinite(value)) {
1060
+ return defaultValue;
1061
+ }
1062
+ // Round the value to the nearest integer
1063
+ const roundedValue = Math.round(value);
1064
+ // Clamp the rounded value to the byte range [0, 255]
1065
+ return Math.max(0, Math.min(255, roundedValue));
1066
+ };
1067
+ /**
1068
+ * Validates and returns a DesignStandard value, or the default if invalid.
1069
+ */
1070
+ export const isValidStandard = (value) => {
1071
+ const validValues = Object.values(DESIGN_STANDARD);
1072
+ if (validValues.includes(value))
1073
+ return value;
1074
+ return DESIGN_STANDARD.DUC;
1075
+ };
1076
+ // Utility to validate polygon sides
1077
+ export const isValidPolygonSides = (sides) => {
1078
+ // Validate sides: integer >= 3
1079
+ if (sides >= 3) {
1080
+ if (Number.isInteger(sides)) {
1081
+ return sides;
1082
+ }
1083
+ else {
1084
+ return Math.round(sides);
1085
+ }
1086
+ }
1087
+ return DEFAULT_POLYGON_SIDES;
1088
+ };
1089
+ /**
1090
+ * Restores the groups array for AppState, ensuring correct structure and types.
1091
+ */
1092
+ export const restoreGroups = (groups, currentScope) => {
1093
+ if (!Array.isArray(groups))
1094
+ return [];
1095
+ return groups
1096
+ .filter((g) => g && typeof g === "object" && typeof g.id === "string" && typeof g.type === "string" && g.type === "group")
1097
+ .map((g) => (Object.assign(Object.assign({ id: g.id, type: "group" }, restoreDucStackProperties(g, currentScope)), { clip: isValidBoolean(g.clip, false) })));
1098
+ };
1099
+ /**
1100
+ * Restores common properties for elements leveraging _DucStackBase.
1101
+ */
1102
+ export const restoreDucStackProperties = (stack, currentScope) => {
1103
+ const defaultStackProperties = getDefaultStackProperties();
1104
+ return {
1105
+ label: typeof stack.label === "string" ? stack.label : "",
1106
+ description: typeof stack.description === "string" ? stack.description : null,
1107
+ isCollapsed: isValidBoolean(stack.isCollapsed, defaultStackProperties.isCollapsed),
1108
+ noPlot: isValidBoolean(stack.noPlot, defaultStackProperties.noPlot),
1109
+ locked: isValidBoolean(stack.locked, defaultStackProperties.locked),
1110
+ isVisible: isValidBoolean(stack.isVisible, defaultStackProperties.isVisible),
1111
+ opacity: isValidPercentageValue(stack.opacity, defaultStackProperties.opacity),
1112
+ labelingColor: isValidColor(stack.labelingColor, defaultStackProperties.labelingColor),
1113
+ strokeOverride: stack.strokeOverride ? validateStroke(stack.strokeOverride, currentScope, currentScope) : defaultStackProperties.strokeOverride,
1114
+ backgroundOverride: stack.backgroundOverride ? validateBackground(stack.backgroundOverride) : defaultStackProperties.backgroundOverride,
1115
+ clip: isValidBoolean(stack.clip, defaultStackProperties.clip),
1116
+ };
1117
+ };
1118
+ /**
1119
+ * Restores the blocks array, ensuring correct structure and types.
1120
+ */
1121
+ export const restoreBlocks = (blocks, currentScope) => {
1122
+ if (!Array.isArray(blocks))
1123
+ return [];
1124
+ return blocks
1125
+ .filter((b) => b && typeof b === "object" && typeof b.id === "string")
1126
+ .map((b) => ({
1127
+ id: b.id,
1128
+ label: typeof b.label === "string" ? b.label : "",
1129
+ description: typeof b.description === "string" ? b.description : undefined,
1130
+ version: typeof b.version === "number" ? b.version : 1,
1131
+ elements: restoreElements(b.elements, currentScope, null),
1132
+ attributes: b.attributes || undefined,
1133
+ }));
1134
+ };
1135
+ const restoreTableStyleProps = (style, elementScope, currentScope) => {
1136
+ if (!style)
1137
+ return undefined;
1138
+ const border = style.border ? {
1139
+ width: style.border.width ? restorePrecisionValue(style.border.width, elementScope, currentScope, 1) : undefined,
1140
+ dashes: style.border.dashes || undefined,
1141
+ color: style.border.color ? isValidColor(style.border.color) : undefined,
1142
+ } : undefined;
1143
+ const text = style.text ? {
1144
+ color: style.text.color ? isValidColor(style.text.color) : undefined,
1145
+ size: style.text.size ? restorePrecisionValue(style.text.size, elementScope, currentScope, DEFAULT_FONT_SIZE) : undefined,
1146
+ font: style.text.font || undefined,
1147
+ align: isValidTextAlignValue(style.text.align) || DEFAULT_TEXT_ALIGN,
1148
+ } : undefined;
1149
+ const restoredStyle = {};
1150
+ if (style.background)
1151
+ restoredStyle.background = style.background;
1152
+ if (border && Object.values(border).some(v => v !== undefined))
1153
+ restoredStyle.border = border;
1154
+ if (text && Object.values(text).some(v => v !== undefined))
1155
+ restoredStyle.text = text;
1156
+ return Object.keys(restoredStyle).length > 0 ? restoredStyle : undefined;
1157
+ };
1158
+ const restoreTableColumns = (columns, elementScope, currentScope) => {
1159
+ if (!columns)
1160
+ return {};
1161
+ const restoredColumns = {};
1162
+ for (const colId in columns) {
1163
+ const col = columns[colId];
1164
+ restoredColumns[colId] = {
1165
+ id: col.id,
1166
+ width: col.width ? restorePrecisionValue(col.width, elementScope, currentScope) : undefined,
1167
+ style: col.style ? restoreTableStyleProps(col.style, elementScope, currentScope) : undefined,
1168
+ };
1169
+ }
1170
+ return restoredColumns;
1171
+ };
1172
+ const restoreTableRows = (rows, elementScope, currentScope) => {
1173
+ if (!rows)
1174
+ return {};
1175
+ const restoredRows = {};
1176
+ for (const rowId in rows) {
1177
+ const row = rows[rowId];
1178
+ restoredRows[rowId] = {
1179
+ id: row.id,
1180
+ height: row.height ? restorePrecisionValue(row.height, elementScope, currentScope) : undefined,
1181
+ style: row.style ? restoreTableStyleProps(row.style, elementScope, currentScope) : undefined,
1182
+ };
1183
+ }
1184
+ return restoredRows;
1185
+ };
1186
+ const restoreTableCells = (cells, elementScope, currentScope) => {
1187
+ if (!cells)
1188
+ return {};
1189
+ const restoredCells = {};
1190
+ for (const cellKey in cells) {
1191
+ const cell = cells[cellKey];
1192
+ restoredCells[cellKey] = {
1193
+ rowId: cell.rowId,
1194
+ columnId: cell.columnId,
1195
+ data: cell.data || "",
1196
+ style: cell.style ? restoreTableStyleProps(cell.style, elementScope, currentScope) : undefined,
1197
+ };
1198
+ }
1199
+ return restoredCells;
1200
+ };
1201
+ export const isValidRadianValue = (value, defaultValue) => {
1202
+ if (value === undefined || !Number.isFinite(value)) {
1203
+ return defaultValue;
1204
+ }
1205
+ if (value > Math.PI * 2 || value < -Math.PI * 2) {
1206
+ return defaultValue;
1207
+ }
1208
+ return value;
1209
+ };
1210
+ /**
1211
+ * Validates a Percentage value.
1212
+ * Returns a clamped value within the <0,1> range or a provided default.
1213
+ */
1214
+ export const isValidPercentageValue = (value, defaultValue, allowNegative = false) => {
1215
+ if (value === undefined || !Number.isFinite(value)) {
1216
+ return defaultValue;
1217
+ }
1218
+ // If the value is between 1 and 100, assume it's a percentage that needs to be divided by 100
1219
+ if (value > 1 && value <= 100) {
1220
+ value /= 100;
1221
+ }
1222
+ return Math.max(allowNegative ? -1 : 0, Math.min(1, value));
1223
+ };
1224
+ /**
1225
+ * Ensures the supplied easing function is valid. Falls back to the default easing otherwise.
1226
+ */
1227
+ export const isValidFreeDrawEasingValue = (value) => {
1228
+ return typeof value === "function" ? value : DEFAULT_FREEDRAW_ELEMENT.easing;
1229
+ };
1230
+ /**
1231
+ * Restores the FreeDrawEnds structure validating its members.
1232
+ */
1233
+ const restoreFreeDrawEnds = (ends) => {
1234
+ if (!ends)
1235
+ return null;
1236
+ return {
1237
+ cap: isValidBoolean(ends.cap, false),
1238
+ taper: isValidPercentageValue(ends.taper, 0),
1239
+ easing: isValidFreeDrawEasingValue(ends.easing),
1240
+ };
1241
+ };
1242
+ const isValidCutAngleValue = (value, defaultValue) => {
1243
+ const radian = isValidRadianValue(value, defaultValue);
1244
+ if (radian < 0) {
1245
+ return defaultValue;
1246
+ }
1247
+ return radian;
1248
+ };
1249
+ export const isValidBoolean = (value, defaultValue = false) => {
1250
+ return typeof value === "boolean" ? value : defaultValue;
1251
+ };
1252
+ export const isValidColor = (value, defaultValue = "#000000") => {
1253
+ const color = tinycolor(value);
1254
+ return color.isValid() ? color.toHexString() : defaultValue;
1255
+ };