@codeenvision/ui-webcomponents 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/dist/components/AccessControlMatrix/AccessControlMatrix.d.ts +20 -0
  4. package/dist/components/AccessControlMatrix/AccessControlMatrix.d.ts.map +1 -0
  5. package/dist/components/AccessControlMatrix/AccessControlMatrix.js +239 -0
  6. package/dist/components/AccessControlMatrix/AccessControlMatrix.js.map +1 -0
  7. package/dist/components/AccessControlMatrix/AccessControlMatrix.types.d.ts +23 -0
  8. package/dist/components/AccessControlMatrix/AccessControlMatrix.types.d.ts.map +1 -0
  9. package/dist/components/AccessControlMatrix/AccessControlMatrix.types.js +2 -0
  10. package/dist/components/AccessControlMatrix/AccessControlMatrix.types.js.map +1 -0
  11. package/dist/components/Accordion/Accordion.d.ts +17 -0
  12. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  13. package/dist/components/Accordion/Accordion.js +89 -0
  14. package/dist/components/Accordion/Accordion.js.map +1 -0
  15. package/dist/components/Accordion/Accordion.types.d.ts +8 -0
  16. package/dist/components/Accordion/Accordion.types.d.ts.map +1 -0
  17. package/dist/components/Accordion/Accordion.types.js +2 -0
  18. package/dist/components/Accordion/Accordion.types.js.map +1 -0
  19. package/dist/components/AtmCard/AtmCard.d.ts +13 -0
  20. package/dist/components/AtmCard/AtmCard.d.ts.map +1 -0
  21. package/dist/components/AtmCard/AtmCard.js +72 -0
  22. package/dist/components/AtmCard/AtmCard.js.map +1 -0
  23. package/dist/components/AtmCard/AtmCard.types.d.ts +11 -0
  24. package/dist/components/AtmCard/AtmCard.types.d.ts.map +1 -0
  25. package/dist/components/AtmCard/AtmCard.types.js +2 -0
  26. package/dist/components/AtmCard/AtmCard.types.js.map +1 -0
  27. package/dist/components/AuditLogViewer/AuditLogViewer.d.ts +28 -0
  28. package/dist/components/AuditLogViewer/AuditLogViewer.d.ts.map +1 -0
  29. package/dist/components/AuditLogViewer/AuditLogViewer.js +276 -0
  30. package/dist/components/AuditLogViewer/AuditLogViewer.js.map +1 -0
  31. package/dist/components/AuditLogViewer/AuditLogViewer.types.d.ts +34 -0
  32. package/dist/components/AuditLogViewer/AuditLogViewer.types.d.ts.map +1 -0
  33. package/dist/components/AuditLogViewer/AuditLogViewer.types.js +2 -0
  34. package/dist/components/AuditLogViewer/AuditLogViewer.types.js.map +1 -0
  35. package/dist/components/Avatar/Avatar.d.ts +10 -0
  36. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  37. package/dist/components/Avatar/Avatar.js +63 -0
  38. package/dist/components/Avatar/Avatar.js.map +1 -0
  39. package/dist/components/Avatar/Avatar.types.d.ts +10 -0
  40. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  41. package/dist/components/Avatar/Avatar.types.js +2 -0
  42. package/dist/components/Avatar/Avatar.types.js.map +1 -0
  43. package/dist/components/BacklogBoard/BacklogBoard.d.ts +31 -0
  44. package/dist/components/BacklogBoard/BacklogBoard.d.ts.map +1 -0
  45. package/dist/components/BacklogBoard/BacklogBoard.js +524 -0
  46. package/dist/components/BacklogBoard/BacklogBoard.js.map +1 -0
  47. package/dist/components/BacklogBoard/BacklogBoard.types.d.ts +34 -0
  48. package/dist/components/BacklogBoard/BacklogBoard.types.d.ts.map +1 -0
  49. package/dist/components/BacklogBoard/BacklogBoard.types.js +2 -0
  50. package/dist/components/BacklogBoard/BacklogBoard.types.js.map +1 -0
  51. package/dist/components/Badge/Badge.d.ts +11 -0
  52. package/dist/components/Badge/Badge.d.ts.map +1 -0
  53. package/dist/components/Badge/Badge.js +64 -0
  54. package/dist/components/Badge/Badge.js.map +1 -0
  55. package/dist/components/Badge/Badge.types.d.ts +11 -0
  56. package/dist/components/Badge/Badge.types.d.ts.map +1 -0
  57. package/dist/components/Badge/Badge.types.js +2 -0
  58. package/dist/components/Badge/Badge.types.js.map +1 -0
  59. package/dist/components/Barcode/Barcode.d.ts +16 -0
  60. package/dist/components/Barcode/Barcode.d.ts.map +1 -0
  61. package/dist/components/Barcode/Barcode.js +142 -0
  62. package/dist/components/Barcode/Barcode.js.map +1 -0
  63. package/dist/components/Barcode/Barcode.types.d.ts +10 -0
  64. package/dist/components/Barcode/Barcode.types.d.ts.map +1 -0
  65. package/dist/components/Barcode/Barcode.types.js +2 -0
  66. package/dist/components/Barcode/Barcode.types.js.map +1 -0
  67. package/dist/components/BottomNav/BottomNav.d.ts +17 -0
  68. package/dist/components/BottomNav/BottomNav.d.ts.map +1 -0
  69. package/dist/components/BottomNav/BottomNav.js +140 -0
  70. package/dist/components/BottomNav/BottomNav.js.map +1 -0
  71. package/dist/components/BottomNav/BottomNav.types.d.ts +20 -0
  72. package/dist/components/BottomNav/BottomNav.types.d.ts.map +1 -0
  73. package/dist/components/BottomNav/BottomNav.types.js +2 -0
  74. package/dist/components/BottomNav/BottomNav.types.js.map +1 -0
  75. package/dist/components/Button/Button.d.ts +16 -0
  76. package/dist/components/Button/Button.d.ts.map +1 -0
  77. package/dist/components/Button/Button.js +168 -0
  78. package/dist/components/Button/Button.js.map +1 -0
  79. package/dist/components/Button/Button.types.d.ts +19 -0
  80. package/dist/components/Button/Button.types.d.ts.map +1 -0
  81. package/dist/components/Button/Button.types.js +2 -0
  82. package/dist/components/Button/Button.types.js.map +1 -0
  83. package/dist/components/Calendar/Calendar.d.ts +17 -0
  84. package/dist/components/Calendar/Calendar.d.ts.map +1 -0
  85. package/dist/components/Calendar/Calendar.js +244 -0
  86. package/dist/components/Calendar/Calendar.js.map +1 -0
  87. package/dist/components/Calendar/Calendar.types.d.ts +13 -0
  88. package/dist/components/Calendar/Calendar.types.d.ts.map +1 -0
  89. package/dist/components/Calendar/Calendar.types.js +2 -0
  90. package/dist/components/Calendar/Calendar.types.js.map +1 -0
  91. package/dist/components/Card/Card.d.ts +10 -0
  92. package/dist/components/Card/Card.d.ts.map +1 -0
  93. package/dist/components/Card/Card.js +66 -0
  94. package/dist/components/Card/Card.js.map +1 -0
  95. package/dist/components/Card/Card.types.d.ts +10 -0
  96. package/dist/components/Card/Card.types.d.ts.map +1 -0
  97. package/dist/components/Card/Card.types.js +2 -0
  98. package/dist/components/Card/Card.types.js.map +1 -0
  99. package/dist/components/Carousel/Carousel.d.ts +25 -0
  100. package/dist/components/Carousel/Carousel.d.ts.map +1 -0
  101. package/dist/components/Carousel/Carousel.js +269 -0
  102. package/dist/components/Carousel/Carousel.js.map +1 -0
  103. package/dist/components/Carousel/Carousel.types.d.ts +21 -0
  104. package/dist/components/Carousel/Carousel.types.d.ts.map +1 -0
  105. package/dist/components/Carousel/Carousel.types.js +2 -0
  106. package/dist/components/Carousel/Carousel.types.js.map +1 -0
  107. package/dist/components/Cart/Cart.d.ts +22 -0
  108. package/dist/components/Cart/Cart.d.ts.map +1 -0
  109. package/dist/components/Cart/Cart.js +185 -0
  110. package/dist/components/Cart/Cart.js.map +1 -0
  111. package/dist/components/Cart/Cart.types.d.ts +17 -0
  112. package/dist/components/Cart/Cart.types.d.ts.map +1 -0
  113. package/dist/components/Cart/Cart.types.js +2 -0
  114. package/dist/components/Cart/Cart.types.js.map +1 -0
  115. package/dist/components/Chart/Chart.d.ts +30 -0
  116. package/dist/components/Chart/Chart.d.ts.map +1 -0
  117. package/dist/components/Chart/Chart.js +575 -0
  118. package/dist/components/Chart/Chart.js.map +1 -0
  119. package/dist/components/Chart/Chart.types.d.ts +46 -0
  120. package/dist/components/Chart/Chart.types.d.ts.map +1 -0
  121. package/dist/components/Chart/Chart.types.js +2 -0
  122. package/dist/components/Chart/Chart.types.js.map +1 -0
  123. package/dist/components/Chat/Chat.d.ts +23 -0
  124. package/dist/components/Chat/Chat.d.ts.map +1 -0
  125. package/dist/components/Chat/Chat.js +243 -0
  126. package/dist/components/Chat/Chat.js.map +1 -0
  127. package/dist/components/Chat/Chat.types.d.ts +26 -0
  128. package/dist/components/Chat/Chat.types.d.ts.map +1 -0
  129. package/dist/components/Chat/Chat.types.js +2 -0
  130. package/dist/components/Chat/Chat.types.js.map +1 -0
  131. package/dist/components/Checkbox/Checkbox.d.ts +13 -0
  132. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  133. package/dist/components/Checkbox/Checkbox.js +27 -0
  134. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  135. package/dist/components/Checkbox/Checkbox.types.d.ts +5 -0
  136. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  137. package/dist/components/Checkbox/Checkbox.types.js +2 -0
  138. package/dist/components/Checkbox/Checkbox.types.js.map +1 -0
  139. package/dist/components/Chip/Chip.d.ts +14 -0
  140. package/dist/components/Chip/Chip.d.ts.map +1 -0
  141. package/dist/components/Chip/Chip.js +129 -0
  142. package/dist/components/Chip/Chip.js.map +1 -0
  143. package/dist/components/Chip/Chip.types.d.ts +14 -0
  144. package/dist/components/Chip/Chip.types.d.ts.map +1 -0
  145. package/dist/components/Chip/Chip.types.js +2 -0
  146. package/dist/components/Chip/Chip.types.js.map +1 -0
  147. package/dist/components/ColorGradient/ColorGradient.d.ts +26 -0
  148. package/dist/components/ColorGradient/ColorGradient.d.ts.map +1 -0
  149. package/dist/components/ColorGradient/ColorGradient.js +251 -0
  150. package/dist/components/ColorGradient/ColorGradient.js.map +1 -0
  151. package/dist/components/ColorGradient/ColorGradient.types.d.ts +29 -0
  152. package/dist/components/ColorGradient/ColorGradient.types.d.ts.map +1 -0
  153. package/dist/components/ColorGradient/ColorGradient.types.js +2 -0
  154. package/dist/components/ColorGradient/ColorGradient.types.js.map +1 -0
  155. package/dist/components/ColorPalette/ColorPalette.d.ts +19 -0
  156. package/dist/components/ColorPalette/ColorPalette.d.ts.map +1 -0
  157. package/dist/components/ColorPalette/ColorPalette.js +174 -0
  158. package/dist/components/ColorPalette/ColorPalette.js.map +1 -0
  159. package/dist/components/ColorPalette/ColorPalette.types.d.ts +24 -0
  160. package/dist/components/ColorPalette/ColorPalette.types.d.ts.map +1 -0
  161. package/dist/components/ColorPalette/ColorPalette.types.js +2 -0
  162. package/dist/components/ColorPalette/ColorPalette.types.js.map +1 -0
  163. package/dist/components/ColorPicker/ColorPicker.d.ts +19 -0
  164. package/dist/components/ColorPicker/ColorPicker.d.ts.map +1 -0
  165. package/dist/components/ColorPicker/ColorPicker.js +176 -0
  166. package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
  167. package/dist/components/ColorPicker/ColorPicker.types.d.ts +12 -0
  168. package/dist/components/ColorPicker/ColorPicker.types.d.ts.map +1 -0
  169. package/dist/components/ColorPicker/ColorPicker.types.js +2 -0
  170. package/dist/components/ColorPicker/ColorPicker.types.js.map +1 -0
  171. package/dist/components/ComboBox/ComboBox.d.ts +17 -0
  172. package/dist/components/ComboBox/ComboBox.d.ts.map +1 -0
  173. package/dist/components/ComboBox/ComboBox.js +136 -0
  174. package/dist/components/ComboBox/ComboBox.js.map +1 -0
  175. package/dist/components/ComboBox/ComboBox.types.d.ts +13 -0
  176. package/dist/components/ComboBox/ComboBox.types.d.ts.map +1 -0
  177. package/dist/components/ComboBox/ComboBox.types.js +2 -0
  178. package/dist/components/ComboBox/ComboBox.types.js.map +1 -0
  179. package/dist/components/ContextMenu/ContextMenu.d.ts +47 -0
  180. package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
  181. package/dist/components/ContextMenu/ContextMenu.js +464 -0
  182. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  183. package/dist/components/ContextMenu/ContextMenu.types.d.ts +57 -0
  184. package/dist/components/ContextMenu/ContextMenu.types.d.ts.map +1 -0
  185. package/dist/components/ContextMenu/ContextMenu.types.js +2 -0
  186. package/dist/components/ContextMenu/ContextMenu.types.js.map +1 -0
  187. package/dist/components/DataTablePro/DataTablePro.d.ts +30 -0
  188. package/dist/components/DataTablePro/DataTablePro.d.ts.map +1 -0
  189. package/dist/components/DataTablePro/DataTablePro.js +330 -0
  190. package/dist/components/DataTablePro/DataTablePro.js.map +1 -0
  191. package/dist/components/DataTablePro/DataTablePro.types.d.ts +25 -0
  192. package/dist/components/DataTablePro/DataTablePro.types.d.ts.map +1 -0
  193. package/dist/components/DataTablePro/DataTablePro.types.js +2 -0
  194. package/dist/components/DataTablePro/DataTablePro.types.js.map +1 -0
  195. package/dist/components/DatePicker/DatePicker.d.ts +40 -0
  196. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  197. package/dist/components/DatePicker/DatePicker.js +461 -0
  198. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  199. package/dist/components/DatePicker/DatePicker.types.d.ts +21 -0
  200. package/dist/components/DatePicker/DatePicker.types.d.ts.map +1 -0
  201. package/dist/components/DatePicker/DatePicker.types.js +2 -0
  202. package/dist/components/DatePicker/DatePicker.types.js.map +1 -0
  203. package/dist/components/DateRangePicker/DateRangePicker.d.ts +44 -0
  204. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -0
  205. package/dist/components/DateRangePicker/DateRangePicker.js +517 -0
  206. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -0
  207. package/dist/components/DateRangePicker/DateRangePicker.types.d.ts +25 -0
  208. package/dist/components/DateRangePicker/DateRangePicker.types.d.ts.map +1 -0
  209. package/dist/components/DateRangePicker/DateRangePicker.types.js +2 -0
  210. package/dist/components/DateRangePicker/DateRangePicker.types.js.map +1 -0
  211. package/dist/components/Diagram/Diagram.d.ts +137 -0
  212. package/dist/components/Diagram/Diagram.d.ts.map +1 -0
  213. package/dist/components/Diagram/Diagram.js +2471 -0
  214. package/dist/components/Diagram/Diagram.js.map +1 -0
  215. package/dist/components/Diagram/Diagram.types.d.ts +47 -0
  216. package/dist/components/Diagram/Diagram.types.d.ts.map +1 -0
  217. package/dist/components/Diagram/Diagram.types.js +2 -0
  218. package/dist/components/Diagram/Diagram.types.js.map +1 -0
  219. package/dist/components/Dialog/Dialog.d.ts +12 -0
  220. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  221. package/dist/components/Dialog/Dialog.js +41 -0
  222. package/dist/components/Dialog/Dialog.js.map +1 -0
  223. package/dist/components/Dialog/Dialog.types.d.ts +8 -0
  224. package/dist/components/Dialog/Dialog.types.d.ts.map +1 -0
  225. package/dist/components/Dialog/Dialog.types.js +2 -0
  226. package/dist/components/Dialog/Dialog.types.js.map +1 -0
  227. package/dist/components/DialogWindow/DialogWindow.d.ts +33 -0
  228. package/dist/components/DialogWindow/DialogWindow.d.ts.map +1 -0
  229. package/dist/components/DialogWindow/DialogWindow.js +307 -0
  230. package/dist/components/DialogWindow/DialogWindow.js.map +1 -0
  231. package/dist/components/DialogWindow/DialogWindow.types.d.ts +23 -0
  232. package/dist/components/DialogWindow/DialogWindow.types.d.ts.map +1 -0
  233. package/dist/components/DialogWindow/DialogWindow.types.js +2 -0
  234. package/dist/components/DialogWindow/DialogWindow.types.js.map +1 -0
  235. package/dist/components/Drawer/Drawer.d.ts +34 -0
  236. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  237. package/dist/components/Drawer/Drawer.js +480 -0
  238. package/dist/components/Drawer/Drawer.js.map +1 -0
  239. package/dist/components/Drawer/Drawer.types.d.ts +33 -0
  240. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  241. package/dist/components/Drawer/Drawer.types.js +2 -0
  242. package/dist/components/Drawer/Drawer.types.js.map +1 -0
  243. package/dist/components/Dropdown/Dropdown.d.ts +40 -0
  244. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  245. package/dist/components/Dropdown/Dropdown.js +428 -0
  246. package/dist/components/Dropdown/Dropdown.js.map +1 -0
  247. package/dist/components/Dropdown/Dropdown.types.d.ts +24 -0
  248. package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
  249. package/dist/components/Dropdown/Dropdown.types.js +2 -0
  250. package/dist/components/Dropdown/Dropdown.types.js.map +1 -0
  251. package/dist/components/Editor/Editor.d.ts +36 -0
  252. package/dist/components/Editor/Editor.d.ts.map +1 -0
  253. package/dist/components/Editor/Editor.js +685 -0
  254. package/dist/components/Editor/Editor.js.map +1 -0
  255. package/dist/components/Editor/Editor.types.d.ts +30 -0
  256. package/dist/components/Editor/Editor.types.d.ts.map +1 -0
  257. package/dist/components/Editor/Editor.types.js +2 -0
  258. package/dist/components/Editor/Editor.types.js.map +1 -0
  259. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.d.ts +18 -0
  260. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.d.ts.map +1 -0
  261. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.js +221 -0
  262. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.js.map +1 -0
  263. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.types.d.ts +22 -0
  264. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.types.d.ts.map +1 -0
  265. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.types.js +2 -0
  266. package/dist/components/FeatureFlagsManager/FeatureFlagsManager.types.js.map +1 -0
  267. package/dist/components/FileManager/FileManager.d.ts +66 -0
  268. package/dist/components/FileManager/FileManager.d.ts.map +1 -0
  269. package/dist/components/FileManager/FileManager.js +740 -0
  270. package/dist/components/FileManager/FileManager.js.map +1 -0
  271. package/dist/components/FileManager/FileManager.types.d.ts +56 -0
  272. package/dist/components/FileManager/FileManager.types.d.ts.map +1 -0
  273. package/dist/components/FileManager/FileManager.types.js +2 -0
  274. package/dist/components/FileManager/FileManager.types.js.map +1 -0
  275. package/dist/components/Form/Form.d.ts +20 -0
  276. package/dist/components/Form/Form.d.ts.map +1 -0
  277. package/dist/components/Form/Form.js +352 -0
  278. package/dist/components/Form/Form.js.map +1 -0
  279. package/dist/components/Form/Form.types.d.ts +41 -0
  280. package/dist/components/Form/Form.types.d.ts.map +1 -0
  281. package/dist/components/Form/Form.types.js +2 -0
  282. package/dist/components/Form/Form.types.js.map +1 -0
  283. package/dist/components/FormBuilder/FormBuilder.d.ts +23 -0
  284. package/dist/components/FormBuilder/FormBuilder.d.ts.map +1 -0
  285. package/dist/components/FormBuilder/FormBuilder.js +352 -0
  286. package/dist/components/FormBuilder/FormBuilder.js.map +1 -0
  287. package/dist/components/FormBuilder/FormBuilder.types.d.ts +37 -0
  288. package/dist/components/FormBuilder/FormBuilder.types.d.ts.map +1 -0
  289. package/dist/components/FormBuilder/FormBuilder.types.js +2 -0
  290. package/dist/components/FormBuilder/FormBuilder.types.js.map +1 -0
  291. package/dist/components/Gantt/Gantt.d.ts +11 -0
  292. package/dist/components/Gantt/Gantt.d.ts.map +1 -0
  293. package/dist/components/Gantt/Gantt.js +50 -0
  294. package/dist/components/Gantt/Gantt.js.map +1 -0
  295. package/dist/components/Gantt/Gantt.types.d.ts +10 -0
  296. package/dist/components/Gantt/Gantt.types.d.ts.map +1 -0
  297. package/dist/components/Gantt/Gantt.types.js +2 -0
  298. package/dist/components/Gantt/Gantt.types.js.map +1 -0
  299. package/dist/components/Grid/Grid.d.ts +9 -0
  300. package/dist/components/Grid/Grid.d.ts.map +1 -0
  301. package/dist/components/Grid/Grid.js +48 -0
  302. package/dist/components/Grid/Grid.js.map +1 -0
  303. package/dist/components/Grid/Grid.types.d.ts +12 -0
  304. package/dist/components/Grid/Grid.types.d.ts.map +1 -0
  305. package/dist/components/Grid/Grid.types.js +2 -0
  306. package/dist/components/Grid/Grid.types.js.map +1 -0
  307. package/dist/components/Guage/Gauge.types.d.ts +14 -0
  308. package/dist/components/Guage/Gauge.types.d.ts.map +1 -0
  309. package/dist/components/Guage/Gauge.types.js +2 -0
  310. package/dist/components/Guage/Gauge.types.js.map +1 -0
  311. package/dist/components/Guage/Guage.d.ts +17 -0
  312. package/dist/components/Guage/Guage.d.ts.map +1 -0
  313. package/dist/components/Guage/Guage.js +146 -0
  314. package/dist/components/Guage/Guage.js.map +1 -0
  315. package/dist/components/Icon/CeIcon.d.ts +10 -0
  316. package/dist/components/Icon/CeIcon.d.ts.map +1 -0
  317. package/dist/components/Icon/CeIcon.js +141 -0
  318. package/dist/components/Icon/CeIcon.js.map +1 -0
  319. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.d.ts +20 -0
  320. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.d.ts.map +1 -0
  321. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.js +218 -0
  322. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.js.map +1 -0
  323. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.types.d.ts +30 -0
  324. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.types.d.ts.map +1 -0
  325. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.types.js +2 -0
  326. package/dist/components/IdentitySsoSettings/IdentitySsoSettings.types.js.map +1 -0
  327. package/dist/components/Input/Input.d.ts +10 -0
  328. package/dist/components/Input/Input.d.ts.map +1 -0
  329. package/dist/components/Input/Input.js +27 -0
  330. package/dist/components/Input/Input.js.map +1 -0
  331. package/dist/components/Input/Input.types.d.ts +8 -0
  332. package/dist/components/Input/Input.types.d.ts.map +1 -0
  333. package/dist/components/Input/Input.types.js +2 -0
  334. package/dist/components/Input/Input.types.js.map +1 -0
  335. package/dist/components/InputMask/InputMask.d.ts +10 -0
  336. package/dist/components/InputMask/InputMask.d.ts.map +1 -0
  337. package/dist/components/InputMask/InputMask.js +39 -0
  338. package/dist/components/InputMask/InputMask.js.map +1 -0
  339. package/dist/components/InputMask/InputMask.types.d.ts +6 -0
  340. package/dist/components/InputMask/InputMask.types.d.ts.map +1 -0
  341. package/dist/components/InputMask/InputMask.types.js +2 -0
  342. package/dist/components/InputMask/InputMask.types.js.map +1 -0
  343. package/dist/components/Kanban/Kanban.d.ts +30 -0
  344. package/dist/components/Kanban/Kanban.d.ts.map +1 -0
  345. package/dist/components/Kanban/Kanban.js +348 -0
  346. package/dist/components/Kanban/Kanban.js.map +1 -0
  347. package/dist/components/Kanban/Kanban.types.d.ts +27 -0
  348. package/dist/components/Kanban/Kanban.types.d.ts.map +1 -0
  349. package/dist/components/Kanban/Kanban.types.js +2 -0
  350. package/dist/components/Kanban/Kanban.types.js.map +1 -0
  351. package/dist/components/ListBox/ListBox.d.ts +28 -0
  352. package/dist/components/ListBox/ListBox.d.ts.map +1 -0
  353. package/dist/components/ListBox/ListBox.js +290 -0
  354. package/dist/components/ListBox/ListBox.js.map +1 -0
  355. package/dist/components/ListBox/ListBox.types.d.ts +24 -0
  356. package/dist/components/ListBox/ListBox.types.d.ts.map +1 -0
  357. package/dist/components/ListBox/ListBox.types.js +2 -0
  358. package/dist/components/ListBox/ListBox.types.js.map +1 -0
  359. package/dist/components/ListView/ListView.d.ts +26 -0
  360. package/dist/components/ListView/ListView.d.ts.map +1 -0
  361. package/dist/components/ListView/ListView.js +284 -0
  362. package/dist/components/ListView/ListView.js.map +1 -0
  363. package/dist/components/ListView/ListView.types.d.ts +30 -0
  364. package/dist/components/ListView/ListView.types.d.ts.map +1 -0
  365. package/dist/components/ListView/ListView.types.js +2 -0
  366. package/dist/components/ListView/ListView.types.js.map +1 -0
  367. package/dist/components/Loader/Loader.d.ts +10 -0
  368. package/dist/components/Loader/Loader.d.ts.map +1 -0
  369. package/dist/components/Loader/Loader.js +60 -0
  370. package/dist/components/Loader/Loader.js.map +1 -0
  371. package/dist/components/Loader/Loader.types.d.ts +7 -0
  372. package/dist/components/Loader/Loader.types.d.ts.map +1 -0
  373. package/dist/components/Loader/Loader.types.js +2 -0
  374. package/dist/components/Loader/Loader.types.js.map +1 -0
  375. package/dist/components/Map/Map.d.ts +10 -0
  376. package/dist/components/Map/Map.d.ts.map +1 -0
  377. package/dist/components/Map/Map.js +85 -0
  378. package/dist/components/Map/Map.js.map +1 -0
  379. package/dist/components/Map/Map.types.d.ts +13 -0
  380. package/dist/components/Map/Map.types.d.ts.map +1 -0
  381. package/dist/components/Map/Map.types.js +2 -0
  382. package/dist/components/Map/Map.types.js.map +1 -0
  383. package/dist/components/Memo/Memo.d.ts +12 -0
  384. package/dist/components/Memo/Memo.d.ts.map +1 -0
  385. package/dist/components/Memo/Memo.js +105 -0
  386. package/dist/components/Memo/Memo.js.map +1 -0
  387. package/dist/components/Memo/Memo.types.d.ts +9 -0
  388. package/dist/components/Memo/Memo.types.d.ts.map +1 -0
  389. package/dist/components/Memo/Memo.types.js +2 -0
  390. package/dist/components/Memo/Memo.types.js.map +1 -0
  391. package/dist/components/Menu/Menu.d.ts +42 -0
  392. package/dist/components/Menu/Menu.d.ts.map +1 -0
  393. package/dist/components/Menu/Menu.js +582 -0
  394. package/dist/components/Menu/Menu.js.map +1 -0
  395. package/dist/components/Menu/Menu.types.d.ts +47 -0
  396. package/dist/components/Menu/Menu.types.d.ts.map +1 -0
  397. package/dist/components/Menu/Menu.types.js +2 -0
  398. package/dist/components/Menu/Menu.types.js.map +1 -0
  399. package/dist/components/MultiSelect/MultiSelect.d.ts +39 -0
  400. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -0
  401. package/dist/components/MultiSelect/MultiSelect.js +483 -0
  402. package/dist/components/MultiSelect/MultiSelect.js.map +1 -0
  403. package/dist/components/MultiSelect/MultiSelect.types.d.ts +21 -0
  404. package/dist/components/MultiSelect/MultiSelect.types.d.ts.map +1 -0
  405. package/dist/components/MultiSelect/MultiSelect.types.js +2 -0
  406. package/dist/components/MultiSelect/MultiSelect.types.js.map +1 -0
  407. package/dist/components/Navbar/Navbar.d.ts +31 -0
  408. package/dist/components/Navbar/Navbar.d.ts.map +1 -0
  409. package/dist/components/Navbar/Navbar.js +482 -0
  410. package/dist/components/Navbar/Navbar.js.map +1 -0
  411. package/dist/components/Navbar/Navbar.types.d.ts +39 -0
  412. package/dist/components/Navbar/Navbar.types.d.ts.map +1 -0
  413. package/dist/components/Navbar/Navbar.types.js +2 -0
  414. package/dist/components/Navbar/Navbar.types.js.map +1 -0
  415. package/dist/components/Notification/Notification.d.ts +14 -0
  416. package/dist/components/Notification/Notification.d.ts.map +1 -0
  417. package/dist/components/Notification/Notification.js +198 -0
  418. package/dist/components/Notification/Notification.js.map +1 -0
  419. package/dist/components/Notification/Notification.types.d.ts +18 -0
  420. package/dist/components/Notification/Notification.types.d.ts.map +1 -0
  421. package/dist/components/Notification/Notification.types.js +2 -0
  422. package/dist/components/Notification/Notification.types.js.map +1 -0
  423. package/dist/components/NumericText/NumericText.d.ts +36 -0
  424. package/dist/components/NumericText/NumericText.d.ts.map +1 -0
  425. package/dist/components/NumericText/NumericText.js +316 -0
  426. package/dist/components/NumericText/NumericText.js.map +1 -0
  427. package/dist/components/NumericText/NumericText.types.d.ts +25 -0
  428. package/dist/components/NumericText/NumericText.types.d.ts.map +1 -0
  429. package/dist/components/NumericText/NumericText.types.js +2 -0
  430. package/dist/components/NumericText/NumericText.types.js.map +1 -0
  431. package/dist/components/OpsConsole/OpsConsole.d.ts +17 -0
  432. package/dist/components/OpsConsole/OpsConsole.d.ts.map +1 -0
  433. package/dist/components/OpsConsole/OpsConsole.js +251 -0
  434. package/dist/components/OpsConsole/OpsConsole.js.map +1 -0
  435. package/dist/components/OpsConsole/OpsConsole.types.d.ts +36 -0
  436. package/dist/components/OpsConsole/OpsConsole.types.d.ts.map +1 -0
  437. package/dist/components/OpsConsole/OpsConsole.types.js +2 -0
  438. package/dist/components/OpsConsole/OpsConsole.types.js.map +1 -0
  439. package/dist/components/OtpInput/OtpInput.d.ts +20 -0
  440. package/dist/components/OtpInput/OtpInput.d.ts.map +1 -0
  441. package/dist/components/OtpInput/OtpInput.js +231 -0
  442. package/dist/components/OtpInput/OtpInput.js.map +1 -0
  443. package/dist/components/OtpInput/OtpInput.types.d.ts +18 -0
  444. package/dist/components/OtpInput/OtpInput.types.d.ts.map +1 -0
  445. package/dist/components/OtpInput/OtpInput.types.js +2 -0
  446. package/dist/components/OtpInput/OtpInput.types.js.map +1 -0
  447. package/dist/components/Pagination/Pagination.d.ts +26 -0
  448. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  449. package/dist/components/Pagination/Pagination.js +202 -0
  450. package/dist/components/Pagination/Pagination.js.map +1 -0
  451. package/dist/components/Pagination/Pagination.types.d.ts +12 -0
  452. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  453. package/dist/components/Pagination/Pagination.types.js +2 -0
  454. package/dist/components/Pagination/Pagination.types.js.map +1 -0
  455. package/dist/components/PdfViewer/PdfViewer.d.ts +24 -0
  456. package/dist/components/PdfViewer/PdfViewer.d.ts.map +1 -0
  457. package/dist/components/PdfViewer/PdfViewer.js +179 -0
  458. package/dist/components/PdfViewer/PdfViewer.js.map +1 -0
  459. package/dist/components/PdfViewer/PdfViewer.types.d.ts +12 -0
  460. package/dist/components/PdfViewer/PdfViewer.types.d.ts.map +1 -0
  461. package/dist/components/PdfViewer/PdfViewer.types.js +2 -0
  462. package/dist/components/PdfViewer/PdfViewer.types.js.map +1 -0
  463. package/dist/components/PivotGrid/PivotGrid.d.ts +10 -0
  464. package/dist/components/PivotGrid/PivotGrid.d.ts.map +1 -0
  465. package/dist/components/PivotGrid/PivotGrid.js +42 -0
  466. package/dist/components/PivotGrid/PivotGrid.js.map +1 -0
  467. package/dist/components/PivotGrid/PivotGrid.types.d.ts +8 -0
  468. package/dist/components/PivotGrid/PivotGrid.types.d.ts.map +1 -0
  469. package/dist/components/PivotGrid/PivotGrid.types.js +2 -0
  470. package/dist/components/PivotGrid/PivotGrid.types.js.map +1 -0
  471. package/dist/components/PolicyEditor/PolicyEditor.d.ts +25 -0
  472. package/dist/components/PolicyEditor/PolicyEditor.d.ts.map +1 -0
  473. package/dist/components/PolicyEditor/PolicyEditor.js +226 -0
  474. package/dist/components/PolicyEditor/PolicyEditor.js.map +1 -0
  475. package/dist/components/PolicyEditor/PolicyEditor.types.d.ts +24 -0
  476. package/dist/components/PolicyEditor/PolicyEditor.types.d.ts.map +1 -0
  477. package/dist/components/PolicyEditor/PolicyEditor.types.js +2 -0
  478. package/dist/components/PolicyEditor/PolicyEditor.types.js.map +1 -0
  479. package/dist/components/Popup/Popup.d.ts +32 -0
  480. package/dist/components/Popup/Popup.d.ts.map +1 -0
  481. package/dist/components/Popup/Popup.js +570 -0
  482. package/dist/components/Popup/Popup.js.map +1 -0
  483. package/dist/components/Popup/Popup.types.d.ts +43 -0
  484. package/dist/components/Popup/Popup.types.d.ts.map +1 -0
  485. package/dist/components/Popup/Popup.types.js +2 -0
  486. package/dist/components/Popup/Popup.types.js.map +1 -0
  487. package/dist/components/ProgressBar/ProgressBar.d.ts +12 -0
  488. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -0
  489. package/dist/components/ProgressBar/ProgressBar.js +74 -0
  490. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  491. package/dist/components/ProgressBar/ProgressBar.types.d.ts +6 -0
  492. package/dist/components/ProgressBar/ProgressBar.types.d.ts.map +1 -0
  493. package/dist/components/ProgressBar/ProgressBar.types.js +2 -0
  494. package/dist/components/ProgressBar/ProgressBar.types.js.map +1 -0
  495. package/dist/components/QrCode/QrCode.d.ts +14 -0
  496. package/dist/components/QrCode/QrCode.d.ts.map +1 -0
  497. package/dist/components/QrCode/QrCode.js +114 -0
  498. package/dist/components/QrCode/QrCode.js.map +1 -0
  499. package/dist/components/QrCode/QrCode.types.d.ts +9 -0
  500. package/dist/components/QrCode/QrCode.types.d.ts.map +1 -0
  501. package/dist/components/QrCode/QrCode.types.js +2 -0
  502. package/dist/components/QrCode/QrCode.types.js.map +1 -0
  503. package/dist/components/Radio/Radio.d.ts +10 -0
  504. package/dist/components/Radio/Radio.d.ts.map +1 -0
  505. package/dist/components/Radio/Radio.js +85 -0
  506. package/dist/components/Radio/Radio.js.map +1 -0
  507. package/dist/components/Radio/Radio.types.d.ts +15 -0
  508. package/dist/components/Radio/Radio.types.d.ts.map +1 -0
  509. package/dist/components/Radio/Radio.types.js +2 -0
  510. package/dist/components/Radio/Radio.types.js.map +1 -0
  511. package/dist/components/RadioRange/RadioRange.d.ts +11 -0
  512. package/dist/components/RadioRange/RadioRange.d.ts.map +1 -0
  513. package/dist/components/RadioRange/RadioRange.js +94 -0
  514. package/dist/components/RadioRange/RadioRange.js.map +1 -0
  515. package/dist/components/RadioRange/RadioRange.types.d.ts +11 -0
  516. package/dist/components/RadioRange/RadioRange.types.d.ts.map +1 -0
  517. package/dist/components/RadioRange/RadioRange.types.js +2 -0
  518. package/dist/components/RadioRange/RadioRange.types.js.map +1 -0
  519. package/dist/components/RangeSlider/RangeSlider.d.ts +11 -0
  520. package/dist/components/RangeSlider/RangeSlider.d.ts.map +1 -0
  521. package/dist/components/RangeSlider/RangeSlider.js +31 -0
  522. package/dist/components/RangeSlider/RangeSlider.js.map +1 -0
  523. package/dist/components/RangeSlider/RangeSlider.types.d.ts +8 -0
  524. package/dist/components/RangeSlider/RangeSlider.types.d.ts.map +1 -0
  525. package/dist/components/RangeSlider/RangeSlider.types.js +2 -0
  526. package/dist/components/RangeSlider/RangeSlider.types.js.map +1 -0
  527. package/dist/components/Rating/Rating.d.ts +14 -0
  528. package/dist/components/Rating/Rating.d.ts.map +1 -0
  529. package/dist/components/Rating/Rating.js +40 -0
  530. package/dist/components/Rating/Rating.js.map +1 -0
  531. package/dist/components/Rating/Rating.types.d.ts +7 -0
  532. package/dist/components/Rating/Rating.types.d.ts.map +1 -0
  533. package/dist/components/Rating/Rating.types.js +2 -0
  534. package/dist/components/Rating/Rating.types.js.map +1 -0
  535. package/dist/components/RichTextEditor/RichTextEditor.d.ts +11 -0
  536. package/dist/components/RichTextEditor/RichTextEditor.d.ts.map +1 -0
  537. package/dist/components/RichTextEditor/RichTextEditor.js +38 -0
  538. package/dist/components/RichTextEditor/RichTextEditor.js.map +1 -0
  539. package/dist/components/RichTextEditor/RichTextEditor.types.d.ts +6 -0
  540. package/dist/components/RichTextEditor/RichTextEditor.types.d.ts.map +1 -0
  541. package/dist/components/RichTextEditor/RichTextEditor.types.js +2 -0
  542. package/dist/components/RichTextEditor/RichTextEditor.types.js.map +1 -0
  543. package/dist/components/SLADashboard/SLADashboard.d.ts +18 -0
  544. package/dist/components/SLADashboard/SLADashboard.d.ts.map +1 -0
  545. package/dist/components/SLADashboard/SLADashboard.js +237 -0
  546. package/dist/components/SLADashboard/SLADashboard.js.map +1 -0
  547. package/dist/components/SLADashboard/SLADashboard.types.d.ts +32 -0
  548. package/dist/components/SLADashboard/SLADashboard.types.d.ts.map +1 -0
  549. package/dist/components/SLADashboard/SLADashboard.types.js +2 -0
  550. package/dist/components/SLADashboard/SLADashboard.types.js.map +1 -0
  551. package/dist/components/Scheduler/Scheduler.d.ts +43 -0
  552. package/dist/components/Scheduler/Scheduler.d.ts.map +1 -0
  553. package/dist/components/Scheduler/Scheduler.js +548 -0
  554. package/dist/components/Scheduler/Scheduler.js.map +1 -0
  555. package/dist/components/Scheduler/Scheduler.types.d.ts +23 -0
  556. package/dist/components/Scheduler/Scheduler.types.d.ts.map +1 -0
  557. package/dist/components/Scheduler/Scheduler.types.js +2 -0
  558. package/dist/components/Scheduler/Scheduler.types.js.map +1 -0
  559. package/dist/components/ScrollView/ScrollView.d.ts +14 -0
  560. package/dist/components/ScrollView/ScrollView.d.ts.map +1 -0
  561. package/dist/components/ScrollView/ScrollView.js +80 -0
  562. package/dist/components/ScrollView/ScrollView.js.map +1 -0
  563. package/dist/components/ScrollView/ScrollView.types.d.ts +10 -0
  564. package/dist/components/ScrollView/ScrollView.types.d.ts.map +1 -0
  565. package/dist/components/ScrollView/ScrollView.types.js +2 -0
  566. package/dist/components/ScrollView/ScrollView.types.js.map +1 -0
  567. package/dist/components/SignaturePad/SignaturePad.d.ts +27 -0
  568. package/dist/components/SignaturePad/SignaturePad.d.ts.map +1 -0
  569. package/dist/components/SignaturePad/SignaturePad.js +187 -0
  570. package/dist/components/SignaturePad/SignaturePad.js.map +1 -0
  571. package/dist/components/SignaturePad/SignaturePad.types.d.ts +12 -0
  572. package/dist/components/SignaturePad/SignaturePad.types.d.ts.map +1 -0
  573. package/dist/components/SignaturePad/SignaturePad.types.js +2 -0
  574. package/dist/components/SignaturePad/SignaturePad.types.js.map +1 -0
  575. package/dist/components/Slider/Slider.d.ts +16 -0
  576. package/dist/components/Slider/Slider.d.ts.map +1 -0
  577. package/dist/components/Slider/Slider.js +112 -0
  578. package/dist/components/Slider/Slider.js.map +1 -0
  579. package/dist/components/Slider/Slider.types.d.ts +12 -0
  580. package/dist/components/Slider/Slider.types.d.ts.map +1 -0
  581. package/dist/components/Slider/Slider.types.js +2 -0
  582. package/dist/components/Slider/Slider.types.js.map +1 -0
  583. package/dist/components/SmartEditor/SmartEditor.d.ts +32 -0
  584. package/dist/components/SmartEditor/SmartEditor.d.ts.map +1 -0
  585. package/dist/components/SmartEditor/SmartEditor.js +478 -0
  586. package/dist/components/SmartEditor/SmartEditor.js.map +1 -0
  587. package/dist/components/SmartEditor/SmartEditor.types.d.ts +17 -0
  588. package/dist/components/SmartEditor/SmartEditor.types.d.ts.map +1 -0
  589. package/dist/components/SmartEditor/SmartEditor.types.js +2 -0
  590. package/dist/components/SmartEditor/SmartEditor.types.js.map +1 -0
  591. package/dist/components/SpeechToText/SpeechToText.d.ts +27 -0
  592. package/dist/components/SpeechToText/SpeechToText.d.ts.map +1 -0
  593. package/dist/components/SpeechToText/SpeechToText.js +161 -0
  594. package/dist/components/SpeechToText/SpeechToText.js.map +1 -0
  595. package/dist/components/SpeechToText/SpeechToText.types.d.ts +17 -0
  596. package/dist/components/SpeechToText/SpeechToText.types.d.ts.map +1 -0
  597. package/dist/components/SpeechToText/SpeechToText.types.js +2 -0
  598. package/dist/components/SpeechToText/SpeechToText.types.js.map +1 -0
  599. package/dist/components/Splitter/Splitter.d.ts +34 -0
  600. package/dist/components/Splitter/Splitter.d.ts.map +1 -0
  601. package/dist/components/Splitter/Splitter.js +237 -0
  602. package/dist/components/Splitter/Splitter.js.map +1 -0
  603. package/dist/components/Splitter/Splitter.types.d.ts +19 -0
  604. package/dist/components/Splitter/Splitter.types.d.ts.map +1 -0
  605. package/dist/components/Splitter/Splitter.types.js +2 -0
  606. package/dist/components/Splitter/Splitter.types.js.map +1 -0
  607. package/dist/components/Spreadsheet/Spreadsheet.d.ts +47 -0
  608. package/dist/components/Spreadsheet/Spreadsheet.d.ts.map +1 -0
  609. package/dist/components/Spreadsheet/Spreadsheet.js +597 -0
  610. package/dist/components/Spreadsheet/Spreadsheet.js.map +1 -0
  611. package/dist/components/Spreadsheet/Spreadsheet.types.d.ts +16 -0
  612. package/dist/components/Spreadsheet/Spreadsheet.types.d.ts.map +1 -0
  613. package/dist/components/Spreadsheet/Spreadsheet.types.js +2 -0
  614. package/dist/components/Spreadsheet/Spreadsheet.types.js.map +1 -0
  615. package/dist/components/Stepper/Stepper.d.ts +30 -0
  616. package/dist/components/Stepper/Stepper.d.ts.map +1 -0
  617. package/dist/components/Stepper/Stepper.js +258 -0
  618. package/dist/components/Stepper/Stepper.js.map +1 -0
  619. package/dist/components/Stepper/Stepper.types.d.ts +32 -0
  620. package/dist/components/Stepper/Stepper.types.d.ts.map +1 -0
  621. package/dist/components/Stepper/Stepper.types.js +2 -0
  622. package/dist/components/Stepper/Stepper.types.js.map +1 -0
  623. package/dist/components/Switch/Switch.d.ts +11 -0
  624. package/dist/components/Switch/Switch.d.ts.map +1 -0
  625. package/dist/components/Switch/Switch.js +21 -0
  626. package/dist/components/Switch/Switch.js.map +1 -0
  627. package/dist/components/Switch/Switch.types.d.ts +5 -0
  628. package/dist/components/Switch/Switch.types.d.ts.map +1 -0
  629. package/dist/components/Switch/Switch.types.js +2 -0
  630. package/dist/components/Switch/Switch.types.js.map +1 -0
  631. package/dist/components/TabLayout/TabLayout.d.ts +27 -0
  632. package/dist/components/TabLayout/TabLayout.d.ts.map +1 -0
  633. package/dist/components/TabLayout/TabLayout.js +269 -0
  634. package/dist/components/TabLayout/TabLayout.js.map +1 -0
  635. package/dist/components/TabLayout/TabLayout.types.d.ts +26 -0
  636. package/dist/components/TabLayout/TabLayout.types.d.ts.map +1 -0
  637. package/dist/components/TabLayout/TabLayout.types.js +2 -0
  638. package/dist/components/TabLayout/TabLayout.types.js.map +1 -0
  639. package/dist/components/Table/Table.d.ts +10 -0
  640. package/dist/components/Table/Table.d.ts.map +1 -0
  641. package/dist/components/Table/Table.js +120 -0
  642. package/dist/components/Table/Table.js.map +1 -0
  643. package/dist/components/Table/Table.types.d.ts +19 -0
  644. package/dist/components/Table/Table.types.d.ts.map +1 -0
  645. package/dist/components/Table/Table.types.js +2 -0
  646. package/dist/components/Table/Table.types.js.map +1 -0
  647. package/dist/components/Tabs/Tabs.d.ts +33 -0
  648. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  649. package/dist/components/Tabs/Tabs.js +403 -0
  650. package/dist/components/Tabs/Tabs.js.map +1 -0
  651. package/dist/components/Tabs/Tabs.types.d.ts +39 -0
  652. package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
  653. package/dist/components/Tabs/Tabs.types.js +2 -0
  654. package/dist/components/Tabs/Tabs.types.js.map +1 -0
  655. package/dist/components/TextArea/TextArea.d.ts +12 -0
  656. package/dist/components/TextArea/TextArea.d.ts.map +1 -0
  657. package/dist/components/TextArea/TextArea.js +53 -0
  658. package/dist/components/TextArea/TextArea.js.map +1 -0
  659. package/dist/components/TextArea/TextArea.types.d.ts +13 -0
  660. package/dist/components/TextArea/TextArea.types.d.ts.map +1 -0
  661. package/dist/components/TextArea/TextArea.types.js +2 -0
  662. package/dist/components/TextArea/TextArea.types.js.map +1 -0
  663. package/dist/components/Timeline/Timeline.d.ts +10 -0
  664. package/dist/components/Timeline/Timeline.d.ts.map +1 -0
  665. package/dist/components/Timeline/Timeline.js +118 -0
  666. package/dist/components/Timeline/Timeline.js.map +1 -0
  667. package/dist/components/Timeline/Timeline.types.d.ts +21 -0
  668. package/dist/components/Timeline/Timeline.types.d.ts.map +1 -0
  669. package/dist/components/Timeline/Timeline.types.js +2 -0
  670. package/dist/components/Timeline/Timeline.types.js.map +1 -0
  671. package/dist/components/Toast/Toast.d.ts +16 -0
  672. package/dist/components/Toast/Toast.d.ts.map +1 -0
  673. package/dist/components/Toast/Toast.js +85 -0
  674. package/dist/components/Toast/Toast.js.map +1 -0
  675. package/dist/components/Toast/Toast.types.d.ts +15 -0
  676. package/dist/components/Toast/Toast.types.d.ts.map +1 -0
  677. package/dist/components/Toast/Toast.types.js +2 -0
  678. package/dist/components/Toast/Toast.types.js.map +1 -0
  679. package/dist/components/TokenVault/TokenVault.d.ts +19 -0
  680. package/dist/components/TokenVault/TokenVault.d.ts.map +1 -0
  681. package/dist/components/TokenVault/TokenVault.js +206 -0
  682. package/dist/components/TokenVault/TokenVault.js.map +1 -0
  683. package/dist/components/TokenVault/TokenVault.types.d.ts +23 -0
  684. package/dist/components/TokenVault/TokenVault.types.d.ts.map +1 -0
  685. package/dist/components/TokenVault/TokenVault.types.js +2 -0
  686. package/dist/components/TokenVault/TokenVault.types.js.map +1 -0
  687. package/dist/components/Tooltip/Tooltip.d.ts +15 -0
  688. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  689. package/dist/components/Tooltip/Tooltip.js +64 -0
  690. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  691. package/dist/components/Tooltip/Tooltip.types.d.ts +7 -0
  692. package/dist/components/Tooltip/Tooltip.types.d.ts.map +1 -0
  693. package/dist/components/Tooltip/Tooltip.types.js +2 -0
  694. package/dist/components/Tooltip/Tooltip.types.js.map +1 -0
  695. package/dist/components/TooltipManager/TooltipManager.d.ts +10 -0
  696. package/dist/components/TooltipManager/TooltipManager.d.ts.map +1 -0
  697. package/dist/components/TooltipManager/TooltipManager.js +116 -0
  698. package/dist/components/TooltipManager/TooltipManager.js.map +1 -0
  699. package/dist/components/TooltipManager/TooltipManager.types.d.ts +11 -0
  700. package/dist/components/TooltipManager/TooltipManager.types.d.ts.map +1 -0
  701. package/dist/components/TooltipManager/TooltipManager.types.js +2 -0
  702. package/dist/components/TooltipManager/TooltipManager.types.js.map +1 -0
  703. package/dist/components/TreeList/TreeList.d.ts +30 -0
  704. package/dist/components/TreeList/TreeList.d.ts.map +1 -0
  705. package/dist/components/TreeList/TreeList.js +375 -0
  706. package/dist/components/TreeList/TreeList.js.map +1 -0
  707. package/dist/components/TreeList/TreeList.types.d.ts +22 -0
  708. package/dist/components/TreeList/TreeList.types.d.ts.map +1 -0
  709. package/dist/components/TreeList/TreeList.types.js +2 -0
  710. package/dist/components/TreeList/TreeList.types.js.map +1 -0
  711. package/dist/components/TreeView/TreeView.d.ts +33 -0
  712. package/dist/components/TreeView/TreeView.d.ts.map +1 -0
  713. package/dist/components/TreeView/TreeView.js +405 -0
  714. package/dist/components/TreeView/TreeView.js.map +1 -0
  715. package/dist/components/TreeView/TreeView.types.d.ts +20 -0
  716. package/dist/components/TreeView/TreeView.types.d.ts.map +1 -0
  717. package/dist/components/TreeView/TreeView.types.js +2 -0
  718. package/dist/components/TreeView/TreeView.types.js.map +1 -0
  719. package/dist/components/Upload/Upload.d.ts +10 -0
  720. package/dist/components/Upload/Upload.d.ts.map +1 -0
  721. package/dist/components/Upload/Upload.js +19 -0
  722. package/dist/components/Upload/Upload.js.map +1 -0
  723. package/dist/components/Upload/Upload.types.d.ts +5 -0
  724. package/dist/components/Upload/Upload.types.d.ts.map +1 -0
  725. package/dist/components/Upload/Upload.types.js +2 -0
  726. package/dist/components/Upload/Upload.types.js.map +1 -0
  727. package/dist/components/Video/Video.d.ts +31 -0
  728. package/dist/components/Video/Video.d.ts.map +1 -0
  729. package/dist/components/Video/Video.js +337 -0
  730. package/dist/components/Video/Video.js.map +1 -0
  731. package/dist/components/Video/Video.types.d.ts +49 -0
  732. package/dist/components/Video/Video.types.d.ts.map +1 -0
  733. package/dist/components/Video/Video.types.js +2 -0
  734. package/dist/components/Video/Video.types.js.map +1 -0
  735. package/dist/components/VisitingCard/VisitingCard.d.ts +16 -0
  736. package/dist/components/VisitingCard/VisitingCard.d.ts.map +1 -0
  737. package/dist/components/VisitingCard/VisitingCard.js +105 -0
  738. package/dist/components/VisitingCard/VisitingCard.js.map +1 -0
  739. package/dist/components/VisitingCard/VisitingCard.types.d.ts +12 -0
  740. package/dist/components/VisitingCard/VisitingCard.types.d.ts.map +1 -0
  741. package/dist/components/VisitingCard/VisitingCard.types.js +2 -0
  742. package/dist/components/VisitingCard/VisitingCard.types.js.map +1 -0
  743. package/dist/components/Window/Window.d.ts +39 -0
  744. package/dist/components/Window/Window.d.ts.map +1 -0
  745. package/dist/components/Window/Window.js +264 -0
  746. package/dist/components/Window/Window.js.map +1 -0
  747. package/dist/components/Window/Window.types.d.ts +28 -0
  748. package/dist/components/Window/Window.types.d.ts.map +1 -0
  749. package/dist/components/Window/Window.types.js +2 -0
  750. package/dist/components/Window/Window.types.js.map +1 -0
  751. package/dist/components/Wizard/Wizard.d.ts +38 -0
  752. package/dist/components/Wizard/Wizard.d.ts.map +1 -0
  753. package/dist/components/Wizard/Wizard.js +547 -0
  754. package/dist/components/Wizard/Wizard.js.map +1 -0
  755. package/dist/components/Wizard/Wizard.types.d.ts +46 -0
  756. package/dist/components/Wizard/Wizard.types.d.ts.map +1 -0
  757. package/dist/components/Wizard/Wizard.types.js +2 -0
  758. package/dist/components/Wizard/Wizard.types.js.map +1 -0
  759. package/dist/components/WorkflowBuilder/WorkflowBuilder.d.ts +21 -0
  760. package/dist/components/WorkflowBuilder/WorkflowBuilder.d.ts.map +1 -0
  761. package/dist/components/WorkflowBuilder/WorkflowBuilder.js +256 -0
  762. package/dist/components/WorkflowBuilder/WorkflowBuilder.js.map +1 -0
  763. package/dist/components/WorkflowBuilder/WorkflowBuilder.types.d.ts +28 -0
  764. package/dist/components/WorkflowBuilder/WorkflowBuilder.types.d.ts.map +1 -0
  765. package/dist/components/WorkflowBuilder/WorkflowBuilder.types.js +2 -0
  766. package/dist/components/WorkflowBuilder/WorkflowBuilder.types.js.map +1 -0
  767. package/dist/components/web-components/access-control-matrix.d.ts +11 -0
  768. package/dist/components/web-components/access-control-matrix.d.ts.map +1 -0
  769. package/dist/components/web-components/access-control-matrix.js +262 -0
  770. package/dist/components/web-components/access-control-matrix.js.map +1 -0
  771. package/dist/components/web-components/accordion.d.ts +5 -0
  772. package/dist/components/web-components/accordion.d.ts.map +1 -0
  773. package/dist/components/web-components/accordion.js +110 -0
  774. package/dist/components/web-components/accordion.js.map +1 -0
  775. package/dist/components/web-components/atm-card.d.ts +4 -0
  776. package/dist/components/web-components/atm-card.d.ts.map +1 -0
  777. package/dist/components/web-components/atm-card.js +142 -0
  778. package/dist/components/web-components/atm-card.js.map +1 -0
  779. package/dist/components/web-components/audit-log-viewer.d.ts +11 -0
  780. package/dist/components/web-components/audit-log-viewer.d.ts.map +1 -0
  781. package/dist/components/web-components/audit-log-viewer.js +275 -0
  782. package/dist/components/web-components/audit-log-viewer.js.map +1 -0
  783. package/dist/components/web-components/avatar.d.ts +5 -0
  784. package/dist/components/web-components/avatar.d.ts.map +1 -0
  785. package/dist/components/web-components/avatar.js +140 -0
  786. package/dist/components/web-components/avatar.js.map +1 -0
  787. package/dist/components/web-components/backlog-board.d.ts +16 -0
  788. package/dist/components/web-components/backlog-board.d.ts.map +1 -0
  789. package/dist/components/web-components/backlog-board.js +188 -0
  790. package/dist/components/web-components/backlog-board.js.map +1 -0
  791. package/dist/components/web-components/badge.d.ts +5 -0
  792. package/dist/components/web-components/badge.d.ts.map +1 -0
  793. package/dist/components/web-components/badge.js +134 -0
  794. package/dist/components/web-components/badge.js.map +1 -0
  795. package/dist/components/web-components/barcode.d.ts +4 -0
  796. package/dist/components/web-components/barcode.d.ts.map +1 -0
  797. package/dist/components/web-components/barcode.js +152 -0
  798. package/dist/components/web-components/barcode.js.map +1 -0
  799. package/dist/components/web-components/bottom-nav.d.ts +8 -0
  800. package/dist/components/web-components/bottom-nav.d.ts.map +1 -0
  801. package/dist/components/web-components/bottom-nav.js +153 -0
  802. package/dist/components/web-components/bottom-nav.js.map +1 -0
  803. package/dist/components/web-components/button.d.ts +22 -0
  804. package/dist/components/web-components/button.d.ts.map +1 -0
  805. package/dist/components/web-components/button.js +194 -0
  806. package/dist/components/web-components/button.js.map +1 -0
  807. package/dist/components/web-components/calendar.d.ts +10 -0
  808. package/dist/components/web-components/calendar.d.ts.map +1 -0
  809. package/dist/components/web-components/calendar.js +112 -0
  810. package/dist/components/web-components/calendar.js.map +1 -0
  811. package/dist/components/web-components/card.d.ts +5 -0
  812. package/dist/components/web-components/card.d.ts.map +1 -0
  813. package/dist/components/web-components/card.js +145 -0
  814. package/dist/components/web-components/card.js.map +1 -0
  815. package/dist/components/web-components/carousel.d.ts +10 -0
  816. package/dist/components/web-components/carousel.d.ts.map +1 -0
  817. package/dist/components/web-components/carousel.js +119 -0
  818. package/dist/components/web-components/carousel.js.map +1 -0
  819. package/dist/components/web-components/cart.d.ts +15 -0
  820. package/dist/components/web-components/cart.d.ts.map +1 -0
  821. package/dist/components/web-components/cart.js +149 -0
  822. package/dist/components/web-components/cart.js.map +1 -0
  823. package/dist/components/web-components/chart.d.ts +6 -0
  824. package/dist/components/web-components/chart.d.ts.map +1 -0
  825. package/dist/components/web-components/chart.js +108 -0
  826. package/dist/components/web-components/chart.js.map +1 -0
  827. package/dist/components/web-components/chat.d.ts +7 -0
  828. package/dist/components/web-components/chat.d.ts.map +1 -0
  829. package/dist/components/web-components/chat.js +162 -0
  830. package/dist/components/web-components/chat.js.map +1 -0
  831. package/dist/components/web-components/checkbox.d.ts +9 -0
  832. package/dist/components/web-components/checkbox.d.ts.map +1 -0
  833. package/dist/components/web-components/checkbox.js +83 -0
  834. package/dist/components/web-components/checkbox.js.map +1 -0
  835. package/dist/components/web-components/chip.d.ts +8 -0
  836. package/dist/components/web-components/chip.d.ts.map +1 -0
  837. package/dist/components/web-components/chip.js +160 -0
  838. package/dist/components/web-components/chip.js.map +1 -0
  839. package/dist/components/web-components/color-gradient.d.ts +19 -0
  840. package/dist/components/web-components/color-gradient.d.ts.map +1 -0
  841. package/dist/components/web-components/color-gradient.js +168 -0
  842. package/dist/components/web-components/color-gradient.js.map +1 -0
  843. package/dist/components/web-components/color-palette.d.ts +13 -0
  844. package/dist/components/web-components/color-palette.d.ts.map +1 -0
  845. package/dist/components/web-components/color-palette.js +150 -0
  846. package/dist/components/web-components/color-palette.js.map +1 -0
  847. package/dist/components/web-components/color-picker.d.ts +8 -0
  848. package/dist/components/web-components/color-picker.d.ts.map +1 -0
  849. package/dist/components/web-components/color-picker.js +130 -0
  850. package/dist/components/web-components/color-picker.js.map +1 -0
  851. package/dist/components/web-components/combobox.d.ts +9 -0
  852. package/dist/components/web-components/combobox.d.ts.map +1 -0
  853. package/dist/components/web-components/combobox.js +123 -0
  854. package/dist/components/web-components/combobox.js.map +1 -0
  855. package/dist/components/web-components/context-menu.d.ts +9 -0
  856. package/dist/components/web-components/context-menu.d.ts.map +1 -0
  857. package/dist/components/web-components/context-menu.js +172 -0
  858. package/dist/components/web-components/context-menu.js.map +1 -0
  859. package/dist/components/web-components/datatable-pro.d.ts +13 -0
  860. package/dist/components/web-components/datatable-pro.d.ts.map +1 -0
  861. package/dist/components/web-components/datatable-pro.js +308 -0
  862. package/dist/components/web-components/datatable-pro.js.map +1 -0
  863. package/dist/components/web-components/date-picker.d.ts +10 -0
  864. package/dist/components/web-components/date-picker.d.ts.map +1 -0
  865. package/dist/components/web-components/date-picker.js +153 -0
  866. package/dist/components/web-components/date-picker.js.map +1 -0
  867. package/dist/components/web-components/date-range-picker.d.ts +11 -0
  868. package/dist/components/web-components/date-range-picker.d.ts.map +1 -0
  869. package/dist/components/web-components/date-range-picker.js +163 -0
  870. package/dist/components/web-components/date-range-picker.js.map +1 -0
  871. package/dist/components/web-components/diagram.d.ts +10 -0
  872. package/dist/components/web-components/diagram.d.ts.map +1 -0
  873. package/dist/components/web-components/diagram.js +380 -0
  874. package/dist/components/web-components/diagram.js.map +1 -0
  875. package/dist/components/web-components/dialog-window.d.ts +5 -0
  876. package/dist/components/web-components/dialog-window.d.ts.map +1 -0
  877. package/dist/components/web-components/dialog-window.js +167 -0
  878. package/dist/components/web-components/dialog-window.js.map +1 -0
  879. package/dist/components/web-components/dialog.d.ts +5 -0
  880. package/dist/components/web-components/dialog.d.ts.map +1 -0
  881. package/dist/components/web-components/dialog.js +77 -0
  882. package/dist/components/web-components/dialog.js.map +1 -0
  883. package/dist/components/web-components/drawer.d.ts +5 -0
  884. package/dist/components/web-components/drawer.d.ts.map +1 -0
  885. package/dist/components/web-components/drawer.js +231 -0
  886. package/dist/components/web-components/drawer.js.map +1 -0
  887. package/dist/components/web-components/dropdown.d.ts +10 -0
  888. package/dist/components/web-components/dropdown.d.ts.map +1 -0
  889. package/dist/components/web-components/dropdown.js +188 -0
  890. package/dist/components/web-components/dropdown.js.map +1 -0
  891. package/dist/components/web-components/editor.d.ts +8 -0
  892. package/dist/components/web-components/editor.d.ts.map +1 -0
  893. package/dist/components/web-components/editor.js +265 -0
  894. package/dist/components/web-components/editor.js.map +1 -0
  895. package/dist/components/web-components/feature-flags-manager.d.ts +13 -0
  896. package/dist/components/web-components/feature-flags-manager.d.ts.map +1 -0
  897. package/dist/components/web-components/feature-flags-manager.js +190 -0
  898. package/dist/components/web-components/feature-flags-manager.js.map +1 -0
  899. package/dist/components/web-components/file-manager.d.ts +29 -0
  900. package/dist/components/web-components/file-manager.d.ts.map +1 -0
  901. package/dist/components/web-components/file-manager.js +466 -0
  902. package/dist/components/web-components/file-manager.js.map +1 -0
  903. package/dist/components/web-components/form-builder.d.ts +15 -0
  904. package/dist/components/web-components/form-builder.d.ts.map +1 -0
  905. package/dist/components/web-components/form-builder.js +263 -0
  906. package/dist/components/web-components/form-builder.js.map +1 -0
  907. package/dist/components/web-components/form.d.ts +10 -0
  908. package/dist/components/web-components/form.d.ts.map +1 -0
  909. package/dist/components/web-components/form.js +187 -0
  910. package/dist/components/web-components/form.js.map +1 -0
  911. package/dist/components/web-components/gantt.d.ts +5 -0
  912. package/dist/components/web-components/gantt.d.ts.map +1 -0
  913. package/dist/components/web-components/gantt.js +105 -0
  914. package/dist/components/web-components/gantt.js.map +1 -0
  915. package/dist/components/web-components/gauge.d.ts +4 -0
  916. package/dist/components/web-components/gauge.d.ts.map +1 -0
  917. package/dist/components/web-components/gauge.js +156 -0
  918. package/dist/components/web-components/gauge.js.map +1 -0
  919. package/dist/components/web-components/grid.d.ts +63 -0
  920. package/dist/components/web-components/grid.d.ts.map +1 -0
  921. package/dist/components/web-components/grid.js +1332 -0
  922. package/dist/components/web-components/grid.js.map +1 -0
  923. package/dist/components/web-components/icon.d.ts +2 -0
  924. package/dist/components/web-components/icon.d.ts.map +1 -0
  925. package/dist/components/web-components/icon.js +3 -0
  926. package/dist/components/web-components/icon.js.map +1 -0
  927. package/dist/components/web-components/identity-sso-settings.d.ts +20 -0
  928. package/dist/components/web-components/identity-sso-settings.d.ts.map +1 -0
  929. package/dist/components/web-components/identity-sso-settings.js +247 -0
  930. package/dist/components/web-components/identity-sso-settings.js.map +1 -0
  931. package/dist/components/web-components/index.d.ts +95 -0
  932. package/dist/components/web-components/index.d.ts.map +1 -0
  933. package/dist/components/web-components/index.js +95 -0
  934. package/dist/components/web-components/index.js.map +1 -0
  935. package/dist/components/web-components/input-mask.d.ts +9 -0
  936. package/dist/components/web-components/input-mask.d.ts.map +1 -0
  937. package/dist/components/web-components/input-mask.js +146 -0
  938. package/dist/components/web-components/input-mask.js.map +1 -0
  939. package/dist/components/web-components/input.d.ts +11 -0
  940. package/dist/components/web-components/input.d.ts.map +1 -0
  941. package/dist/components/web-components/input.js +119 -0
  942. package/dist/components/web-components/input.js.map +1 -0
  943. package/dist/components/web-components/kanban.d.ts +17 -0
  944. package/dist/components/web-components/kanban.d.ts.map +1 -0
  945. package/dist/components/web-components/kanban.js +182 -0
  946. package/dist/components/web-components/kanban.js.map +1 -0
  947. package/dist/components/web-components/listbox.d.ts +7 -0
  948. package/dist/components/web-components/listbox.d.ts.map +1 -0
  949. package/dist/components/web-components/listbox.js +194 -0
  950. package/dist/components/web-components/listbox.js.map +1 -0
  951. package/dist/components/web-components/listview.d.ts +8 -0
  952. package/dist/components/web-components/listview.d.ts.map +1 -0
  953. package/dist/components/web-components/listview.js +220 -0
  954. package/dist/components/web-components/listview.js.map +1 -0
  955. package/dist/components/web-components/loader.d.ts +5 -0
  956. package/dist/components/web-components/loader.d.ts.map +1 -0
  957. package/dist/components/web-components/loader.js +99 -0
  958. package/dist/components/web-components/loader.js.map +1 -0
  959. package/dist/components/web-components/map.d.ts +4 -0
  960. package/dist/components/web-components/map.d.ts.map +1 -0
  961. package/dist/components/web-components/map.js +135 -0
  962. package/dist/components/web-components/map.js.map +1 -0
  963. package/dist/components/web-components/memo.d.ts +7 -0
  964. package/dist/components/web-components/memo.d.ts.map +1 -0
  965. package/dist/components/web-components/memo.js +95 -0
  966. package/dist/components/web-components/memo.js.map +1 -0
  967. package/dist/components/web-components/menu.d.ts +7 -0
  968. package/dist/components/web-components/menu.d.ts.map +1 -0
  969. package/dist/components/web-components/menu.js +209 -0
  970. package/dist/components/web-components/menu.js.map +1 -0
  971. package/dist/components/web-components/multiselect.d.ts +12 -0
  972. package/dist/components/web-components/multiselect.d.ts.map +1 -0
  973. package/dist/components/web-components/multiselect.js +289 -0
  974. package/dist/components/web-components/multiselect.js.map +1 -0
  975. package/dist/components/web-components/navbar.d.ts +8 -0
  976. package/dist/components/web-components/navbar.d.ts.map +1 -0
  977. package/dist/components/web-components/navbar.js +404 -0
  978. package/dist/components/web-components/navbar.js.map +1 -0
  979. package/dist/components/web-components/notification.d.ts +7 -0
  980. package/dist/components/web-components/notification.d.ts.map +1 -0
  981. package/dist/components/web-components/notification.js +234 -0
  982. package/dist/components/web-components/notification.js.map +1 -0
  983. package/dist/components/web-components/numeric-text.d.ts +11 -0
  984. package/dist/components/web-components/numeric-text.d.ts.map +1 -0
  985. package/dist/components/web-components/numeric-text.js +167 -0
  986. package/dist/components/web-components/numeric-text.js.map +1 -0
  987. package/dist/components/web-components/ops-console.d.ts +11 -0
  988. package/dist/components/web-components/ops-console.d.ts.map +1 -0
  989. package/dist/components/web-components/ops-console.js +318 -0
  990. package/dist/components/web-components/ops-console.js.map +1 -0
  991. package/dist/components/web-components/otp-input.d.ts +11 -0
  992. package/dist/components/web-components/otp-input.d.ts.map +1 -0
  993. package/dist/components/web-components/otp-input.js +227 -0
  994. package/dist/components/web-components/otp-input.js.map +1 -0
  995. package/dist/components/web-components/pagination.d.ts +11 -0
  996. package/dist/components/web-components/pagination.d.ts.map +1 -0
  997. package/dist/components/web-components/pagination.js +229 -0
  998. package/dist/components/web-components/pagination.js.map +1 -0
  999. package/dist/components/web-components/pdf-viewer.d.ts +4 -0
  1000. package/dist/components/web-components/pdf-viewer.d.ts.map +1 -0
  1001. package/dist/components/web-components/pdf-viewer.js +158 -0
  1002. package/dist/components/web-components/pdf-viewer.js.map +1 -0
  1003. package/dist/components/web-components/pivot-grid.d.ts +68 -0
  1004. package/dist/components/web-components/pivot-grid.d.ts.map +1 -0
  1005. package/dist/components/web-components/pivot-grid.js +1233 -0
  1006. package/dist/components/web-components/pivot-grid.js.map +1 -0
  1007. package/dist/components/web-components/policy-editor.d.ts +15 -0
  1008. package/dist/components/web-components/policy-editor.d.ts.map +1 -0
  1009. package/dist/components/web-components/policy-editor.js +266 -0
  1010. package/dist/components/web-components/policy-editor.js.map +1 -0
  1011. package/dist/components/web-components/popup.d.ts +11 -0
  1012. package/dist/components/web-components/popup.d.ts.map +1 -0
  1013. package/dist/components/web-components/popup.js +338 -0
  1014. package/dist/components/web-components/popup.js.map +1 -0
  1015. package/dist/components/web-components/progress-bar.d.ts +5 -0
  1016. package/dist/components/web-components/progress-bar.d.ts.map +1 -0
  1017. package/dist/components/web-components/progress-bar.js +97 -0
  1018. package/dist/components/web-components/progress-bar.js.map +1 -0
  1019. package/dist/components/web-components/qrcode.d.ts +4 -0
  1020. package/dist/components/web-components/qrcode.d.ts.map +1 -0
  1021. package/dist/components/web-components/qrcode.js +124 -0
  1022. package/dist/components/web-components/qrcode.js.map +1 -0
  1023. package/dist/components/web-components/radio-range.d.ts +8 -0
  1024. package/dist/components/web-components/radio-range.d.ts.map +1 -0
  1025. package/dist/components/web-components/radio-range.js +134 -0
  1026. package/dist/components/web-components/radio-range.js.map +1 -0
  1027. package/dist/components/web-components/radio.d.ts +10 -0
  1028. package/dist/components/web-components/radio.d.ts.map +1 -0
  1029. package/dist/components/web-components/radio.js +126 -0
  1030. package/dist/components/web-components/radio.js.map +1 -0
  1031. package/dist/components/web-components/range-slider.d.ts +9 -0
  1032. package/dist/components/web-components/range-slider.d.ts.map +1 -0
  1033. package/dist/components/web-components/range-slider.js +112 -0
  1034. package/dist/components/web-components/range-slider.js.map +1 -0
  1035. package/dist/components/web-components/rating.d.ts +22 -0
  1036. package/dist/components/web-components/rating.d.ts.map +1 -0
  1037. package/dist/components/web-components/rating.js +451 -0
  1038. package/dist/components/web-components/rating.js.map +1 -0
  1039. package/dist/components/web-components/rich-text-editor.d.ts +4 -0
  1040. package/dist/components/web-components/rich-text-editor.d.ts.map +1 -0
  1041. package/dist/components/web-components/rich-text-editor.js +82 -0
  1042. package/dist/components/web-components/rich-text-editor.js.map +1 -0
  1043. package/dist/components/web-components/scheduler.d.ts +20 -0
  1044. package/dist/components/web-components/scheduler.d.ts.map +1 -0
  1045. package/dist/components/web-components/scheduler.js +386 -0
  1046. package/dist/components/web-components/scheduler.js.map +1 -0
  1047. package/dist/components/web-components/scrollview.d.ts +5 -0
  1048. package/dist/components/web-components/scrollview.d.ts.map +1 -0
  1049. package/dist/components/web-components/scrollview.js +125 -0
  1050. package/dist/components/web-components/scrollview.js.map +1 -0
  1051. package/dist/components/web-components/signature-pad.d.ts +7 -0
  1052. package/dist/components/web-components/signature-pad.d.ts.map +1 -0
  1053. package/dist/components/web-components/signature-pad.js +123 -0
  1054. package/dist/components/web-components/signature-pad.js.map +1 -0
  1055. package/dist/components/web-components/sla-dashboard.d.ts +8 -0
  1056. package/dist/components/web-components/sla-dashboard.d.ts.map +1 -0
  1057. package/dist/components/web-components/sla-dashboard.js +320 -0
  1058. package/dist/components/web-components/sla-dashboard.js.map +1 -0
  1059. package/dist/components/web-components/slider.d.ts +9 -0
  1060. package/dist/components/web-components/slider.d.ts.map +1 -0
  1061. package/dist/components/web-components/slider.js +164 -0
  1062. package/dist/components/web-components/slider.js.map +1 -0
  1063. package/dist/components/web-components/smart-editor.d.ts +10 -0
  1064. package/dist/components/web-components/smart-editor.d.ts.map +1 -0
  1065. package/dist/components/web-components/smart-editor.js +207 -0
  1066. package/dist/components/web-components/smart-editor.js.map +1 -0
  1067. package/dist/components/web-components/speech-to-text.d.ts +10 -0
  1068. package/dist/components/web-components/speech-to-text.d.ts.map +1 -0
  1069. package/dist/components/web-components/speech-to-text.js +166 -0
  1070. package/dist/components/web-components/speech-to-text.js.map +1 -0
  1071. package/dist/components/web-components/splitter.d.ts +7 -0
  1072. package/dist/components/web-components/splitter.d.ts.map +1 -0
  1073. package/dist/components/web-components/splitter.js +148 -0
  1074. package/dist/components/web-components/splitter.js.map +1 -0
  1075. package/dist/components/web-components/spreadsheet.d.ts +5 -0
  1076. package/dist/components/web-components/spreadsheet.d.ts.map +1 -0
  1077. package/dist/components/web-components/spreadsheet.js +178 -0
  1078. package/dist/components/web-components/spreadsheet.js.map +1 -0
  1079. package/dist/components/web-components/stepper.d.ts +12 -0
  1080. package/dist/components/web-components/stepper.d.ts.map +1 -0
  1081. package/dist/components/web-components/stepper.js +177 -0
  1082. package/dist/components/web-components/stepper.js.map +1 -0
  1083. package/dist/components/web-components/switch.d.ts +39 -0
  1084. package/dist/components/web-components/switch.d.ts.map +1 -0
  1085. package/dist/components/web-components/switch.js +321 -0
  1086. package/dist/components/web-components/switch.js.map +1 -0
  1087. package/dist/components/web-components/tab-layout.d.ts +11 -0
  1088. package/dist/components/web-components/tab-layout.d.ts.map +1 -0
  1089. package/dist/components/web-components/tab-layout.js +157 -0
  1090. package/dist/components/web-components/tab-layout.js.map +1 -0
  1091. package/dist/components/web-components/table.d.ts +8 -0
  1092. package/dist/components/web-components/table.d.ts.map +1 -0
  1093. package/dist/components/web-components/table.js +181 -0
  1094. package/dist/components/web-components/table.js.map +1 -0
  1095. package/dist/components/web-components/tabs.d.ts +13 -0
  1096. package/dist/components/web-components/tabs.d.ts.map +1 -0
  1097. package/dist/components/web-components/tabs.js +197 -0
  1098. package/dist/components/web-components/tabs.js.map +1 -0
  1099. package/dist/components/web-components/textarea.d.ts +8 -0
  1100. package/dist/components/web-components/textarea.d.ts.map +1 -0
  1101. package/dist/components/web-components/textarea.js +174 -0
  1102. package/dist/components/web-components/textarea.js.map +1 -0
  1103. package/dist/components/web-components/timeline.d.ts +4 -0
  1104. package/dist/components/web-components/timeline.d.ts.map +1 -0
  1105. package/dist/components/web-components/timeline.js +167 -0
  1106. package/dist/components/web-components/timeline.js.map +1 -0
  1107. package/dist/components/web-components/toast.d.ts +6 -0
  1108. package/dist/components/web-components/toast.d.ts.map +1 -0
  1109. package/dist/components/web-components/toast.js +129 -0
  1110. package/dist/components/web-components/toast.js.map +1 -0
  1111. package/dist/components/web-components/token-vault.d.ts +11 -0
  1112. package/dist/components/web-components/token-vault.d.ts.map +1 -0
  1113. package/dist/components/web-components/token-vault.js +217 -0
  1114. package/dist/components/web-components/token-vault.js.map +1 -0
  1115. package/dist/components/web-components/tooltip-manager.d.ts +5 -0
  1116. package/dist/components/web-components/tooltip-manager.d.ts.map +1 -0
  1117. package/dist/components/web-components/tooltip-manager.js +114 -0
  1118. package/dist/components/web-components/tooltip-manager.js.map +1 -0
  1119. package/dist/components/web-components/tooltip.d.ts +5 -0
  1120. package/dist/components/web-components/tooltip.d.ts.map +1 -0
  1121. package/dist/components/web-components/tooltip.js +115 -0
  1122. package/dist/components/web-components/tooltip.js.map +1 -0
  1123. package/dist/components/web-components/treelist.d.ts +21 -0
  1124. package/dist/components/web-components/treelist.d.ts.map +1 -0
  1125. package/dist/components/web-components/treelist.js +242 -0
  1126. package/dist/components/web-components/treelist.js.map +1 -0
  1127. package/dist/components/web-components/treeview.d.ts +21 -0
  1128. package/dist/components/web-components/treeview.d.ts.map +1 -0
  1129. package/dist/components/web-components/treeview.js +212 -0
  1130. package/dist/components/web-components/treeview.js.map +1 -0
  1131. package/dist/components/web-components/upload.d.ts +53 -0
  1132. package/dist/components/web-components/upload.d.ts.map +1 -0
  1133. package/dist/components/web-components/upload.js +702 -0
  1134. package/dist/components/web-components/upload.js.map +1 -0
  1135. package/dist/components/web-components/utils/hydration.d.ts +5 -0
  1136. package/dist/components/web-components/utils/hydration.d.ts.map +1 -0
  1137. package/dist/components/web-components/utils/hydration.js +19 -0
  1138. package/dist/components/web-components/utils/hydration.js.map +1 -0
  1139. package/dist/components/web-components/video.d.ts +8 -0
  1140. package/dist/components/web-components/video.d.ts.map +1 -0
  1141. package/dist/components/web-components/video.js +279 -0
  1142. package/dist/components/web-components/video.js.map +1 -0
  1143. package/dist/components/web-components/visiting-card.d.ts +4 -0
  1144. package/dist/components/web-components/visiting-card.d.ts.map +1 -0
  1145. package/dist/components/web-components/visiting-card.js +163 -0
  1146. package/dist/components/web-components/visiting-card.js.map +1 -0
  1147. package/dist/components/web-components/workflow-builder.d.ts +13 -0
  1148. package/dist/components/web-components/workflow-builder.d.ts.map +1 -0
  1149. package/dist/components/web-components/workflow-builder.js +255 -0
  1150. package/dist/components/web-components/workflow-builder.js.map +1 -0
  1151. package/dist/core/BaseComponent.d.ts +9 -0
  1152. package/dist/core/BaseComponent.d.ts.map +1 -0
  1153. package/dist/core/BaseComponent.js +15 -0
  1154. package/dist/core/BaseComponent.js.map +1 -0
  1155. package/dist/core/interfaces/IComponent.d.ts +6 -0
  1156. package/dist/core/interfaces/IComponent.d.ts.map +1 -0
  1157. package/dist/core/interfaces/IComponent.js +2 -0
  1158. package/dist/core/interfaces/IComponent.js.map +1 -0
  1159. package/dist/core/motion.d.ts +3 -0
  1160. package/dist/core/motion.d.ts.map +1 -0
  1161. package/dist/core/motion.js +34 -0
  1162. package/dist/core/motion.js.map +1 -0
  1163. package/dist/core/utils/DomHelper.d.ts +8 -0
  1164. package/dist/core/utils/DomHelper.d.ts.map +1 -0
  1165. package/dist/core/utils/DomHelper.js +22 -0
  1166. package/dist/core/utils/DomHelper.js.map +1 -0
  1167. package/dist/core/utils/virtualization.d.ts +15 -0
  1168. package/dist/core/utils/virtualization.d.ts.map +1 -0
  1169. package/dist/core/utils/virtualization.js +24 -0
  1170. package/dist/core/utils/virtualization.js.map +1 -0
  1171. package/dist/index.d.ts +3 -0
  1172. package/dist/index.d.ts.map +1 -0
  1173. package/dist/index.js +3 -0
  1174. package/dist/index.js.map +1 -0
  1175. package/dist/src/contracts/types.d.ts +20 -0
  1176. package/dist/src/contracts/types.d.ts.map +1 -0
  1177. package/dist/src/contracts/types.js +2 -0
  1178. package/dist/src/contracts/types.js.map +1 -0
  1179. package/dist/src/generated/registrations.d.ts +289 -0
  1180. package/dist/src/generated/registrations.d.ts.map +1 -0
  1181. package/dist/src/generated/registrations.js +292 -0
  1182. package/dist/src/generated/registrations.js.map +1 -0
  1183. package/dist/src/i18n/index.d.ts +20 -0
  1184. package/dist/src/i18n/index.d.ts.map +1 -0
  1185. package/dist/src/i18n/index.js +86 -0
  1186. package/dist/src/i18n/index.js.map +1 -0
  1187. package/dist/src/i18n/packs.d.ts +4 -0
  1188. package/dist/src/i18n/packs.d.ts.map +1 -0
  1189. package/dist/src/i18n/packs.js +53 -0
  1190. package/dist/src/i18n/packs.js.map +1 -0
  1191. package/dist/src/icons/cache.d.ts +4 -0
  1192. package/dist/src/icons/cache.d.ts.map +1 -0
  1193. package/dist/src/icons/cache.js +43 -0
  1194. package/dist/src/icons/cache.js.map +1 -0
  1195. package/dist/src/icons/config.d.ts +12 -0
  1196. package/dist/src/icons/config.d.ts.map +1 -0
  1197. package/dist/src/icons/config.js +22 -0
  1198. package/dist/src/icons/config.js.map +1 -0
  1199. package/dist/src/icons/registry.d.ts +27 -0
  1200. package/dist/src/icons/registry.d.ts.map +1 -0
  1201. package/dist/src/icons/registry.data.d.ts +6 -0
  1202. package/dist/src/icons/registry.data.d.ts.map +1 -0
  1203. package/dist/src/icons/registry.data.js +9174 -0
  1204. package/dist/src/icons/registry.data.js.map +1 -0
  1205. package/dist/src/icons/registry.js +58 -0
  1206. package/dist/src/icons/registry.js.map +1 -0
  1207. package/dist/src/index.d.ts +288 -0
  1208. package/dist/src/index.d.ts.map +1 -0
  1209. package/dist/src/index.js +164 -0
  1210. package/dist/src/index.js.map +1 -0
  1211. package/dist/src/runtime/analytics.d.ts +12 -0
  1212. package/dist/src/runtime/analytics.d.ts.map +1 -0
  1213. package/dist/src/runtime/analytics.js +21 -0
  1214. package/dist/src/runtime/analytics.js.map +1 -0
  1215. package/dist/src/runtime/component-element.d.ts +20 -0
  1216. package/dist/src/runtime/component-element.d.ts.map +1 -0
  1217. package/dist/src/runtime/component-element.js +439 -0
  1218. package/dist/src/runtime/component-element.js.map +1 -0
  1219. package/dist/src/styles/ensureGlobalStyles.d.ts +7 -0
  1220. package/dist/src/styles/ensureGlobalStyles.d.ts.map +1 -0
  1221. package/dist/src/styles/ensureGlobalStyles.js +77 -0
  1222. package/dist/src/styles/ensureGlobalStyles.js.map +1 -0
  1223. package/dist/src/styles/ensureShadowStyles.d.ts +5 -0
  1224. package/dist/src/styles/ensureShadowStyles.d.ts.map +1 -0
  1225. package/dist/src/styles/ensureShadowStyles.js +73 -0
  1226. package/dist/src/styles/ensureShadowStyles.js.map +1 -0
  1227. package/dist/src/styles/ensureThemeTokens.d.ts +2 -0
  1228. package/dist/src/styles/ensureThemeTokens.d.ts.map +1 -0
  1229. package/dist/src/styles/ensureThemeTokens.js +55 -0
  1230. package/dist/src/styles/ensureThemeTokens.js.map +1 -0
  1231. package/package.json +119 -0
@@ -0,0 +1,2471 @@
1
+ import { BaseComponent } from "../../core/BaseComponent.js";
2
+ const ZOOM_MIN = 0.4;
3
+ const ZOOM_MAX = 2.4;
4
+ const DEFAULT_TOOLS = [
5
+ { type: "process", label: "Process", width: 140, height: 60, icon: "briefcase-alt.svg" },
6
+ { type: "process", label: "API Step", width: 160, height: 64, icon: "briefcase-alt.svg" },
7
+ { type: "subprocess", label: "Subprocess", width: 180, height: 86, icon: "briefcase-alt.svg" },
8
+ { type: "decision", label: "Decision", width: 140, height: 140, icon: "question.svg" },
9
+ { type: "decision", label: "Review Gate", width: 150, height: 150, icon: "question.svg" },
10
+ { type: "terminator", label: "Terminator", width: 160, height: 60, icon: "rocket.svg" },
11
+ { type: "terminator", label: "End Event", width: 170, height: 62, icon: "rocket.svg" },
12
+ { type: "note", label: "Note", icon: "notes.svg", width: 200, height: 100 },
13
+ { type: "note", label: "Annotation", icon: "notes.svg", width: 220, height: 110 },
14
+ { type: "document", label: "Document", icon: "notes.svg", width: 170, height: 104 },
15
+ { type: "rectangle", label: "Rectangle", icon: "square-shape.svg", width: 140, height: 80 },
16
+ { type: "rectangle", label: "Service Box", icon: "square-shape.svg", width: 180, height: 96 },
17
+ { type: "square", label: "Square", icon: "square-shape.svg", width: 100, height: 100 },
18
+ { type: "preparation", label: "Preparation", icon: "polygon.svg", width: 172, height: 92 },
19
+ { type: "ellipse", label: "Ellipse", icon: "circle.svg", width: 140, height: 80 },
20
+ { type: "circle", label: "Circle", icon: "circle.svg", width: 104, height: 104 },
21
+ { type: "oval", label: "Oval", icon: "circle.svg", width: 170, height: 96 },
22
+ { type: "ellipse", label: "Event Node", icon: "circle.svg", width: 150, height: 92 },
23
+ { type: "capsule", label: "Capsule", icon: "circle.svg", width: 180, height: 72 },
24
+ { type: "display", label: "Display", icon: "circle.svg", width: 184, height: 96 },
25
+ { type: "delay", label: "Delay", icon: "circle.svg", width: 180, height: 90 },
26
+ { type: "manual-input", label: "Manual Input", icon: "triangle.svg", width: 170, height: 90 },
27
+ { type: "triangle", label: "Triangle", icon: "triangle.svg", width: 120, height: 120 },
28
+ { type: "triangle", label: "Warning", icon: "triangle.svg", width: 130, height: 130 },
29
+ { type: "merge", label: "Merge", icon: "triangle.svg", width: 138, height: 112 },
30
+ { type: "collate", label: "Collate", icon: "triangle.svg", width: 138, height: 116 },
31
+ { type: "hexagon", label: "Hexagon", icon: "polygon.svg", width: 140, height: 90 },
32
+ { type: "hexagon", label: "Gateway", icon: "polygon.svg", width: 160, height: 100 },
33
+ { type: "diamond", label: "Diamond", icon: "polygon.svg", width: 132, height: 132 },
34
+ { type: "or", label: "Or", icon: "circle.svg", width: 116, height: 116 },
35
+ { type: "parallelogram", label: "Parallelogram", icon: "polygon.svg", width: 168, height: 96 },
36
+ { type: "off-page-connector", label: "Off-page Connector", icon: "polygon.svg", width: 146, height: 128 },
37
+ { type: "data", label: "Data", icon: "database.svg", width: 160, height: 80 },
38
+ { type: "data", label: "Data Store", icon: "database.svg", width: 180, height: 90 },
39
+ { type: "database-cylinder", label: "Database Cylinder", icon: "database.svg", width: 172, height: 116 },
40
+ { type: "stored-data", label: "Stored Data", icon: "database.svg", width: 176, height: 100 },
41
+ ];
42
+ const TOOL_ICON_FALLBACKS = {
43
+ process: "P",
44
+ decision: "?",
45
+ terminator: "T",
46
+ note: "N",
47
+ document: "D",
48
+ rectangle: "R",
49
+ square: "S",
50
+ preparation: "P",
51
+ ellipse: "E",
52
+ circle: "C",
53
+ oval: "O",
54
+ subprocess: "S",
55
+ display: "D",
56
+ delay: "D",
57
+ "manual-input": "M",
58
+ triangle: "T",
59
+ merge: "M",
60
+ collate: "C",
61
+ hexagon: "H",
62
+ diamond: "D",
63
+ or: "O",
64
+ parallelogram: "P",
65
+ "off-page-connector": "O",
66
+ capsule: "C",
67
+ "database-cylinder": "D",
68
+ "stored-data": "S",
69
+ data: "D",
70
+ };
71
+ const DEFAULT_COLLAPSED_TOOLBOX_GROUPS = new Set(["events", "notes", "data"]);
72
+ const TOOLBAR_ACTIONS = [
73
+ { id: "undo", label: "Undo", icon: "history.svg" },
74
+ { id: "redo", label: "Redo", icon: "redo.svg" },
75
+ { id: "align-left", label: "Align left", icon: "align-left.svg" },
76
+ { id: "align-center", label: "Align center", icon: "align-center.svg" },
77
+ { id: "align-right", label: "Align right", icon: "align-right.svg" },
78
+ { id: "distribute-horizontal", label: "Distribute horizontally", icon: "horizontal-distribution-center.svg" },
79
+ { id: "align-top", label: "Align top", icon: "align.svg" },
80
+ { id: "align-middle", label: "Align middle", icon: "align-center-justify.svg" },
81
+ { id: "align-bottom", label: "Align bottom", icon: "align-bottom.svg" },
82
+ { id: "distribute-vertical", label: "Distribute vertically", icon: "vertical-distribution-center.svg" },
83
+ { id: "zoom-out", label: "Zoom out", icon: "search-minus.svg" },
84
+ { id: "fit", label: "Fit view", icon: "focus-target.svg" },
85
+ { id: "reset", label: "Reset view", icon: "repeat.svg" },
86
+ { id: "zoom-in", label: "Zoom in", icon: "search-plus.svg" },
87
+ { id: "center", label: "Center canvas", icon: "crosshair.svg" },
88
+ { id: "toggle-tools", label: "Toggle tools", icon: "apps.svg" },
89
+ { id: "connect", label: "Connect nodes", icon: "link.svg" },
90
+ { id: "edit-label", label: "Edit labels", icon: "pen.svg" },
91
+ { id: "duplicate-node", label: "Duplicate node", icon: "copy.svg" },
92
+ { id: "delete-node", label: "Delete node", icon: "trash.svg" },
93
+ { id: "fullscreen", label: "Expand diagram", icon: "expand-arrows.svg" },
94
+ { id: "export-svg", label: "Export SVG", icon: "file-export.svg" },
95
+ { id: "export-json", label: "Export JSON", icon: "file-alt.svg" },
96
+ { id: "export-png", label: "Export PNG", icon: "image.svg" },
97
+ { id: "export-jpg", label: "Export JPG", icon: "image-v.svg" },
98
+ { id: "export-pdf", label: "Export PDF", icon: "file.svg" },
99
+ ];
100
+ const SHORTCUT_HINTS = {
101
+ undo: "Ctrl/Cmd+Z",
102
+ redo: "Ctrl/Cmd+Shift+Z",
103
+ "duplicate-node": "Ctrl/Cmd+D",
104
+ "delete-node": "Delete",
105
+ };
106
+ const TOOLBAR_ACTION_GROUPS = [
107
+ {
108
+ id: "nav",
109
+ label: "Navigation",
110
+ className: "ce-diagram__toolbar-group ce-diagram__toolbar-group--nav",
111
+ actions: ["undo", "redo", "zoom-out", "fit", "reset", "zoom-in", "center"],
112
+ },
113
+ {
114
+ id: "layout",
115
+ label: "Layout",
116
+ className: "ce-diagram__toolbar-group ce-diagram__toolbar-group--layout",
117
+ actions: ["toggle-tools", "fullscreen"],
118
+ },
119
+ {
120
+ id: "arrange",
121
+ label: "Arrange",
122
+ className: "ce-diagram__toolbar-group ce-diagram__toolbar-group--arrange",
123
+ actions: ["align-left", "align-center", "align-right", "distribute-horizontal", "align-top", "align-middle", "align-bottom", "distribute-vertical"],
124
+ collapsible: true,
125
+ },
126
+ {
127
+ id: "edit",
128
+ label: "Edit",
129
+ className: "ce-diagram__toolbar-group ce-diagram__toolbar-group--edit",
130
+ actions: ["connect", "edit-label", "duplicate-node", "delete-node"],
131
+ },
132
+ {
133
+ id: "export",
134
+ label: "Export",
135
+ className: "ce-diagram__toolbar-group ce-diagram__toolbar-group--export",
136
+ actions: ["export-svg", "export-json", "export-png", "export-jpg", "export-pdf"],
137
+ collapsible: true,
138
+ },
139
+ ];
140
+ export class Diagram extends BaseComponent {
141
+ options;
142
+ svg;
143
+ nodesGroup;
144
+ linksGroup;
145
+ currentScale = 1;
146
+ pan = { x: 0, y: 0 };
147
+ panStart;
148
+ isPanning = false;
149
+ nodes;
150
+ links;
151
+ draggingNode;
152
+ dragCandidate;
153
+ toolbox;
154
+ toolboxQuery = "";
155
+ collapsedToolboxGroups = new Set(DEFAULT_COLLAPSED_TOOLBOX_GROUPS);
156
+ connectSourceId;
157
+ resizing;
158
+ selectedNodeId;
159
+ selectedNodeIds = new Set();
160
+ selectedLinkId;
161
+ connectMode = false;
162
+ statusEl;
163
+ inlineEditor;
164
+ canvasWrap;
165
+ nodeClickHandler;
166
+ nodeClickTimer;
167
+ editMode = false;
168
+ labelInput;
169
+ contextPanel;
170
+ toolboxVisible = true;
171
+ toolboxVisibleBeforeFullscreen;
172
+ collapsedToolbarGroups = new Set(["arrange", "export"]);
173
+ connectorDragMoveHandler;
174
+ connectorDragUpHandler;
175
+ fullscreenChangeHandler;
176
+ historyPast = [];
177
+ historyFuture = [];
178
+ marqueeSelection;
179
+ bendDrag;
180
+ connectionDrag;
181
+ constructor(options) {
182
+ super(options.selector);
183
+ const nodes = this.normalizeNodes(options.nodes);
184
+ const links = this.normalizeLinks(options);
185
+ this.options = {
186
+ theme: "light",
187
+ ...options,
188
+ nodes,
189
+ links,
190
+ };
191
+ this.nodes = structuredClone(this.options.nodes);
192
+ this.links = structuredClone(this.options.links);
193
+ }
194
+ init() {
195
+ if (this.options.hydrate && this.tryHydrate()) {
196
+ return;
197
+ }
198
+ this.destroy();
199
+ this.nodes = structuredClone(this.options.nodes);
200
+ this.links = structuredClone(this.options.links);
201
+ this.render();
202
+ }
203
+ destroy() {
204
+ this.el.innerHTML = "";
205
+ this.detachConnectorDragListeners();
206
+ if (this.fullscreenChangeHandler) {
207
+ document.removeEventListener("fullscreenchange", this.fullscreenChangeHandler);
208
+ this.fullscreenChangeHandler = undefined;
209
+ }
210
+ this.svg = undefined;
211
+ this.nodesGroup = undefined;
212
+ this.linksGroup = undefined;
213
+ this.currentScale = 1;
214
+ this.pan = { x: 0, y: 0 };
215
+ this.nodes = [];
216
+ this.links = [];
217
+ this.selectedNodeId = undefined;
218
+ this.selectedNodeIds.clear();
219
+ this.selectedLinkId = undefined;
220
+ this.toolboxVisible = true;
221
+ this.toolboxVisibleBeforeFullscreen = undefined;
222
+ this.toolboxQuery = "";
223
+ this.historyPast = [];
224
+ this.historyFuture = [];
225
+ if (this.nodeClickTimer) {
226
+ window.clearTimeout(this.nodeClickTimer);
227
+ this.nodeClickTimer = undefined;
228
+ }
229
+ }
230
+ render() {
231
+ this.el.className = "ce-diagram";
232
+ this.el.classList.toggle("ce-diagram--dark", this.options.theme === "dark");
233
+ this.el.setAttribute("data-ce-component", "diagram");
234
+ this.el.setAttribute("part", "base");
235
+ const layout = document.createElement("div");
236
+ layout.className = "ce-diagram__layout";
237
+ layout.setAttribute("part", "layout");
238
+ const toolbox = this.buildToolbox();
239
+ layout.appendChild(toolbox);
240
+ this.toolbox = toolbox;
241
+ const svg = this.createSvgCanvas();
242
+ const canvasWrap = document.createElement("div");
243
+ canvasWrap.className = "ce-diagram__canvas-wrap";
244
+ canvasWrap.setAttribute("part", "canvas-wrap");
245
+ canvasWrap.appendChild(svg);
246
+ this.attachCanvasHandlers(canvasWrap);
247
+ layout.appendChild(canvasWrap);
248
+ this.canvasWrap = canvasWrap;
249
+ const toolbar = this.buildToolbar();
250
+ canvasWrap.appendChild(toolbar);
251
+ this.attachToolbarHandlers(toolbar);
252
+ const contextPanel = this.buildContextPanel();
253
+ canvasWrap.appendChild(contextPanel);
254
+ this.contextPanel = contextPanel;
255
+ canvasWrap.appendChild(this.buildCanvasHint());
256
+ this.el.appendChild(layout);
257
+ this.attachFullscreenListener();
258
+ this.setFullscreenState(document.fullscreenElement === this.el);
259
+ this.svg = svg;
260
+ this.renderLinks();
261
+ this.renderNodes();
262
+ this.applyTransform();
263
+ this.syncContextPanel();
264
+ }
265
+ buildToolbar() {
266
+ const bar = document.createElement("div");
267
+ bar.className = "ce-diagram__toolbar";
268
+ bar.dataset.mode = "default";
269
+ bar.setAttribute("part", "toolbar");
270
+ const actionsWrap = document.createElement("div");
271
+ actionsWrap.className = "ce-diagram__toolbar-actions";
272
+ actionsWrap.setAttribute("part", "toolbar-actions");
273
+ TOOLBAR_ACTION_GROUPS.forEach((group) => {
274
+ const groupEl = document.createElement("div");
275
+ groupEl.className = group.className;
276
+ groupEl.dataset.groupId = group.id;
277
+ if (group.collapsible) {
278
+ groupEl.classList.toggle("is-collapsed", this.collapsedToolbarGroups.has(group.id));
279
+ const toggle = document.createElement("button");
280
+ toggle.type = "button";
281
+ toggle.className = "ce-diagram__toolbar-group-toggle";
282
+ toggle.dataset.groupToggle = group.id;
283
+ toggle.setAttribute("part", "toolbar-group-toggle");
284
+ toggle.setAttribute("aria-label", `${this.collapsedToolbarGroups.has(group.id) ? "Expand" : "Collapse"} ${group.label}`);
285
+ toggle.title = `${this.collapsedToolbarGroups.has(group.id) ? "Expand" : "Collapse"} ${group.label}`;
286
+ toggle.textContent = this.collapsedToolbarGroups.has(group.id) ? "+" : "−";
287
+ groupEl.appendChild(toggle);
288
+ }
289
+ const content = document.createElement("div");
290
+ content.className = "ce-diagram__toolbar-group-content";
291
+ content.setAttribute("part", "toolbar-group-content");
292
+ group.actions.forEach((actionId) => {
293
+ const action = TOOLBAR_ACTIONS.find((entry) => entry.id === actionId);
294
+ if (action) {
295
+ content.appendChild(this.createToolbarButton(action));
296
+ }
297
+ });
298
+ groupEl.appendChild(content);
299
+ actionsWrap.appendChild(groupEl);
300
+ });
301
+ const labelInput = document.createElement("input");
302
+ labelInput.type = "text";
303
+ labelInput.placeholder = "Double-click a node to rename";
304
+ labelInput.className = "ce-diagram__label-input";
305
+ labelInput.dataset.action = "label-input";
306
+ labelInput.setAttribute("part", "label-input");
307
+ labelInput.disabled = true;
308
+ labelInput.setAttribute("aria-label", "Selected node label");
309
+ const status = document.createElement("div");
310
+ status.className = "ce-diagram__status";
311
+ status.setAttribute("part", "status");
312
+ status.setAttribute("aria-live", "polite");
313
+ const meta = document.createElement("div");
314
+ meta.className = "ce-diagram__toolbar-meta";
315
+ meta.setAttribute("part", "toolbar-meta");
316
+ meta.append(labelInput, status);
317
+ bar.append(actionsWrap, meta);
318
+ return bar;
319
+ }
320
+ buildContextPanel() {
321
+ const panel = document.createElement("aside");
322
+ panel.className = "ce-diagram__context-panel";
323
+ panel.setAttribute("part", "context-panel");
324
+ panel.innerHTML = `
325
+ <div class="ce-diagram__context-title" part="context-title">Selection</div>
326
+ <div class="ce-diagram__context-body" part="context-body"></div>
327
+ `;
328
+ return panel;
329
+ }
330
+ buildCanvasHint() {
331
+ const hint = document.createElement("aside");
332
+ hint.className = "ce-diagram__canvas-hint";
333
+ hint.setAttribute("part", "canvas-hint");
334
+ hint.innerHTML = `
335
+ <div class="ce-diagram__canvas-hint-title">Editor tips</div>
336
+ <ul class="ce-diagram__canvas-hint-list">
337
+ <li>Drag tools onto the canvas to add shapes.</li>
338
+ <li>Double-click a node or link to edit text inline.</li>
339
+ <li>Shift + drag to marquee-select multiple nodes.</li>
340
+ <li>Drag from node ports to create connectors.</li>
341
+ </ul>
342
+ `;
343
+ return hint;
344
+ }
345
+ createToolbarButton(action) {
346
+ const button = document.createElement("button");
347
+ button.type = "button";
348
+ button.className = "ce-diagram__toolbar-btn";
349
+ button.dataset.action = action.id;
350
+ button.setAttribute("part", `toolbar-button ${action.id}`);
351
+ button.setAttribute("aria-label", action.label);
352
+ const shortcut = SHORTCUT_HINTS[action.id];
353
+ const title = shortcut ? `${action.label} (${shortcut})` : action.label;
354
+ button.title = title;
355
+ button.dataset.tooltip = title;
356
+ button.appendChild(this.createIconElement("ce-diagram__toolbar-icon", action.icon, action.label.charAt(0)));
357
+ const label = document.createElement("span");
358
+ label.className = "ce-diagram__toolbar-label";
359
+ label.setAttribute("part", "toolbar-label");
360
+ label.textContent = action.label;
361
+ button.appendChild(label);
362
+ return button;
363
+ }
364
+ getIconscoutIconPath(file) {
365
+ return `/assets/icons/latest/iconscout/line/default/${file}`;
366
+ }
367
+ buildToolbox() {
368
+ const tools = this.getTools();
369
+ const panel = document.createElement("div");
370
+ panel.className = "ce-diagram__toolbox";
371
+ panel.setAttribute("part", "toolbox");
372
+ const title = document.createElement("div");
373
+ title.className = "ce-diagram__toolbox-title";
374
+ title.setAttribute("part", "toolbox-title");
375
+ title.textContent = "Tools";
376
+ panel.appendChild(title);
377
+ const search = document.createElement("input");
378
+ search.type = "search";
379
+ search.className = "ce-diagram__toolbox-search";
380
+ search.setAttribute("part", "toolbox-search");
381
+ search.placeholder = "Search tools";
382
+ search.value = this.toolboxQuery;
383
+ panel.appendChild(search);
384
+ const list = document.createElement("div");
385
+ list.className = "ce-diagram__toolbox-list";
386
+ list.setAttribute("part", "toolbox-list");
387
+ search.addEventListener("input", () => {
388
+ this.toolboxQuery = search.value.trim().toLowerCase();
389
+ this.populateToolboxList(list, tools);
390
+ });
391
+ this.populateToolboxList(list, tools);
392
+ panel.appendChild(list);
393
+ return panel;
394
+ }
395
+ populateToolboxList(list, tools) {
396
+ list.innerHTML = "";
397
+ const groupedTools = new Map();
398
+ tools.forEach((tool) => {
399
+ const matchesQuery = !this.toolboxQuery ||
400
+ tool.label.toLowerCase().includes(this.toolboxQuery) ||
401
+ tool.type.toLowerCase().includes(this.toolboxQuery);
402
+ if (!matchesQuery) {
403
+ return;
404
+ }
405
+ const groupLabel = this.getToolGroupLabel(tool.type);
406
+ const group = groupedTools.get(groupLabel) ?? [];
407
+ group.push(tool);
408
+ groupedTools.set(groupLabel, group);
409
+ });
410
+ groupedTools.forEach((groupTools, groupLabel) => {
411
+ const groupId = groupLabel.toLowerCase().replace(/\s+/g, "-");
412
+ const section = document.createElement("section");
413
+ section.className = "ce-diagram__toolbox-group";
414
+ section.setAttribute("part", "toolbox-group");
415
+ section.dataset.groupId = groupId;
416
+ if (!this.toolboxQuery) {
417
+ section.classList.toggle("is-collapsed", this.collapsedToolboxGroups.has(groupId));
418
+ }
419
+ const heading = document.createElement("button");
420
+ heading.type = "button";
421
+ heading.className = "ce-diagram__toolbox-group-title";
422
+ heading.setAttribute("part", "toolbox-group-title");
423
+ heading.dataset.groupToggle = groupId;
424
+ heading.setAttribute("aria-expanded", this.toolboxQuery ? "true" : String(!this.collapsedToolboxGroups.has(groupId)));
425
+ heading.innerHTML = `<span>${groupLabel}</span><span class="ce-diagram__toolbox-group-caret" aria-hidden="true">${this.toolboxQuery || !this.collapsedToolboxGroups.has(groupId) ? "−" : "+"}</span>`;
426
+ heading.addEventListener("click", () => {
427
+ if (this.toolboxQuery) {
428
+ return;
429
+ }
430
+ if (this.collapsedToolboxGroups.has(groupId)) {
431
+ this.collapsedToolboxGroups.delete(groupId);
432
+ }
433
+ else {
434
+ this.collapsedToolboxGroups.add(groupId);
435
+ }
436
+ this.populateToolboxList(list, tools);
437
+ });
438
+ section.appendChild(heading);
439
+ const groupList = document.createElement("div");
440
+ groupList.className = "ce-diagram__toolbox-group-list";
441
+ groupList.setAttribute("part", "toolbox-group-list");
442
+ groupTools.forEach((tool) => {
443
+ const btn = document.createElement("button");
444
+ btn.type = "button";
445
+ btn.className = "ce-diagram__tool";
446
+ btn.setAttribute("part", "tool");
447
+ btn.innerHTML = "";
448
+ if (tool.icon) {
449
+ btn.appendChild(this.createToolIconElement(tool.icon, TOOL_ICON_FALLBACKS[tool.type] ?? tool.label.charAt(0)));
450
+ }
451
+ const label = document.createElement("span");
452
+ label.textContent = tool.label;
453
+ btn.appendChild(label);
454
+ btn.draggable = true;
455
+ this.applyToolButtonData(btn, tool);
456
+ this.attachToolDragHandlers(btn, tool);
457
+ groupList.appendChild(btn);
458
+ });
459
+ section.append(groupList);
460
+ list.appendChild(section);
461
+ });
462
+ if (!list.children.length) {
463
+ const empty = document.createElement("div");
464
+ empty.className = "ce-diagram__toolbox-empty";
465
+ empty.setAttribute("part", "toolbox-empty");
466
+ empty.textContent = "No tools match the current search.";
467
+ list.appendChild(empty);
468
+ }
469
+ }
470
+ createToolIconElement(file, fallbackText) {
471
+ const icon = document.createElement("span");
472
+ icon.className = "ce-diagram__tool-icon";
473
+ icon.setAttribute("part", "tool-icon");
474
+ icon.setAttribute("aria-hidden", "true");
475
+ icon.style.backgroundImage = `url("${this.getIconscoutIconPath(file)}")`;
476
+ icon.dataset.fallback = fallbackText;
477
+ return icon;
478
+ }
479
+ createIconElement(className, file, fallbackText) {
480
+ const wrap = document.createElement("span");
481
+ wrap.className = `${className}-wrap`;
482
+ wrap.setAttribute("part", className.includes("tool") ? "tool-icon" : "toolbar-icon");
483
+ const img = document.createElement("img");
484
+ img.className = className;
485
+ img.alt = "";
486
+ img.setAttribute("aria-hidden", "true");
487
+ img.src = this.getIconscoutIconPath(file);
488
+ img.loading = "lazy";
489
+ img.decoding = "async";
490
+ const fallback = document.createElement("span");
491
+ fallback.className = `${className}-fallback`;
492
+ fallback.setAttribute("aria-hidden", "true");
493
+ fallback.dataset.fallback = fallbackText;
494
+ fallback.hidden = true;
495
+ img.addEventListener("error", () => {
496
+ wrap.classList.add("is-fallback");
497
+ fallback.hidden = false;
498
+ fallback.textContent = fallback.dataset.fallback ?? "";
499
+ });
500
+ img.addEventListener("load", () => {
501
+ wrap.classList.remove("is-fallback");
502
+ fallback.hidden = true;
503
+ fallback.textContent = "";
504
+ });
505
+ wrap.append(img, fallback);
506
+ return wrap;
507
+ }
508
+ getTools() {
509
+ return this.options.tools ?? DEFAULT_TOOLS;
510
+ }
511
+ getToolGroupLabel(type) {
512
+ switch (type) {
513
+ case "process":
514
+ case "rectangle":
515
+ case "square":
516
+ case "parallelogram":
517
+ case "subprocess":
518
+ case "delay":
519
+ case "manual-input":
520
+ case "display":
521
+ case "preparation":
522
+ return "Flow";
523
+ case "decision":
524
+ case "hexagon":
525
+ case "triangle":
526
+ case "diamond":
527
+ case "merge":
528
+ case "or":
529
+ case "collate":
530
+ case "off-page-connector":
531
+ return "Logic";
532
+ case "terminator":
533
+ case "ellipse":
534
+ case "circle":
535
+ case "oval":
536
+ case "capsule":
537
+ return "Events";
538
+ case "note":
539
+ case "document":
540
+ return "Notes";
541
+ case "database-cylinder":
542
+ case "stored-data":
543
+ case "data":
544
+ return "Data";
545
+ default:
546
+ return "Other";
547
+ }
548
+ }
549
+ normalizeNodes(nodes) {
550
+ if (!Array.isArray(nodes)) {
551
+ return [];
552
+ }
553
+ return nodes.map((node, index) => ({
554
+ ...node,
555
+ x: node.x ?? index * 80,
556
+ y: node.y ?? index * 80,
557
+ }));
558
+ }
559
+ normalizeLinks(options) {
560
+ const rawLinks = Array.isArray(options.links) ? options.links : [];
561
+ const normalizedLinks = rawLinks
562
+ .map((link, index) => {
563
+ if (!link?.source || !link?.target) {
564
+ return undefined;
565
+ }
566
+ return {
567
+ id: link.id ?? `${link.source}-${link.target}-${index}`,
568
+ source: link.source,
569
+ target: link.target,
570
+ };
571
+ })
572
+ .filter(Boolean);
573
+ if (normalizedLinks.length) {
574
+ return normalizedLinks;
575
+ }
576
+ const legacyEdges = options.edges ?? [];
577
+ return legacyEdges
578
+ .map((edge, index) => {
579
+ const source = edge?.source ?? edge?.from;
580
+ const target = edge?.target ?? edge?.to;
581
+ if (!source || !target) {
582
+ return undefined;
583
+ }
584
+ return {
585
+ id: edge.id ?? `${source}-${target}-${index}`,
586
+ source,
587
+ target,
588
+ };
589
+ })
590
+ .filter(Boolean);
591
+ }
592
+ applyToolButtonData(button, tool) {
593
+ button.dataset.toolType = tool.type;
594
+ button.dataset.toolLabel = tool.label;
595
+ if (tool.width !== undefined) {
596
+ button.dataset.toolWidth = String(tool.width);
597
+ }
598
+ if (tool.height !== undefined) {
599
+ button.dataset.toolHeight = String(tool.height);
600
+ }
601
+ if (tool.icon) {
602
+ button.dataset.toolIcon = tool.icon;
603
+ }
604
+ }
605
+ resolveToolFromButton(button, tools) {
606
+ const toolType = button.dataset.toolType;
607
+ if (toolType) {
608
+ const match = tools.find((tool) => tool.type === toolType);
609
+ if (match) {
610
+ return match;
611
+ }
612
+ }
613
+ if (!toolType) {
614
+ return undefined;
615
+ }
616
+ const width = button.dataset.toolWidth ? Number(button.dataset.toolWidth) : undefined;
617
+ const height = button.dataset.toolHeight ? Number(button.dataset.toolHeight) : undefined;
618
+ return {
619
+ type: toolType,
620
+ label: button.dataset.toolLabel ?? toolType,
621
+ width: Number.isFinite(width) ? width : undefined,
622
+ height: Number.isFinite(height) ? height : undefined,
623
+ icon: button.dataset.toolIcon ?? undefined,
624
+ };
625
+ }
626
+ attachToolDragHandlers(button, tool) {
627
+ button.addEventListener("dragstart", (e) => {
628
+ if (!e.dataTransfer)
629
+ return;
630
+ e.dataTransfer.effectAllowed = "copy";
631
+ const payload = JSON.stringify(tool);
632
+ e.dataTransfer.setData("application/json", payload);
633
+ e.dataTransfer.setData("text/plain", payload);
634
+ e.dataTransfer.setDragImage(button, button.clientWidth / 2, button.clientHeight / 2);
635
+ });
636
+ }
637
+ attachToolbarHandlers(toolbar) {
638
+ const connect = toolbar.querySelector('[data-action="connect"]');
639
+ const editBtn = toolbar.querySelector('[data-action="edit-label"]');
640
+ const labelInput = toolbar.querySelector(".ce-diagram__label-input");
641
+ const status = toolbar.querySelector(".ce-diagram__status");
642
+ this.labelInput = labelInput ?? undefined;
643
+ this.statusEl = status ?? undefined;
644
+ toolbar.querySelectorAll(".ce-diagram__toolbar-group-toggle").forEach((toggle) => {
645
+ toggle.addEventListener("click", (event) => {
646
+ event.stopPropagation();
647
+ const groupId = toggle.dataset.groupToggle;
648
+ if (!groupId)
649
+ return;
650
+ if (this.collapsedToolbarGroups.has(groupId)) {
651
+ this.collapsedToolbarGroups.delete(groupId);
652
+ }
653
+ else {
654
+ this.collapsedToolbarGroups.add(groupId);
655
+ }
656
+ const replacement = this.buildToolbar();
657
+ toolbar.replaceWith(replacement);
658
+ this.attachToolbarHandlers(replacement);
659
+ });
660
+ });
661
+ toolbar.querySelector('[data-action="zoom-out"]')?.addEventListener("click", (e) => {
662
+ e.stopPropagation();
663
+ this.zoomBy(-0.2);
664
+ this.updateStatus(`Zoom ${Math.round(this.currentScale * 100)}%`);
665
+ });
666
+ toolbar.querySelector('[data-action="fit"]')?.addEventListener("click", (e) => {
667
+ e.stopPropagation();
668
+ this.fitToView();
669
+ this.updateStatus("Fitted all nodes to the viewport");
670
+ });
671
+ toolbar.querySelector('[data-action="reset"]')?.addEventListener("click", (e) => {
672
+ e.stopPropagation();
673
+ this.resetView();
674
+ this.clearInteractionModes(toolbar);
675
+ this.updateStatus("View reset");
676
+ });
677
+ toolbar.querySelector('[data-action="zoom-in"]')?.addEventListener("click", (e) => {
678
+ e.stopPropagation();
679
+ this.zoomBy(0.2);
680
+ this.updateStatus(`Zoom ${Math.round(this.currentScale * 100)}%`);
681
+ });
682
+ toolbar.querySelector('[data-action="center"]')?.addEventListener("click", (e) => {
683
+ e.stopPropagation();
684
+ this.centerCanvas();
685
+ this.updateStatus("Canvas centered");
686
+ });
687
+ toolbar.querySelector('[data-action="toggle-tools"]')?.addEventListener("click", (e) => {
688
+ e.stopPropagation();
689
+ this.toggleTools(toolbar);
690
+ });
691
+ toolbar.querySelector('[data-action="fullscreen"]')?.addEventListener("click", async (e) => {
692
+ e.stopPropagation();
693
+ await this.toggleFullscreen();
694
+ });
695
+ toolbar.querySelector('[data-action="undo"]')?.addEventListener("click", (e) => {
696
+ e.stopPropagation();
697
+ this.undo();
698
+ });
699
+ toolbar.querySelector('[data-action="redo"]')?.addEventListener("click", (e) => {
700
+ e.stopPropagation();
701
+ this.redo();
702
+ });
703
+ toolbar.querySelector('[data-action="align-left"]')?.addEventListener("click", () => this.alignSelection("left"));
704
+ toolbar.querySelector('[data-action="align-center"]')?.addEventListener("click", () => this.alignSelection("center"));
705
+ toolbar.querySelector('[data-action="align-right"]')?.addEventListener("click", () => this.alignSelection("right"));
706
+ toolbar.querySelector('[data-action="distribute-horizontal"]')?.addEventListener("click", () => this.distributeSelection("horizontal"));
707
+ toolbar.querySelector('[data-action="align-top"]')?.addEventListener("click", () => this.alignSelection("top"));
708
+ toolbar.querySelector('[data-action="align-middle"]')?.addEventListener("click", () => this.alignSelection("middle"));
709
+ toolbar.querySelector('[data-action="align-bottom"]')?.addEventListener("click", () => this.alignSelection("bottom"));
710
+ toolbar.querySelector('[data-action="distribute-vertical"]')?.addEventListener("click", () => this.distributeSelection("vertical"));
711
+ connect?.addEventListener("click", () => {
712
+ this.connectionDrag = undefined;
713
+ this.connectSourceId = undefined;
714
+ this.connectMode = !this.connectMode;
715
+ this.editMode = false;
716
+ toolbar.dataset.mode = this.connectMode ? "connect" : "default";
717
+ connect.classList.toggle("is-active", this.connectMode);
718
+ editBtn?.classList.remove("is-active");
719
+ this.updateStatus(this.connectMode ? "Click a source, then a target to connect" : "");
720
+ });
721
+ editBtn?.addEventListener("click", () => {
722
+ this.editMode = !this.editMode;
723
+ this.connectionDrag = undefined;
724
+ this.connectMode = false;
725
+ this.connectSourceId = undefined;
726
+ connect?.classList.remove("is-active");
727
+ editBtn.classList.toggle("is-active", this.editMode);
728
+ this.updateStatus(this.editMode ? "Click a shape to edit its label" : "");
729
+ });
730
+ toolbar.querySelector('[data-action="duplicate-node"]')?.addEventListener("click", () => {
731
+ this.duplicateSelectedNode();
732
+ });
733
+ toolbar.querySelector('[data-action="delete-node"]')?.addEventListener("click", () => {
734
+ this.deleteSelectedNode();
735
+ });
736
+ toolbar.querySelector('[data-action="export-svg"]')?.addEventListener("click", () => this.exportSVG());
737
+ toolbar.querySelector('[data-action="export-json"]')?.addEventListener("click", () => this.exportJSON());
738
+ toolbar
739
+ .querySelector('[data-action="export-png"]')
740
+ ?.addEventListener("click", () => this.exportRaster("image/png", "diagram.png"));
741
+ toolbar
742
+ .querySelector('[data-action="export-jpg"]')
743
+ ?.addEventListener("click", () => this.exportRaster("image/jpeg", "diagram.jpg"));
744
+ toolbar.querySelector('[data-action="export-pdf"]')?.addEventListener("click", () => this.exportPDF());
745
+ labelInput?.addEventListener("input", () => this.updateSelectedLabel(labelInput.value));
746
+ labelInput?.addEventListener("keydown", (event) => {
747
+ if (event.key === "Enter") {
748
+ event.preventDefault();
749
+ labelInput.blur();
750
+ }
751
+ });
752
+ }
753
+ syncContextPanel() {
754
+ if (!this.contextPanel)
755
+ return;
756
+ const body = this.contextPanel.querySelector(".ce-diagram__context-body");
757
+ if (!body)
758
+ return;
759
+ const selectedNodes = this.getSelectedNodes();
760
+ if (this.selectedLinkId) {
761
+ const link = this.links.find((entry) => entry.id === this.selectedLinkId);
762
+ if (!link) {
763
+ body.innerHTML = "<p>No selection.</p>";
764
+ return;
765
+ }
766
+ body.innerHTML = `
767
+ <div class="ce-diagram__context-grid">
768
+ <div><span>Connector</span><strong>${link.source} → ${link.target}</strong></div>
769
+ <div><span>Label</span><strong>${link.label ?? "None"}</strong></div>
770
+ </div>
771
+ <label class="ce-diagram__context-field">
772
+ <span>Condition label</span>
773
+ <input class="ce-diagram__context-input" type="text" value="${this.escapeHtml(link.label ?? "")}" placeholder="Approved / Rejected" />
774
+ </label>
775
+ <div class="ce-diagram__context-hint">Double-click the connector or edit the field here.</div>
776
+ `;
777
+ const input = body.querySelector(".ce-diagram__context-input");
778
+ input?.addEventListener("input", () => {
779
+ link.label = input.value.trim() || undefined;
780
+ this.renderLinks();
781
+ });
782
+ return;
783
+ }
784
+ if (selectedNodes.length > 1) {
785
+ body.innerHTML = `
786
+ <div class="ce-diagram__context-grid">
787
+ <div><span>Selection</span><strong>${selectedNodes.length} nodes</strong></div>
788
+ <div><span>Actions</span><strong>Align, distribute, drag as group</strong></div>
789
+ </div>
790
+ <div class="ce-diagram__context-hint">Use toolbar arrange actions or drag one selected node to move the whole group.</div>
791
+ `;
792
+ return;
793
+ }
794
+ if (this.selectedNodeId) {
795
+ const node = this.nodes.find((entry) => entry.id === this.selectedNodeId);
796
+ if (!node)
797
+ return;
798
+ body.innerHTML = `
799
+ <div class="ce-diagram__context-grid">
800
+ <div><span>Node</span><strong>${this.escapeHtml(node.label)}</strong></div>
801
+ <div><span>Type</span><strong>${this.escapeHtml(node.type ?? "process")}</strong></div>
802
+ <div><span>Position</span><strong>${node.x}, ${node.y}</strong></div>
803
+ <div><span>Size</span><strong>${node.width ?? 140} × ${node.height ?? 60}</strong></div>
804
+ </div>
805
+ <label class="ce-diagram__context-field">
806
+ <span>Node label</span>
807
+ <input class="ce-diagram__context-input" type="text" value="${this.escapeHtml(node.label)}" placeholder="Edit node label" />
808
+ </label>
809
+ `;
810
+ const input = body.querySelector(".ce-diagram__context-input");
811
+ input?.addEventListener("input", () => {
812
+ node.label = input.value;
813
+ this.syncLabelInput();
814
+ this.renderNodes();
815
+ });
816
+ return;
817
+ }
818
+ body.innerHTML = `
819
+ <div class="ce-diagram__context-empty">
820
+ <strong>No selection</strong>
821
+ <span>Select a node or connector to inspect and edit it here.</span>
822
+ </div>
823
+ `;
824
+ }
825
+ escapeHtml(value) {
826
+ return value
827
+ .replace(/&/g, "&amp;")
828
+ .replace(/</g, "&lt;")
829
+ .replace(/>/g, "&gt;")
830
+ .replace(/"/g, "&quot;")
831
+ .replace(/'/g, "&#39;");
832
+ }
833
+ clearInteractionModes(toolbar) {
834
+ this.connectMode = false;
835
+ this.editMode = false;
836
+ this.connectSourceId = undefined;
837
+ this.connectionDrag = undefined;
838
+ this.detachConnectorDragListeners();
839
+ const scope = toolbar ?? this.el.querySelector(".ce-diagram__toolbar");
840
+ scope?.querySelector('[data-action="connect"]')?.classList.remove("is-active");
841
+ scope?.querySelector('[data-action="edit-label"]')?.classList.remove("is-active");
842
+ if (scope) {
843
+ scope.dataset.mode = "default";
844
+ }
845
+ }
846
+ fitToView() {
847
+ if (!this.svg || !this.nodes.length) {
848
+ return;
849
+ }
850
+ const bounds = this.getNodeBounds();
851
+ const width = Math.max(this.svg.clientWidth, 1);
852
+ const height = Math.max(this.svg.clientHeight, 1);
853
+ const padding = 80;
854
+ const scaleX = (width - padding * 2) / Math.max(bounds.width, 1);
855
+ const scaleY = (height - padding * 2) / Math.max(bounds.height, 1);
856
+ this.currentScale = Math.min(ZOOM_MAX, Math.max(ZOOM_MIN, Math.min(scaleX, scaleY)));
857
+ const contentCenterX = bounds.minX + bounds.width / 2;
858
+ const contentCenterY = bounds.minY + bounds.height / 2;
859
+ this.pan = {
860
+ x: width / 2 - contentCenterX * this.currentScale,
861
+ y: height / 2 - contentCenterY * this.currentScale,
862
+ };
863
+ this.applyTransform();
864
+ this.syncToolbarState();
865
+ }
866
+ centerCanvas() {
867
+ if (!this.svg || !this.nodes.length) {
868
+ return;
869
+ }
870
+ const bounds = this.getNodeBounds();
871
+ const width = Math.max(this.svg.clientWidth, 1);
872
+ const height = Math.max(this.svg.clientHeight, 1);
873
+ const contentCenterX = bounds.minX + bounds.width / 2;
874
+ const contentCenterY = bounds.minY + bounds.height / 2;
875
+ this.pan = {
876
+ x: width / 2 - contentCenterX * this.currentScale,
877
+ y: height / 2 - contentCenterY * this.currentScale,
878
+ };
879
+ this.applyTransform();
880
+ }
881
+ toggleTools(toolbar) {
882
+ this.toolboxVisible = !this.toolboxVisible;
883
+ this.el.classList.toggle("ce-diagram--tools-hidden", !this.toolboxVisible);
884
+ const button = toolbar.querySelector('[data-action="toggle-tools"]');
885
+ button?.classList.toggle("is-active", !this.toolboxVisible);
886
+ this.updateStatus(this.toolboxVisible ? "Tool palette shown" : "Tool palette hidden");
887
+ }
888
+ async toggleFullscreen() {
889
+ const target = this.el;
890
+ const button = this.el.querySelector('[data-action="fullscreen"]');
891
+ if (typeof document === "undefined") {
892
+ return;
893
+ }
894
+ if (document.fullscreenElement === target) {
895
+ await document.exitFullscreen();
896
+ button?.classList.remove("is-active");
897
+ this.setFullscreenState(false);
898
+ window.setTimeout(() => this.fitToView(), 40);
899
+ this.updateStatus("Collapsed diagram");
900
+ return;
901
+ }
902
+ if (target.requestFullscreen) {
903
+ await target.requestFullscreen();
904
+ button?.classList.add("is-active");
905
+ this.setFullscreenState(true);
906
+ window.setTimeout(() => this.fitToView(), 40);
907
+ this.updateStatus("Expanded diagram");
908
+ }
909
+ }
910
+ attachFullscreenListener() {
911
+ if (this.fullscreenChangeHandler || typeof document === "undefined") {
912
+ return;
913
+ }
914
+ this.fullscreenChangeHandler = () => {
915
+ this.setFullscreenState(document.fullscreenElement === this.el);
916
+ };
917
+ document.addEventListener("fullscreenchange", this.fullscreenChangeHandler);
918
+ }
919
+ setFullscreenState(isFullscreen) {
920
+ this.el.classList.toggle("is-fullscreen", isFullscreen);
921
+ const button = this.el.querySelector('[data-action="fullscreen"]');
922
+ button?.classList.toggle("is-active", isFullscreen);
923
+ if (isFullscreen) {
924
+ this.toolboxVisibleBeforeFullscreen = this.toolboxVisible;
925
+ this.toolboxVisible = true;
926
+ this.el.classList.remove("ce-diagram--tools-hidden");
927
+ const toolbar = this.el.querySelector(".ce-diagram__toolbar");
928
+ toolbar?.querySelector('[data-action="toggle-tools"]')?.classList.remove("is-active");
929
+ return;
930
+ }
931
+ if (this.toolboxVisibleBeforeFullscreen !== undefined) {
932
+ this.toolboxVisible = this.toolboxVisibleBeforeFullscreen;
933
+ this.el.classList.toggle("ce-diagram--tools-hidden", !this.toolboxVisible);
934
+ const toolbar = this.el.querySelector(".ce-diagram__toolbar");
935
+ toolbar?.querySelector('[data-action="toggle-tools"]')?.classList.toggle("is-active", !this.toolboxVisible);
936
+ this.toolboxVisibleBeforeFullscreen = undefined;
937
+ }
938
+ }
939
+ getNodeBounds() {
940
+ const minX = Math.min(...this.nodes.map((node) => node.x));
941
+ const minY = Math.min(...this.nodes.map((node) => node.y));
942
+ const maxX = Math.max(...this.nodes.map((node) => node.x + (node.width ?? 140)));
943
+ const maxY = Math.max(...this.nodes.map((node) => node.y + (node.height ?? 60)));
944
+ return {
945
+ minX,
946
+ minY,
947
+ width: maxX - minX,
948
+ height: maxY - minY,
949
+ };
950
+ }
951
+ attachCanvasHandlers(canvasWrap) {
952
+ canvasWrap.addEventListener("dragover", (e) => e.preventDefault());
953
+ canvasWrap.addEventListener("drop", (e) => this.handleDrop(e));
954
+ }
955
+ createSvgCanvas() {
956
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
957
+ svg.classList.add("ce-diagram__canvas");
958
+ svg.setAttribute("part", "canvas");
959
+ svg.setAttribute("role", "img");
960
+ svg.setAttribute("aria-label", "Diagram canvas");
961
+ svg.setAttribute("tabindex", "0");
962
+ this.attachSvgHandlers(svg);
963
+ this.ensureSvgStructure(svg);
964
+ return svg;
965
+ }
966
+ attachSvgHandlers(svg) {
967
+ svg.addEventListener("wheel", (e) => this.handleWheel(e), { passive: false });
968
+ svg.addEventListener("pointerdown", (e) => this.startPan(e));
969
+ svg.addEventListener("pointermove", (e) => this.handlePan(e));
970
+ svg.addEventListener("pointerup", (e) => {
971
+ this.finishConnectorDrag(e);
972
+ this.endPan();
973
+ });
974
+ svg.addEventListener("pointerleave", () => {
975
+ this.connectionDrag = undefined;
976
+ this.endPan();
977
+ this.renderLinks();
978
+ });
979
+ svg.addEventListener("dblclick", (e) => this.handleInlineEditRequest(e));
980
+ svg.addEventListener("click", (e) => this.handleCanvasClick(e));
981
+ svg.addEventListener("keydown", (e) => this.handleKeyDown(e));
982
+ }
983
+ ensureSvgStructure(svg) {
984
+ let defs = svg.querySelector("defs");
985
+ if (!defs) {
986
+ defs = document.createElementNS("http://www.w3.org/2000/svg", "defs");
987
+ svg.appendChild(defs);
988
+ }
989
+ if (!defs.querySelector("#arrowhead")) {
990
+ const marker = document.createElementNS("http://www.w3.org/2000/svg", "marker");
991
+ marker.id = "arrowhead";
992
+ marker.setAttribute("viewBox", "0 0 10 10");
993
+ marker.setAttribute("refX", "10");
994
+ marker.setAttribute("refY", "5");
995
+ marker.setAttribute("markerWidth", "6");
996
+ marker.setAttribute("markerHeight", "6");
997
+ marker.setAttribute("orient", "auto-start-reverse");
998
+ marker.setAttribute("markerUnits", "strokeWidth");
999
+ const arrowPath = document.createElementNS("http://www.w3.org/2000/svg", "path");
1000
+ arrowPath.setAttribute("d", "M 0 0 L 10 5 L 0 10 z");
1001
+ arrowPath.setAttribute("fill", "currentColor");
1002
+ marker.appendChild(arrowPath);
1003
+ defs.appendChild(marker);
1004
+ }
1005
+ const existingLinks = svg.querySelector(".ce-diagram__links");
1006
+ const existingNodes = svg.querySelector(".ce-diagram__nodes");
1007
+ this.linksGroup = existingLinks ?? document.createElementNS("http://www.w3.org/2000/svg", "g");
1008
+ this.linksGroup.classList.add("ce-diagram__links");
1009
+ this.linksGroup.setAttribute("part", "links");
1010
+ this.nodesGroup = existingNodes ?? document.createElementNS("http://www.w3.org/2000/svg", "g");
1011
+ this.nodesGroup.classList.add("ce-diagram__nodes");
1012
+ this.nodesGroup.setAttribute("part", "nodes");
1013
+ if (!existingLinks || !existingNodes) {
1014
+ svg.append(this.linksGroup, this.nodesGroup);
1015
+ }
1016
+ }
1017
+ tryHydrate() {
1018
+ if (!this.el.classList.contains("ce-diagram")) {
1019
+ return false;
1020
+ }
1021
+ this.el.classList.toggle("ce-diagram--dark", this.options.theme === "dark");
1022
+ this.el.setAttribute("data-ce-component", "diagram");
1023
+ this.el.setAttribute("part", "base");
1024
+ const layout = this.el.querySelector(".ce-diagram__layout");
1025
+ if (!layout) {
1026
+ return false;
1027
+ }
1028
+ layout.setAttribute("part", "layout");
1029
+ let toolbox = layout.querySelector(".ce-diagram__toolbox");
1030
+ const replacement = this.buildToolbox();
1031
+ if (!toolbox) {
1032
+ layout.prepend(replacement);
1033
+ toolbox = replacement;
1034
+ }
1035
+ else {
1036
+ toolbox.replaceWith(replacement);
1037
+ toolbox = replacement;
1038
+ }
1039
+ this.toolbox = toolbox;
1040
+ let canvasWrap = layout.querySelector(".ce-diagram__canvas-wrap");
1041
+ if (!canvasWrap) {
1042
+ canvasWrap = document.createElement("div");
1043
+ canvasWrap.className = "ce-diagram__canvas-wrap";
1044
+ layout.appendChild(canvasWrap);
1045
+ }
1046
+ canvasWrap.setAttribute("part", "canvas-wrap");
1047
+ this.attachCanvasHandlers(canvasWrap);
1048
+ this.canvasWrap = canvasWrap;
1049
+ let svg = canvasWrap.querySelector(".ce-diagram__canvas");
1050
+ if (!svg) {
1051
+ svg = this.createSvgCanvas();
1052
+ canvasWrap.appendChild(svg);
1053
+ }
1054
+ else {
1055
+ svg.classList.add("ce-diagram__canvas");
1056
+ svg.setAttribute("part", "canvas");
1057
+ svg.setAttribute("role", "img");
1058
+ svg.setAttribute("aria-label", "Diagram canvas");
1059
+ svg.setAttribute("tabindex", "0");
1060
+ this.attachSvgHandlers(svg);
1061
+ this.ensureSvgStructure(svg);
1062
+ }
1063
+ this.svg = svg;
1064
+ const existingToolbar = canvasWrap.querySelector(".ce-diagram__toolbar");
1065
+ if (existingToolbar) {
1066
+ existingToolbar.remove();
1067
+ }
1068
+ let toolbar = this.buildToolbar();
1069
+ canvasWrap.appendChild(toolbar);
1070
+ if (!toolbar.dataset.mode) {
1071
+ toolbar.dataset.mode = "default";
1072
+ }
1073
+ toolbar.setAttribute("part", "toolbar");
1074
+ toolbar.querySelectorAll("button").forEach((button) => {
1075
+ const action = button.dataset.action ? ` ${button.dataset.action}` : "";
1076
+ button.setAttribute("part", `toolbar-button${action}`);
1077
+ });
1078
+ toolbar.querySelectorAll(".ce-diagram__label-input").forEach((node) => node.setAttribute("part", "label-input"));
1079
+ toolbar.querySelectorAll(".ce-diagram__status").forEach((node) => node.setAttribute("part", "status"));
1080
+ this.attachToolbarHandlers(toolbar);
1081
+ this.renderLinks();
1082
+ this.renderNodes();
1083
+ this.applyTransform();
1084
+ return true;
1085
+ }
1086
+ renderNodes() {
1087
+ if (!this.nodesGroup)
1088
+ return;
1089
+ this.nodesGroup.innerHTML = "";
1090
+ const palette = this.getNodePalette();
1091
+ this.nodes.forEach((node) => {
1092
+ const g = document.createElementNS("http://www.w3.org/2000/svg", "g");
1093
+ g.classList.add("ce-diagram__node");
1094
+ g.setAttribute("part", "node");
1095
+ g.dataset.id = node.id;
1096
+ if ((this.connectMode && this.connectSourceId === node.id) || this.connectionDrag?.sourceId === node.id) {
1097
+ g.classList.add("is-connecting");
1098
+ }
1099
+ if (this.selectedNodeIds.has(node.id)) {
1100
+ g.classList.add("is-selected");
1101
+ }
1102
+ g.setAttribute("transform", `translate(${node.x}, ${node.y})`);
1103
+ const width = node.width ?? 140;
1104
+ const height = node.height ?? 60;
1105
+ const radius = node.type === "terminator" || node.type === "capsule" ? Math.min(width, height) / 2 : 10;
1106
+ const decorations = [];
1107
+ let shape;
1108
+ switch (node.type) {
1109
+ case "circle": {
1110
+ const circle = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
1111
+ const radius = Math.min(width, height) / 2;
1112
+ circle.setAttribute("cx", String(width / 2));
1113
+ circle.setAttribute("cy", String(height / 2));
1114
+ circle.setAttribute("rx", String(radius));
1115
+ circle.setAttribute("ry", String(radius));
1116
+ shape = circle;
1117
+ break;
1118
+ }
1119
+ case "oval":
1120
+ case "ellipse": {
1121
+ const ellipse = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
1122
+ ellipse.setAttribute("cx", String(width / 2));
1123
+ ellipse.setAttribute("cy", String(height / 2));
1124
+ ellipse.setAttribute("rx", String(width / 2));
1125
+ ellipse.setAttribute("ry", String(height / 2));
1126
+ shape = ellipse;
1127
+ break;
1128
+ }
1129
+ case "triangle": {
1130
+ const tri = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1131
+ tri.setAttribute("points", `0,${height} ${width / 2},0 ${width},${height}`);
1132
+ shape = tri;
1133
+ break;
1134
+ }
1135
+ case "hexagon": {
1136
+ const hx = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1137
+ const hxPoints = [
1138
+ [width * 0.25, 0],
1139
+ [width * 0.75, 0],
1140
+ [width, height / 2],
1141
+ [width * 0.75, height],
1142
+ [width * 0.25, height],
1143
+ [0, height / 2],
1144
+ ]
1145
+ .map((p) => p.join(","))
1146
+ .join(" ");
1147
+ hx.setAttribute("points", hxPoints);
1148
+ shape = hx;
1149
+ break;
1150
+ }
1151
+ case "parallelogram": {
1152
+ const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1153
+ const inset = Math.max(16, width * 0.14);
1154
+ polygon.setAttribute("points", `${inset},0 ${width},0 ${width - inset},${height} 0,${height}`);
1155
+ shape = polygon;
1156
+ break;
1157
+ }
1158
+ case "preparation": {
1159
+ const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1160
+ const side = Math.max(16, width * 0.12);
1161
+ polygon.setAttribute("points", `${side},0 ${width - side},0 ${width},${height / 2} ${width - side},${height} ${side},${height} 0,${height / 2}`);
1162
+ shape = polygon;
1163
+ break;
1164
+ }
1165
+ case "manual-input": {
1166
+ const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1167
+ const inset = Math.max(18, width * 0.18);
1168
+ polygon.setAttribute("points", `0,${height} 0,${inset} ${width},0 ${width},${height}`);
1169
+ shape = polygon;
1170
+ break;
1171
+ }
1172
+ case "document": {
1173
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1174
+ const wave = Math.max(10, height * 0.16);
1175
+ path.setAttribute("d", `M 0 0 H ${width} V ${height - wave} C ${width * 0.8} ${height + wave * 0.15}, ${width * 0.45} ${height - wave * 1.4}, ${width * 0.18} ${height - wave * 0.2} C ${width * 0.1} ${height}, ${width * 0.05} ${height}, 0 ${height - wave * 0.55} Z`);
1176
+ shape = path;
1177
+ break;
1178
+ }
1179
+ case "delay": {
1180
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1181
+ const arc = Math.min(height / 2, width * 0.32);
1182
+ const bodyWidth = Math.max(width - arc, width * 0.62);
1183
+ path.setAttribute("d", `M 0 0 H ${bodyWidth} A ${arc} ${arc} 0 0 1 ${bodyWidth} ${height} H 0 Z`);
1184
+ shape = path;
1185
+ break;
1186
+ }
1187
+ case "display": {
1188
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1189
+ const leftInset = Math.max(18, width * 0.12);
1190
+ const rightArc = Math.max(16, width * 0.16);
1191
+ path.setAttribute("d", `M ${leftInset} 0 H ${width - rightArc} Q ${width} ${height / 2} ${width - rightArc} ${height} H ${leftInset} Q 0 ${height / 2} ${leftInset} 0 Z`);
1192
+ shape = path;
1193
+ break;
1194
+ }
1195
+ case "diamond":
1196
+ case "decision": {
1197
+ const diamond = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1198
+ diamond.setAttribute("points", `${width / 2},0 ${width},${height / 2} ${width / 2},${height} 0,${height / 2}`);
1199
+ shape = diamond;
1200
+ break;
1201
+ }
1202
+ case "or": {
1203
+ const circle = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
1204
+ const radius = Math.min(width, height) / 2;
1205
+ circle.setAttribute("cx", String(width / 2));
1206
+ circle.setAttribute("cy", String(height / 2));
1207
+ circle.setAttribute("rx", String(radius));
1208
+ circle.setAttribute("ry", String(radius));
1209
+ const vertical = document.createElementNS("http://www.w3.org/2000/svg", "path");
1210
+ vertical.setAttribute("d", `M ${width / 2} ${height * 0.23} V ${height * 0.77}`);
1211
+ const horizontal = document.createElementNS("http://www.w3.org/2000/svg", "path");
1212
+ horizontal.setAttribute("d", `M ${width * 0.23} ${height / 2} H ${width * 0.77}`);
1213
+ decorations.push(vertical, horizontal);
1214
+ shape = circle;
1215
+ break;
1216
+ }
1217
+ case "database-cylinder": {
1218
+ const body = document.createElementNS("http://www.w3.org/2000/svg", "path");
1219
+ const ellipseHeight = Math.max(14, height * 0.18);
1220
+ body.setAttribute("d", `M 0 ${ellipseHeight / 2} C 0 0, ${width} 0, ${width} ${ellipseHeight / 2} V ${height - ellipseHeight / 2} C ${width} ${height}, 0 ${height}, 0 ${height - ellipseHeight / 2} Z`);
1221
+ const topEllipse = document.createElementNS("http://www.w3.org/2000/svg", "ellipse");
1222
+ topEllipse.setAttribute("cx", String(width / 2));
1223
+ topEllipse.setAttribute("cy", String(ellipseHeight / 2));
1224
+ topEllipse.setAttribute("rx", String(width / 2));
1225
+ topEllipse.setAttribute("ry", String(ellipseHeight / 2));
1226
+ const bottomArc = document.createElementNS("http://www.w3.org/2000/svg", "path");
1227
+ bottomArc.setAttribute("d", `M 0 ${height - ellipseHeight / 2} C 0 ${height}, ${width} ${height}, ${width} ${height - ellipseHeight / 2}`);
1228
+ decorations.push(topEllipse, bottomArc);
1229
+ shape = body;
1230
+ break;
1231
+ }
1232
+ case "stored-data": {
1233
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1234
+ const leftCurve = Math.max(16, width * 0.12);
1235
+ const rightInset = Math.max(10, width * 0.08);
1236
+ path.setAttribute("d", `M ${leftCurve} 0 H ${width - rightInset} Q ${width} ${height / 2} ${width - rightInset} ${height} H ${leftCurve} Q 0 ${height / 2} ${leftCurve} 0 Z`);
1237
+ const inner = document.createElementNS("http://www.w3.org/2000/svg", "path");
1238
+ inner.setAttribute("d", `M ${leftCurve * 1.5} 0 Q ${leftCurve * 0.5} ${height / 2} ${leftCurve * 1.5} ${height}`);
1239
+ decorations.push(inner);
1240
+ shape = path;
1241
+ break;
1242
+ }
1243
+ case "off-page-connector": {
1244
+ const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1245
+ const neck = Math.max(18, height * 0.26);
1246
+ polygon.setAttribute("points", `0,0 ${width},0 ${width},${height - neck} ${width / 2},${height} 0,${height - neck}`);
1247
+ shape = polygon;
1248
+ break;
1249
+ }
1250
+ case "merge": {
1251
+ const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1252
+ polygon.setAttribute("points", `0,0 ${width},${height / 2} 0,${height}`);
1253
+ shape = polygon;
1254
+ break;
1255
+ }
1256
+ case "collate": {
1257
+ const left = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1258
+ left.setAttribute("points", `0,0 ${width / 2},${height / 2} 0,${height}`);
1259
+ const right = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
1260
+ right.setAttribute("points", `${width},0 ${width / 2},${height / 2} ${width},${height}`);
1261
+ decorations.push(right);
1262
+ shape = left;
1263
+ break;
1264
+ }
1265
+ default: {
1266
+ const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
1267
+ rect.setAttribute("rx", String(radius));
1268
+ rect.setAttribute("ry", String(radius));
1269
+ rect.setAttribute("width", String(width));
1270
+ rect.setAttribute("height", String(height));
1271
+ shape = rect;
1272
+ }
1273
+ }
1274
+ shape.classList.add("ce-diagram__node-body");
1275
+ shape.setAttribute("part", "node-body");
1276
+ shape.setAttribute("fill", palette.fill);
1277
+ shape.setAttribute("stroke", palette.stroke);
1278
+ shape.setAttribute("stroke-width", "1.5");
1279
+ decorations.forEach((decoration) => {
1280
+ decoration.classList.add("ce-diagram__node-decoration");
1281
+ const fillTag = decoration.tagName;
1282
+ decoration.setAttribute("fill", fillTag === "ellipse" || fillTag === "polygon" ? palette.fill : "none");
1283
+ decoration.setAttribute("stroke", palette.stroke);
1284
+ decoration.setAttribute("stroke-width", "1.5");
1285
+ });
1286
+ const label = document.createElementNS("http://www.w3.org/2000/svg", "text");
1287
+ label.classList.add("ce-diagram__node-label");
1288
+ label.setAttribute("part", "node-label");
1289
+ label.setAttribute("x", String((node.width ?? width) / 2));
1290
+ label.setAttribute("y", String((node.height ?? height) / 2 + 5));
1291
+ label.setAttribute("text-anchor", "middle");
1292
+ label.textContent = node.label;
1293
+ label.setAttribute("fill", palette.label);
1294
+ if (node.icon) {
1295
+ if (node.icon.endsWith(".svg")) {
1296
+ const icon = document.createElementNS("http://www.w3.org/2000/svg", "image");
1297
+ icon.classList.add("ce-diagram__node-icon");
1298
+ icon.setAttribute("part", "node-icon");
1299
+ icon.setAttribute("href", this.getIconscoutIconPath(node.icon));
1300
+ icon.setAttribute("x", String((node.width ?? width) / 2 - 11));
1301
+ icon.setAttribute("y", String((node.height ?? height) / 2 - 29));
1302
+ icon.setAttribute("width", "22");
1303
+ icon.setAttribute("height", "22");
1304
+ g.append(shape, ...decorations, icon, label);
1305
+ }
1306
+ else {
1307
+ const icon = document.createElementNS("http://www.w3.org/2000/svg", "text");
1308
+ icon.classList.add("ce-diagram__node-icon");
1309
+ icon.setAttribute("part", "node-icon");
1310
+ icon.setAttribute("x", String((node.width ?? width) / 2));
1311
+ icon.setAttribute("y", String((node.height ?? height) / 2 - 12));
1312
+ icon.setAttribute("text-anchor", "middle");
1313
+ icon.textContent = node.icon;
1314
+ icon.setAttribute("fill", palette.label);
1315
+ g.append(shape, ...decorations, icon, label);
1316
+ }
1317
+ }
1318
+ else {
1319
+ g.append(shape, ...decorations, label);
1320
+ }
1321
+ g.addEventListener("click", (e) => {
1322
+ e.stopPropagation();
1323
+ if (this.inlineEditor)
1324
+ return;
1325
+ if (this.editMode) {
1326
+ this.startInlineEdit(node);
1327
+ return;
1328
+ }
1329
+ this.options.onNodeSelect?.(node);
1330
+ this.handleConnectClick(node);
1331
+ if (e.shiftKey) {
1332
+ if (this.selectedNodeIds.has(node.id)) {
1333
+ this.selectedNodeIds.delete(node.id);
1334
+ }
1335
+ else {
1336
+ this.selectedNodeIds.add(node.id);
1337
+ }
1338
+ this.selectedNodeId = this.selectedNodeIds.has(node.id) ? node.id : Array.from(this.selectedNodeIds).at(-1);
1339
+ }
1340
+ else {
1341
+ this.selectedNodeIds = new Set([node.id]);
1342
+ this.selectedNodeId = node.id;
1343
+ }
1344
+ this.selectedLinkId = undefined;
1345
+ this.syncLabelInput();
1346
+ this.renderNodes();
1347
+ });
1348
+ g.addEventListener("dblclick", (e) => {
1349
+ e.stopPropagation();
1350
+ if (this.nodeClickTimer) {
1351
+ window.clearTimeout(this.nodeClickTimer);
1352
+ this.nodeClickTimer = undefined;
1353
+ }
1354
+ this.startInlineEdit(node);
1355
+ });
1356
+ g.addEventListener("pointerdown", (e) => this.startNodeDrag(e, node));
1357
+ this.nodesGroup.appendChild(g);
1358
+ if (this.selectedNodeIds.has(node.id)) {
1359
+ this.renderHandles(g, node);
1360
+ }
1361
+ this.renderConnectorHandles(g, node);
1362
+ });
1363
+ this.syncToolbarState();
1364
+ this.syncContextPanel();
1365
+ }
1366
+ renderHandles(group, node) {
1367
+ const width = node.width ?? 140;
1368
+ const height = node.height ?? 60;
1369
+ const handlePositions = [
1370
+ { corner: "nw", x: 0, y: 0 },
1371
+ { corner: "ne", x: width, y: 0 },
1372
+ { corner: "sw", x: 0, y: height },
1373
+ { corner: "se", x: width, y: height },
1374
+ ];
1375
+ handlePositions.forEach((h) => {
1376
+ const handle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
1377
+ handle.classList.add("ce-diagram__handle");
1378
+ handle.setAttribute("part", "handle");
1379
+ handle.setAttribute("r", "6");
1380
+ handle.setAttribute("cx", String(h.x));
1381
+ handle.setAttribute("cy", String(h.y));
1382
+ handle.addEventListener("pointerdown", (e) => this.startResize(e, node, h.corner));
1383
+ group.appendChild(handle);
1384
+ });
1385
+ }
1386
+ renderConnectorHandles(group, node) {
1387
+ const sides = ["top", "right", "bottom", "left"];
1388
+ sides.forEach((side) => {
1389
+ const point = this.getConnectorPortPosition(node, side);
1390
+ const port = document.createElementNS("http://www.w3.org/2000/svg", "circle");
1391
+ port.classList.add("ce-diagram__connector-handle");
1392
+ port.setAttribute("part", "connector-handle");
1393
+ port.setAttribute("r", "7");
1394
+ port.setAttribute("cx", String(point.x - node.x));
1395
+ port.setAttribute("cy", String(point.y - node.y));
1396
+ port.dataset.side = side;
1397
+ port.addEventListener("pointerdown", (event) => this.startConnectorDrag(event, node, side));
1398
+ group.appendChild(port);
1399
+ });
1400
+ }
1401
+ renderLinks() {
1402
+ if (!this.linksGroup)
1403
+ return;
1404
+ this.linksGroup.innerHTML = "";
1405
+ this.links.forEach((link) => {
1406
+ const src = this.nodes.find((n) => n.id === link.source);
1407
+ const tgt = this.nodes.find((n) => n.id === link.target);
1408
+ if (!src || !tgt)
1409
+ return;
1410
+ const start = this.getEdgePoint(src, tgt);
1411
+ const end = this.getEdgePoint(tgt, src);
1412
+ const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1413
+ path.classList.add("ce-diagram__link");
1414
+ if (this.selectedLinkId === link.id) {
1415
+ path.classList.add("is-selected");
1416
+ }
1417
+ path.setAttribute("part", "link");
1418
+ path.setAttribute("d", this.buildLinkPath(link, start, end));
1419
+ path.setAttribute("fill", "none");
1420
+ path.setAttribute("stroke", "rgba(37, 99, 235, 0.9)");
1421
+ path.setAttribute("stroke-width", "2.5");
1422
+ path.setAttribute("marker-end", "url(#arrowhead)");
1423
+ path.addEventListener("click", (e) => {
1424
+ e.stopPropagation();
1425
+ this.selectedLinkId = link.id;
1426
+ this.selectedNodeIds.clear();
1427
+ this.selectedNodeId = undefined;
1428
+ this.syncLabelInput();
1429
+ this.options.onLinkSelect?.({
1430
+ id: link.id,
1431
+ source: link.source,
1432
+ target: link.target,
1433
+ });
1434
+ this.renderLinks();
1435
+ this.renderNodes();
1436
+ });
1437
+ path.addEventListener("dblclick", (e) => {
1438
+ e.stopPropagation();
1439
+ this.editLinkLabel(link);
1440
+ });
1441
+ this.linksGroup.appendChild(path);
1442
+ if (this.selectedLinkId === link.id) {
1443
+ const bendPoint = this.getLinkBendPoint(link, start, end);
1444
+ const handle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
1445
+ handle.classList.add("ce-diagram__bend-handle");
1446
+ handle.setAttribute("part", "bend-handle");
1447
+ handle.setAttribute("r", "7");
1448
+ handle.setAttribute("cx", String(bendPoint.x));
1449
+ handle.setAttribute("cy", String(bendPoint.y));
1450
+ handle.addEventListener("pointerdown", (event) => this.startBendDrag(event, link.id));
1451
+ this.linksGroup.appendChild(handle);
1452
+ }
1453
+ if (link.label) {
1454
+ const bendPoint = this.getLinkBendPoint(link, start, end);
1455
+ const label = document.createElementNS("http://www.w3.org/2000/svg", "text");
1456
+ label.classList.add("ce-diagram__link-label");
1457
+ label.setAttribute("part", "link-label");
1458
+ label.setAttribute("x", String(bendPoint.x));
1459
+ label.setAttribute("y", String(bendPoint.y - 12));
1460
+ label.setAttribute("text-anchor", "middle");
1461
+ label.textContent = link.label;
1462
+ this.linksGroup.appendChild(label);
1463
+ }
1464
+ });
1465
+ if (this.connectionDrag) {
1466
+ const preview = document.createElementNS("http://www.w3.org/2000/svg", "path");
1467
+ preview.classList.add("ce-diagram__link", "ce-diagram__link--preview");
1468
+ preview.setAttribute("part", "link");
1469
+ preview.setAttribute("fill", "none");
1470
+ preview.setAttribute("stroke", "rgba(37, 99, 235, 0.65)");
1471
+ preview.setAttribute("stroke-width", "2");
1472
+ preview.setAttribute("stroke-dasharray", "8 6");
1473
+ preview.setAttribute("d", this.buildConnectorPath(this.connectionDrag.start, this.connectionDrag.current));
1474
+ this.linksGroup.appendChild(preview);
1475
+ }
1476
+ if (this.marqueeSelection) {
1477
+ const { start, current } = this.marqueeSelection;
1478
+ const marquee = document.createElementNS("http://www.w3.org/2000/svg", "rect");
1479
+ marquee.classList.add("ce-diagram__marquee");
1480
+ marquee.setAttribute("part", "marquee");
1481
+ marquee.setAttribute("x", String(Math.min(start.x, current.x)));
1482
+ marquee.setAttribute("y", String(Math.min(start.y, current.y)));
1483
+ marquee.setAttribute("width", String(Math.abs(current.x - start.x)));
1484
+ marquee.setAttribute("height", String(Math.abs(current.y - start.y)));
1485
+ this.linksGroup.appendChild(marquee);
1486
+ }
1487
+ this.syncContextPanel();
1488
+ }
1489
+ buildLinkPath(link, start, end) {
1490
+ const bendPoint = this.getLinkBendPoint(link, start, end);
1491
+ if (start.x === end.x || start.y === end.y) {
1492
+ return `M ${start.x} ${start.y} L ${end.x} ${end.y}`;
1493
+ }
1494
+ return `M ${start.x} ${start.y} L ${bendPoint.x} ${start.y} L ${bendPoint.x} ${bendPoint.y} L ${end.x} ${bendPoint.y} L ${end.x} ${end.y}`;
1495
+ }
1496
+ getLinkBendPoint(link, start, end) {
1497
+ return link.points?.[0] ?? { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 };
1498
+ }
1499
+ getEdgePoint(from, to) {
1500
+ const w = from.width ?? 140;
1501
+ const h = from.height ?? 60;
1502
+ const fromCenter = { x: (from.x ?? 0) + w / 2, y: (from.y ?? 0) + h / 2 };
1503
+ const toCenter = { x: (to.x ?? 0) + (to.width ?? 140) / 2, y: (to.y ?? 0) + (to.height ?? 60) / 2 };
1504
+ const dx = toCenter.x - fromCenter.x;
1505
+ const dy = toCenter.y - fromCenter.y;
1506
+ if (Math.abs(dx) > Math.abs(dy)) {
1507
+ const x = dx > 0 ? (from.x ?? 0) + w : from.x ?? 0;
1508
+ const y = fromCenter.y;
1509
+ return { x, y };
1510
+ }
1511
+ const y = dy > 0 ? (from.y ?? 0) + h : from.y ?? 0;
1512
+ const x = fromCenter.x;
1513
+ return { x, y };
1514
+ }
1515
+ getConnectorPortPosition(node, side) {
1516
+ const width = node.width ?? 140;
1517
+ const height = node.height ?? 60;
1518
+ switch (side) {
1519
+ case "top":
1520
+ return { x: node.x + width / 2, y: node.y };
1521
+ case "right":
1522
+ return { x: node.x + width, y: node.y + height / 2 };
1523
+ case "bottom":
1524
+ return { x: node.x + width / 2, y: node.y + height };
1525
+ case "left":
1526
+ return { x: node.x, y: node.y + height / 2 };
1527
+ }
1528
+ }
1529
+ buildConnectorPath(start, end) {
1530
+ if (start.x === end.x || start.y === end.y) {
1531
+ return `M ${start.x} ${start.y} L ${end.x} ${end.y}`;
1532
+ }
1533
+ const midX = start.x + (end.x - start.x) / 2;
1534
+ return `M ${start.x} ${start.y} L ${midX} ${start.y} L ${midX} ${end.y} L ${end.x} ${end.y}`;
1535
+ }
1536
+ updateStatus(text) {
1537
+ if (this.statusEl) {
1538
+ this.statusEl.textContent = text;
1539
+ }
1540
+ }
1541
+ handleWheel(event) {
1542
+ event.preventDefault();
1543
+ const delta = event.deltaY < 0 ? 0.1 : -0.1;
1544
+ this.zoomBy(delta, { center: { x: event.clientX, y: event.clientY } });
1545
+ }
1546
+ zoomBy(delta, opts) {
1547
+ const next = Math.min(ZOOM_MAX, Math.max(ZOOM_MIN, this.currentScale + delta));
1548
+ this.currentScale = next;
1549
+ this.applyTransform(opts?.center);
1550
+ }
1551
+ resetView() {
1552
+ this.currentScale = 1;
1553
+ this.pan = { x: 0, y: 0 };
1554
+ this.applyTransform();
1555
+ }
1556
+ startPan(event) {
1557
+ const target = event.target;
1558
+ if (target?.closest?.(".ce-diagram__node, .ce-diagram__handle, .ce-diagram__connector-handle, .ce-diagram__link")) {
1559
+ return;
1560
+ }
1561
+ if (event.shiftKey && this.svg) {
1562
+ const rect = this.svg.getBoundingClientRect();
1563
+ const point = {
1564
+ x: (event.clientX - rect.left - this.pan.x) / this.currentScale,
1565
+ y: (event.clientY - rect.top - this.pan.y) / this.currentScale,
1566
+ };
1567
+ this.marqueeSelection = { start: point, current: point };
1568
+ this.renderLinks();
1569
+ return;
1570
+ }
1571
+ this.isPanning = true;
1572
+ this.panStart = { x: event.clientX - this.pan.x, y: event.clientY - this.pan.y };
1573
+ }
1574
+ handlePan(event) {
1575
+ this.handleConnectorDrag(event);
1576
+ this.handleBendDrag(event);
1577
+ if (this.marqueeSelection) {
1578
+ if (!this.svg)
1579
+ return;
1580
+ const rect = this.svg.getBoundingClientRect();
1581
+ this.marqueeSelection.current = {
1582
+ x: (event.clientX - rect.left - this.pan.x) / this.currentScale,
1583
+ y: (event.clientY - rect.top - this.pan.y) / this.currentScale,
1584
+ };
1585
+ this.applyMarqueeSelection();
1586
+ this.renderLinks();
1587
+ this.renderNodes();
1588
+ return;
1589
+ }
1590
+ if (!this.isPanning || !this.panStart)
1591
+ return;
1592
+ this.pan = {
1593
+ x: event.clientX - this.panStart.x,
1594
+ y: event.clientY - this.panStart.y,
1595
+ };
1596
+ this.applyTransform();
1597
+ }
1598
+ endPan() {
1599
+ this.isPanning = false;
1600
+ this.panStart = undefined;
1601
+ this.bendDrag = undefined;
1602
+ if (this.marqueeSelection) {
1603
+ this.marqueeSelection = undefined;
1604
+ this.renderLinks();
1605
+ this.renderNodes();
1606
+ }
1607
+ }
1608
+ applyTransform(center) {
1609
+ if (!this.svg)
1610
+ return;
1611
+ const originX = center?.x ?? this.svg.clientWidth / 2;
1612
+ const originY = center?.y ?? this.svg.clientHeight / 2;
1613
+ const translate = `translate(${this.pan.x}px, ${this.pan.y}px)`;
1614
+ const scale = `scale(${this.currentScale})`;
1615
+ this.svg.style.transform = `${translate} ${scale}`;
1616
+ this.svg.style.transformOrigin = `${originX}px ${originY}px`;
1617
+ }
1618
+ startNodeDrag(event, node) {
1619
+ event.stopPropagation();
1620
+ if (this.connectMode) {
1621
+ // skip dragging while in connect mode to allow click selection
1622
+ return;
1623
+ }
1624
+ if (event.detail > 1 || this.inlineEditor) {
1625
+ return;
1626
+ }
1627
+ if (!this.svg)
1628
+ return;
1629
+ if (!this.nodesGroup?.contains(event.currentTarget))
1630
+ return;
1631
+ const shouldRefreshSelection = this.selectedNodeId !== node.id;
1632
+ this.selectedNodeId = node.id;
1633
+ this.selectedNodeIds = new Set([node.id]);
1634
+ this.selectedLinkId = undefined;
1635
+ this.syncLabelInput();
1636
+ const svgRect = this.svg.getBoundingClientRect();
1637
+ const offsetX = (event.clientX - svgRect.left - this.pan.x) / this.currentScale - node.x;
1638
+ const offsetY = (event.clientY - svgRect.top - this.pan.y) / this.currentScale - node.y;
1639
+ this.dragCandidate = { id: node.id, offsetX, offsetY, startX: event.clientX, startY: event.clientY };
1640
+ const move = (e) => this.handleNodeDrag(e);
1641
+ const up = () => {
1642
+ window.removeEventListener("pointermove", move);
1643
+ window.removeEventListener("pointerup", up);
1644
+ this.dragCandidate = undefined;
1645
+ this.draggingNode = undefined;
1646
+ };
1647
+ window.addEventListener("pointermove", move);
1648
+ window.addEventListener("pointerup", up);
1649
+ if (shouldRefreshSelection) {
1650
+ this.syncToolbarState();
1651
+ this.syncContextPanel();
1652
+ }
1653
+ }
1654
+ handleNodeDrag(event) {
1655
+ if (!this.svg)
1656
+ return;
1657
+ if (!this.draggingNode && this.dragCandidate) {
1658
+ const dx = event.clientX - this.dragCandidate.startX;
1659
+ const dy = event.clientY - this.dragCandidate.startY;
1660
+ if (Math.hypot(dx, dy) > 3) {
1661
+ this.pushHistorySnapshot();
1662
+ const selectedIds = this.selectedNodeIds.has(this.dragCandidate.id)
1663
+ ? Array.from(this.selectedNodeIds)
1664
+ : [this.dragCandidate.id];
1665
+ this.draggingNode = {
1666
+ id: this.dragCandidate.id,
1667
+ offsetX: this.dragCandidate.offsetX,
1668
+ offsetY: this.dragCandidate.offsetY,
1669
+ originX: this.nodes.find((n) => n.id === this.dragCandidate.id)?.x ?? 0,
1670
+ originY: this.nodes.find((n) => n.id === this.dragCandidate.id)?.y ?? 0,
1671
+ selectedOrigins: selectedIds
1672
+ .map((id) => this.nodes.find((n) => n.id === id))
1673
+ .filter((node) => Boolean(node))
1674
+ .map((node) => ({ id: node.id, x: node.x, y: node.y })),
1675
+ };
1676
+ }
1677
+ else {
1678
+ return;
1679
+ }
1680
+ }
1681
+ if (!this.draggingNode)
1682
+ return;
1683
+ const node = this.nodes.find((n) => n.id === this.draggingNode.id);
1684
+ if (!node)
1685
+ return;
1686
+ const svgRect = this.svg.getBoundingClientRect();
1687
+ const x = (event.clientX - svgRect.left - this.pan.x) / this.currentScale - this.draggingNode.offsetX;
1688
+ const y = (event.clientY - svgRect.top - this.pan.y) / this.currentScale - this.draggingNode.offsetY;
1689
+ const dx = this.snap(x) - this.draggingNode.originX;
1690
+ const dy = this.snap(y) - this.draggingNode.originY;
1691
+ this.draggingNode.selectedOrigins.forEach((origin) => {
1692
+ const target = this.nodes.find((entry) => entry.id === origin.id);
1693
+ if (!target)
1694
+ return;
1695
+ target.x = this.snap(origin.x + dx);
1696
+ target.y = this.snap(origin.y + dy);
1697
+ });
1698
+ this.renderLinks();
1699
+ this.renderNodes();
1700
+ }
1701
+ startBendDrag(event, linkId) {
1702
+ event.stopPropagation();
1703
+ this.pushHistorySnapshot();
1704
+ this.bendDrag = { linkId };
1705
+ }
1706
+ handleBendDrag(event) {
1707
+ if (!this.bendDrag || !this.svg)
1708
+ return;
1709
+ const link = this.links.find((entry) => entry.id === this.bendDrag?.linkId);
1710
+ if (!link)
1711
+ return;
1712
+ const rect = this.svg.getBoundingClientRect();
1713
+ link.points = [
1714
+ {
1715
+ x: (event.clientX - rect.left - this.pan.x) / this.currentScale,
1716
+ y: (event.clientY - rect.top - this.pan.y) / this.currentScale,
1717
+ },
1718
+ ];
1719
+ this.renderLinks();
1720
+ }
1721
+ startResize(event, node, corner) {
1722
+ event.stopPropagation();
1723
+ this.pushHistorySnapshot();
1724
+ this.resizing = { id: node.id, corner, origin: { x: node.x, y: node.y } };
1725
+ const move = (e) => this.handleResize(e);
1726
+ const up = () => {
1727
+ window.removeEventListener("pointermove", move);
1728
+ window.removeEventListener("pointerup", up);
1729
+ this.resizing = undefined;
1730
+ };
1731
+ window.addEventListener("pointermove", move);
1732
+ window.addEventListener("pointerup", up);
1733
+ }
1734
+ startConnectorDrag(event, node, side) {
1735
+ event.stopPropagation();
1736
+ if (!this.svg) {
1737
+ return;
1738
+ }
1739
+ this.selectedNodeId = node.id;
1740
+ this.connectMode = true;
1741
+ this.connectSourceId = node.id;
1742
+ const start = this.getConnectorPortPosition(node, side);
1743
+ this.connectionDrag = { sourceId: node.id, side, start, current: start };
1744
+ this.detachConnectorDragListeners();
1745
+ this.connectorDragMoveHandler = (moveEvent) => this.handleConnectorDrag(moveEvent);
1746
+ this.connectorDragUpHandler = (upEvent) => this.finishConnectorDrag(upEvent);
1747
+ window.addEventListener("pointermove", this.connectorDragMoveHandler);
1748
+ window.addEventListener("pointerup", this.connectorDragUpHandler);
1749
+ const toolbar = this.el.querySelector(".ce-diagram__toolbar");
1750
+ toolbar?.querySelector('[data-action="connect"]')?.classList.add("is-active");
1751
+ if (toolbar) {
1752
+ toolbar.dataset.mode = "connect";
1753
+ }
1754
+ this.updateStatus("Drag to another shape to create a connector");
1755
+ this.renderNodes();
1756
+ this.renderLinks();
1757
+ }
1758
+ handleConnectorDrag(event) {
1759
+ if (!this.connectionDrag || !this.svg) {
1760
+ return;
1761
+ }
1762
+ const rect = this.svg.getBoundingClientRect();
1763
+ this.connectionDrag.current = {
1764
+ x: (event.clientX - rect.left - this.pan.x) / this.currentScale,
1765
+ y: (event.clientY - rect.top - this.pan.y) / this.currentScale,
1766
+ };
1767
+ this.renderLinks();
1768
+ }
1769
+ finishConnectorDrag(event) {
1770
+ if (!this.connectionDrag) {
1771
+ return;
1772
+ }
1773
+ const target = event.target;
1774
+ const targetNodeEl = target?.closest?.(".ce-diagram__node");
1775
+ const sourceId = this.connectionDrag.sourceId;
1776
+ this.connectionDrag = undefined;
1777
+ this.detachConnectorDragListeners();
1778
+ if (!targetNodeEl?.dataset.id || targetNodeEl.dataset.id === sourceId) {
1779
+ this.renderLinks();
1780
+ this.renderNodes();
1781
+ return;
1782
+ }
1783
+ this.createLink(sourceId, targetNodeEl.dataset.id);
1784
+ }
1785
+ handleResize(event) {
1786
+ if (!this.resizing || !this.svg)
1787
+ return;
1788
+ const node = this.nodes.find((n) => n.id === this.resizing.id);
1789
+ if (!node)
1790
+ return;
1791
+ const rect = this.svg.getBoundingClientRect();
1792
+ const localX = (event.clientX - rect.left - this.pan.x) / this.currentScale;
1793
+ const localY = (event.clientY - rect.top - this.pan.y) / this.currentScale;
1794
+ const minSize = 40;
1795
+ switch (this.resizing.corner) {
1796
+ case "nw": {
1797
+ const newWidth = Math.max(minSize, (node.width ?? 140) + (node.x - localX));
1798
+ const newHeight = Math.max(minSize, (node.height ?? 60) + (node.y - localY));
1799
+ node.x = localX;
1800
+ node.y = localY;
1801
+ node.width = newWidth;
1802
+ node.height = newHeight;
1803
+ break;
1804
+ }
1805
+ case "ne": {
1806
+ const newWidth = Math.max(minSize, localX - node.x);
1807
+ const newHeight = Math.max(minSize, (node.height ?? 60) + (node.y - localY));
1808
+ node.y = localY;
1809
+ node.width = newWidth;
1810
+ node.height = newHeight;
1811
+ break;
1812
+ }
1813
+ case "sw": {
1814
+ const newWidth = Math.max(minSize, (node.width ?? 140) + (node.x - localX));
1815
+ const newHeight = Math.max(minSize, localY - node.y);
1816
+ node.x = localX;
1817
+ node.width = newWidth;
1818
+ node.height = newHeight;
1819
+ break;
1820
+ }
1821
+ case "se": {
1822
+ node.width = Math.max(minSize, this.snap(localX - node.x));
1823
+ node.height = Math.max(minSize, this.snap(localY - node.y));
1824
+ break;
1825
+ }
1826
+ }
1827
+ this.renderLinks();
1828
+ this.renderNodes();
1829
+ }
1830
+ handleConnectClick(node) {
1831
+ if (!this.connectMode)
1832
+ return;
1833
+ if (!this.connectSourceId) {
1834
+ this.connectSourceId = node.id;
1835
+ this.selectedNodeId = node.id;
1836
+ this.renderNodes();
1837
+ this.updateStatus("Now click a target node to finish the connector");
1838
+ return;
1839
+ }
1840
+ if (this.connectSourceId === node.id)
1841
+ return;
1842
+ this.createLink(this.connectSourceId, node.id);
1843
+ }
1844
+ // Drop new nodes from toolbox
1845
+ handleDrop(event) {
1846
+ event.preventDefault();
1847
+ if (!this.svg)
1848
+ return;
1849
+ const data = event.dataTransfer?.getData("application/json") || event.dataTransfer?.getData("text/plain");
1850
+ if (!data)
1851
+ return;
1852
+ let tool;
1853
+ try {
1854
+ tool = JSON.parse(data);
1855
+ }
1856
+ catch {
1857
+ return;
1858
+ }
1859
+ const rect = this.svg.getBoundingClientRect();
1860
+ const x = (event.clientX - rect.left - this.pan.x) / this.currentScale - (tool.width ?? 140) / 2;
1861
+ const y = (event.clientY - rect.top - this.pan.y) / this.currentScale - (tool.height ?? 60) / 2;
1862
+ const id = `node-${Date.now().toString(36)}`;
1863
+ this.pushHistorySnapshot();
1864
+ this.nodes.push({
1865
+ id,
1866
+ label: tool.label,
1867
+ x: this.snap(x),
1868
+ y: this.snap(y),
1869
+ type: tool.type,
1870
+ icon: tool.icon,
1871
+ width: tool.width ?? 140,
1872
+ height: tool.height ?? 60,
1873
+ });
1874
+ this.selectedNodeId = id;
1875
+ this.selectedNodeIds = new Set([id]);
1876
+ this.selectedLinkId = undefined;
1877
+ this.syncLabelInput();
1878
+ this.updateStatus(`Added ${tool.label}. Double-click it to rename.`);
1879
+ if (this.editMode) {
1880
+ const newNode = this.nodes.find((n) => n.id === id);
1881
+ if (newNode) {
1882
+ this.startInlineEdit(newNode);
1883
+ }
1884
+ }
1885
+ this.renderLinks();
1886
+ this.renderNodes();
1887
+ }
1888
+ exportJSON() {
1889
+ const payload = { nodes: this.nodes, links: this.links };
1890
+ const blob = new Blob([JSON.stringify(payload, null, 2)], { type: "application/json" });
1891
+ const url = URL.createObjectURL(blob);
1892
+ const a = document.createElement("a");
1893
+ a.href = url;
1894
+ a.download = "diagram.json";
1895
+ a.click();
1896
+ URL.revokeObjectURL(url);
1897
+ this.updateStatus("Exported diagram.json");
1898
+ }
1899
+ exportSVG() {
1900
+ const exportable = this.getExportSvg();
1901
+ if (!exportable)
1902
+ return;
1903
+ const blob = new Blob([exportable.xml], { type: "image/svg+xml;charset=utf-8" });
1904
+ const url = URL.createObjectURL(blob);
1905
+ const a = document.createElement("a");
1906
+ a.href = url;
1907
+ a.download = "diagram.svg";
1908
+ a.click();
1909
+ URL.revokeObjectURL(url);
1910
+ this.updateStatus("Exported diagram.svg");
1911
+ }
1912
+ snap(value, grid = 10) {
1913
+ return Math.round(value / grid) * grid;
1914
+ }
1915
+ editLabel(node) {
1916
+ const next = window.prompt("Edit label", node.label);
1917
+ if (next && next.trim()) {
1918
+ node.label = next.trim();
1919
+ this.renderNodes();
1920
+ }
1921
+ }
1922
+ handleInlineEditRequest(event) {
1923
+ if (this.connectMode || this.inlineEditor)
1924
+ return;
1925
+ if (this.nodeClickTimer) {
1926
+ window.clearTimeout(this.nodeClickTimer);
1927
+ this.nodeClickTimer = undefined;
1928
+ }
1929
+ const target = event.target;
1930
+ const nodeEl = target?.closest(".ce-diagram__node");
1931
+ if (!nodeEl)
1932
+ return;
1933
+ const id = nodeEl.dataset.id;
1934
+ if (!id)
1935
+ return;
1936
+ const node = this.nodes.find((n) => n.id === id);
1937
+ if (!node)
1938
+ return;
1939
+ this.startInlineEdit(node);
1940
+ }
1941
+ startInlineEdit(node) {
1942
+ if (this.connectMode || !this.svg)
1943
+ return;
1944
+ if (this.inlineEditor) {
1945
+ this.inlineEditor.remove();
1946
+ this.inlineEditor = undefined;
1947
+ }
1948
+ this.selectedNodeId = node.id;
1949
+ // Use rendered bounding box for accurate positioning
1950
+ const nodeEl = this.nodesGroup?.querySelector(`.ce-diagram__node[data-id="${node.id}"]`);
1951
+ const bbox = nodeEl?.getBoundingClientRect();
1952
+ if (!bbox || !bbox.width || !bbox.height) {
1953
+ this.editLabel(node);
1954
+ return;
1955
+ }
1956
+ const overlay = document.createElement("div");
1957
+ overlay.className = "ce-diagram__inline-overlay";
1958
+ overlay.style.position = "fixed";
1959
+ overlay.style.left = `${bbox.left}px`;
1960
+ overlay.style.top = `${bbox.top}px`;
1961
+ overlay.style.width = `${bbox.width}px`;
1962
+ overlay.style.height = `${bbox.height}px`;
1963
+ overlay.style.zIndex = "5";
1964
+ const input = document.createElement("input");
1965
+ input.type = "text";
1966
+ input.value = node.label;
1967
+ input.className = "ce-diagram__inline-input";
1968
+ input.autocomplete = "off";
1969
+ input.spellcheck = false;
1970
+ overlay.appendChild(input);
1971
+ const fullscreenRoot = document.fullscreenElement;
1972
+ const overlayHost = fullscreenRoot instanceof HTMLElement && fullscreenRoot.contains(this.el)
1973
+ ? fullscreenRoot
1974
+ : document.body;
1975
+ overlayHost.appendChild(overlay);
1976
+ this.inlineEditor = overlay;
1977
+ const cleanup = () => {
1978
+ overlay.remove();
1979
+ this.inlineEditor = undefined;
1980
+ };
1981
+ const commit = () => {
1982
+ const val = input.value.trim();
1983
+ if (val) {
1984
+ if (node.label !== val) {
1985
+ this.pushHistorySnapshot();
1986
+ }
1987
+ node.label = val;
1988
+ this.renderNodes();
1989
+ this.syncLabelInput();
1990
+ }
1991
+ cleanup();
1992
+ };
1993
+ input.addEventListener("keydown", (e) => {
1994
+ if (e.key === "Enter") {
1995
+ e.preventDefault();
1996
+ commit();
1997
+ }
1998
+ if (e.key === "Escape") {
1999
+ e.preventDefault();
2000
+ cleanup();
2001
+ }
2002
+ });
2003
+ input.addEventListener("blur", commit);
2004
+ overlay.addEventListener("pointerdown", (e) => e.stopPropagation());
2005
+ overlay.addEventListener("dblclick", (e) => e.stopPropagation());
2006
+ input.focus();
2007
+ input.select();
2008
+ }
2009
+ exportRaster(type, filename) {
2010
+ const exportable = this.getExportSvg();
2011
+ if (!exportable)
2012
+ return;
2013
+ const { xml, width, height } = exportable;
2014
+ const svg64 = btoa(unescape(encodeURIComponent(xml)));
2015
+ const image64 = "data:image/svg+xml;base64," + svg64;
2016
+ const img = new Image();
2017
+ img.onload = () => {
2018
+ const canvas = document.createElement("canvas");
2019
+ canvas.width = Math.max(1, Math.ceil(width));
2020
+ canvas.height = Math.max(1, Math.ceil(height));
2021
+ const ctx = canvas.getContext("2d");
2022
+ if (!ctx)
2023
+ return;
2024
+ ctx.fillStyle = "#ffffff";
2025
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
2026
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
2027
+ canvas.toBlob((blob) => {
2028
+ if (!blob)
2029
+ return;
2030
+ const url = URL.createObjectURL(blob);
2031
+ const a = document.createElement("a");
2032
+ a.href = url;
2033
+ a.download = filename;
2034
+ a.click();
2035
+ URL.revokeObjectURL(url);
2036
+ this.updateStatus(`Exported ${filename}`);
2037
+ }, type, type === "image/jpeg" ? 0.92 : undefined);
2038
+ };
2039
+ img.src = image64;
2040
+ }
2041
+ exportPDF() {
2042
+ const exportable = this.getExportSvg();
2043
+ if (!exportable)
2044
+ return;
2045
+ const { xml, width, height } = exportable;
2046
+ const img = new Image();
2047
+ img.onload = () => {
2048
+ const canvas = document.createElement("canvas");
2049
+ canvas.width = width;
2050
+ canvas.height = height;
2051
+ const ctx = canvas.getContext("2d");
2052
+ if (!ctx)
2053
+ return;
2054
+ ctx.fillStyle = "#ffffff";
2055
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
2056
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
2057
+ const pngUrl = canvas.toDataURL("image/png");
2058
+ const pdfWindow = window.open("");
2059
+ if (pdfWindow) {
2060
+ pdfWindow.document.write(`<img src="${pngUrl}" style="width:100%;height:auto;display:block;margin:0 auto;" />`);
2061
+ pdfWindow.document.close();
2062
+ this.updateStatus("Opened print preview for PDF export");
2063
+ }
2064
+ };
2065
+ img.src = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(xml)));
2066
+ }
2067
+ updateSelectedLabel(val) {
2068
+ if (!this.selectedNodeId)
2069
+ return;
2070
+ const node = this.nodes.find((n) => n.id === this.selectedNodeId);
2071
+ if (!node)
2072
+ return;
2073
+ node.label = val;
2074
+ this.renderNodes();
2075
+ }
2076
+ syncLabelInput() {
2077
+ if (!this.labelInput) {
2078
+ return;
2079
+ }
2080
+ if (this.selectedNodeIds.size > 1) {
2081
+ this.labelInput.value = "";
2082
+ this.labelInput.disabled = true;
2083
+ this.labelInput.placeholder = `${this.selectedNodeIds.size} nodes selected`;
2084
+ return;
2085
+ }
2086
+ if (this.selectedNodeId) {
2087
+ const node = this.nodes.find((n) => n.id === this.selectedNodeId);
2088
+ this.labelInput.disabled = false;
2089
+ this.labelInput.placeholder = "Edit selected label";
2090
+ this.labelInput.value = node?.label ?? "";
2091
+ return;
2092
+ }
2093
+ this.labelInput.value = "";
2094
+ this.labelInput.disabled = true;
2095
+ this.labelInput.placeholder = "Select a node to rename";
2096
+ }
2097
+ handleCanvasClick(event) {
2098
+ if (this.connectMode)
2099
+ return;
2100
+ // Only clear when clicking the empty canvas, not on nodes/links/handles
2101
+ const target = event.target;
2102
+ const isNode = target?.closest?.(".ce-diagram__node");
2103
+ if (isNode)
2104
+ return;
2105
+ if (this.inlineEditor) {
2106
+ this.inlineEditor.remove();
2107
+ this.inlineEditor = undefined;
2108
+ }
2109
+ this.selectedNodeId = undefined;
2110
+ this.selectedNodeIds.clear();
2111
+ this.selectedLinkId = undefined;
2112
+ this.syncLabelInput();
2113
+ this.renderLinks();
2114
+ this.renderNodes();
2115
+ }
2116
+ handleKeyDown(event) {
2117
+ const meta = event.metaKey || event.ctrlKey;
2118
+ if (meta && event.key.toLowerCase() === "z" && !event.shiftKey) {
2119
+ event.preventDefault();
2120
+ this.undo();
2121
+ return;
2122
+ }
2123
+ if (meta && (event.key.toLowerCase() === "y" || (event.shiftKey && event.key.toLowerCase() === "z"))) {
2124
+ event.preventDefault();
2125
+ this.redo();
2126
+ return;
2127
+ }
2128
+ if (meta && event.key.toLowerCase() === "d") {
2129
+ event.preventDefault();
2130
+ this.duplicateSelectedNode();
2131
+ return;
2132
+ }
2133
+ if (meta && event.key.toLowerCase() === "a") {
2134
+ event.preventDefault();
2135
+ this.selectedNodeIds = new Set(this.nodes.map((node) => node.id));
2136
+ this.selectedNodeId = this.nodes.at(0)?.id;
2137
+ this.selectedLinkId = undefined;
2138
+ this.syncLabelInput();
2139
+ this.renderNodes();
2140
+ return;
2141
+ }
2142
+ if (event.key === "Delete" || event.key === "Backspace") {
2143
+ event.preventDefault();
2144
+ if (this.selectedLinkId) {
2145
+ this.deleteSelectedLink();
2146
+ }
2147
+ else {
2148
+ this.deleteSelectedNode();
2149
+ }
2150
+ return;
2151
+ }
2152
+ if (event.key === "Escape") {
2153
+ this.selectedNodeId = undefined;
2154
+ this.selectedNodeIds.clear();
2155
+ this.selectedLinkId = undefined;
2156
+ this.syncLabelInput();
2157
+ this.renderLinks();
2158
+ this.renderNodes();
2159
+ }
2160
+ }
2161
+ applyMarqueeSelection() {
2162
+ if (!this.marqueeSelection) {
2163
+ return;
2164
+ }
2165
+ const { start, current } = this.marqueeSelection;
2166
+ const minX = Math.min(start.x, current.x);
2167
+ const maxX = Math.max(start.x, current.x);
2168
+ const minY = Math.min(start.y, current.y);
2169
+ const maxY = Math.max(start.y, current.y);
2170
+ const selected = this.nodes.filter((node) => {
2171
+ const width = node.width ?? 140;
2172
+ const height = node.height ?? 60;
2173
+ return node.x >= minX && node.y >= minY && node.x + width <= maxX && node.y + height <= maxY;
2174
+ });
2175
+ this.selectedNodeIds = new Set(selected.map((node) => node.id));
2176
+ this.selectedNodeId = selected.at(0)?.id;
2177
+ this.selectedLinkId = undefined;
2178
+ this.syncLabelInput();
2179
+ }
2180
+ createLink(sourceId, targetId) {
2181
+ const targetNode = this.nodes.find((node) => node.id === targetId);
2182
+ if (!targetNode) {
2183
+ return;
2184
+ }
2185
+ const duplicate = this.links.some((link) => link.source === sourceId && link.target === targetId);
2186
+ if (!duplicate) {
2187
+ this.pushHistorySnapshot();
2188
+ this.links.push({
2189
+ id: `link-${Date.now().toString(36)}`,
2190
+ source: sourceId,
2191
+ target: targetId,
2192
+ });
2193
+ }
2194
+ this.connectSourceId = undefined;
2195
+ const toolbar = this.el.querySelector(".ce-diagram__toolbar") ?? undefined;
2196
+ this.clearInteractionModes(toolbar);
2197
+ this.updateStatus(`Connected ${targetNode.label}`);
2198
+ this.renderLinks();
2199
+ this.renderNodes();
2200
+ }
2201
+ duplicateSelectedNode() {
2202
+ const selectedIds = this.selectedNodeIds.size ? Array.from(this.selectedNodeIds) : this.selectedNodeId ? [this.selectedNodeId] : [];
2203
+ if (!selectedIds.length) {
2204
+ this.updateStatus("Select a shape to duplicate");
2205
+ return;
2206
+ }
2207
+ this.pushHistorySnapshot();
2208
+ const duplicates = [];
2209
+ selectedIds.forEach((id, index) => {
2210
+ const source = this.nodes.find((node) => node.id === id);
2211
+ if (!source)
2212
+ return;
2213
+ duplicates.push({
2214
+ ...structuredClone(source),
2215
+ id: `node-${Date.now().toString(36)}-${index}`,
2216
+ label: `${source.label} Copy`,
2217
+ x: this.snap(source.x + 40),
2218
+ y: this.snap(source.y + 40),
2219
+ });
2220
+ });
2221
+ this.nodes.push(...duplicates);
2222
+ this.selectedNodeIds = new Set(duplicates.map((node) => node.id));
2223
+ this.selectedNodeId = duplicates.at(0)?.id;
2224
+ this.selectedLinkId = undefined;
2225
+ this.syncLabelInput();
2226
+ this.renderNodes();
2227
+ this.renderLinks();
2228
+ this.updateStatus(`Duplicated ${duplicates.length} shape${duplicates.length === 1 ? "" : "s"}`);
2229
+ }
2230
+ deleteSelectedNode() {
2231
+ if (this.selectedLinkId) {
2232
+ this.deleteSelectedLink();
2233
+ return;
2234
+ }
2235
+ const selectedIds = this.selectedNodeIds.size ? Array.from(this.selectedNodeIds) : this.selectedNodeId ? [this.selectedNodeId] : [];
2236
+ if (!selectedIds.length) {
2237
+ this.updateStatus("Select a shape to delete");
2238
+ return;
2239
+ }
2240
+ this.pushHistorySnapshot();
2241
+ this.nodes = this.nodes.filter((node) => !selectedIds.includes(node.id));
2242
+ this.links = this.links.filter((link) => !selectedIds.includes(link.source) && !selectedIds.includes(link.target));
2243
+ this.selectedNodeId = undefined;
2244
+ this.selectedNodeIds.clear();
2245
+ this.selectedLinkId = undefined;
2246
+ this.syncLabelInput();
2247
+ this.renderLinks();
2248
+ this.renderNodes();
2249
+ this.updateStatus(`Deleted ${selectedIds.length} shape${selectedIds.length === 1 ? "" : "s"}`);
2250
+ }
2251
+ deleteSelectedLink() {
2252
+ if (!this.selectedLinkId)
2253
+ return;
2254
+ this.pushHistorySnapshot();
2255
+ this.links = this.links.filter((link) => link.id !== this.selectedLinkId);
2256
+ this.selectedLinkId = undefined;
2257
+ this.renderLinks();
2258
+ this.renderNodes();
2259
+ this.updateStatus("Deleted connector");
2260
+ }
2261
+ editLinkLabel(link) {
2262
+ const next = window.prompt("Connector label or condition", link.label ?? "");
2263
+ if (next === null)
2264
+ return;
2265
+ this.pushHistorySnapshot();
2266
+ link.label = next.trim() || undefined;
2267
+ this.renderLinks();
2268
+ this.updateStatus(link.label ? `Updated connector: ${link.label}` : "Cleared connector label");
2269
+ }
2270
+ getSelectedNodes() {
2271
+ const ids = this.selectedNodeIds.size ? Array.from(this.selectedNodeIds) : this.selectedNodeId ? [this.selectedNodeId] : [];
2272
+ return ids
2273
+ .map((id) => this.nodes.find((node) => node.id === id))
2274
+ .filter((node) => Boolean(node));
2275
+ }
2276
+ alignSelection(mode) {
2277
+ const nodes = this.getSelectedNodes();
2278
+ if (nodes.length < 2) {
2279
+ this.updateStatus("Select at least two shapes to align");
2280
+ return;
2281
+ }
2282
+ this.pushHistorySnapshot();
2283
+ if (mode === "left") {
2284
+ const edge = Math.min(...nodes.map((node) => node.x));
2285
+ nodes.forEach((node) => (node.x = edge));
2286
+ }
2287
+ else if (mode === "center") {
2288
+ const center = nodes.reduce((sum, node) => sum + node.x + (node.width ?? 140) / 2, 0) / nodes.length;
2289
+ nodes.forEach((node) => (node.x = this.snap(center - (node.width ?? 140) / 2)));
2290
+ }
2291
+ else if (mode === "right") {
2292
+ const edge = Math.max(...nodes.map((node) => node.x + (node.width ?? 140)));
2293
+ nodes.forEach((node) => (node.x = this.snap(edge - (node.width ?? 140))));
2294
+ }
2295
+ else if (mode === "top") {
2296
+ const edge = Math.min(...nodes.map((node) => node.y));
2297
+ nodes.forEach((node) => (node.y = edge));
2298
+ }
2299
+ else if (mode === "middle") {
2300
+ const middle = nodes.reduce((sum, node) => sum + node.y + (node.height ?? 60) / 2, 0) / nodes.length;
2301
+ nodes.forEach((node) => (node.y = this.snap(middle - (node.height ?? 60) / 2)));
2302
+ }
2303
+ else if (mode === "bottom") {
2304
+ const edge = Math.max(...nodes.map((node) => node.y + (node.height ?? 60)));
2305
+ nodes.forEach((node) => (node.y = this.snap(edge - (node.height ?? 60))));
2306
+ }
2307
+ this.renderLinks();
2308
+ this.renderNodes();
2309
+ this.updateStatus(`Aligned ${nodes.length} shapes`);
2310
+ }
2311
+ distributeSelection(axis) {
2312
+ const nodes = this.getSelectedNodes();
2313
+ if (nodes.length < 3) {
2314
+ this.updateStatus("Select at least three shapes to distribute");
2315
+ return;
2316
+ }
2317
+ this.pushHistorySnapshot();
2318
+ const sorted = [...nodes].sort((a, b) => (axis === "horizontal" ? a.x - b.x : a.y - b.y));
2319
+ const first = sorted[0];
2320
+ const last = sorted[sorted.length - 1];
2321
+ const span = axis === "horizontal"
2322
+ ? last.x - first.x
2323
+ : last.y - first.y;
2324
+ const step = span / (sorted.length - 1 || 1);
2325
+ sorted.forEach((node, index) => {
2326
+ if (axis === "horizontal") {
2327
+ node.x = this.snap(first.x + step * index);
2328
+ }
2329
+ else {
2330
+ node.y = this.snap(first.y + step * index);
2331
+ }
2332
+ });
2333
+ this.renderLinks();
2334
+ this.renderNodes();
2335
+ this.updateStatus(`Distributed ${nodes.length} shapes`);
2336
+ }
2337
+ syncToolbarState() {
2338
+ const toolbar = this.el.querySelector(".ce-diagram__toolbar");
2339
+ if (!toolbar) {
2340
+ return;
2341
+ }
2342
+ const selectedOnly = ["edit-label", "duplicate-node", "delete-node"];
2343
+ const hasNodeSelection = this.selectedNodeIds.size > 0 || Boolean(this.selectedNodeId);
2344
+ selectedOnly.forEach((actionId) => {
2345
+ const button = toolbar.querySelector(`[data-action="${actionId}"]`);
2346
+ if (button) {
2347
+ if (actionId === "edit-label") {
2348
+ button.disabled = !this.selectedNodeId || this.selectedNodeIds.size > 1 || Boolean(this.selectedLinkId);
2349
+ }
2350
+ else {
2351
+ button.disabled = !hasNodeSelection && !this.selectedLinkId;
2352
+ }
2353
+ }
2354
+ });
2355
+ const undoButton = toolbar.querySelector('[data-action="undo"]');
2356
+ const redoButton = toolbar.querySelector('[data-action="redo"]');
2357
+ const multiArrange = [
2358
+ "align-left",
2359
+ "align-center",
2360
+ "align-right",
2361
+ "distribute-horizontal",
2362
+ "align-top",
2363
+ "align-middle",
2364
+ "align-bottom",
2365
+ "distribute-vertical",
2366
+ ];
2367
+ const selectedCount = this.getSelectedNodes().length;
2368
+ multiArrange.forEach((actionId) => {
2369
+ const button = toolbar.querySelector(`[data-action="${actionId}"]`);
2370
+ if (button) {
2371
+ const needsThree = actionId.includes("distribute");
2372
+ button.disabled = needsThree ? selectedCount < 3 : selectedCount < 2;
2373
+ }
2374
+ });
2375
+ if (undoButton) {
2376
+ undoButton.disabled = this.historyPast.length === 0;
2377
+ }
2378
+ if (redoButton) {
2379
+ redoButton.disabled = this.historyFuture.length === 0;
2380
+ }
2381
+ }
2382
+ pushHistorySnapshot() {
2383
+ this.historyPast.push({
2384
+ nodes: structuredClone(this.nodes),
2385
+ links: structuredClone(this.links),
2386
+ });
2387
+ if (this.historyPast.length > 50) {
2388
+ this.historyPast.shift();
2389
+ }
2390
+ this.historyFuture = [];
2391
+ this.syncToolbarState();
2392
+ }
2393
+ undo() {
2394
+ const previous = this.historyPast.pop();
2395
+ if (!previous) {
2396
+ return;
2397
+ }
2398
+ this.historyFuture.push({
2399
+ nodes: structuredClone(this.nodes),
2400
+ links: structuredClone(this.links),
2401
+ });
2402
+ this.nodes = structuredClone(previous.nodes);
2403
+ this.links = structuredClone(previous.links);
2404
+ this.selectedNodeId = undefined;
2405
+ this.selectedNodeIds.clear();
2406
+ this.selectedLinkId = undefined;
2407
+ this.syncLabelInput();
2408
+ this.renderLinks();
2409
+ this.renderNodes();
2410
+ this.updateStatus("Undid last change");
2411
+ }
2412
+ redo() {
2413
+ const next = this.historyFuture.pop();
2414
+ if (!next) {
2415
+ return;
2416
+ }
2417
+ this.historyPast.push({
2418
+ nodes: structuredClone(this.nodes),
2419
+ links: structuredClone(this.links),
2420
+ });
2421
+ this.nodes = structuredClone(next.nodes);
2422
+ this.links = structuredClone(next.links);
2423
+ this.selectedNodeId = undefined;
2424
+ this.selectedNodeIds.clear();
2425
+ this.selectedLinkId = undefined;
2426
+ this.syncLabelInput();
2427
+ this.renderLinks();
2428
+ this.renderNodes();
2429
+ this.updateStatus("Redid last change");
2430
+ }
2431
+ detachConnectorDragListeners() {
2432
+ if (this.connectorDragMoveHandler) {
2433
+ window.removeEventListener("pointermove", this.connectorDragMoveHandler);
2434
+ this.connectorDragMoveHandler = undefined;
2435
+ }
2436
+ if (this.connectorDragUpHandler) {
2437
+ window.removeEventListener("pointerup", this.connectorDragUpHandler);
2438
+ this.connectorDragUpHandler = undefined;
2439
+ }
2440
+ }
2441
+ getExportSvg() {
2442
+ if (!this.svg)
2443
+ return null;
2444
+ const clone = this.svg.cloneNode(true);
2445
+ clone.removeAttribute("style");
2446
+ const width = this.svg.clientWidth || this.svg.getBoundingClientRect().width;
2447
+ const height = this.svg.clientHeight || this.svg.getBoundingClientRect().height;
2448
+ clone.setAttribute("width", String(width));
2449
+ clone.setAttribute("height", String(height));
2450
+ // Hide icons for a cleaner export
2451
+ clone.querySelectorAll(".ce-diagram__node-icon").forEach((icon) => icon.remove());
2452
+ const serializer = new XMLSerializer();
2453
+ const xml = serializer.serializeToString(clone);
2454
+ return { xml, width, height };
2455
+ }
2456
+ getNodePalette() {
2457
+ if (this.options.theme === "dark") {
2458
+ return {
2459
+ fill: "rgba(96, 165, 250, 0.18)",
2460
+ stroke: "rgba(96, 165, 250, 0.6)",
2461
+ label: "#e2e8f0",
2462
+ };
2463
+ }
2464
+ return {
2465
+ fill: "rgba(37, 99, 235, 0.12)",
2466
+ stroke: "rgba(37, 99, 235, 0.55)",
2467
+ label: "#0f172a",
2468
+ };
2469
+ }
2470
+ }
2471
+ //# sourceMappingURL=Diagram.js.map