@grafloria/element 0.3.18 → 0.3.20

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 (1148) hide show
  1. package/esm/src/index.js +295 -0
  2. package/esm/src/lib/dashboard-kit/dashboard.js +590 -0
  3. package/esm/src/lib/dashboard-kit/grid-binder.js +1633 -0
  4. package/esm/src/lib/dashboard-kit/grid-mapping.js +164 -0
  5. package/esm/src/lib/dashboard-kit/index.js +8 -0
  6. package/esm/src/lib/dashboard-kit/styles.js +205 -0
  7. package/esm/src/lib/dashboard-kit/widgets.js +379 -0
  8. package/esm/src/lib/diagram-kit/card.js +199 -0
  9. package/esm/src/lib/diagram-kit/editing.js +448 -0
  10. package/esm/src/lib/diagram-kit/er.js +160 -0
  11. package/esm/src/lib/diagram-kit/handles.js +312 -0
  12. package/esm/src/lib/diagram-kit/index.js +15 -0
  13. package/esm/src/lib/diagram-kit/join-guidance.js +322 -0
  14. package/esm/src/lib/diagram-kit/rows.js +144 -0
  15. package/esm/src/lib/diagram-kit/styles.js +118 -0
  16. package/esm/src/lib/diagram-kit/uml.js +135 -0
  17. package/esm/src/lib/diagram-kit/update.js +244 -0
  18. package/esm/src/lib/grafloria-flow-element.js +266 -0
  19. package/esm/src/lib/grafloria.js +69 -0
  20. package/esm/src/lib/load.js +252 -0
  21. package/esm/src/lib/node-type-registry.js +42 -0
  22. package/esm/src/lib/stencil-kit/builders.js +18 -0
  23. package/esm/src/lib/stencil-kit/card-builders.js +105 -0
  24. package/esm/src/lib/stencil-kit/index.js +9 -0
  25. package/esm/src/lib/stencil-kit/palette.js +427 -0
  26. package/esm/src/lib/stencil-kit/shape-data.js +537 -0
  27. package/esm/src/lib/stencil-kit/styles.js +126 -0
  28. package/package.json +13 -4
  29. package/src/index.d.ts +2 -1
  30. package/src/index.js +11 -2
  31. package/src/lib/dashboard-kit/grid-binder.js +16 -15
  32. package/src/lib/dashboard-kit/styles.js +9 -3
  33. package/src/lib/diagram-kit/index.d.ts +1 -0
  34. package/src/lib/diagram-kit/index.js +11 -1
  35. package/src/lib/diagram-kit/join-guidance.d.ts +116 -0
  36. package/src/lib/diagram-kit/join-guidance.js +331 -0
  37. package/src/lib/stencil-kit/palette.js +60 -6
  38. package/src/lib/stencil-kit/shape-data.d.ts +3 -2
  39. package/src/lib/stencil-kit/shape-data.js +323 -31
  40. package/src/lib/stencil-kit/styles.js +15 -0
  41. package/src/libs/element/src/index.d.ts +92 -0
  42. package/src/libs/element/src/index.js +576 -0
  43. package/src/libs/element/src/lib/dashboard-kit/dashboard.d.ts +345 -0
  44. package/src/libs/element/src/lib/dashboard-kit/dashboard.js +594 -0
  45. package/src/libs/element/src/lib/dashboard-kit/grid-binder.d.ts +277 -0
  46. package/src/libs/element/src/lib/dashboard-kit/grid-binder.js +1636 -0
  47. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.d.ts +141 -0
  48. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js +176 -0
  49. package/src/libs/element/src/lib/dashboard-kit/index.d.ts +5 -0
  50. package/src/libs/element/src/lib/dashboard-kit/index.js +33 -0
  51. package/src/libs/element/src/lib/dashboard-kit/styles.d.ts +25 -0
  52. package/src/libs/element/src/lib/dashboard-kit/styles.js +209 -0
  53. package/src/libs/element/src/lib/dashboard-kit/widgets.d.ts +112 -0
  54. package/src/libs/element/src/lib/dashboard-kit/widgets.js +389 -0
  55. package/src/libs/element/src/lib/diagram-kit/card.d.ts +75 -0
  56. package/src/libs/element/src/lib/diagram-kit/card.js +209 -0
  57. package/src/libs/element/src/lib/diagram-kit/editing.d.ts +58 -0
  58. package/src/libs/element/src/lib/diagram-kit/editing.js +453 -0
  59. package/src/libs/element/src/lib/diagram-kit/er.d.ts +73 -0
  60. package/src/libs/element/src/lib/diagram-kit/er.js +163 -0
  61. package/src/libs/element/src/lib/diagram-kit/handles.d.ts +181 -0
  62. package/src/libs/element/src/lib/diagram-kit/handles.js +325 -0
  63. package/src/libs/element/src/lib/diagram-kit/index.d.ts +10 -0
  64. package/src/libs/element/src/lib/diagram-kit/index.js +55 -0
  65. package/src/libs/element/src/lib/diagram-kit/join-guidance.d.ts +116 -0
  66. package/src/libs/element/src/lib/diagram-kit/join-guidance.js +331 -0
  67. package/src/libs/element/src/lib/diagram-kit/rows.d.ts +53 -0
  68. package/src/libs/element/src/lib/diagram-kit/rows.js +147 -0
  69. package/src/libs/element/src/lib/diagram-kit/styles.d.ts +18 -0
  70. package/src/libs/element/src/lib/diagram-kit/styles.js +122 -0
  71. package/src/libs/element/src/lib/diagram-kit/uml.d.ts +59 -0
  72. package/src/libs/element/src/lib/diagram-kit/uml.js +138 -0
  73. package/src/libs/element/src/lib/diagram-kit/update.d.ts +133 -0
  74. package/src/libs/element/src/lib/diagram-kit/update.js +251 -0
  75. package/src/libs/element/src/lib/grafloria-flow-element.d.ts +48 -0
  76. package/src/libs/element/src/lib/grafloria-flow-element.js +271 -0
  77. package/src/libs/element/src/lib/grafloria.d.ts +72 -0
  78. package/src/libs/element/src/lib/grafloria.js +74 -0
  79. package/src/libs/element/src/lib/load.d.ts +72 -0
  80. package/src/libs/element/src/lib/load.js +255 -0
  81. package/src/libs/element/src/lib/node-type-registry.d.ts +39 -0
  82. package/src/libs/element/src/lib/node-type-registry.js +50 -0
  83. package/src/libs/element/src/lib/stencil-kit/builders.d.ts +45 -0
  84. package/src/libs/element/src/lib/stencil-kit/builders.js +24 -0
  85. package/src/libs/element/src/lib/stencil-kit/card-builders.d.ts +2 -0
  86. package/src/libs/element/src/lib/stencil-kit/card-builders.js +108 -0
  87. package/src/libs/element/src/lib/stencil-kit/index.d.ts +7 -0
  88. package/src/libs/element/src/lib/stencil-kit/index.js +19 -0
  89. package/src/libs/element/src/lib/stencil-kit/palette.d.ts +93 -0
  90. package/src/libs/element/src/lib/stencil-kit/palette.js +430 -0
  91. package/src/libs/element/src/lib/stencil-kit/shape-data.d.ts +28 -0
  92. package/src/libs/element/src/lib/stencil-kit/shape-data.js +540 -0
  93. package/src/libs/element/src/lib/stencil-kit/styles.d.ts +2 -0
  94. package/src/libs/element/src/lib/stencil-kit/styles.js +129 -0
  95. package/src/libs/engine/src/adapters/component-adapter.interface.d.ts +302 -0
  96. package/src/libs/engine/src/adapters/component-adapter.interface.js +84 -0
  97. package/src/libs/engine/src/adapters/index.d.ts +7 -0
  98. package/src/libs/engine/src/adapters/index.js +11 -0
  99. package/src/libs/engine/src/clipboard/ClipboardManager.d.ts +81 -0
  100. package/src/libs/engine/src/clipboard/ClipboardManager.js +108 -0
  101. package/src/libs/engine/src/clipboard/index.d.ts +1 -0
  102. package/src/libs/engine/src/clipboard/index.js +6 -0
  103. package/src/libs/engine/src/collab/apply-op.d.ts +42 -0
  104. package/src/libs/engine/src/collab/apply-op.js +939 -0
  105. package/src/libs/engine/src/collab/capture.d.ts +147 -0
  106. package/src/libs/engine/src/collab/capture.js +510 -0
  107. package/src/libs/engine/src/collab/index.d.ts +12 -0
  108. package/src/libs/engine/src/collab/index.js +84 -0
  109. package/src/libs/engine/src/collab/integrity.d.ts +178 -0
  110. package/src/libs/engine/src/collab/integrity.js +438 -0
  111. package/src/libs/engine/src/collab/lww.d.ts +47 -0
  112. package/src/libs/engine/src/collab/lww.js +188 -0
  113. package/src/libs/engine/src/collab/op-log.d.ts +50 -0
  114. package/src/libs/engine/src/collab/op-log.js +167 -0
  115. package/src/libs/engine/src/collab/op.d.ts +120 -0
  116. package/src/libs/engine/src/collab/op.js +118 -0
  117. package/src/libs/engine/src/collab/replica.d.ts +188 -0
  118. package/src/libs/engine/src/collab/replica.js +526 -0
  119. package/src/libs/engine/src/collab/undo.d.ts +106 -0
  120. package/src/libs/engine/src/collab/undo.js +388 -0
  121. package/src/libs/engine/src/commands/Command.d.ts +66 -0
  122. package/src/libs/engine/src/commands/Command.js +64 -0
  123. package/src/libs/engine/src/commands/CommandManager.d.ts +161 -0
  124. package/src/libs/engine/src/commands/CommandManager.js +417 -0
  125. package/src/libs/engine/src/commands/basic/AddGroupCommand.d.ts +13 -0
  126. package/src/libs/engine/src/commands/basic/AddGroupCommand.js +50 -0
  127. package/src/libs/engine/src/commands/basic/AddLinkCommand.d.ts +13 -0
  128. package/src/libs/engine/src/commands/basic/AddLinkCommand.js +50 -0
  129. package/src/libs/engine/src/commands/basic/AddNodeCommand.d.ts +13 -0
  130. package/src/libs/engine/src/commands/basic/AddNodeCommand.js +65 -0
  131. package/src/libs/engine/src/commands/basic/AddToGroupCommand.d.ts +12 -0
  132. package/src/libs/engine/src/commands/basic/AddToGroupCommand.js +73 -0
  133. package/src/libs/engine/src/commands/basic/AlignCommands.d.ts +42 -0
  134. package/src/libs/engine/src/commands/basic/AlignCommands.js +138 -0
  135. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.d.ts +14 -0
  136. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js +70 -0
  137. package/src/libs/engine/src/commands/basic/CopyCommand.d.ts +29 -0
  138. package/src/libs/engine/src/commands/basic/CopyCommand.js +131 -0
  139. package/src/libs/engine/src/commands/basic/CutCommand.d.ts +49 -0
  140. package/src/libs/engine/src/commands/basic/CutCommand.js +68 -0
  141. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.d.ts +58 -0
  142. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js +309 -0
  143. package/src/libs/engine/src/commands/basic/DuplicateCommand.d.ts +31 -0
  144. package/src/libs/engine/src/commands/basic/DuplicateCommand.js +232 -0
  145. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.d.ts +12 -0
  146. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js +69 -0
  147. package/src/libs/engine/src/commands/basic/MoveGroupCommand.d.ts +46 -0
  148. package/src/libs/engine/src/commands/basic/MoveGroupCommand.js +77 -0
  149. package/src/libs/engine/src/commands/basic/MoveNodeCommand.d.ts +30 -0
  150. package/src/libs/engine/src/commands/basic/MoveNodeCommand.js +87 -0
  151. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.d.ts +39 -0
  152. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js +120 -0
  153. package/src/libs/engine/src/commands/basic/PasteCommand.d.ts +33 -0
  154. package/src/libs/engine/src/commands/basic/PasteCommand.js +228 -0
  155. package/src/libs/engine/src/commands/basic/PortCommands.d.ts +22 -0
  156. package/src/libs/engine/src/commands/basic/PortCommands.js +85 -0
  157. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.d.ts +15 -0
  158. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js +59 -0
  159. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.d.ts +12 -0
  160. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js +64 -0
  161. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.d.ts +12 -0
  162. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js +56 -0
  163. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.d.ts +12 -0
  164. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js +57 -0
  165. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.d.ts +23 -0
  166. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js +108 -0
  167. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.d.ts +16 -0
  168. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js +81 -0
  169. package/src/libs/engine/src/commands/basic/RotateNodeCommand.d.ts +37 -0
  170. package/src/libs/engine/src/commands/basic/RotateNodeCommand.js +88 -0
  171. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.d.ts +14 -0
  172. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js +74 -0
  173. package/src/libs/engine/src/commands/basic/SetGridItemCommand.d.ts +14 -0
  174. package/src/libs/engine/src/commands/basic/SetGridItemCommand.js +74 -0
  175. package/src/libs/engine/src/commands/basic/SetLayoutCommand.d.ts +16 -0
  176. package/src/libs/engine/src/commands/basic/SetLayoutCommand.js +80 -0
  177. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.d.ts +28 -0
  178. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js +83 -0
  179. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.d.ts +24 -0
  180. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js +81 -0
  181. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.d.ts +14 -0
  182. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js +75 -0
  183. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.d.ts +14 -0
  184. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js +77 -0
  185. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.d.ts +32 -0
  186. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js +87 -0
  187. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.d.ts +14 -0
  188. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js +93 -0
  189. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.d.ts +26 -0
  190. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js +81 -0
  191. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.d.ts +14 -0
  192. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js +69 -0
  193. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.d.ts +15 -0
  194. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js +88 -0
  195. package/src/libs/engine/src/commands/basic/SetParentCommand.d.ts +13 -0
  196. package/src/libs/engine/src/commands/basic/SetParentCommand.js +109 -0
  197. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.d.ts +34 -0
  198. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js +86 -0
  199. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.d.ts +31 -0
  200. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js +88 -0
  201. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.d.ts +15 -0
  202. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js +72 -0
  203. package/src/libs/engine/src/commands/basic/index.d.ts +41 -0
  204. package/src/libs/engine/src/commands/basic/index.js +52 -0
  205. package/src/libs/engine/src/commands/basic/remapNodePortIds.d.ts +23 -0
  206. package/src/libs/engine/src/commands/basic/remapNodePortIds.js +46 -0
  207. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.d.ts +31 -0
  208. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js +49 -0
  209. package/src/libs/engine/src/commands/composite/BatchCommand.d.ts +19 -0
  210. package/src/libs/engine/src/commands/composite/BatchCommand.js +61 -0
  211. package/src/libs/engine/src/commands/composite/MacroCommand.d.ts +35 -0
  212. package/src/libs/engine/src/commands/composite/MacroCommand.js +87 -0
  213. package/src/libs/engine/src/commands/composite/index.d.ts +2 -0
  214. package/src/libs/engine/src/commands/composite/index.js +7 -0
  215. package/src/libs/engine/src/commands/index.d.ts +4 -0
  216. package/src/libs/engine/src/commands/index.js +9 -0
  217. package/src/libs/engine/src/comments/comment-store.d.ts +238 -0
  218. package/src/libs/engine/src/comments/comment-store.js +538 -0
  219. package/src/libs/engine/src/comments/index.d.ts +4 -0
  220. package/src/libs/engine/src/comments/index.js +31 -0
  221. package/src/libs/engine/src/comments/mentions.d.ts +52 -0
  222. package/src/libs/engine/src/comments/mentions.js +94 -0
  223. package/src/libs/engine/src/comments/read-state.d.ts +37 -0
  224. package/src/libs/engine/src/comments/read-state.js +105 -0
  225. package/src/libs/engine/src/comments/types.d.ts +154 -0
  226. package/src/libs/engine/src/comments/types.js +107 -0
  227. package/src/libs/engine/src/config/InteractionConfig.d.ts +330 -0
  228. package/src/libs/engine/src/config/InteractionConfig.js +154 -0
  229. package/src/libs/engine/src/config/index.d.ts +1 -0
  230. package/src/libs/engine/src/config/index.js +6 -0
  231. package/src/libs/engine/src/dsl/DSL.d.ts +197 -0
  232. package/src/libs/engine/src/dsl/DSL.js +564 -0
  233. package/src/libs/engine/src/dsl/advanced/StyleParser.d.ts +75 -0
  234. package/src/libs/engine/src/dsl/advanced/StyleParser.js +166 -0
  235. package/src/libs/engine/src/dsl/advanced/TemplateParser.d.ts +88 -0
  236. package/src/libs/engine/src/dsl/advanced/TemplateParser.js +226 -0
  237. package/src/libs/engine/src/dsl/advanced/index.d.ts +9 -0
  238. package/src/libs/engine/src/dsl/advanced/index.js +13 -0
  239. package/src/libs/engine/src/dsl/detector/LayoutDetector.d.ts +80 -0
  240. package/src/libs/engine/src/dsl/detector/LayoutDetector.js +333 -0
  241. package/src/libs/engine/src/dsl/extended/BPMNGenerator.d.ts +38 -0
  242. package/src/libs/engine/src/dsl/extended/BPMNGenerator.js +90 -0
  243. package/src/libs/engine/src/dsl/extended/BPMNParser.d.ts +83 -0
  244. package/src/libs/engine/src/dsl/extended/BPMNParser.js +198 -0
  245. package/src/libs/engine/src/dsl/extended/ERDGenerator.d.ts +38 -0
  246. package/src/libs/engine/src/dsl/extended/ERDGenerator.js +126 -0
  247. package/src/libs/engine/src/dsl/extended/ERDParser.d.ts +81 -0
  248. package/src/libs/engine/src/dsl/extended/ERDParser.js +161 -0
  249. package/src/libs/engine/src/dsl/extended/ERDTransformer.d.ts +43 -0
  250. package/src/libs/engine/src/dsl/extended/ERDTransformer.js +105 -0
  251. package/src/libs/engine/src/dsl/extended/UMLGenerator.d.ts +42 -0
  252. package/src/libs/engine/src/dsl/extended/UMLGenerator.js +157 -0
  253. package/src/libs/engine/src/dsl/extended/UMLParser.d.ts +99 -0
  254. package/src/libs/engine/src/dsl/extended/UMLParser.js +200 -0
  255. package/src/libs/engine/src/dsl/extended/index.d.ts +13 -0
  256. package/src/libs/engine/src/dsl/extended/index.js +27 -0
  257. package/src/libs/engine/src/dsl/generator/DSLFormatter.d.ts +87 -0
  258. package/src/libs/engine/src/dsl/generator/DSLFormatter.js +261 -0
  259. package/src/libs/engine/src/dsl/generator/DSLGenerator.d.ts +96 -0
  260. package/src/libs/engine/src/dsl/generator/DSLGenerator.js +328 -0
  261. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.d.ts +111 -0
  262. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js +361 -0
  263. package/src/libs/engine/src/dsl/index.d.ts +35 -0
  264. package/src/libs/engine/src/dsl/index.js +64 -0
  265. package/src/libs/engine/src/dsl/lexer/Lexer.d.ts +117 -0
  266. package/src/libs/engine/src/dsl/lexer/Lexer.js +521 -0
  267. package/src/libs/engine/src/dsl/mermaid/MermaidClass.d.ts +136 -0
  268. package/src/libs/engine/src/dsl/mermaid/MermaidClass.js +429 -0
  269. package/src/libs/engine/src/dsl/mermaid/MermaidER.d.ts +118 -0
  270. package/src/libs/engine/src/dsl/mermaid/MermaidER.js +338 -0
  271. package/src/libs/engine/src/dsl/mermaid/MermaidState.d.ts +89 -0
  272. package/src/libs/engine/src/dsl/mermaid/MermaidState.js +613 -0
  273. package/src/libs/engine/src/dsl/mermaid/index.d.ts +10 -0
  274. package/src/libs/engine/src/dsl/mermaid/index.js +33 -0
  275. package/src/libs/engine/src/dsl/mermaid/layout.d.ts +70 -0
  276. package/src/libs/engine/src/dsl/mermaid/layout.js +162 -0
  277. package/src/libs/engine/src/dsl/mermaid/lines.d.ts +25 -0
  278. package/src/libs/engine/src/dsl/mermaid/lines.js +74 -0
  279. package/src/libs/engine/src/dsl/parser/Parser.d.ts +131 -0
  280. package/src/libs/engine/src/dsl/parser/Parser.js +725 -0
  281. package/src/libs/engine/src/dsl/sync/BidirectionalSync.d.ts +154 -0
  282. package/src/libs/engine/src/dsl/sync/BidirectionalSync.js +389 -0
  283. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.d.ts +128 -0
  284. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js +244 -0
  285. package/src/libs/engine/src/dsl/sync/LayoutApplicator.d.ts +140 -0
  286. package/src/libs/engine/src/dsl/sync/LayoutApplicator.js +271 -0
  287. package/src/libs/engine/src/dsl/sync/SyncStateManager.d.ts +145 -0
  288. package/src/libs/engine/src/dsl/sync/SyncStateManager.js +253 -0
  289. package/src/libs/engine/src/dsl/sync/index.d.ts +13 -0
  290. package/src/libs/engine/src/dsl/sync/index.js +21 -0
  291. package/src/libs/engine/src/dsl/transformer/ASTTransformer.d.ts +150 -0
  292. package/src/libs/engine/src/dsl/transformer/ASTTransformer.js +605 -0
  293. package/src/libs/engine/src/dsl/types/ASTNode.d.ts +159 -0
  294. package/src/libs/engine/src/dsl/types/ASTNode.js +31 -0
  295. package/src/libs/engine/src/dsl/types/Token.d.ts +79 -0
  296. package/src/libs/engine/src/dsl/types/Token.js +84 -0
  297. package/src/libs/engine/src/engine/DiagramEngine.d.ts +917 -0
  298. package/src/libs/engine/src/engine/DiagramEngine.js +2190 -0
  299. package/src/libs/engine/src/engine/DiagramMode.d.ts +51 -0
  300. package/src/libs/engine/src/engine/DiagramMode.js +53 -0
  301. package/src/libs/engine/src/engine/DiagramModeTypes.d.ts +73 -0
  302. package/src/libs/engine/src/engine/DiagramModeTypes.js +4 -0
  303. package/src/libs/engine/src/engine/ModeManager.d.ts +155 -0
  304. package/src/libs/engine/src/engine/ModeManager.js +387 -0
  305. package/src/libs/engine/src/engine/index.d.ts +2 -0
  306. package/src/libs/engine/src/engine/index.js +7 -0
  307. package/src/libs/engine/src/events/EventBus.d.ts +106 -0
  308. package/src/libs/engine/src/events/EventBus.js +226 -0
  309. package/src/libs/engine/src/events/index.d.ts +1 -0
  310. package/src/libs/engine/src/events/index.js +6 -0
  311. package/src/libs/engine/src/index.d.ts +43 -0
  312. package/src/libs/engine/src/index.js +142 -0
  313. package/src/libs/engine/src/interaction/GroupCollapseService.d.ts +53 -0
  314. package/src/libs/engine/src/interaction/GroupCollapseService.js +274 -0
  315. package/src/libs/engine/src/interaction/GroupMembershipService.d.ts +107 -0
  316. package/src/libs/engine/src/interaction/GroupMembershipService.js +245 -0
  317. package/src/libs/engine/src/interaction/SemanticMembershipService.d.ts +28 -0
  318. package/src/libs/engine/src/interaction/SemanticMembershipService.js +168 -0
  319. package/src/libs/engine/src/interaction/SwimlaneService.d.ts +62 -0
  320. package/src/libs/engine/src/interaction/SwimlaneService.js +180 -0
  321. package/src/libs/engine/src/interaction/index.d.ts +4 -0
  322. package/src/libs/engine/src/interaction/index.js +9 -0
  323. package/src/libs/engine/src/interop/drawio/importDrawio.d.ts +52 -0
  324. package/src/libs/engine/src/interop/drawio/importDrawio.js +940 -0
  325. package/src/libs/engine/src/interop/drawio/index.d.ts +1 -0
  326. package/src/libs/engine/src/interop/drawio/index.js +12 -0
  327. package/src/libs/engine/src/interop/drawio/xml.d.ts +26 -0
  328. package/src/libs/engine/src/interop/drawio/xml.js +213 -0
  329. package/src/libs/engine/src/layout/CompoundLayoutService.d.ts +121 -0
  330. package/src/libs/engine/src/layout/CompoundLayoutService.js +616 -0
  331. package/src/libs/engine/src/layout/ILayoutAlgorithm.d.ts +120 -0
  332. package/src/libs/engine/src/layout/ILayoutAlgorithm.js +88 -0
  333. package/src/libs/engine/src/layout/LayoutManager.d.ts +155 -0
  334. package/src/libs/engine/src/layout/LayoutManager.js +640 -0
  335. package/src/libs/engine/src/layout/SmartSpacingCalculator.d.ts +62 -0
  336. package/src/libs/engine/src/layout/SmartSpacingCalculator.js +134 -0
  337. package/src/libs/engine/src/layout/ViewportTransform.d.ts +55 -0
  338. package/src/libs/engine/src/layout/ViewportTransform.js +118 -0
  339. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.d.ts +34 -0
  340. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js +317 -0
  341. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.d.ts +56 -0
  342. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js +223 -0
  343. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.d.ts +60 -0
  344. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js +307 -0
  345. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.d.ts +62 -0
  346. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js +324 -0
  347. package/src/libs/engine/src/layout/community-layout-adapter.d.ts +107 -0
  348. package/src/libs/engine/src/layout/community-layout-adapter.js +486 -0
  349. package/src/libs/engine/src/layout/component-packing.d.ts +98 -0
  350. package/src/libs/engine/src/layout/component-packing.js +307 -0
  351. package/src/libs/engine/src/layout/dagre-layout-adapter.d.ts +122 -0
  352. package/src/libs/engine/src/layout/dagre-layout-adapter.js +697 -0
  353. package/src/libs/engine/src/layout/edge-bundling.interface.d.ts +159 -0
  354. package/src/libs/engine/src/layout/edge-bundling.interface.js +379 -0
  355. package/src/libs/engine/src/layout/elk-layout-adapter.d.ts +121 -0
  356. package/src/libs/engine/src/layout/elk-layout-adapter.js +586 -0
  357. package/src/libs/engine/src/layout/elk-loader.d.ts +1 -0
  358. package/src/libs/engine/src/layout/elk-loader.js +24 -0
  359. package/src/libs/engine/src/layout/force-layout-adapter.d.ts +167 -0
  360. package/src/libs/engine/src/layout/force-layout-adapter.js +790 -0
  361. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.d.ts +323 -0
  362. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js +685 -0
  363. package/src/libs/engine/src/layout/incremental/mental-map.d.ts +98 -0
  364. package/src/libs/engine/src/layout/incremental/mental-map.js +221 -0
  365. package/src/libs/engine/src/layout/incremental-layout.interface.d.ts +145 -0
  366. package/src/libs/engine/src/layout/incremental-layout.interface.js +300 -0
  367. package/src/libs/engine/src/layout/index.d.ts +83 -0
  368. package/src/libs/engine/src/layout/index.js +116 -0
  369. package/src/libs/engine/src/layout/layout-adapter.interface.d.ts +185 -0
  370. package/src/libs/engine/src/layout/layout-adapter.interface.js +10 -0
  371. package/src/libs/engine/src/layout/layout-auto-select.d.ts +160 -0
  372. package/src/libs/engine/src/layout/layout-auto-select.js +621 -0
  373. package/src/libs/engine/src/layout/layout-constraints.interface.d.ts +117 -0
  374. package/src/libs/engine/src/layout/layout-constraints.interface.js +138 -0
  375. package/src/libs/engine/src/layout/layout-graph.d.ts +70 -0
  376. package/src/libs/engine/src/layout/layout-graph.js +119 -0
  377. package/src/libs/engine/src/layout/layout-history.d.ts +147 -0
  378. package/src/libs/engine/src/layout/layout-history.js +258 -0
  379. package/src/libs/engine/src/layout/layout-host.d.ts +172 -0
  380. package/src/libs/engine/src/layout/layout-host.js +523 -0
  381. package/src/libs/engine/src/layout/layout-presets.d.ts +91 -0
  382. package/src/libs/engine/src/layout/layout-presets.js +333 -0
  383. package/src/libs/engine/src/layout/layout-quality-extended.d.ts +66 -0
  384. package/src/libs/engine/src/layout/layout-quality-extended.js +246 -0
  385. package/src/libs/engine/src/layout/layout-quality-metrics.d.ts +127 -0
  386. package/src/libs/engine/src/layout/layout-quality-metrics.js +466 -0
  387. package/src/libs/engine/src/layout/layout-registry.d.ts +309 -0
  388. package/src/libs/engine/src/layout/layout-registry.js +414 -0
  389. package/src/libs/engine/src/layout/layout.service.d.ts +100 -0
  390. package/src/libs/engine/src/layout/layout.service.js +216 -0
  391. package/src/libs/engine/src/layout/overlap-removal.d.ts +20 -0
  392. package/src/libs/engine/src/layout/overlap-removal.js +117 -0
  393. package/src/libs/engine/src/layout/port-aware-layout.interface.d.ts +232 -0
  394. package/src/libs/engine/src/layout/port-aware-layout.interface.js +413 -0
  395. package/src/libs/engine/src/layout/port-label-bridge.d.ts +77 -0
  396. package/src/libs/engine/src/layout/port-label-bridge.js +250 -0
  397. package/src/libs/engine/src/layout/portfolio-layouts.d.ts +53 -0
  398. package/src/libs/engine/src/layout/portfolio-layouts.js +388 -0
  399. package/src/libs/engine/src/layout/rng.d.ts +34 -0
  400. package/src/libs/engine/src/layout/rng.js +71 -0
  401. package/src/libs/engine/src/layout/spectral-layout-adapter.d.ts +72 -0
  402. package/src/libs/engine/src/layout/spectral-layout-adapter.js +379 -0
  403. package/src/libs/engine/src/layout/steppable-layout.d.ts +40 -0
  404. package/src/libs/engine/src/layout/steppable-layout.js +34 -0
  405. package/src/libs/engine/src/layout/subgraph-layout.interface.d.ts +269 -0
  406. package/src/libs/engine/src/layout/subgraph-layout.interface.js +452 -0
  407. package/src/libs/engine/src/layout/sugiyama/layered-layout.d.ts +9 -0
  408. package/src/libs/engine/src/layout/sugiyama/layered-layout.js +83 -0
  409. package/src/libs/engine/src/layout/sugiyama/sugiyama.d.ts +91 -0
  410. package/src/libs/engine/src/layout/sugiyama/sugiyama.js +797 -0
  411. package/src/libs/engine/src/layout/tree-layout.d.ts +43 -0
  412. package/src/libs/engine/src/layout/tree-layout.js +426 -0
  413. package/src/libs/engine/src/layout/types.d.ts +263 -0
  414. package/src/libs/engine/src/layout/types.js +6 -0
  415. package/src/libs/engine/src/lib/performance/mobile-performance.service.d.ts +43 -0
  416. package/src/libs/engine/src/lib/performance/mobile-performance.service.js +95 -0
  417. package/src/libs/engine/src/models/DiagramEntity.d.ts +174 -0
  418. package/src/libs/engine/src/models/DiagramEntity.js +366 -0
  419. package/src/libs/engine/src/models/DiagramModel.d.ts +960 -0
  420. package/src/libs/engine/src/models/DiagramModel.js +2416 -0
  421. package/src/libs/engine/src/models/GroupModel.d.ts +573 -0
  422. package/src/libs/engine/src/models/GroupModel.js +1373 -0
  423. package/src/libs/engine/src/models/LinkModel.d.ts +395 -0
  424. package/src/libs/engine/src/models/LinkModel.js +1045 -0
  425. package/src/libs/engine/src/models/NodeModel.d.ts +666 -0
  426. package/src/libs/engine/src/models/NodeModel.js +1512 -0
  427. package/src/libs/engine/src/models/PortModel.d.ts +292 -0
  428. package/src/libs/engine/src/models/PortModel.js +637 -0
  429. package/src/libs/engine/src/models/StrokeModel.d.ts +160 -0
  430. package/src/libs/engine/src/models/StrokeModel.js +387 -0
  431. package/src/libs/engine/src/models/index.d.ts +7 -0
  432. package/src/libs/engine/src/models/index.js +12 -0
  433. package/src/libs/engine/src/models/readonly-lock.d.ts +108 -0
  434. package/src/libs/engine/src/models/readonly-lock.js +125 -0
  435. package/src/libs/engine/src/performance/LRUCache.d.ts +78 -0
  436. package/src/libs/engine/src/performance/LRUCache.js +179 -0
  437. package/src/libs/engine/src/performance/PerformanceMonitor.d.ts +47 -0
  438. package/src/libs/engine/src/performance/PerformanceMonitor.js +112 -0
  439. package/src/libs/engine/src/performance/SpatialIndex.d.ts +157 -0
  440. package/src/libs/engine/src/performance/SpatialIndex.js +306 -0
  441. package/src/libs/engine/src/performance/index.d.ts +2 -0
  442. package/src/libs/engine/src/performance/index.js +7 -0
  443. package/src/libs/engine/src/plugins/PluginManager.d.ts +95 -0
  444. package/src/libs/engine/src/plugins/PluginManager.js +388 -0
  445. package/src/libs/engine/src/plugins/index.d.ts +1 -0
  446. package/src/libs/engine/src/plugins/index.js +6 -0
  447. package/src/libs/engine/src/ports/connection-rules.d.ts +32 -0
  448. package/src/libs/engine/src/ports/connection-rules.js +131 -0
  449. package/src/libs/engine/src/ports/dynamic-ports.d.ts +27 -0
  450. package/src/libs/engine/src/ports/dynamic-ports.js +135 -0
  451. package/src/libs/engine/src/ports/index.d.ts +5 -0
  452. package/src/libs/engine/src/ports/index.js +16 -0
  453. package/src/libs/engine/src/ports/port-groups.d.ts +43 -0
  454. package/src/libs/engine/src/ports/port-groups.js +185 -0
  455. package/src/libs/engine/src/ports/port-type-registry.d.ts +34 -0
  456. package/src/libs/engine/src/ports/port-type-registry.js +87 -0
  457. package/src/libs/engine/src/ports/port-types.d.ts +266 -0
  458. package/src/libs/engine/src/ports/port-types.js +30 -0
  459. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.d.ts +136 -0
  460. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js +292 -0
  461. package/src/libs/engine/src/rendering/LemonadeJSRenderer.d.ts +160 -0
  462. package/src/libs/engine/src/rendering/LemonadeJSRenderer.js +362 -0
  463. package/src/libs/engine/src/rendering/index.d.ts +2 -0
  464. package/src/libs/engine/src/rendering/index.js +7 -0
  465. package/src/libs/engine/src/routing/LiveReroutingEngine.d.ts +75 -0
  466. package/src/libs/engine/src/routing/LiveReroutingEngine.js +173 -0
  467. package/src/libs/engine/src/routing/ObstacleIndex.d.ts +42 -0
  468. package/src/libs/engine/src/routing/ObstacleIndex.js +215 -0
  469. package/src/libs/engine/src/routing/ObstacleMap.d.ts +68 -0
  470. package/src/libs/engine/src/routing/ObstacleMap.js +312 -0
  471. package/src/libs/engine/src/routing/ObstacleMapBuilder.d.ts +28 -0
  472. package/src/libs/engine/src/routing/ObstacleMapBuilder.js +76 -0
  473. package/src/libs/engine/src/routing/PathSimplifier.d.ts +119 -0
  474. package/src/libs/engine/src/routing/PathSimplifier.js +224 -0
  475. package/src/libs/engine/src/routing/RoutingEngine.d.ts +118 -0
  476. package/src/libs/engine/src/routing/RoutingEngine.js +546 -0
  477. package/src/libs/engine/src/routing/algorithms/AStarRouter.d.ts +90 -0
  478. package/src/libs/engine/src/routing/algorithms/AStarRouter.js +331 -0
  479. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.d.ts +74 -0
  480. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js +297 -0
  481. package/src/libs/engine/src/routing/algorithms/ElkRouter.d.ts +34 -0
  482. package/src/libs/engine/src/routing/algorithms/ElkRouter.js +210 -0
  483. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.d.ts +18 -0
  484. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js +224 -0
  485. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.d.ts +173 -0
  486. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js +1092 -0
  487. package/src/libs/engine/src/routing/algorithms/StraightRouter.d.ts +8 -0
  488. package/src/libs/engine/src/routing/algorithms/StraightRouter.js +53 -0
  489. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.d.ts +59 -0
  490. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js +258 -0
  491. package/src/libs/engine/src/routing/global/GlobalRouteSolver.d.ts +64 -0
  492. package/src/libs/engine/src/routing/global/GlobalRouteSolver.js +334 -0
  493. package/src/libs/engine/src/routing/global/solver-host.d.ts +65 -0
  494. package/src/libs/engine/src/routing/global/solver-host.js +87 -0
  495. package/src/libs/engine/src/routing/index.d.ts +15 -0
  496. package/src/libs/engine/src/routing/index.js +20 -0
  497. package/src/libs/engine/src/routing/types.d.ts +161 -0
  498. package/src/libs/engine/src/routing/types.js +4 -0
  499. package/src/libs/engine/src/selection/SelectionManager.d.ts +161 -0
  500. package/src/libs/engine/src/selection/SelectionManager.js +483 -0
  501. package/src/libs/engine/src/selection/index.d.ts +1 -0
  502. package/src/libs/engine/src/selection/index.js +6 -0
  503. package/src/libs/engine/src/serialization/DiagramMigrations.d.ts +41 -0
  504. package/src/libs/engine/src/serialization/DiagramMigrations.js +124 -0
  505. package/src/libs/engine/src/serialization/DiagramValidator.d.ts +20 -0
  506. package/src/libs/engine/src/serialization/DiagramValidator.js +136 -0
  507. package/src/libs/engine/src/serialization/DocumentEnvelope.d.ts +53 -0
  508. package/src/libs/engine/src/serialization/DocumentEnvelope.js +111 -0
  509. package/src/libs/engine/src/serialization/Incremental.d.ts +77 -0
  510. package/src/libs/engine/src/serialization/Incremental.js +227 -0
  511. package/src/libs/engine/src/serialization/Serializer.d.ts +29 -0
  512. package/src/libs/engine/src/serialization/Serializer.js +45 -0
  513. package/src/libs/engine/src/serialization/Subgraph.d.ts +51 -0
  514. package/src/libs/engine/src/serialization/Subgraph.js +172 -0
  515. package/src/libs/engine/src/serialization/TextFormat.d.ts +71 -0
  516. package/src/libs/engine/src/serialization/TextFormat.js +261 -0
  517. package/src/libs/engine/src/state/ConnectionStateManager.d.ts +178 -0
  518. package/src/libs/engine/src/state/ConnectionStateManager.js +319 -0
  519. package/src/libs/engine/src/state/DiagramStore.d.ts +134 -0
  520. package/src/libs/engine/src/state/DiagramStore.js +372 -0
  521. package/src/libs/engine/src/state/index.d.ts +2 -0
  522. package/src/libs/engine/src/state/index.js +7 -0
  523. package/src/libs/engine/src/sync/awareness.d.ts +91 -0
  524. package/src/libs/engine/src/sync/awareness.js +221 -0
  525. package/src/libs/engine/src/sync/batcher.d.ts +84 -0
  526. package/src/libs/engine/src/sync/batcher.js +0 -0
  527. package/src/libs/engine/src/sync/causal-buffer.d.ts +81 -0
  528. package/src/libs/engine/src/sync/causal-buffer.js +199 -0
  529. package/src/libs/engine/src/sync/index.d.ts +20 -0
  530. package/src/libs/engine/src/sync/index.js +41 -0
  531. package/src/libs/engine/src/sync/protocol.d.ts +74 -0
  532. package/src/libs/engine/src/sync/protocol.js +39 -0
  533. package/src/libs/engine/src/sync/sync-adapter.d.ts +243 -0
  534. package/src/libs/engine/src/sync/sync-adapter.js +524 -0
  535. package/src/libs/engine/src/sync/transport.d.ts +30 -0
  536. package/src/libs/engine/src/sync/transport.js +28 -0
  537. package/src/libs/engine/src/sync/transports/broadcast-channel.d.ts +39 -0
  538. package/src/libs/engine/src/sync/transports/broadcast-channel.js +117 -0
  539. package/src/libs/engine/src/sync/transports/memory.d.ts +38 -0
  540. package/src/libs/engine/src/sync/transports/memory.js +111 -0
  541. package/src/libs/engine/src/sync/transports/unreliable.d.ts +59 -0
  542. package/src/libs/engine/src/sync/transports/unreliable.js +153 -0
  543. package/src/libs/engine/src/sync/transports/websocket.d.ts +60 -0
  544. package/src/libs/engine/src/sync/transports/websocket.js +210 -0
  545. package/src/libs/engine/src/sync/version-vector.d.ts +47 -0
  546. package/src/libs/engine/src/sync/version-vector.js +218 -0
  547. package/src/libs/engine/src/template-library/common-templates.d.ts +46 -0
  548. package/src/libs/engine/src/template-library/common-templates.js +395 -0
  549. package/src/libs/engine/src/template-library/data-viz-templates.d.ts +52 -0
  550. package/src/libs/engine/src/template-library/data-viz-templates.js +471 -0
  551. package/src/libs/engine/src/template-library/erd-templates.d.ts +71 -0
  552. package/src/libs/engine/src/template-library/erd-templates.js +773 -0
  553. package/src/libs/engine/src/template-library/index.d.ts +141 -0
  554. package/src/libs/engine/src/template-library/index.js +271 -0
  555. package/src/libs/engine/src/template-library/integration.d.ts +80 -0
  556. package/src/libs/engine/src/template-library/integration.js +141 -0
  557. package/src/libs/engine/src/template-library/workflow-templates.d.ts +52 -0
  558. package/src/libs/engine/src/template-library/workflow-templates.js +438 -0
  559. package/src/libs/engine/src/templates/NodeFactory.d.ts +118 -0
  560. package/src/libs/engine/src/templates/NodeFactory.js +436 -0
  561. package/src/libs/engine/src/templates/NodeTemplate.d.ts +342 -0
  562. package/src/libs/engine/src/templates/NodeTemplate.js +13 -0
  563. package/src/libs/engine/src/templates/TemplateLoader.d.ts +46 -0
  564. package/src/libs/engine/src/templates/TemplateLoader.js +114 -0
  565. package/src/libs/engine/src/templates/TemplateRegistry.d.ts +70 -0
  566. package/src/libs/engine/src/templates/TemplateRegistry.js +128 -0
  567. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.d.ts +11 -0
  568. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js +123 -0
  569. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.d.ts +11 -0
  570. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js +123 -0
  571. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.d.ts +11 -0
  572. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js +123 -0
  573. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.d.ts +11 -0
  574. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js +124 -0
  575. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.d.ts +11 -0
  576. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js +123 -0
  577. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.d.ts +11 -0
  578. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js +124 -0
  579. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.d.ts +11 -0
  580. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js +123 -0
  581. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.d.ts +11 -0
  582. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js +122 -0
  583. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.d.ts +11 -0
  584. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js +125 -0
  585. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.d.ts +11 -0
  586. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js +123 -0
  587. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.d.ts +11 -0
  588. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js +123 -0
  589. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.d.ts +11 -0
  590. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js +123 -0
  591. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.d.ts +11 -0
  592. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js +152 -0
  593. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.d.ts +11 -0
  594. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js +123 -0
  595. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.d.ts +11 -0
  596. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js +123 -0
  597. package/src/libs/engine/src/templates/generated/bpmn/index.d.ts +15 -0
  598. package/src/libs/engine/src/templates/generated/bpmn/index.js +34 -0
  599. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.d.ts +11 -0
  600. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js +152 -0
  601. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.d.ts +11 -0
  602. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js +122 -0
  603. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.d.ts +11 -0
  604. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js +151 -0
  605. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.d.ts +11 -0
  606. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js +122 -0
  607. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.d.ts +11 -0
  608. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js +122 -0
  609. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.d.ts +11 -0
  610. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js +123 -0
  611. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.d.ts +11 -0
  612. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js +149 -0
  613. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.d.ts +11 -0
  614. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js +123 -0
  615. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.d.ts +11 -0
  616. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js +122 -0
  617. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.d.ts +11 -0
  618. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js +122 -0
  619. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.d.ts +11 -0
  620. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js +122 -0
  621. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.d.ts +11 -0
  622. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js +123 -0
  623. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.d.ts +11 -0
  624. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js +121 -0
  625. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.d.ts +11 -0
  626. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js +123 -0
  627. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.d.ts +11 -0
  628. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js +123 -0
  629. package/src/libs/engine/src/templates/generated/erd/erd-table.template.d.ts +11 -0
  630. package/src/libs/engine/src/templates/generated/erd/erd-table.template.js +123 -0
  631. package/src/libs/engine/src/templates/generated/erd/erd-view.template.d.ts +11 -0
  632. package/src/libs/engine/src/templates/generated/erd/erd-view.template.js +123 -0
  633. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.d.ts +11 -0
  634. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js +149 -0
  635. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.d.ts +11 -0
  636. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js +122 -0
  637. package/src/libs/engine/src/templates/generated/erd/index.d.ts +19 -0
  638. package/src/libs/engine/src/templates/generated/erd/index.js +42 -0
  639. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.d.ts +11 -0
  640. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js +123 -0
  641. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.d.ts +11 -0
  642. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js +123 -0
  643. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.d.ts +11 -0
  644. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js +123 -0
  645. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.d.ts +11 -0
  646. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js +124 -0
  647. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.d.ts +11 -0
  648. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js +124 -0
  649. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.d.ts +11 -0
  650. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js +123 -0
  651. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.d.ts +11 -0
  652. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js +123 -0
  653. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.d.ts +11 -0
  654. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js +122 -0
  655. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.d.ts +11 -0
  656. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js +122 -0
  657. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.d.ts +11 -0
  658. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js +123 -0
  659. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.d.ts +11 -0
  660. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js +123 -0
  661. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.d.ts +11 -0
  662. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js +123 -0
  663. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.d.ts +11 -0
  664. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js +122 -0
  665. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.d.ts +11 -0
  666. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js +123 -0
  667. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.d.ts +11 -0
  668. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js +124 -0
  669. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.d.ts +11 -0
  670. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js +124 -0
  671. package/src/libs/engine/src/templates/generated/flowchart/index.d.ts +16 -0
  672. package/src/libs/engine/src/templates/generated/flowchart/index.js +36 -0
  673. package/src/libs/engine/src/templates/generated/index.d.ts +9 -0
  674. package/src/libs/engine/src/templates/generated/index.js +13 -0
  675. package/src/libs/engine/src/templates/generated/register.d.ts +23 -0
  676. package/src/libs/engine/src/templates/generated/register.js +31 -0
  677. package/src/libs/engine/src/templates/generated/uml/index.d.ts +30 -0
  678. package/src/libs/engine/src/templates/generated/uml/index.js +64 -0
  679. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.d.ts +11 -0
  680. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js +204 -0
  681. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.d.ts +11 -0
  682. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js +124 -0
  683. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.d.ts +11 -0
  684. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js +124 -0
  685. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.d.ts +11 -0
  686. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js +123 -0
  687. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.d.ts +11 -0
  688. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js +123 -0
  689. package/src/libs/engine/src/templates/generated/uml/uml-class.template.d.ts +11 -0
  690. package/src/libs/engine/src/templates/generated/uml/uml-class.template.js +204 -0
  691. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.d.ts +11 -0
  692. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js +122 -0
  693. package/src/libs/engine/src/templates/generated/uml/uml-component.template.d.ts +11 -0
  694. package/src/libs/engine/src/templates/generated/uml/uml-component.template.js +122 -0
  695. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.d.ts +11 -0
  696. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js +204 -0
  697. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.d.ts +11 -0
  698. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js +124 -0
  699. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.d.ts +11 -0
  700. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js +204 -0
  701. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.d.ts +11 -0
  702. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js +124 -0
  703. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.d.ts +11 -0
  704. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js +124 -0
  705. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.d.ts +11 -0
  706. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js +125 -0
  707. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.d.ts +11 -0
  708. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js +123 -0
  709. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.d.ts +11 -0
  710. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js +123 -0
  711. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.d.ts +11 -0
  712. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js +204 -0
  713. package/src/libs/engine/src/templates/generated/uml/uml-join.template.d.ts +11 -0
  714. package/src/libs/engine/src/templates/generated/uml/uml-join.template.js +125 -0
  715. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.d.ts +11 -0
  716. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js +123 -0
  717. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.d.ts +11 -0
  718. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js +122 -0
  719. package/src/libs/engine/src/templates/generated/uml/uml-node.template.d.ts +11 -0
  720. package/src/libs/engine/src/templates/generated/uml/uml-node.template.js +122 -0
  721. package/src/libs/engine/src/templates/generated/uml/uml-note.template.d.ts +11 -0
  722. package/src/libs/engine/src/templates/generated/uml/uml-note.template.js +123 -0
  723. package/src/libs/engine/src/templates/generated/uml/uml-object.template.d.ts +11 -0
  724. package/src/libs/engine/src/templates/generated/uml/uml-object.template.js +204 -0
  725. package/src/libs/engine/src/templates/generated/uml/uml-package.template.d.ts +11 -0
  726. package/src/libs/engine/src/templates/generated/uml/uml-package.template.js +123 -0
  727. package/src/libs/engine/src/templates/generated/uml/uml-part.template.d.ts +11 -0
  728. package/src/libs/engine/src/templates/generated/uml/uml-part.template.js +122 -0
  729. package/src/libs/engine/src/templates/generated/uml/uml-port.template.d.ts +11 -0
  730. package/src/libs/engine/src/templates/generated/uml/uml-port.template.js +123 -0
  731. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.d.ts +11 -0
  732. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js +204 -0
  733. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.d.ts +11 -0
  734. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js +123 -0
  735. package/src/libs/engine/src/templates/generated/uml/uml-state.template.d.ts +11 -0
  736. package/src/libs/engine/src/templates/generated/uml/uml-state.template.js +123 -0
  737. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.d.ts +11 -0
  738. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js +122 -0
  739. package/src/libs/engine/src/templates/index.d.ts +12 -0
  740. package/src/libs/engine/src/templates/index.js +27 -0
  741. package/src/libs/engine/src/templates/stencils.d.ts +45 -0
  742. package/src/libs/engine/src/templates/stencils.js +85 -0
  743. package/src/libs/engine/src/types/domain/bpmn.d.ts +25 -0
  744. package/src/libs/engine/src/types/domain/bpmn.js +313 -0
  745. package/src/libs/engine/src/types/domain/erd.d.ts +29 -0
  746. package/src/libs/engine/src/types/domain/erd.js +394 -0
  747. package/src/libs/engine/src/types/domain/flowchart.d.ts +26 -0
  748. package/src/libs/engine/src/types/domain/flowchart.js +434 -0
  749. package/src/libs/engine/src/types/domain/index.d.ts +4 -0
  750. package/src/libs/engine/src/types/domain/index.js +9 -0
  751. package/src/libs/engine/src/types/domain/uml.d.ts +40 -0
  752. package/src/libs/engine/src/types/domain/uml.js +758 -0
  753. package/src/libs/engine/src/types/event.types.d.ts +142 -0
  754. package/src/libs/engine/src/types/event.types.js +96 -0
  755. package/src/libs/engine/src/types/geometry.types.d.ts +84 -0
  756. package/src/libs/engine/src/types/geometry.types.js +16 -0
  757. package/src/libs/engine/src/types/index.d.ts +7 -0
  758. package/src/libs/engine/src/types/index.js +14 -0
  759. package/src/libs/engine/src/types/layout.types.d.ts +148 -0
  760. package/src/libs/engine/src/types/layout.types.js +28 -0
  761. package/src/libs/engine/src/types/model.types.d.ts +378 -0
  762. package/src/libs/engine/src/types/model.types.js +4 -0
  763. package/src/libs/engine/src/types/performance.types.d.ts +109 -0
  764. package/src/libs/engine/src/types/performance.types.js +122 -0
  765. package/src/libs/engine/src/types/plugin.types.d.ts +30 -0
  766. package/src/libs/engine/src/types/plugin.types.js +4 -0
  767. package/src/libs/engine/src/utils/deep-clone.d.ts +9 -0
  768. package/src/libs/engine/src/utils/deep-clone.js +123 -0
  769. package/src/libs/engine/src/utils/geometry.d.ts +45 -0
  770. package/src/libs/engine/src/utils/geometry.js +241 -0
  771. package/src/libs/engine/src/utils/id.d.ts +22 -0
  772. package/src/libs/engine/src/utils/id.js +44 -0
  773. package/src/libs/engine/src/utils/index.d.ts +3 -0
  774. package/src/libs/engine/src/utils/index.js +8 -0
  775. package/src/libs/engine/src/utils/transform.d.ts +84 -0
  776. package/src/libs/engine/src/utils/transform.js +200 -0
  777. package/src/libs/engine/src/validation/ConnectionGroupValidator.d.ts +22 -0
  778. package/src/libs/engine/src/validation/ConnectionGroupValidator.js +56 -0
  779. package/src/libs/engine/src/validation/TypeRegistry.d.ts +179 -0
  780. package/src/libs/engine/src/validation/TypeRegistry.js +358 -0
  781. package/src/libs/engine/src/validation/ValidationEngine.d.ts +79 -0
  782. package/src/libs/engine/src/validation/ValidationEngine.js +1150 -0
  783. package/src/libs/engine/src/validation/index.d.ts +3 -0
  784. package/src/libs/engine/src/validation/index.js +8 -0
  785. package/src/libs/renderer/src/a11y/diagram-outline.d.ts +93 -0
  786. package/src/libs/renderer/src/a11y/diagram-outline.js +0 -0
  787. package/src/libs/renderer/src/a11y/focus-containment.d.ts +90 -0
  788. package/src/libs/renderer/src/a11y/focus-containment.js +173 -0
  789. package/src/libs/renderer/src/a11y/graph-topology.d.ts +70 -0
  790. package/src/libs/renderer/src/a11y/graph-topology.js +0 -0
  791. package/src/libs/renderer/src/a11y/index.d.ts +26 -0
  792. package/src/libs/renderer/src/a11y/index.js +30 -0
  793. package/src/libs/renderer/src/a11y/live-region.d.ts +83 -0
  794. package/src/libs/renderer/src/a11y/live-region.js +170 -0
  795. package/src/libs/renderer/src/a11y/outline-view.d.ts +62 -0
  796. package/src/libs/renderer/src/a11y/outline-view.js +158 -0
  797. package/src/libs/renderer/src/a11y/reduced-motion.d.ts +48 -0
  798. package/src/libs/renderer/src/a11y/reduced-motion.js +223 -0
  799. package/src/libs/renderer/src/a11y/semantics.d.ts +76 -0
  800. package/src/libs/renderer/src/a11y/semantics.js +229 -0
  801. package/src/libs/renderer/src/canvas/canvas-context.d.ts +167 -0
  802. package/src/libs/renderer/src/canvas/canvas-context.js +267 -0
  803. package/src/libs/renderer/src/canvas/canvas-renderer.d.ts +194 -0
  804. package/src/libs/renderer/src/canvas/canvas-renderer.js +600 -0
  805. package/src/libs/renderer/src/canvas/dirty-region.d.ts +56 -0
  806. package/src/libs/renderer/src/canvas/dirty-region.js +171 -0
  807. package/src/libs/renderer/src/canvas/index.d.ts +16 -0
  808. package/src/libs/renderer/src/canvas/index.js +79 -0
  809. package/src/libs/renderer/src/canvas/path-geometry.d.ts +112 -0
  810. package/src/libs/renderer/src/canvas/path-geometry.js +673 -0
  811. package/src/libs/renderer/src/canvas/render-backend.d.ts +133 -0
  812. package/src/libs/renderer/src/canvas/render-backend.js +339 -0
  813. package/src/libs/renderer/src/canvas/style-resolution.d.ts +101 -0
  814. package/src/libs/renderer/src/canvas/style-resolution.js +466 -0
  815. package/src/libs/renderer/src/canvas/tier-policy.d.ts +33 -0
  816. package/src/libs/renderer/src/canvas/tier-policy.js +89 -0
  817. package/src/libs/renderer/src/canvas/vnode-painter.d.ts +154 -0
  818. package/src/libs/renderer/src/canvas/vnode-painter.js +649 -0
  819. package/src/libs/renderer/src/comments/comment-overlay.d.ts +56 -0
  820. package/src/libs/renderer/src/comments/comment-overlay.js +127 -0
  821. package/src/libs/renderer/src/comments/comment-panel.d.ts +45 -0
  822. package/src/libs/renderer/src/comments/comment-panel.js +287 -0
  823. package/src/libs/renderer/src/comments/comment-pins.d.ts +34 -0
  824. package/src/libs/renderer/src/comments/comment-pins.js +227 -0
  825. package/src/libs/renderer/src/comments/index.d.ts +3 -0
  826. package/src/libs/renderer/src/comments/index.js +17 -0
  827. package/src/libs/renderer/src/export/assets.d.ts +96 -0
  828. package/src/libs/renderer/src/export/assets.js +350 -0
  829. package/src/libs/renderer/src/export/batch.d.ts +49 -0
  830. package/src/libs/renderer/src/export/batch.js +95 -0
  831. package/src/libs/renderer/src/export/bounds.d.ts +81 -0
  832. package/src/libs/renderer/src/export/bounds.js +367 -0
  833. package/src/libs/renderer/src/export/capture-host.d.ts +39 -0
  834. package/src/libs/renderer/src/export/capture-host.js +1259 -0
  835. package/src/libs/renderer/src/export/custom-nodes.d.ts +88 -0
  836. package/src/libs/renderer/src/export/custom-nodes.js +237 -0
  837. package/src/libs/renderer/src/export/index.d.ts +14 -0
  838. package/src/libs/renderer/src/export/index.js +30 -0
  839. package/src/libs/renderer/src/export/node-raster.d.ts +60 -0
  840. package/src/libs/renderer/src/export/node-raster.js +161 -0
  841. package/src/libs/renderer/src/export/pagination.d.ts +116 -0
  842. package/src/libs/renderer/src/export/pagination.js +245 -0
  843. package/src/libs/renderer/src/export/pdf/flate.d.ts +13 -0
  844. package/src/libs/renderer/src/export/pdf/flate.js +287 -0
  845. package/src/libs/renderer/src/export/pdf/index.d.ts +4 -0
  846. package/src/libs/renderer/src/export/pdf/index.js +15 -0
  847. package/src/libs/renderer/src/export/pdf/pdf-export.d.ts +64 -0
  848. package/src/libs/renderer/src/export/pdf/pdf-export.js +1076 -0
  849. package/src/libs/renderer/src/export/pdf/pdf-path.d.ts +17 -0
  850. package/src/libs/renderer/src/export/pdf/pdf-path.js +85 -0
  851. package/src/libs/renderer/src/export/pdf/pdf-primitives.d.ts +115 -0
  852. package/src/libs/renderer/src/export/pdf/pdf-primitives.js +338 -0
  853. package/src/libs/renderer/src/export/pdf/png.d.ts +25 -0
  854. package/src/libs/renderer/src/export/pdf/png.js +596 -0
  855. package/src/libs/renderer/src/export/raster.d.ts +42 -0
  856. package/src/libs/renderer/src/export/raster.js +126 -0
  857. package/src/libs/renderer/src/export/round-trip.d.ts +83 -0
  858. package/src/libs/renderer/src/export/round-trip.js +432 -0
  859. package/src/libs/renderer/src/export/scope.d.ts +16 -0
  860. package/src/libs/renderer/src/export/scope.js +69 -0
  861. package/src/libs/renderer/src/export/style-flattener.d.ts +23 -0
  862. package/src/libs/renderer/src/export/style-flattener.js +144 -0
  863. package/src/libs/renderer/src/export/svg-export.d.ts +123 -0
  864. package/src/libs/renderer/src/export/svg-export.js +178 -0
  865. package/src/libs/renderer/src/export/vnode-serializer.d.ts +75 -0
  866. package/src/libs/renderer/src/export/vnode-serializer.js +344 -0
  867. package/src/libs/renderer/src/ext/capabilities.d.ts +178 -0
  868. package/src/libs/renderer/src/ext/capabilities.js +22 -0
  869. package/src/libs/renderer/src/ext/capability-factory.d.ts +44 -0
  870. package/src/libs/renderer/src/ext/capability-factory.js +194 -0
  871. package/src/libs/renderer/src/ext/components/attach.d.ts +66 -0
  872. package/src/libs/renderer/src/ext/components/attach.js +112 -0
  873. package/src/libs/renderer/src/ext/components/background.d.ts +84 -0
  874. package/src/libs/renderer/src/ext/components/background.js +202 -0
  875. package/src/libs/renderer/src/ext/components/controls.d.ts +49 -0
  876. package/src/libs/renderer/src/ext/components/controls.js +144 -0
  877. package/src/libs/renderer/src/ext/components/minimap.d.ts +78 -0
  878. package/src/libs/renderer/src/ext/components/minimap.js +326 -0
  879. package/src/libs/renderer/src/ext/diagram-registry.d.ts +109 -0
  880. package/src/libs/renderer/src/ext/diagram-registry.js +303 -0
  881. package/src/libs/renderer/src/ext/disposable.d.ts +51 -0
  882. package/src/libs/renderer/src/ext/disposable.js +104 -0
  883. package/src/libs/renderer/src/ext/extension-host.d.ts +144 -0
  884. package/src/libs/renderer/src/ext/extension-host.js +272 -0
  885. package/src/libs/renderer/src/ext/index.d.ts +62 -0
  886. package/src/libs/renderer/src/ext/index.js +91 -0
  887. package/src/libs/renderer/src/ext/link-pipeline.d.ts +195 -0
  888. package/src/libs/renderer/src/ext/link-pipeline.js +431 -0
  889. package/src/libs/renderer/src/ext/manifest.d.ts +73 -0
  890. package/src/libs/renderer/src/ext/manifest.js +149 -0
  891. package/src/libs/renderer/src/ext/node-component.d.ts +114 -0
  892. package/src/libs/renderer/src/ext/node-component.js +290 -0
  893. package/src/libs/renderer/src/ext/plugins-loader.d.ts +1 -0
  894. package/src/libs/renderer/src/ext/plugins-loader.js +18 -0
  895. package/src/libs/renderer/src/ext/portal.d.ts +129 -0
  896. package/src/libs/renderer/src/ext/portal.js +267 -0
  897. package/src/libs/renderer/src/ext/public-api.d.ts +101 -0
  898. package/src/libs/renderer/src/ext/public-api.js +201 -0
  899. package/src/libs/renderer/src/ext/registry-scope.d.ts +93 -0
  900. package/src/libs/renderer/src/ext/registry-scope.js +142 -0
  901. package/src/libs/renderer/src/ext/tools.d.ts +164 -0
  902. package/src/libs/renderer/src/ext/tools.js +170 -0
  903. package/src/libs/renderer/src/index.d.ts +34 -0
  904. package/src/libs/renderer/src/index.js +108 -0
  905. package/src/libs/renderer/src/instance/create-diagram.d.ts +385 -0
  906. package/src/libs/renderer/src/instance/create-diagram.js +1150 -0
  907. package/src/libs/renderer/src/instance/diagram-instance.d.ts +48 -0
  908. package/src/libs/renderer/src/instance/diagram-instance.js +51 -0
  909. package/src/libs/renderer/src/instance/dom-event-binder.d.ts +394 -0
  910. package/src/libs/renderer/src/instance/dom-event-binder.js +2104 -0
  911. package/src/libs/renderer/src/instance/index.d.ts +5 -0
  912. package/src/libs/renderer/src/instance/index.js +13 -0
  913. package/src/libs/renderer/src/instance/layers.d.ts +31 -0
  914. package/src/libs/renderer/src/instance/layers.js +43 -0
  915. package/src/libs/renderer/src/instance/model-input.d.ts +229 -0
  916. package/src/libs/renderer/src/instance/model-input.js +325 -0
  917. package/src/libs/renderer/src/instance/render-scheduler.d.ts +79 -0
  918. package/src/libs/renderer/src/instance/render-scheduler.js +96 -0
  919. package/src/libs/renderer/src/instance/wheel-scroll-yield.d.ts +38 -0
  920. package/src/libs/renderer/src/instance/wheel-scroll-yield.js +118 -0
  921. package/src/libs/renderer/src/interaction/ControlPointEditor.d.ts +160 -0
  922. package/src/libs/renderer/src/interaction/ControlPointEditor.js +360 -0
  923. package/src/libs/renderer/src/interaction/WaypointEditor.d.ts +133 -0
  924. package/src/libs/renderer/src/interaction/WaypointEditor.js +263 -0
  925. package/src/libs/renderer/src/interaction/highlighters.d.ts +88 -0
  926. package/src/libs/renderer/src/interaction/highlighters.js +212 -0
  927. package/src/libs/renderer/src/interaction/in-place-editor.d.ts +63 -0
  928. package/src/libs/renderer/src/interaction/in-place-editor.js +141 -0
  929. package/src/libs/renderer/src/interaction/index.d.ts +11 -0
  930. package/src/libs/renderer/src/interaction/index.js +29 -0
  931. package/src/libs/renderer/src/interaction/ink-overlay.d.ts +53 -0
  932. package/src/libs/renderer/src/interaction/ink-overlay.js +154 -0
  933. package/src/libs/renderer/src/interaction/interaction-controller.d.ts +555 -0
  934. package/src/libs/renderer/src/interaction/interaction-controller.js +1733 -0
  935. package/src/libs/renderer/src/interaction/keyboard-navigation.d.ts +223 -0
  936. package/src/libs/renderer/src/interaction/keyboard-navigation.js +885 -0
  937. package/src/libs/renderer/src/interaction/selection-tools.d.ts +343 -0
  938. package/src/libs/renderer/src/interaction/selection-tools.js +918 -0
  939. package/src/libs/renderer/src/interaction/snapping.d.ts +210 -0
  940. package/src/libs/renderer/src/interaction/snapping.js +569 -0
  941. package/src/libs/renderer/src/interaction/touch-gestures.d.ts +160 -0
  942. package/src/libs/renderer/src/interaction/touch-gestures.js +549 -0
  943. package/src/libs/renderer/src/interaction/whiteboard-tools.d.ts +171 -0
  944. package/src/libs/renderer/src/interaction/whiteboard-tools.js +476 -0
  945. package/src/libs/renderer/src/lazy/host-culling.d.ts +116 -0
  946. package/src/libs/renderer/src/lazy/host-culling.js +135 -0
  947. package/src/libs/renderer/src/lazy/index.d.ts +7 -0
  948. package/src/libs/renderer/src/lazy/index.js +28 -0
  949. package/src/libs/renderer/src/lazy/progressive-mounter.d.ts +80 -0
  950. package/src/libs/renderer/src/lazy/progressive-mounter.js +264 -0
  951. package/src/libs/renderer/src/lazy/types.d.ts +43 -0
  952. package/src/libs/renderer/src/lazy/types.js +14 -0
  953. package/src/libs/renderer/src/lazy/view-lifecycle.d.ts +97 -0
  954. package/src/libs/renderer/src/lazy/view-lifecycle.js +221 -0
  955. package/src/libs/renderer/src/perf/index.d.ts +2 -0
  956. package/src/libs/renderer/src/perf/index.js +7 -0
  957. package/src/libs/renderer/src/perf/perf-hud.d.ts +46 -0
  958. package/src/libs/renderer/src/perf/perf-hud.js +105 -0
  959. package/src/libs/renderer/src/perf/quality-governor.d.ts +77 -0
  960. package/src/libs/renderer/src/perf/quality-governor.js +154 -0
  961. package/src/libs/renderer/src/platform/index.d.ts +1 -0
  962. package/src/libs/renderer/src/platform/index.js +5 -0
  963. package/src/libs/renderer/src/platform/platform.d.ts +34 -0
  964. package/src/libs/renderer/src/platform/platform.js +64 -0
  965. package/src/libs/renderer/src/presence/bind-presence.d.ts +51 -0
  966. package/src/libs/renderer/src/presence/bind-presence.js +144 -0
  967. package/src/libs/renderer/src/presence/index.d.ts +4 -0
  968. package/src/libs/renderer/src/presence/index.js +18 -0
  969. package/src/libs/renderer/src/presence/presence-overlay.d.ts +121 -0
  970. package/src/libs/renderer/src/presence/presence-overlay.js +465 -0
  971. package/src/libs/renderer/src/presentation/index.d.ts +3 -0
  972. package/src/libs/renderer/src/presentation/index.js +14 -0
  973. package/src/libs/renderer/src/presentation/presentation.d.ts +94 -0
  974. package/src/libs/renderer/src/presentation/presentation.js +158 -0
  975. package/src/libs/renderer/src/presentation/viewport-channel.d.ts +78 -0
  976. package/src/libs/renderer/src/presentation/viewport-channel.js +86 -0
  977. package/src/libs/renderer/src/services/animation-lifecycle.d.ts +153 -0
  978. package/src/libs/renderer/src/services/animation-lifecycle.js +326 -0
  979. package/src/libs/renderer/src/services/animation-performance.service.d.ts +191 -0
  980. package/src/libs/renderer/src/services/animation-performance.service.js +371 -0
  981. package/src/libs/renderer/src/services/animation-sequencer.d.ts +226 -0
  982. package/src/libs/renderer/src/services/animation-sequencer.js +379 -0
  983. package/src/libs/renderer/src/services/animation.service.d.ts +182 -0
  984. package/src/libs/renderer/src/services/animation.service.js +858 -0
  985. package/src/libs/renderer/src/services/custom-animation-registry.d.ts +182 -0
  986. package/src/libs/renderer/src/services/custom-animation-registry.js +361 -0
  987. package/src/libs/renderer/src/ssr/index.d.ts +1 -0
  988. package/src/libs/renderer/src/ssr/index.js +6 -0
  989. package/src/libs/renderer/src/ssr/render-to-static.d.ts +91 -0
  990. package/src/libs/renderer/src/ssr/render-to-static.js +81 -0
  991. package/src/libs/renderer/src/svg/ArrowRenderer.d.ts +159 -0
  992. package/src/libs/renderer/src/svg/ArrowRenderer.js +723 -0
  993. package/src/libs/renderer/src/svg/JumpPointDetector.d.ts +79 -0
  994. package/src/libs/renderer/src/svg/JumpPointDetector.js +176 -0
  995. package/src/libs/renderer/src/svg/JumpPointRenderer.d.ts +59 -0
  996. package/src/libs/renderer/src/svg/JumpPointRenderer.js +309 -0
  997. package/src/libs/renderer/src/svg/LabelRenderer.d.ts +76 -0
  998. package/src/libs/renderer/src/svg/LabelRenderer.js +273 -0
  999. package/src/libs/renderer/src/svg/auto-size.d.ts +76 -0
  1000. package/src/libs/renderer/src/svg/auto-size.js +142 -0
  1001. package/src/libs/renderer/src/svg/channel-nudging.d.ts +34 -0
  1002. package/src/libs/renderer/src/svg/channel-nudging.js +226 -0
  1003. package/src/libs/renderer/src/svg/edge-optimizer.d.ts +228 -0
  1004. package/src/libs/renderer/src/svg/edge-optimizer.js +606 -0
  1005. package/src/libs/renderer/src/svg/edge-templates.d.ts +152 -0
  1006. package/src/libs/renderer/src/svg/edge-templates.js +233 -0
  1007. package/src/libs/renderer/src/svg/html-node.d.ts +50 -0
  1008. package/src/libs/renderer/src/svg/html-node.js +214 -0
  1009. package/src/libs/renderer/src/svg/index.d.ts +25 -0
  1010. package/src/libs/renderer/src/svg/index.js +32 -0
  1011. package/src/libs/renderer/src/svg/link-fanout.d.ts +127 -0
  1012. package/src/libs/renderer/src/svg/link-fanout.js +333 -0
  1013. package/src/libs/renderer/src/svg/link-hit-test.d.ts +142 -0
  1014. package/src/libs/renderer/src/svg/link-hit-test.js +182 -0
  1015. package/src/libs/renderer/src/svg/motion-tracker.d.ts +18 -0
  1016. package/src/libs/renderer/src/svg/motion-tracker.js +71 -0
  1017. package/src/libs/renderer/src/svg/node-sizing.d.ts +51 -0
  1018. package/src/libs/renderer/src/svg/node-sizing.js +65 -0
  1019. package/src/libs/renderer/src/svg/node-toolbar.d.ts +30 -0
  1020. package/src/libs/renderer/src/svg/node-toolbar.js +45 -0
  1021. package/src/libs/renderer/src/svg/notation-shapes.d.ts +2 -0
  1022. package/src/libs/renderer/src/svg/notation-shapes.js +126 -0
  1023. package/src/libs/renderer/src/svg/paint-servers.d.ts +49 -0
  1024. package/src/libs/renderer/src/svg/paint-servers.js +225 -0
  1025. package/src/libs/renderer/src/svg/panel.d.ts +115 -0
  1026. package/src/libs/renderer/src/svg/panel.js +353 -0
  1027. package/src/libs/renderer/src/svg/path-outline.d.ts +35 -0
  1028. package/src/libs/renderer/src/svg/path-outline.js +134 -0
  1029. package/src/libs/renderer/src/svg/port-glyph.d.ts +27 -0
  1030. package/src/libs/renderer/src/svg/port-glyph.js +97 -0
  1031. package/src/libs/renderer/src/svg/port-label.d.ts +74 -0
  1032. package/src/libs/renderer/src/svg/port-label.js +201 -0
  1033. package/src/libs/renderer/src/svg/port-layout.d.ts +50 -0
  1034. package/src/libs/renderer/src/svg/port-layout.js +212 -0
  1035. package/src/libs/renderer/src/svg/port-positioning.d.ts +33 -0
  1036. package/src/libs/renderer/src/svg/port-positioning.js +101 -0
  1037. package/src/libs/renderer/src/svg/port-spots.d.ts +69 -0
  1038. package/src/libs/renderer/src/svg/port-spots.js +154 -0
  1039. package/src/libs/renderer/src/svg/route-memo.d.ts +63 -0
  1040. package/src/libs/renderer/src/svg/route-memo.js +206 -0
  1041. package/src/libs/renderer/src/svg/route-solver-bridge.d.ts +48 -0
  1042. package/src/libs/renderer/src/svg/route-solver-bridge.js +151 -0
  1043. package/src/libs/renderer/src/svg/shape-registry.d.ts +189 -0
  1044. package/src/libs/renderer/src/svg/shape-registry.js +1104 -0
  1045. package/src/libs/renderer/src/svg/stroke-layer.d.ts +36 -0
  1046. package/src/libs/renderer/src/svg/stroke-layer.js +183 -0
  1047. package/src/libs/renderer/src/svg/svg-renderer.d.ts +1737 -0
  1048. package/src/libs/renderer/src/svg/svg-renderer.js +7772 -0
  1049. package/src/libs/renderer/src/svg/text-block.d.ts +54 -0
  1050. package/src/libs/renderer/src/svg/text-block.js +171 -0
  1051. package/src/libs/renderer/src/themes/color-mode.d.ts +81 -0
  1052. package/src/libs/renderer/src/themes/color-mode.js +158 -0
  1053. package/src/libs/renderer/src/themes/contrast.d.ts +67 -0
  1054. package/src/libs/renderer/src/themes/contrast.js +215 -0
  1055. package/src/libs/renderer/src/themes/default-dark-theme.d.ts +6 -0
  1056. package/src/libs/renderer/src/themes/default-dark-theme.js +126 -0
  1057. package/src/libs/renderer/src/themes/default-light-theme.d.ts +6 -0
  1058. package/src/libs/renderer/src/themes/default-light-theme.js +168 -0
  1059. package/src/libs/renderer/src/themes/default-theme-set.d.ts +10 -0
  1060. package/src/libs/renderer/src/themes/default-theme-set.js +25 -0
  1061. package/src/libs/renderer/src/themes/high-contrast-theme.d.ts +5 -0
  1062. package/src/libs/renderer/src/themes/high-contrast-theme.js +170 -0
  1063. package/src/libs/renderer/src/themes/index.d.ts +22 -0
  1064. package/src/libs/renderer/src/themes/index.js +93 -0
  1065. package/src/libs/renderer/src/themes/style-cascade.d.ts +23 -0
  1066. package/src/libs/renderer/src/themes/style-cascade.js +194 -0
  1067. package/src/libs/renderer/src/themes/style-registry.d.ts +40 -0
  1068. package/src/libs/renderer/src/themes/style-registry.js +129 -0
  1069. package/src/libs/renderer/src/themes/theme-a11y.d.ts +65 -0
  1070. package/src/libs/renderer/src/themes/theme-a11y.js +256 -0
  1071. package/src/libs/renderer/src/themes/theme-css.d.ts +30 -0
  1072. package/src/libs/renderer/src/themes/theme-css.js +304 -0
  1073. package/src/libs/renderer/src/themes/theme-ref.d.ts +63 -0
  1074. package/src/libs/renderer/src/themes/theme-ref.js +206 -0
  1075. package/src/libs/renderer/src/themes/theme-vars.d.ts +49 -0
  1076. package/src/libs/renderer/src/themes/theme-vars.js +112 -0
  1077. package/src/libs/renderer/src/themes/token-bridge.d.ts +62 -0
  1078. package/src/libs/renderer/src/themes/token-bridge.js +354 -0
  1079. package/src/libs/renderer/src/types/geometry.types.d.ts +10 -0
  1080. package/src/libs/renderer/src/types/geometry.types.js +3 -0
  1081. package/src/libs/renderer/src/types/index.d.ts +5 -0
  1082. package/src/libs/renderer/src/types/index.js +14 -0
  1083. package/src/libs/renderer/src/types/property-schema/conditions.d.ts +96 -0
  1084. package/src/libs/renderer/src/types/property-schema/conditions.js +8 -0
  1085. package/src/libs/renderer/src/types/property-schema/editor-types.d.ts +310 -0
  1086. package/src/libs/renderer/src/types/property-schema/editor-types.js +8 -0
  1087. package/src/libs/renderer/src/types/property-schema/groups.d.ts +58 -0
  1088. package/src/libs/renderer/src/types/property-schema/groups.js +8 -0
  1089. package/src/libs/renderer/src/types/property-schema/index.d.ts +101 -0
  1090. package/src/libs/renderer/src/types/property-schema/index.js +98 -0
  1091. package/src/libs/renderer/src/types/property-schema/property-definition.d.ts +117 -0
  1092. package/src/libs/renderer/src/types/property-schema/property-definition.js +8 -0
  1093. package/src/libs/renderer/src/types/property-schema/schema.d.ts +108 -0
  1094. package/src/libs/renderer/src/types/property-schema/schema.js +8 -0
  1095. package/src/libs/renderer/src/types/property-schema/validation.d.ts +181 -0
  1096. package/src/libs/renderer/src/types/property-schema/validation.js +8 -0
  1097. package/src/libs/renderer/src/types/renderer.interface.d.ts +623 -0
  1098. package/src/libs/renderer/src/types/renderer.interface.js +3 -0
  1099. package/src/libs/renderer/src/types/theme.types.d.ts +305 -0
  1100. package/src/libs/renderer/src/types/theme.types.js +3 -0
  1101. package/src/libs/renderer/src/types/vnode.types.d.ts +139 -0
  1102. package/src/libs/renderer/src/types/vnode.types.js +3 -0
  1103. package/src/libs/renderer/src/utils/animation-presets.d.ts +310 -0
  1104. package/src/libs/renderer/src/utils/animation-presets.js +406 -0
  1105. package/src/libs/renderer/src/utils/animation-priority.d.ts +118 -0
  1106. package/src/libs/renderer/src/utils/animation-priority.js +258 -0
  1107. package/src/libs/renderer/src/utils/animation-utils.d.ts +159 -0
  1108. package/src/libs/renderer/src/utils/animation-utils.js +323 -0
  1109. package/src/libs/renderer/src/utils/lru-cache.d.ts +34 -0
  1110. package/src/libs/renderer/src/utils/lru-cache.js +72 -0
  1111. package/src/libs/renderer/src/viewport/index.d.ts +1 -0
  1112. package/src/libs/renderer/src/viewport/index.js +6 -0
  1113. package/src/libs/renderer/src/viewport/viewport-controller.d.ts +198 -0
  1114. package/src/libs/renderer/src/viewport/viewport-controller.js +315 -0
  1115. package/src/libs/renderer/src/vnode/container-id-generator.d.ts +94 -0
  1116. package/src/libs/renderer/src/vnode/container-id-generator.js +110 -0
  1117. package/src/libs/renderer/src/vnode/foreign-object.d.ts +157 -0
  1118. package/src/libs/renderer/src/vnode/foreign-object.js +167 -0
  1119. package/src/libs/renderer/src/vnode/index.d.ts +56 -0
  1120. package/src/libs/renderer/src/vnode/index.js +78 -0
  1121. package/src/libs/renderer/src/vnode/patch.d.ts +189 -0
  1122. package/src/libs/renderer/src/vnode/patch.js +564 -0
  1123. package/src/index.js.map +0 -1
  1124. package/src/lib/dashboard-kit/dashboard.js.map +0 -1
  1125. package/src/lib/dashboard-kit/grid-binder.js.map +0 -1
  1126. package/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
  1127. package/src/lib/dashboard-kit/index.js.map +0 -1
  1128. package/src/lib/dashboard-kit/styles.js.map +0 -1
  1129. package/src/lib/dashboard-kit/widgets.js.map +0 -1
  1130. package/src/lib/diagram-kit/card.js.map +0 -1
  1131. package/src/lib/diagram-kit/editing.js.map +0 -1
  1132. package/src/lib/diagram-kit/er.js.map +0 -1
  1133. package/src/lib/diagram-kit/handles.js.map +0 -1
  1134. package/src/lib/diagram-kit/index.js.map +0 -1
  1135. package/src/lib/diagram-kit/rows.js.map +0 -1
  1136. package/src/lib/diagram-kit/styles.js.map +0 -1
  1137. package/src/lib/diagram-kit/uml.js.map +0 -1
  1138. package/src/lib/diagram-kit/update.js.map +0 -1
  1139. package/src/lib/grafloria-flow-element.js.map +0 -1
  1140. package/src/lib/grafloria.js.map +0 -1
  1141. package/src/lib/load.js.map +0 -1
  1142. package/src/lib/node-type-registry.js.map +0 -1
  1143. package/src/lib/stencil-kit/builders.js.map +0 -1
  1144. package/src/lib/stencil-kit/card-builders.js.map +0 -1
  1145. package/src/lib/stencil-kit/index.js.map +0 -1
  1146. package/src/lib/stencil-kit/palette.js.map +0 -1
  1147. package/src/lib/stencil-kit/shape-data.js.map +0 -1
  1148. package/src/lib/stencil-kit/styles.js.map +0 -1
@@ -0,0 +1,1076 @@
1
+ "use strict";
2
+ // Vector PDF (Card 4) — a TRUE vector PDF with selectable, searchable text.
3
+ //
4
+ // THE DEPENDENCY DECISION (the card asks for it explicitly)
5
+ // ---------------------------------------------------------
6
+ // The named pipeline is svg2pdf.js + jsPDF. We do NOT use it, for three reasons that all
7
+ // point the same way:
8
+ //
9
+ // 1. svg2pdf.js NEEDS A DOM. It walks a live `SVGElement`, and leans on `getBBox()` and
10
+ // `getComputedStyle()` — browser layout APIs. jsdom does not implement `getBBox` (it
11
+ // returns zeros), so in Node it does not merely need a shim, it silently produces an
12
+ // EMPTY PDF. Adopting it would therefore break the two things this module is FOR:
13
+ // the DOM-free guarantee (a node-environment test pins it) and the headless-server
14
+ // story that is Card 6's whole differentiator.
15
+ // 2. It is ~450KB (jsPDF ~350 + svg2pdf ~100) shipped to every browser consumer, to
16
+ // re-derive a picture we already hold in a clean, fully-resolved VNode tree.
17
+ // 3. Its input would be our SVG STRING — so we would serialize a tree to XML, hand it to
18
+ // a library to re-parse into a DOM, and have it walk that DOM. We already have the
19
+ // tree, already flattened (every `var(--…)` resolved into a concrete value). Painting
20
+ // straight from it is both less code and strictly more faithful.
21
+ //
22
+ // So the PDF is written directly. This is not "faking it" — the output is a real vector
23
+ // PDF: paths are paths, and text is text (`BT`/`Tj`), so it is selectable and searchable
24
+ // in any reader, and it scales without pixelation.
25
+ //
26
+ // WHAT IT COSTS — stated plainly, because these are real limits:
27
+ // • FONTS are the PDF base-14 (Helvetica/Times/Courier). Those are built into every
28
+ // reader, so text needs no embedded font program — but the diagram's actual face
29
+ // (Inter, system-ui) is NOT one of them, so a PDF renders in the nearest standard
30
+ // family. Embedding the real face would need a font parser + subsetter.
31
+ // • TEXT OUTSIDE WinAnsi (Arabic, CJK, emoji) cannot be written with a standard font.
32
+ // Those characters are replaced with '?' and reported in `warnings` — loudly, because
33
+ // a silently-mangled label is worse than a missing one.
34
+ // • GRADIENT FILLS are REAL: linear → /ShadingType 2, radial → /ShadingType 3, painted
35
+ // as `sh` clipped to the shape (see the shading section for why not a pattern fill).
36
+ // Stop OPACITY is real too: a luminosity soft mask (a DeviceGray transparency-group
37
+ // form painting the alpha ramp, wired through /ExtGState /SMask). Gradient-filled
38
+ // TEXT is real: text rendering mode 7 turns the glyphs into the clip and the shading
39
+ // paints through. What still flattens to the first stop, with a warning: gradient
40
+ // STROKES — a shading through a stroke needs either the stroke outline as a clip
41
+ // (PDF cannot build one) or a shading pattern whose /Matrix lives in page space,
42
+ // i.e. exactly the accumulated-CTM bookkeeping the sh approach exists to avoid.
43
+ // • IMAGES embed as real XObjects for data: PNGs — RGBA's alpha splits into an /SMask,
44
+ // interlaced (Adam7) PNGs are de-interlaced, 16-bit samples downsample to their high
45
+ // byte (< 0.4% error) — and JPEGs (DCTDecode passthrough), including CMYK: the Adobe
46
+ // APP14 convention stores inverted ink values, undone via /Decode. Still refused,
47
+ // loudly: external URLs (fetching would make the export impure) and sub-8-bit PNGs.
48
+ // RGBA re-compression is stored-block (see flate.ts): raw-size streams, correct
49
+ // pixels.
50
+ // • ELEMENT clip-paths (clip-path="url(#…)" with userSpaceOnUse shapes) clip for real
51
+ // via W n. clipPathUnits="objectBoundingBox" warns and paints unclipped.
52
+ // • BLURRED elements (the node drop shadow) are DROPPED. PDF has no gaussian blur, and
53
+ // drawing the shadow un-blurred would put a hard black slab behind every node — far
54
+ // worse than no shadow.
55
+ // • foreignObject cannot be represented at all.
56
+ //
57
+ // Everything here is pure and deterministic: same tree ⇒ same bytes.
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.exportPdf = exportPdf;
60
+ const pdf_primitives_1 = require("./pdf-primitives");
61
+ const pdf_path_1 = require("./pdf-path");
62
+ const png_1 = require("./png");
63
+ const bounds_1 = require("../bounds");
64
+ // The shared geometry module — see pdf-path.ts.
65
+ const path_geometry_1 = require("../../canvas/path-geometry");
66
+ const style_flattener_1 = require("../style-flattener");
67
+ const patch_1 = require("../../vnode/patch");
68
+ const default_light_theme_1 = require("../../themes/default-light-theme");
69
+ function resolveMargins(margin) {
70
+ if (typeof margin === 'number')
71
+ return { top: margin, right: margin, bottom: margin, left: margin };
72
+ if (margin)
73
+ return margin;
74
+ return { top: 36, right: 36, bottom: 36, left: 36 };
75
+ }
76
+ class ContentStream {
77
+ constructor() {
78
+ this.ops = [];
79
+ this.state = { fill: null, stroke: null, lineWidth: null, dash: null, alpha: null, font: null };
80
+ /** ExtGState names for the alphas we used: PDF puts constant alpha in a resource dict. */
81
+ this.alphas = new Set();
82
+ this.fonts = new Set();
83
+ }
84
+ push(op) {
85
+ this.ops.push(op);
86
+ }
87
+ save() {
88
+ this.ops.push('q');
89
+ }
90
+ restore() {
91
+ this.ops.push('Q');
92
+ // A `Q` rolls the graphics state back to whatever it was at the matching `q`, and we
93
+ // do not track that — so forget our cache rather than skip an op we still need.
94
+ this.state = { fill: null, stroke: null, lineWidth: null, dash: null, alpha: null, font: null };
95
+ }
96
+ setFill(rgb) {
97
+ const op = `${(0, pdf_primitives_1.num)(rgb.r)} ${(0, pdf_primitives_1.num)(rgb.g)} ${(0, pdf_primitives_1.num)(rgb.b)} rg`;
98
+ if (this.state.fill === op)
99
+ return;
100
+ this.state.fill = op;
101
+ this.ops.push(op);
102
+ }
103
+ setStroke(rgb) {
104
+ const op = `${(0, pdf_primitives_1.num)(rgb.r)} ${(0, pdf_primitives_1.num)(rgb.g)} ${(0, pdf_primitives_1.num)(rgb.b)} RG`;
105
+ if (this.state.stroke === op)
106
+ return;
107
+ this.state.stroke = op;
108
+ this.ops.push(op);
109
+ }
110
+ setLineWidth(width) {
111
+ if (this.state.lineWidth === width)
112
+ return;
113
+ this.state.lineWidth = width;
114
+ this.ops.push(`${(0, pdf_primitives_1.num)(width)} w`);
115
+ }
116
+ setDash(dash) {
117
+ const op = dash ? `[${dash}] 0 d` : '[] 0 d';
118
+ if (this.state.dash === op)
119
+ return;
120
+ this.state.dash = op;
121
+ this.ops.push(op);
122
+ }
123
+ setAlpha(alpha) {
124
+ const rounded = Number(alpha.toFixed(3));
125
+ if (this.state.alpha === rounded)
126
+ return;
127
+ this.state.alpha = rounded;
128
+ this.alphas.add(rounded);
129
+ this.ops.push(`/GS${alphaName(rounded)} gs`);
130
+ }
131
+ setFont(font, size) {
132
+ const op = `/F${fontIndex(font)} ${(0, pdf_primitives_1.num)(size)} Tf`;
133
+ if (this.state.font === op)
134
+ return;
135
+ this.state.font = op;
136
+ this.fonts.add(font);
137
+ this.ops.push(op);
138
+ }
139
+ concat(m) {
140
+ this.ops.push(`${(0, pdf_primitives_1.num)(m.a)} ${(0, pdf_primitives_1.num)(m.b)} ${(0, pdf_primitives_1.num)(m.c)} ${(0, pdf_primitives_1.num)(m.d)} ${(0, pdf_primitives_1.num)(m.e)} ${(0, pdf_primitives_1.num)(m.f)} cm`);
141
+ }
142
+ }
143
+ const BASE_FONTS = [
144
+ 'Helvetica',
145
+ 'Helvetica-Bold',
146
+ 'Helvetica-Oblique',
147
+ 'Helvetica-BoldOblique',
148
+ 'Times-Roman',
149
+ 'Times-Bold',
150
+ 'Times-Italic',
151
+ 'Times-BoldItalic',
152
+ 'Courier',
153
+ 'Courier-Bold',
154
+ ];
155
+ const fontIndex = (font) => BASE_FONTS.indexOf(font) + 1;
156
+ const alphaName = (alpha) => String(Math.round(alpha * 1000));
157
+ /** Elements that draw nothing and whose children are references. */
158
+ const NON_PAINTING = new Set([
159
+ 'defs', 'title', 'desc', 'metadata', 'linearGradient', 'radialGradient',
160
+ 'stop', 'filter', 'marker', 'clipPath', 'mask', 'pattern', 'style',
161
+ ]);
162
+ function nn(value, fallback = 0) {
163
+ const n = Number(value);
164
+ return Number.isFinite(n) ? n : fallback;
165
+ }
166
+ /**
167
+ * Export a rendered VNode tree as a vector PDF.
168
+ */
169
+ function exportPdf(root, options = {}) {
170
+ var _a, _b, _c, _d, _e;
171
+ const warnings = [];
172
+ const margins = resolveMargins(options.margin);
173
+ const page = (0, pdf_primitives_1.pageDimensions)((_a = options.pageSize) !== null && _a !== void 0 ? _a : 'a4', (_b = options.orientation) !== null && _b !== void 0 ? _b : 'landscape');
174
+ // The world rectangle(s) to draw. One page unless the paginator supplied a grid.
175
+ const content = (_c = options.viewBox) !== null && _c !== void 0 ? _c : (() => {
176
+ var _a;
177
+ const bounds = (0, bounds_1.vnodeBounds)(root);
178
+ const pad = (_a = options.padding) !== null && _a !== void 0 ? _a : 20;
179
+ if (!bounds)
180
+ return { x: 0, y: 0, width: 100, height: 100 };
181
+ return { x: bounds.x - pad, y: bounds.y - pad, width: bounds.width + pad * 2, height: bounds.height + pad * 2 };
182
+ })();
183
+ // Normalise: a bare Rectangle means "paint the whole window".
184
+ const pages = (((_d = options.pages) === null || _d === void 0 ? void 0 : _d.length) ? options.pages : [content]).map(page => {
185
+ var _a;
186
+ const rect = 'rect' in page ? page.rect : page;
187
+ const clip = 'rect' in page ? ((_a = page.clip) !== null && _a !== void 0 ? _a : rect) : page;
188
+ return { rect, clip };
189
+ });
190
+ // Gradients / patterns / clip paths are resolved by id from <defs> — collect first.
191
+ const defs = collectDefs(root);
192
+ // The stylesheet, flattened — the same resolver the SVG exporter uses.
193
+ const classStyles = (0, style_flattener_1.createClassStyleResolver)((_e = options.theme) !== null && _e !== void 0 ? _e : default_light_theme_1.LIGHT_THEME, warnings);
194
+ const ctx = {
195
+ defs,
196
+ shadings: new ShadingRegistry(),
197
+ softMasks: new SoftMaskRegistry(),
198
+ images: new ImageRegistry(),
199
+ warnings,
200
+ classStyles,
201
+ };
202
+ const writer = new pdf_primitives_1.PdfWriter();
203
+ const catalogId = writer.allocate();
204
+ const pagesId = writer.allocate();
205
+ const pageIds = [];
206
+ const contentIds = [];
207
+ const streams = [];
208
+ for (let i = 0; i < pages.length; i++) {
209
+ pageIds.push(writer.allocate());
210
+ contentIds.push(writer.allocate());
211
+ }
212
+ const boxWidth = page.width - margins.left - margins.right;
213
+ const boxHeight = page.height - margins.top - margins.bottom;
214
+ pages.forEach(({ rect, clip }, index) => {
215
+ const stream = new ContentStream();
216
+ streams.push(stream);
217
+ // Fit the world rectangle into the page's content box, preserving aspect, centred.
218
+ const scale = Math.min(boxWidth / rect.width, boxHeight / rect.height);
219
+ const drawWidth = rect.width * scale;
220
+ const drawHeight = rect.height * scale;
221
+ const offsetX = margins.left + (boxWidth - drawWidth) / 2;
222
+ const offsetY = margins.bottom + (boxHeight - drawHeight) / 2;
223
+ if (options.backgroundColor) {
224
+ const bg = (0, pdf_primitives_1.parsePdfColor)(options.backgroundColor);
225
+ if (bg) {
226
+ stream.save();
227
+ stream.setFill(bg);
228
+ stream.push(`0 0 ${(0, pdf_primitives_1.num)(page.width)} ${(0, pdf_primitives_1.num)(page.height)} re`);
229
+ stream.push('f');
230
+ stream.restore();
231
+ }
232
+ }
233
+ stream.save();
234
+ // PDF's origin is BOTTOM-left with y up; SVG's is TOP-left with y down. This one
235
+ // matrix does the flip, the fit, and the world offset in a single CTM — so every
236
+ // coordinate below is written in the SVG's own space and lands in the right place.
237
+ // x_pdf = offsetX + (x_svg - rect.x) * scale
238
+ // y_pdf = offsetY + drawHeight - (y_svg - rect.y) * scale
239
+ const ctm = {
240
+ a: scale,
241
+ b: 0,
242
+ c: 0,
243
+ d: -scale,
244
+ e: offsetX - rect.x * scale,
245
+ f: offsetY + drawHeight + rect.y * scale,
246
+ };
247
+ stream.concat(ctm);
248
+ // Clip to what this page actually PAINTS. That is `clip`, not `rect`: when the
249
+ // paginator pulled a break back to spare a node, the clip is narrower than the window,
250
+ // and the page shows white space instead of a sliced-in-half box.
251
+ stream.push(`${(0, pdf_primitives_1.num)(clip.x)} ${(0, pdf_primitives_1.num)(clip.y)} ${(0, pdf_primitives_1.num)(clip.width)} ${(0, pdf_primitives_1.num)(clip.height)} re`);
252
+ stream.push('W n');
253
+ paint(root, stream, ctx);
254
+ stream.restore();
255
+ if (options.pageNumbers && pages.length > 0) {
256
+ paintPageNumber(stream, index + 1, pages.length, page, margins);
257
+ }
258
+ });
259
+ // ---- assemble the document ------------------------------------------------
260
+ const usedFonts = new Set();
261
+ const usedAlphas = new Set();
262
+ for (const stream of streams) {
263
+ stream.fonts.forEach(f => usedFonts.add(f));
264
+ stream.alphas.forEach(a => usedAlphas.add(a));
265
+ }
266
+ const fontIds = new Map();
267
+ for (const font of BASE_FONTS) {
268
+ if (usedFonts.has(font))
269
+ fontIds.set(font, writer.allocate());
270
+ }
271
+ const fontResources = [...fontIds.entries()]
272
+ .map(([font, id]) => `/F${fontIndex(font)} ${id} 0 R`)
273
+ .join(' ');
274
+ // Constant alpha lives in an ExtGState, not in an operator — /ca fill, /CA stroke.
275
+ const alphaResources = [...usedAlphas]
276
+ .sort((a, b) => a - b)
277
+ .map(alpha => `/GS${alphaName(alpha)} << /Type /ExtGState /ca ${(0, pdf_primitives_1.num)(alpha)} /CA ${(0, pdf_primitives_1.num)(alpha)} >>`)
278
+ .join(' ');
279
+ // Image XObjects: one stream object per distinct image, plus its /SMask stream when the
280
+ // source PNG carried alpha. Wiring the SMask by reference is the whole point — an alpha
281
+ // plane that exists but is not named in the image dict renders opaque, silently.
282
+ const imageEntries = ctx.images.entries();
283
+ const imageRefs = [];
284
+ for (const { name, image } of imageEntries) {
285
+ let smaskRef = '';
286
+ if (image.smask) {
287
+ const smaskId = writer.allocate();
288
+ writer.setStream(smaskId, `/Type /XObject /Subtype /Image /Width ${image.width} /Height ${image.height} ` +
289
+ `/ColorSpace /DeviceGray /BitsPerComponent ${image.smask.bitsPerComponent} /Filter /FlateDecode`, Array.from(image.smask.data));
290
+ smaskRef = ` /SMask ${smaskId} 0 R`;
291
+ }
292
+ const imageId = writer.allocate();
293
+ const decodeParms = image.decodeParms ? ` /DecodeParms ${image.decodeParms}` : '';
294
+ // /Decode is how an Adobe-inverted CMYK JPEG comes out the right colours — dropping
295
+ // it here renders every such image inverted (red → cyan) with no other symptom.
296
+ const decode = image.decode ? ` /Decode ${image.decode}` : '';
297
+ writer.setStream(imageId, `/Type /XObject /Subtype /Image /Width ${image.width} /Height ${image.height} ` +
298
+ `/ColorSpace ${image.colorSpace} /BitsPerComponent ${image.bitsPerComponent} ` +
299
+ `/Filter ${image.filter}${decodeParms}${decode}${smaskRef}`, Array.from(image.data));
300
+ imageRefs.push(`/${name} ${imageId} 0 R`);
301
+ }
302
+ const shadingResources = ctx.shadings
303
+ .entries()
304
+ .map(([name, dict]) => `/${name} ${dict}`)
305
+ .join(' ');
306
+ // Luminosity soft masks: a Form XObject painting the alpha ramp in DeviceGray, and an
307
+ // ExtGState pointing at it. The /Transparency group's /CS MUST be DeviceGray — an RGB
308
+ // group's luminosity is a different function of the ramp, and the mask silently warps.
309
+ const softMaskResources = ctx.softMasks
310
+ .entries()
311
+ .map(mask => {
312
+ const formId = writer.allocate();
313
+ writer.setStream(formId, `/Type /XObject /Subtype /Form /BBox [${mask.bbox}] ` +
314
+ `/Group << /S /Transparency /CS /DeviceGray >> ` +
315
+ `/Resources << /Shading << /G0 ${mask.shading} >> >>`, (0, pdf_primitives_1.latin1Bytes)('/G0 sh'));
316
+ return `/${mask.name} << /Type /ExtGState /SMask << /S /Luminosity /G ${formId} 0 R >> >>`;
317
+ })
318
+ .join(' ');
319
+ const resources = `<< /Font << ${fontResources} >> ` +
320
+ `/ExtGState << ${alphaResources}${softMaskResources ? ` ${softMaskResources}` : ''} >> ` +
321
+ (shadingResources ? `/Shading << ${shadingResources} >> ` : '') +
322
+ (imageRefs.length ? `/XObject << ${imageRefs.join(' ')} >> ` : '') +
323
+ `/ProcSet [/PDF /Text${imageRefs.length ? ' /ImageB /ImageC /ImageI' : ''}] >>`;
324
+ streams.forEach((stream, index) => {
325
+ writer.set(pageIds[index], `<< /Type /Page /Parent ${pagesId} 0 R ` +
326
+ `/MediaBox [0 0 ${(0, pdf_primitives_1.num)(page.width)} ${(0, pdf_primitives_1.num)(page.height)}] ` +
327
+ `/Resources ${resources} ` +
328
+ `/Contents ${contentIds[index]} 0 R >>`);
329
+ writer.setStream(contentIds[index], '', (0, pdf_primitives_1.latin1Bytes)(stream.ops.join('\n')));
330
+ });
331
+ for (const [font, id] of fontIds) {
332
+ writer.set(id, `<< /Type /Font /Subtype /Type1 /BaseFont /${font} /Encoding /WinAnsiEncoding >>`);
333
+ }
334
+ writer.set(pagesId, `<< /Type /Pages /Kids [${pageIds.map(id => `${id} 0 R`).join(' ')}] /Count ${pageIds.length} >>`);
335
+ const infoId = buildInfo(writer, options.metadata);
336
+ writer.set(catalogId, `<< /Type /Catalog /Pages ${pagesId} 0 R >>`);
337
+ return { pdf: writer.build(catalogId, infoId), pageCount: pages.length, warnings: dedupe(warnings) };
338
+ }
339
+ function buildInfo(writer, metadata) {
340
+ if (!metadata)
341
+ return null;
342
+ const entries = [];
343
+ const add = (key, value) => {
344
+ if (value)
345
+ entries.push(`/${key} ${(0, pdf_primitives_1.pdfString)((0, pdf_primitives_1.encodeWinAnsi)(value).bytes)}`);
346
+ };
347
+ add('Title', metadata.title);
348
+ add('Author', metadata.author);
349
+ add('Subject', metadata.subject);
350
+ add('Keywords', metadata.keywords);
351
+ entries.push('/Producer (Grafloria)');
352
+ if (metadata.creationDate)
353
+ add('CreationDate', toPdfDate(metadata.creationDate));
354
+ const id = writer.allocate();
355
+ writer.set(id, `<< ${entries.join(' ')} >>`);
356
+ return id;
357
+ }
358
+ /** ISO-8601 → PDF's own `D:YYYYMMDDHHmmSS` date literal. */
359
+ function toPdfDate(iso) {
360
+ const date = new Date(iso);
361
+ if (Number.isNaN(date.getTime()))
362
+ return iso;
363
+ const pad = (n) => String(n).padStart(2, '0');
364
+ return (`D:${date.getUTCFullYear()}${pad(date.getUTCMonth() + 1)}${pad(date.getUTCDate())}` +
365
+ `${pad(date.getUTCHours())}${pad(date.getUTCMinutes())}${pad(date.getUTCSeconds())}Z`);
366
+ }
367
+ /**
368
+ * THE ELEMENT'S REAL PAINT — the CSS cascade, resolved.
369
+ *
370
+ * This is not optional decoration. In CSS mode (the live default) a node's fill and a
371
+ * link's stroke are NOT on the element: they come from the injected stylesheet, and the
372
+ * VNode carries only `class="diagram-node"`. Painting the raw props would therefore give
373
+ * every link no stroke and every node no fill — i.e. a nearly BLANK PDF. (It did. That is
374
+ * how this was found.)
375
+ *
376
+ * So the same flattener the SVG exporter uses is applied here, in the same CSS priority
377
+ * order — presentation attribute < author rule < inline style — and keys are normalised
378
+ * through `attrNameForProp`, the mapping SHARED with the DOM patcher. Sharing it is what
379
+ * stops a `strokeWidth` prop and a `stroke-width` rule from both surviving and the wrong
380
+ * one winning.
381
+ */
382
+ function resolved(vnode, ctx) {
383
+ var _a;
384
+ const props = (_a = vnode.props) !== null && _a !== void 0 ? _a : {};
385
+ const out = {};
386
+ // (1) presentation attributes — the lowest layer
387
+ for (const key of Object.keys(props)) {
388
+ const value = props[key];
389
+ if (value === null || value === undefined || typeof value === 'function')
390
+ continue;
391
+ if (key === 'style' || key === 'className' || key === 'textContent' || key === 'innerHTML')
392
+ continue;
393
+ out[(0, patch_1.attrNameForProp)(key)] = String(value);
394
+ }
395
+ // (2) the stylesheet — an author rule BEATS a presentation attribute
396
+ const className = props['className'];
397
+ if (typeof className === 'string' && className.trim() !== '') {
398
+ Object.assign(out, ctx.classStyles(className.trim().split(/\s+/)));
399
+ }
400
+ // (3) the element's own inline style — the cascade's winner
401
+ const style = (0, patch_1.serializeStyle)(props['style']);
402
+ if (style) {
403
+ for (const declaration of style.split(';')) {
404
+ const colon = declaration.indexOf(':');
405
+ if (colon < 0)
406
+ continue;
407
+ const prop = declaration.slice(0, colon).trim();
408
+ const value = declaration.slice(colon + 1).trim();
409
+ if (prop && value)
410
+ out[prop] = value;
411
+ }
412
+ }
413
+ return out;
414
+ }
415
+ /** Both prop spellings occur: the capture emits `stop-color`, hand-built trees `stopColor`. */
416
+ function stopProp(vnode, kebab, camel) {
417
+ var _a, _b, _c;
418
+ return (_b = (_a = vnode.props) === null || _a === void 0 ? void 0 : _a[kebab]) !== null && _b !== void 0 ? _b : (_c = vnode.props) === null || _c === void 0 ? void 0 : _c[camel];
419
+ }
420
+ function parseStops(vnode) {
421
+ var _a, _b;
422
+ const stops = [];
423
+ for (const child of (_a = vnode.children) !== null && _a !== void 0 ? _a : []) {
424
+ if (!child || typeof child !== 'object' || child.type !== 'stop')
425
+ continue;
426
+ const colorValue = stopProp(child, 'stop-color', 'stopColor');
427
+ const color = (0, pdf_primitives_1.parsePdfColor)(colorValue);
428
+ if (!color)
429
+ continue;
430
+ // Offsets arrive as numbers, "0.5" or "50%".
431
+ const rawOffset = (_b = child.props) === null || _b === void 0 ? void 0 : _b['offset'];
432
+ let offset = 0;
433
+ if (typeof rawOffset === 'number')
434
+ offset = rawOffset;
435
+ else if (typeof rawOffset === 'string') {
436
+ const pct = rawOffset.trim().endsWith('%');
437
+ const parsed = Number.parseFloat(rawOffset);
438
+ offset = Number.isFinite(parsed) ? (pct ? parsed / 100 : parsed) : 0;
439
+ }
440
+ const stopOpacity = nn(stopProp(child, 'stop-opacity', 'stopOpacity'), 1);
441
+ stops.push({
442
+ offset: Math.max(0, Math.min(1, offset)),
443
+ color,
444
+ alpha: stopOpacity * (0, pdf_primitives_1.parseColorAlpha)(colorValue),
445
+ });
446
+ }
447
+ // PDF stitching wants monotonic domains; SVG clamps out-of-order offsets the same way.
448
+ for (let i = 1; i < stops.length; i++)
449
+ stops[i].offset = Math.max(stops[i].offset, stops[i - 1].offset);
450
+ return stops;
451
+ }
452
+ /** Every def the painter can resolve by id, in one walk. */
453
+ function collectDefs(root) {
454
+ const defs = { gradients: new Map(), patterns: new Map(), clipPaths: new Map() };
455
+ const walk = (vnode) => {
456
+ var _a, _b, _c;
457
+ if (!vnode || typeof vnode !== 'object')
458
+ return;
459
+ const id = (_a = vnode.props) === null || _a === void 0 ? void 0 : _a['id'];
460
+ if ((vnode.type === 'linearGradient' || vnode.type === 'radialGradient') && typeof id === 'string') {
461
+ const props = (_b = vnode.props) !== null && _b !== void 0 ? _b : {};
462
+ const stops = parseStops(vnode);
463
+ if (stops.length > 0) {
464
+ defs.gradients.set(id, {
465
+ kind: vnode.type === 'linearGradient' ? 'linear' : 'radial',
466
+ objectBoundingBox: props['gradientUnits'] !== 'userSpaceOnUse',
467
+ coords: vnode.type === 'linearGradient'
468
+ ? { x1: nn(props['x1'], 0), y1: nn(props['y1'], 0), x2: nn(props['x2'], 1), y2: nn(props['y2'], 0) }
469
+ : { cx: nn(props['cx'], 0.5), cy: nn(props['cy'], 0.5), r: nn(props['r'], 0.5) },
470
+ stops,
471
+ });
472
+ }
473
+ }
474
+ else if (vnode.type === 'pattern' && typeof id === 'string') {
475
+ defs.patterns.set(id, vnode);
476
+ }
477
+ else if (vnode.type === 'clipPath' && typeof id === 'string') {
478
+ defs.clipPaths.set(id, vnode);
479
+ }
480
+ for (const child of (_c = vnode.children) !== null && _c !== void 0 ? _c : [])
481
+ walk(child);
482
+ };
483
+ walk(root);
484
+ return defs;
485
+ }
486
+ // ---------------------------------------------------------------------------
487
+ // Document-level resources the painter accumulates while painting.
488
+ // ---------------------------------------------------------------------------
489
+ /** Shadings, deduped by their full dict (same gradient + same geometry = one resource). */
490
+ class ShadingRegistry {
491
+ constructor() {
492
+ this.byDict = new Map();
493
+ }
494
+ nameFor(dict) {
495
+ const existing = this.byDict.get(dict);
496
+ if (existing)
497
+ return existing;
498
+ const name = `Sh${this.byDict.size + 1}`;
499
+ this.byDict.set(dict, name);
500
+ return name;
501
+ }
502
+ entries() {
503
+ return [...this.byDict.entries()].map(([dict, name]) => [name, dict]);
504
+ }
505
+ get size() {
506
+ return this.byDict.size;
507
+ }
508
+ }
509
+ /**
510
+ * Luminosity soft masks — one per distinct (gray alpha-ramp shading, bbox) pair.
511
+ *
512
+ * Each entry becomes a Form XObject painting the alpha ramp as a DEVICEGRAY shading
513
+ * (stop alpha 1 → white, 0 → black) inside a /Transparency group, plus an ExtGState
514
+ * whose /SMask /Luminosity points at it. `gs` that state and every later paint is
515
+ * multiplied by the mask — which is exactly SVG's per-stop opacity.
516
+ */
517
+ class SoftMaskRegistry {
518
+ constructor() {
519
+ this.byKey = new Map();
520
+ }
521
+ nameFor(shading, bbox) {
522
+ const key = `${bbox}|${shading}`;
523
+ const existing = this.byKey.get(key);
524
+ if (existing)
525
+ return existing.name;
526
+ const name = `GSM${this.byKey.size + 1}`;
527
+ this.byKey.set(key, { name, shading, bbox });
528
+ return name;
529
+ }
530
+ entries() {
531
+ return [...this.byKey.values()];
532
+ }
533
+ }
534
+ /** Images, deduped by href — one XObject however many times a data URL is drawn. */
535
+ class ImageRegistry {
536
+ constructor() {
537
+ /** null = decode failed (already warned) — remembered so one bad image warns once. */
538
+ this.byHref = new Map();
539
+ this.count = 0;
540
+ }
541
+ resolve(href, warn) {
542
+ const cached = this.byHref.get(href);
543
+ if (cached !== undefined)
544
+ return cached;
545
+ const image = (0, png_1.decodeDataUrlImage)(href, warn);
546
+ const entry = image ? { name: `Im${++this.count}`, image } : null;
547
+ this.byHref.set(href, entry);
548
+ return entry;
549
+ }
550
+ entries() {
551
+ return [...this.byHref.values()].filter((e) => e !== null);
552
+ }
553
+ }
554
+ /**
555
+ * Walk the tree, painting into the content stream.
556
+ *
557
+ * There is no parent-matrix parameter here on purpose: PDF's CTM is STATEFUL, and `q`/`Q`
558
+ * are a real stack. So a group's transform is pushed with `cm` and popped with `Q`, and
559
+ * the composition happens in the PDF itself — exactly as it does in SVG. Threading an
560
+ * accumulated matrix through as well would apply every transform twice.
561
+ */
562
+ function paint(vnode, stream, ctx) {
563
+ var _a;
564
+ if (!vnode || typeof vnode !== 'object' || typeof vnode.type !== 'string')
565
+ return;
566
+ if (NON_PAINTING.has(vnode.type))
567
+ return;
568
+ // The CASCADE, resolved — see `resolved()`. Everything below reads from this map, never
569
+ // from the raw props, because in CSS mode the raw props carry no paint at all.
570
+ const style = resolved(vnode, ctx);
571
+ if (style['display'] === 'none')
572
+ return;
573
+ if (vnode.type === 'foreignObject') {
574
+ ctx.warnings.push('foreignObject cannot be represented in PDF (it is HTML, and PDF has no HTML) — omitted. ' +
575
+ 'Nodes rendered as HTML components will be missing from the PDF.');
576
+ return;
577
+ }
578
+ // A blur is a filter, and PDF has no filters. Dropping the element beats drawing the
579
+ // node shadow as a hard black slab.
580
+ const filter = style['filter'];
581
+ if (typeof filter === 'string' && /blur\(|url\(#grafloria-blur/.test(filter)) {
582
+ ctx.warnings.push('blurred elements (the node drop shadow) are omitted — PDF has no gaussian blur');
583
+ return;
584
+ }
585
+ const local = (0, path_geometry_1.parseTransform)(style['transform']);
586
+ const hasTransform = !isIdentity(local);
587
+ // An element's clip path rides INSIDE its own transform: SVG applies the transform to
588
+ // element and clip alike (they move together), so the clip ops are emitted after `cm`.
589
+ const clip = resolveClip(style['clip-path'], ctx);
590
+ if (clip === 'hide')
591
+ return; // an EMPTY clipPath clips everything away — SVG semantics
592
+ const scoped = hasTransform || clip !== null;
593
+ if (scoped)
594
+ stream.save();
595
+ if (hasTransform)
596
+ stream.concat(local);
597
+ if (clip) {
598
+ for (const op of clip)
599
+ stream.push(op);
600
+ stream.push('W n');
601
+ }
602
+ drawElement(vnode, style, stream, ctx);
603
+ for (const child of (_a = vnode.children) !== null && _a !== void 0 ? _a : []) {
604
+ if (child && typeof child === 'object')
605
+ paint(child, stream, ctx);
606
+ }
607
+ if (scoped)
608
+ stream.restore();
609
+ }
610
+ /**
611
+ * `clip-path: url(#…)` → the clip's PDF path ops, or null for "paint unclipped", or
612
+ * 'hide' when the clip resolves to nothing (SVG: an empty clip path renders nothing).
613
+ *
614
+ * Multiple clip shapes concatenate into ONE path before a single `W n` — nonzero winding
615
+ * over same-direction subpaths is their union, which is SVG's multi-child semantics.
616
+ * Every refusal (missing def, objectBoundingBox units) WARNS and paints unclipped:
617
+ * bleeding content is a visible flaw, silently vanished content is a lost diagram.
618
+ */
619
+ function resolveClip(value, ctx) {
620
+ var _a, _b, _c;
621
+ if (typeof value !== 'string')
622
+ return null;
623
+ const ref = /^url\(#([^)]+)\)$/.exec(value.trim());
624
+ if (!ref)
625
+ return value.trim() === 'none' ? null : null;
626
+ const def = ctx.defs.clipPaths.get(ref[1]);
627
+ if (!def) {
628
+ ctx.warnings.push(`a clip-path references "#${ref[1]}", which is not in the tree — the content is painted UNCLIPPED`);
629
+ return null;
630
+ }
631
+ if (((_a = def.props) === null || _a === void 0 ? void 0 : _a['clipPathUnits']) === 'objectBoundingBox') {
632
+ ctx.warnings.push('a clipPath with clipPathUnits="objectBoundingBox" is not supported — the content is painted UNCLIPPED');
633
+ return null;
634
+ }
635
+ const ops = [];
636
+ for (const child of (_b = def.children) !== null && _b !== void 0 ? _b : []) {
637
+ if (!child || typeof child !== 'object')
638
+ continue;
639
+ const childOps = geometryOps(child, resolved(child, ctx));
640
+ if (childOps)
641
+ ops.push(...childOps);
642
+ if ((_c = child.props) === null || _c === void 0 ? void 0 : _c['transform']) {
643
+ ctx.warnings.push('a transform on a clipPath child is ignored — the untransformed shape clips');
644
+ }
645
+ }
646
+ return ops.length > 0 ? ops : 'hide';
647
+ }
648
+ function isIdentity(m) {
649
+ return m.a === 1 && m.b === 0 && m.c === 0 && m.d === 1 && m.e === 0 && m.f === 0;
650
+ }
651
+ /** A `url(#…)` reference's target id, or null. */
652
+ function urlRefId(value) {
653
+ if (typeof value !== 'string')
654
+ return null;
655
+ const ref = /^url\(#([^)]+)\)$/.exec(value.trim());
656
+ return ref ? ref[1] : null;
657
+ }
658
+ /**
659
+ * Resolve a paint value to a FLAT colour, degrading paint servers with a warning.
660
+ *
661
+ * This is the fallback path only: gradient FILLS on shapes render as real shadings and
662
+ * never come through here. What does: gradient strokes, gradient-filled text, and
663
+ * patterns — each flattened to its most honest stand-in colour, each warned with the
664
+ * caller's own reason (`why`), so the fidelity report says exactly what degraded.
665
+ */
666
+ function flattenedPaint(value, ctx, why) {
667
+ var _a, _b;
668
+ const id = urlRefId(value);
669
+ if (id === null)
670
+ return (0, pdf_primitives_1.parsePdfColor)(value);
671
+ const gradient = ctx.defs.gradients.get(id);
672
+ if (gradient) {
673
+ ctx.warnings.push(why);
674
+ return gradient.stops[0].color;
675
+ }
676
+ const pattern = ctx.defs.patterns.get(id);
677
+ if (pattern) {
678
+ // The most honest stand-in for a pattern is the field its marks sit on — its
679
+ // background rect's fill, when it has one.
680
+ ctx.warnings.push('a pattern paint was flattened to its background colour — PDF tiling patterns are not implemented');
681
+ for (const child of (_a = pattern.children) !== null && _a !== void 0 ? _a : []) {
682
+ const color = (0, pdf_primitives_1.parsePdfColor)((_b = child === null || child === void 0 ? void 0 : child.props) === null || _b === void 0 ? void 0 : _b['fill']);
683
+ if ((child === null || child === void 0 ? void 0 : child.type) === 'rect' && color)
684
+ return color;
685
+ }
686
+ return null;
687
+ }
688
+ ctx.warnings.push(`a paint references "url(#${id})", which is not in the tree — not painted`);
689
+ return null;
690
+ }
691
+ const COLOR_CHANNELS = s => [s.color.r, s.color.g, s.color.b];
692
+ /** Stop alpha as DeviceGray luminosity: 1 → white (keep), 0 → black (mask away). */
693
+ const ALPHA_CHANNELS = s => [s.alpha];
694
+ /** Type 2 (exponential) function between two stops — PDF's native two-value ramp. */
695
+ function rampFunction(from, to, channels) {
696
+ const c = (s) => `[${channels(s).map(pdf_primitives_1.num).join(' ')}]`;
697
+ return `<< /FunctionType 2 /Domain [0 1] /C0 ${c(from)} /C1 ${c(to)} /N 1 >>`;
698
+ }
699
+ /** 2 stops → one Type 2; more → a Type 3 stitching of Type 2 ramps at the stop offsets. */
700
+ function shadingFunction(stops, channels) {
701
+ // Pad the domain: SVG pads before the first and after the last stop with their colours.
702
+ const padded = [...stops];
703
+ if (padded[0].offset > 0)
704
+ padded.unshift(Object.assign(Object.assign({}, padded[0]), { offset: 0 }));
705
+ if (padded[padded.length - 1].offset < 1)
706
+ padded.push(Object.assign(Object.assign({}, padded[padded.length - 1]), { offset: 1 }));
707
+ if (padded.length === 1)
708
+ padded.push(Object.assign(Object.assign({}, padded[0]), { offset: 1 }));
709
+ if (padded.length === 2)
710
+ return rampFunction(padded[0], padded[1], channels);
711
+ // /Bounds must ascend strictly inside (0,1) — two stops at one offset (a hard colour
712
+ // break) become an epsilon-wide ramp, which is what it looks like at any zoom.
713
+ const bounds = [];
714
+ let previous = 0;
715
+ for (let i = 1; i < padded.length - 1; i++) {
716
+ const bound = Math.min(Math.max(padded[i].offset, previous + 0.0001), 0.9999);
717
+ bounds.push(bound);
718
+ previous = bound;
719
+ }
720
+ const functions = [];
721
+ for (let i = 0; i < padded.length - 1; i++)
722
+ functions.push(rampFunction(padded[i], padded[i + 1], channels));
723
+ return (`<< /FunctionType 3 /Domain [0 1] /Functions [${functions.join(' ')}] ` +
724
+ `/Bounds [${bounds.map(pdf_primitives_1.num).join(' ')}] /Encode [${functions.map(() => '0 1').join(' ')}] >>`);
725
+ }
726
+ /**
727
+ * The shading dicts for a gradient as used by ONE element (objectBoundingBox coords
728
+ * depend on the element's box), or null when the box cannot be determined.
729
+ */
730
+ function shadingDictFor(gradient, vnode, ctx) {
731
+ let geometry;
732
+ if (gradient.kind === 'linear') {
733
+ let { x1, y1, x2, y2 } = gradient.coords;
734
+ if (gradient.objectBoundingBox) {
735
+ const box = (0, bounds_1.vnodeBounds)(vnode);
736
+ if (!box)
737
+ return null;
738
+ x1 = box.x + x1 * box.width;
739
+ y1 = box.y + y1 * box.height;
740
+ x2 = box.x + x2 * box.width;
741
+ y2 = box.y + y2 * box.height;
742
+ }
743
+ geometry = `/ShadingType 2 /ColorSpace {CS} /Coords [${(0, pdf_primitives_1.num)(x1)} ${(0, pdf_primitives_1.num)(y1)} ${(0, pdf_primitives_1.num)(x2)} ${(0, pdf_primitives_1.num)(y2)}]`;
744
+ }
745
+ else {
746
+ let { cx, cy, r } = gradient.coords;
747
+ if (gradient.objectBoundingBox) {
748
+ const box = (0, bounds_1.vnodeBounds)(vnode);
749
+ if (!box)
750
+ return null;
751
+ cx = box.x + cx * box.width;
752
+ cy = box.y + cy * box.height;
753
+ // SVG's oBB radius against a non-square box is an ellipse (via gradientTransform);
754
+ // the normalised diagonal is the spec's own circle-equivalent and the honest circle.
755
+ r = r * (Math.hypot(box.width, box.height) / Math.SQRT2);
756
+ }
757
+ // PDF radial coords are [x0 y0 r0 x1 y1 r1]: inner circle (SVG's focal, radius 0) to
758
+ // the outer circle. The capture emits no focal point, so it sits at the centre.
759
+ geometry = `/ShadingType 3 /ColorSpace {CS} /Coords [${(0, pdf_primitives_1.num)(cx)} ${(0, pdf_primitives_1.num)(cy)} 0 ${(0, pdf_primitives_1.num)(cx)} ${(0, pdf_primitives_1.num)(cy)} ${(0, pdf_primitives_1.num)(r)}]`;
760
+ }
761
+ // /Extend [true true] = SVG's default spreadMethod="pad": both ends run on.
762
+ const dict = (cs, channels) => `<< ${geometry.replace('{CS}', cs)} /Function ${shadingFunction(gradient.stops, channels)} /Extend [true true] >>`;
763
+ const color = dict('/DeviceRGB', COLOR_CHANNELS);
764
+ // Translucent stops → a luminosity soft mask painting the SAME geometry as a gray
765
+ // alpha ramp. The mask form's /BBox must cover everything the colour shading can
766
+ // reach (the element, since the sh is clipped to it) — outside the BBox the mask's
767
+ // BLACK backdrop rules, i.e. alpha 0, so an under-sized box eats the element's edge.
768
+ if (gradient.stops.some(stop => stop.alpha < 1)) {
769
+ const box = (0, bounds_1.vnodeBounds)(vnode);
770
+ if (!box) {
771
+ ctx.warnings.push('a gradient with stop opacity is painted OPAQUE — its soft-mask form needs an element ' +
772
+ 'bounding box that could not be determined');
773
+ return { color, mask: null };
774
+ }
775
+ const pad = 8; // anti-aliasing head-room; the shape clip bounds the real paint anyway
776
+ const bbox = `${(0, pdf_primitives_1.num)(box.x - pad)} ${(0, pdf_primitives_1.num)(box.y - pad)} ` +
777
+ `${(0, pdf_primitives_1.num)(box.x + box.width + pad)} ${(0, pdf_primitives_1.num)(box.y + box.height + pad)}`;
778
+ return { color, mask: { shading: dict('/DeviceGray', ALPHA_CHANNELS), bbox } };
779
+ }
780
+ return { color, mask: null };
781
+ }
782
+ function drawElement(vnode, style, stream, ctx) {
783
+ if (vnode.type === 'text') {
784
+ drawText(vnode, style, stream, ctx);
785
+ return;
786
+ }
787
+ if (vnode.type === 'image') {
788
+ drawImage(style, stream, ctx);
789
+ return;
790
+ }
791
+ const ops = geometryOps(vnode, style);
792
+ if (!ops || ops.length === 0)
793
+ return;
794
+ // A gradient FILL gets a real shading; everything else resolves to a flat colour.
795
+ const fillId = urlRefId(style['fill']);
796
+ const gradient = fillId ? ctx.defs.gradients.get(fillId) : undefined;
797
+ let shadingName = null;
798
+ let softMaskName = null;
799
+ let fill = null;
800
+ if (gradient) {
801
+ const shading = shadingDictFor(gradient, vnode, ctx);
802
+ if (shading) {
803
+ shadingName = ctx.shadings.nameFor(shading.color);
804
+ if (shading.mask)
805
+ softMaskName = ctx.softMasks.nameFor(shading.mask.shading, shading.mask.bbox);
806
+ }
807
+ else {
808
+ ctx.warnings.push('a gradient fill was flattened to its first stop — its objectBoundingBox coords need an ' +
809
+ 'element bounding box that could not be determined');
810
+ fill = gradient.stops[0].color;
811
+ }
812
+ }
813
+ else {
814
+ // The gradient branch above is the only gradient path, so the `why` here can only
815
+ // ever fire for patterns / dangling refs, which carry their own messages.
816
+ fill = flattenedPaint(style['fill'], ctx, 'a gradient fill was flattened to its first stop');
817
+ }
818
+ const stroke = flattenedPaint(style['stroke'], ctx, 'a gradient STROKE was flattened to its first stop — painting a shading through a stroke ' +
819
+ 'needs the stroke outline as a clipping path, which this exporter does not build');
820
+ // `1px` is a legal CSS width and `Number('1px')` is NaN — parseFloat, not Number.
821
+ const strokeWidth = len(style['stroke-width'], 1);
822
+ const willFill = fill !== null;
823
+ const willStroke = stroke !== null && strokeWidth > 0;
824
+ if (!shadingName && !willFill && !willStroke)
825
+ return;
826
+ const alpha = nn(style['opacity'], 1) *
827
+ nn(style['fill-opacity'], 1) *
828
+ (fill ? (0, pdf_primitives_1.parseColorAlpha)(style['fill']) : 1);
829
+ if (shadingName) {
830
+ // Clip to the shape, paint the shading, pop. The clip is why W n precedes sh.
831
+ // The soft-mask gs (stop opacity) comes FIRST: the mask form's coordinate space is
832
+ // fixed at gs time, and it must be the same current user space the sh paints in.
833
+ // The matching Q resets the SMask — nothing after this block stays masked.
834
+ stream.save();
835
+ if (softMaskName)
836
+ stream.push(`/${softMaskName} gs`);
837
+ if (alpha < 1)
838
+ stream.setAlpha(Math.max(0, alpha));
839
+ for (const op of ops)
840
+ stream.push(op);
841
+ stream.push('W n');
842
+ stream.push(`/${shadingName} sh`);
843
+ stream.restore();
844
+ if (willStroke) {
845
+ // Second pass: the shading consumed the path as its clip, so stroke a fresh one.
846
+ const strokeAlpha = nn(style['opacity'], 1);
847
+ stream.save();
848
+ if (strokeAlpha < 1)
849
+ stream.setAlpha(Math.max(0, strokeAlpha));
850
+ stream.setStroke(stroke);
851
+ stream.setLineWidth(strokeWidth);
852
+ stream.setDash(normaliseDash(style['stroke-dasharray']));
853
+ for (const op of ops)
854
+ stream.push(op);
855
+ stream.push('S');
856
+ stream.restore();
857
+ }
858
+ return;
859
+ }
860
+ stream.save();
861
+ if (alpha < 1)
862
+ stream.setAlpha(Math.max(0, alpha));
863
+ if (fill)
864
+ stream.setFill(fill);
865
+ if (stroke && willStroke) {
866
+ stream.setStroke(stroke);
867
+ stream.setLineWidth(strokeWidth);
868
+ stream.setDash(normaliseDash(style['stroke-dasharray']));
869
+ }
870
+ for (const op of ops)
871
+ stream.push(op);
872
+ // B = fill then stroke; f = fill; S = stroke.
873
+ stream.push(willFill && willStroke ? 'B' : willFill ? 'f' : 'S');
874
+ stream.restore();
875
+ }
876
+ /**
877
+ * An <image> → its XObject invocation: `q`, a placement `cm`, `Do`, `Q`.
878
+ *
879
+ * The placement matrix is [w 0 0 -h x y+h]: Do paints the unit square with (0,0) at the
880
+ * image's BOTTOM-left, while the page CTM is y-down SVG space — the -h re-flips so the
881
+ * top pixel row lands at y, not upside down at y+h.
882
+ */
883
+ function drawImage(style, stream, ctx) {
884
+ var _a;
885
+ const href = (_a = style['href']) !== null && _a !== void 0 ? _a : style['xlink:href'];
886
+ if (typeof href !== 'string' || href.trim() === '')
887
+ return;
888
+ const entry = ctx.images.resolve(href, message => ctx.warnings.push(message));
889
+ if (!entry)
890
+ return; // refused and already warned (external URL, interlaced, corrupt…)
891
+ const width = len(style['width'], entry.image.width);
892
+ const height = len(style['height'], entry.image.height);
893
+ if (width <= 0 || height <= 0)
894
+ return;
895
+ const alpha = nn(style['opacity'], 1);
896
+ stream.save();
897
+ if (alpha < 1)
898
+ stream.setAlpha(Math.max(0, alpha));
899
+ stream.concat({ a: width, b: 0, c: 0, d: -height, e: len(style['x']), f: len(style['y']) + height });
900
+ stream.push(`/${entry.name} Do`);
901
+ stream.restore();
902
+ }
903
+ /**
904
+ * A CSS length → number. `parseFloat`, because the flattener emits real CSS values and
905
+ * `stroke-width: 1px` is one of them — `Number('1px')` is NaN, which would silently turn
906
+ * every themed stroke into width 0 (i.e. invisible links).
907
+ */
908
+ function len(value, fallback = 0) {
909
+ if (typeof value === 'number')
910
+ return Number.isFinite(value) ? value : fallback;
911
+ if (typeof value !== 'string')
912
+ return fallback;
913
+ const parsed = Number.parseFloat(value);
914
+ return Number.isFinite(parsed) ? parsed : fallback;
915
+ }
916
+ /** `"5,5"` / `"5 5"` → `"5 5"` (PDF wants a space-separated array). */
917
+ function normaliseDash(value) {
918
+ if (typeof value !== 'string' || value.trim() === '' || value.trim() === 'none')
919
+ return null;
920
+ const parts = value
921
+ .split(/[\s,]+/)
922
+ .map(Number)
923
+ .filter(n => Number.isFinite(n) && n >= 0);
924
+ return parts.length ? parts.map(pdf_primitives_1.num).join(' ') : null;
925
+ }
926
+ function geometryOps(vnode, style) {
927
+ switch (vnode.type) {
928
+ case 'rect':
929
+ return (0, pdf_path_1.pdfRect)(len(style['x']), len(style['y']), len(style['width']), len(style['height']), len(style['rx']), len(style['ry']));
930
+ case 'circle': {
931
+ const r = len(style['r']);
932
+ return r > 0 ? (0, pdf_path_1.pdfCircle)(len(style['cx']), len(style['cy']), r) : null;
933
+ }
934
+ case 'ellipse':
935
+ return (0, pdf_path_1.pdfEllipse)(len(style['cx']), len(style['cy']), len(style['rx']), len(style['ry']));
936
+ case 'line':
937
+ return (0, pdf_path_1.pdfLine)(len(style['x1']), len(style['y1']), len(style['x2']), len(style['y2']));
938
+ case 'polygon':
939
+ case 'polyline':
940
+ return (0, pdf_path_1.pdfPoly)(style['points'], vnode.type === 'polygon');
941
+ case 'path': {
942
+ const d = style['d'];
943
+ return typeof d === 'string' && d.trim() !== '' ? (0, pdf_path_1.svgPathToPdf)(d) : null;
944
+ }
945
+ default:
946
+ return null; // g, svg, tspan: containers, no geometry of their own
947
+ }
948
+ }
949
+ function parsePoints(points) {
950
+ if (typeof points !== 'string')
951
+ return [];
952
+ const nums = points.trim().split(/[\s,]+/).map(Number).filter(n => Number.isFinite(n));
953
+ const out = [];
954
+ for (let i = 0; i + 1 < nums.length; i += 2)
955
+ out.push([nums[i], nums[i + 1]]);
956
+ return out;
957
+ }
958
+ /**
959
+ * Real PDF text: `BT … Tj … ET`. Selectable, searchable, copy-pasteable.
960
+ *
961
+ * The one fiddly bit is the TEXT MATRIX. The page CTM flips y (PDF is y-up, SVG is
962
+ * y-down), and text drawn under that flip would come out MIRRORED. So the text matrix
963
+ * un-flips locally — `1 0 0 -1 x y` — which puts the glyphs upright at the right place.
964
+ */
965
+ function drawText(vnode, style, stream, ctx) {
966
+ var _a, _b, _c;
967
+ const content = textContentOf(vnode);
968
+ if (!content.trim())
969
+ return;
970
+ // `font-size: 14px` — parseFloat, not Number (see `len`).
971
+ const fontSize = len(style['font-size'], 12);
972
+ if (fontSize <= 0)
973
+ return;
974
+ const font = (0, pdf_primitives_1.pickBaseFont)(style['font-family'], style['font-weight'], style['font-style']);
975
+ const fillValue = (_a = style['fill']) !== null && _a !== void 0 ? _a : style['color'];
976
+ const anchor = String((_b = style['text-anchor']) !== null && _b !== void 0 ? _b : 'start');
977
+ const x = len(style['x']);
978
+ const y = len(style['y']);
979
+ const lines = content.split('\n');
980
+ const opacity = nn(style['opacity'], 1) * nn(style['fill-opacity'], 1);
981
+ // A gradient-filled text gets the REAL gradient: text rendering mode 7 adds the glyph
982
+ // outlines to the CLIP path at ET, and the shading is then painted through them —
983
+ // the same clipped-sh technique shapes use, with glyphs for geometry.
984
+ const gradientId = urlRefId(fillValue);
985
+ const gradient = gradientId ? ctx.defs.gradients.get(gradientId) : undefined;
986
+ const shading = gradient ? shadingDictFor(gradient, vnode, ctx) : null;
987
+ const emitLine = (line, index) => {
988
+ const encoded = (0, pdf_primitives_1.encodeWinAnsi)(line);
989
+ if (encoded.unsupported.length > 0) {
990
+ ctx.warnings.push(`text "${line}" contains characters the PDF base-14 fonts cannot encode ` +
991
+ `(${[...new Set(encoded.unsupported)].join('')}) — they are replaced with '?'. ` +
992
+ `Embedding a font that covers them would need a font subsetter, which this exporter does not have.`);
993
+ }
994
+ const width = (0, pdf_primitives_1.measureBaseFont)(font, line, fontSize);
995
+ const left = anchor === 'middle' ? x - width / 2 : anchor === 'end' ? x - width : x;
996
+ const lineY = y + index * fontSize;
997
+ // Un-flip: the page CTM has d = -scale, so without this the glyphs render upside down.
998
+ stream.push(`1 0 0 -1 ${(0, pdf_primitives_1.num)(left)} ${(0, pdf_primitives_1.num)(lineY)} Tm`);
999
+ stream.push(`${(0, pdf_primitives_1.pdfString)(encoded.bytes)} Tj`);
1000
+ };
1001
+ if (shading) {
1002
+ const shadingName = ctx.shadings.nameFor(shading.color);
1003
+ const softMaskName = shading.mask
1004
+ ? ctx.softMasks.nameFor(shading.mask.shading, shading.mask.bbox)
1005
+ : null;
1006
+ stream.save();
1007
+ // Mask gs first — its coordinate space is fixed at gs time (see drawElement).
1008
+ if (softMaskName)
1009
+ stream.push(`/${softMaskName} gs`);
1010
+ if (opacity < 1)
1011
+ stream.setAlpha(Math.max(0, opacity));
1012
+ stream.setFont(font, fontSize);
1013
+ // ONE BT/ET for every line: each ET intersects the block's accumulated outlines with
1014
+ // the current clip, so per-line blocks would intersect line 1's clip with line 2's —
1015
+ // empty — and the gradient would paint nothing.
1016
+ stream.push('BT');
1017
+ stream.push('7 Tr'); // mode 7: add to clip, paint nothing
1018
+ lines.forEach(emitLine);
1019
+ stream.push('ET');
1020
+ stream.push(`/${shadingName} sh`);
1021
+ // Q restores both the clip and text mode 0 for whatever paints next.
1022
+ stream.restore();
1023
+ return;
1024
+ }
1025
+ // Reached with a gradient only when shadingDictFor failed (no bounding box for its
1026
+ // objectBoundingBox coords) — the honest degrade is first stop, said out loud.
1027
+ const fill = (_c = flattenedPaint(fillValue, ctx, 'a gradient fill on text was flattened to its first stop — its objectBoundingBox coords ' +
1028
+ 'need an element bounding box that could not be determined')) !== null && _c !== void 0 ? _c : { r: 0, g: 0, b: 0 };
1029
+ stream.save();
1030
+ if (opacity < 1)
1031
+ stream.setAlpha(Math.max(0, opacity));
1032
+ stream.setFill(fill);
1033
+ stream.setFont(font, fontSize);
1034
+ lines.forEach((line, index) => {
1035
+ stream.push('BT');
1036
+ emitLine(line, index);
1037
+ stream.push('ET');
1038
+ });
1039
+ stream.restore();
1040
+ }
1041
+ function textContentOf(vnode) {
1042
+ var _a, _b;
1043
+ const own = (_a = vnode.props) === null || _a === void 0 ? void 0 : _a['textContent'];
1044
+ if (typeof own === 'string' && own !== '')
1045
+ return own;
1046
+ const lines = [];
1047
+ for (const child of (_b = vnode.children) !== null && _b !== void 0 ? _b : []) {
1048
+ if (typeof child === 'string') {
1049
+ lines.push(child);
1050
+ }
1051
+ else if (child && typeof child === 'object') {
1052
+ const nested = textContentOf(child);
1053
+ if (nested)
1054
+ lines.push(nested);
1055
+ }
1056
+ }
1057
+ return lines.join('\n');
1058
+ }
1059
+ /** "3 / 7", centred in the bottom margin. Drawn OUTSIDE the clipped content area. */
1060
+ function paintPageNumber(stream, page, total, size, margins) {
1061
+ const label = `${page} / ${total}`;
1062
+ const fontSize = 9;
1063
+ const width = (0, pdf_primitives_1.measureBaseFont)('Helvetica', label, fontSize);
1064
+ stream.save();
1065
+ stream.setFill({ r: 0.4, g: 0.4, b: 0.4 });
1066
+ stream.setFont('Helvetica', fontSize);
1067
+ stream.push('BT');
1068
+ stream.push(`${(0, pdf_primitives_1.num)((size.width - width) / 2)} ${(0, pdf_primitives_1.num)(Math.max(12, margins.bottom / 2))} Td`);
1069
+ stream.push(`${(0, pdf_primitives_1.pdfString)((0, pdf_primitives_1.encodeWinAnsi)(label).bytes)} Tj`);
1070
+ stream.push('ET');
1071
+ stream.restore();
1072
+ }
1073
+ function dedupe(warnings) {
1074
+ return [...new Set(warnings)];
1075
+ }
1076
+ //# sourceMappingURL=pdf-export.js.map