@nuraly/lumenui 0.2.1 → 0.3.2

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 (549) hide show
  1. package/dist/cdn.js +1 -0
  2. package/dist/nuralyui.bundle.js +3434 -2085
  3. package/dist/nuralyui.bundle.js.gz +0 -0
  4. package/dist/src/components/button/controllers/base.controller.d.ts +15 -0
  5. package/dist/src/components/button/controllers/base.controller.js +13 -0
  6. package/dist/src/components/button/controllers/index.d.ts +10 -0
  7. package/dist/src/components/button/controllers/index.js +10 -0
  8. package/dist/src/components/button/controllers/keyboard.controller.d.ts +32 -0
  9. package/dist/src/components/button/controllers/keyboard.controller.js +78 -0
  10. package/dist/src/components/button/controllers/link.controller.d.ts +30 -0
  11. package/dist/src/components/button/controllers/link.controller.js +75 -0
  12. package/dist/src/components/button/controllers/ripple.controller.d.ts +23 -0
  13. package/dist/src/components/button/controllers/ripple.controller.js +69 -0
  14. package/dist/src/components/button/interfaces/base-controller.interface.d.ts +61 -0
  15. package/dist/src/components/button/interfaces/base-controller.interface.js +7 -0
  16. package/dist/src/components/button/interfaces/index.d.ts +2 -0
  17. package/dist/src/components/button/interfaces/index.js +2 -0
  18. package/dist/src/components/button/test/nr-button_test.d.ts +2 -0
  19. package/dist/src/components/button/test/nr-button_test.js +91 -0
  20. package/dist/src/components/canvas/base-canvas.component.d.ts +2 -1
  21. package/dist/src/components/canvas/base-canvas.component.js +6 -0
  22. package/dist/src/components/canvas/bundle.js +1083 -491
  23. package/dist/src/components/canvas/bundle.js.gz +0 -0
  24. package/dist/src/components/canvas/canvas.constants.d.ts +1 -1
  25. package/dist/src/components/canvas/canvas.constants.js +1 -1
  26. package/dist/src/components/canvas/chatbot-panel.style.js +50 -59
  27. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.d.ts +115 -0
  28. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.js +480 -0
  29. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.d.ts +7 -0
  30. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.js +323 -0
  31. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.d.ts +162 -0
  32. package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.js +88 -0
  33. package/dist/src/components/canvas/chatbot-trigger/index.d.ts +9 -0
  34. package/dist/src/components/canvas/chatbot-trigger/index.js +12 -0
  35. package/dist/src/components/canvas/controllers/base.controller.d.ts +53 -0
  36. package/dist/src/components/canvas/controllers/base.controller.js +80 -0
  37. package/dist/src/components/canvas/controllers/clipboard.controller.d.ts +80 -0
  38. package/dist/src/components/canvas/controllers/clipboard.controller.js +300 -0
  39. package/dist/src/components/canvas/controllers/collaboration.controller.d.ts +54 -0
  40. package/dist/src/components/canvas/controllers/collaboration.controller.js +425 -0
  41. package/dist/src/components/canvas/controllers/config.controller.d.ts +61 -0
  42. package/dist/src/components/canvas/controllers/config.controller.js +118 -0
  43. package/dist/src/components/canvas/controllers/connection.controller.d.ts +69 -0
  44. package/dist/src/components/canvas/controllers/connection.controller.js +183 -0
  45. package/dist/src/components/canvas/controllers/drag.controller.d.ts +56 -0
  46. package/dist/src/components/canvas/controllers/drag.controller.js +195 -0
  47. package/dist/src/components/canvas/controllers/frame.controller.d.ts +94 -0
  48. package/dist/src/components/canvas/controllers/frame.controller.js +456 -0
  49. package/dist/src/components/canvas/controllers/index.d.ts +19 -0
  50. package/dist/src/components/canvas/controllers/index.js +32 -0
  51. package/dist/src/components/canvas/controllers/keyboard.controller.d.ts +44 -0
  52. package/dist/src/components/canvas/controllers/keyboard.controller.js +275 -0
  53. package/dist/src/components/canvas/controllers/marquee.controller.d.ts +71 -0
  54. package/dist/src/components/canvas/controllers/marquee.controller.js +128 -0
  55. package/dist/src/components/canvas/controllers/selection.controller.d.ts +85 -0
  56. package/dist/src/components/canvas/controllers/selection.controller.js +202 -0
  57. package/dist/src/components/canvas/controllers/touch.controller.d.ts +55 -0
  58. package/dist/src/components/canvas/controllers/touch.controller.js +299 -0
  59. package/dist/src/components/canvas/controllers/undo.controller.d.ts +100 -0
  60. package/dist/src/components/canvas/controllers/undo.controller.js +218 -0
  61. package/dist/src/components/canvas/controllers/viewport.controller.d.ts +91 -0
  62. package/dist/src/components/canvas/controllers/viewport.controller.js +287 -0
  63. package/dist/src/components/canvas/data-node/data-node-config.component.d.ts +67 -0
  64. package/dist/src/components/canvas/data-node/data-node-config.component.js +496 -0
  65. package/dist/src/components/canvas/data-node/data-node-fields.component.d.ts +198 -0
  66. package/dist/src/components/canvas/data-node/data-node-fields.component.js +931 -0
  67. package/dist/src/components/canvas/data-node/data-node-fields.style.d.ts +7 -0
  68. package/dist/src/components/canvas/data-node/data-node-fields.style.js +448 -0
  69. package/dist/src/components/canvas/data-node/data-node.types.d.ts +245 -0
  70. package/dist/src/components/canvas/data-node/data-node.types.js +158 -0
  71. package/dist/src/components/canvas/data-node/index.d.ts +9 -0
  72. package/dist/src/components/canvas/data-node/index.js +12 -0
  73. package/dist/src/components/canvas/data-node/schema-select.component.d.ts +36 -0
  74. package/dist/src/components/canvas/data-node/schema-select.component.js +196 -0
  75. package/dist/src/components/canvas/data-node/table-select.component.d.ts +38 -0
  76. package/dist/src/components/canvas/data-node/table-select.component.js +199 -0
  77. package/dist/src/components/canvas/interfaces/canvas-host.interface.d.ts +91 -0
  78. package/dist/src/components/canvas/interfaces/canvas-host.interface.js +7 -0
  79. package/dist/src/components/canvas/interfaces/collaboration.interface.d.ts +58 -0
  80. package/dist/src/components/canvas/interfaces/collaboration.interface.js +10 -0
  81. package/dist/src/components/canvas/interfaces/index.d.ts +8 -0
  82. package/dist/src/components/canvas/interfaces/index.js +7 -0
  83. package/dist/src/components/canvas/templates/chatbot-panel.template.d.ts +28 -0
  84. package/dist/src/components/canvas/templates/chatbot-panel.template.js +49 -0
  85. package/dist/src/components/canvas/templates/config-panel.template.d.ts +22 -0
  86. package/dist/src/components/canvas/templates/config-panel.template.js +22 -0
  87. package/dist/src/components/canvas/templates/context-menu.template.d.ts +30 -0
  88. package/dist/src/components/canvas/templates/context-menu.template.js +80 -0
  89. package/dist/src/components/canvas/templates/edges.template.d.ts +41 -0
  90. package/dist/src/components/canvas/templates/edges.template.js +243 -0
  91. package/dist/src/components/canvas/templates/empty-state.template.d.ts +17 -0
  92. package/dist/src/components/canvas/templates/empty-state.template.js +25 -0
  93. package/dist/src/components/canvas/templates/frame.template.d.ts +24 -0
  94. package/dist/src/components/canvas/templates/frame.template.js +74 -0
  95. package/dist/src/components/canvas/templates/index.d.ts +18 -0
  96. package/dist/src/components/canvas/templates/index.js +30 -0
  97. package/dist/src/components/canvas/templates/palette.template.d.ts +27 -0
  98. package/dist/src/components/canvas/templates/palette.template.js +110 -0
  99. package/dist/src/components/canvas/templates/presence-bar.template.d.ts +18 -0
  100. package/dist/src/components/canvas/templates/presence-bar.template.js +60 -0
  101. package/dist/src/components/canvas/templates/remote-cursors.template.d.ts +19 -0
  102. package/dist/src/components/canvas/templates/remote-cursors.template.js +43 -0
  103. package/dist/src/components/canvas/templates/toolbar.template.d.ts +52 -0
  104. package/dist/src/components/canvas/templates/toolbar.template.js +118 -0
  105. package/dist/src/components/canvas/templates/wb-floating-toolbar.template.d.ts +30 -0
  106. package/dist/src/components/canvas/templates/wb-floating-toolbar.template.js +219 -0
  107. package/dist/src/components/canvas/templates/wb-sidebar.template.d.ts +23 -0
  108. package/dist/src/components/canvas/templates/wb-sidebar.template.js +152 -0
  109. package/dist/src/components/canvas/utils/variable-resolver.d.ts +71 -0
  110. package/dist/src/components/canvas/utils/variable-resolver.js +280 -0
  111. package/dist/src/components/canvas/workflow-canvas.component.d.ts +7 -0
  112. package/dist/src/components/canvas/workflow-canvas.component.js +52 -2
  113. package/dist/src/components/canvas/workflow-canvas.style.js +46 -55
  114. package/dist/src/components/canvas/workflow-canvas.types.d.ts +8 -1
  115. package/dist/src/components/canvas/workflow-canvas.types.js +157 -0
  116. package/dist/src/components/carousel/demo/carousel-demo.d.ts +6 -0
  117. package/dist/src/components/carousel/demo/carousel-demo.js +68 -0
  118. package/dist/src/components/chat-panel/bundle.js +216 -0
  119. package/dist/src/components/chat-panel/bundle.js.gz +0 -0
  120. package/dist/src/components/chat-panel/chat-panel.component.d.ts +85 -0
  121. package/dist/src/components/chat-panel/chat-panel.component.js +510 -0
  122. package/dist/src/components/chat-panel/chat-panel.style.d.ts +2 -0
  123. package/dist/src/components/chat-panel/chat-panel.style.js +127 -0
  124. package/dist/src/components/chat-panel/chat-panel.types.d.ts +54 -0
  125. package/dist/src/components/chat-panel/chat-panel.types.js +2 -0
  126. package/dist/src/components/chat-panel/index.d.ts +3 -0
  127. package/dist/src/components/chat-panel/index.js +2 -0
  128. package/dist/src/components/chatbot/audio-compress.d.ts +26 -0
  129. package/dist/src/components/chatbot/audio-compress.js +84 -0
  130. package/dist/src/components/chatbot/bundle.js +388 -144
  131. package/dist/src/components/chatbot/bundle.js.gz +0 -0
  132. package/dist/src/components/chatbot/chatbot-audio.controller.d.ts +35 -0
  133. package/dist/src/components/chatbot/chatbot-audio.controller.js +160 -0
  134. package/dist/src/components/chatbot/chatbot.component.d.ts +12 -0
  135. package/dist/src/components/chatbot/chatbot.component.js +41 -2
  136. package/dist/src/components/chatbot/chatbot.style.js +141 -0
  137. package/dist/src/components/chatbot/chatbot.types.d.ts +8 -0
  138. package/dist/src/components/chatbot/controllers/index.d.ts +8 -0
  139. package/dist/src/components/chatbot/controllers/index.js +8 -0
  140. package/dist/src/components/chatbot/controllers/scroll.controller.d.ts +34 -0
  141. package/dist/src/components/chatbot/controllers/scroll.controller.js +43 -0
  142. package/dist/src/components/chatbot/core/chatbot-core.controller.d.ts +283 -0
  143. package/dist/src/components/chatbot/core/chatbot-core.controller.js +824 -0
  144. package/dist/src/components/chatbot/core/event-bus.d.ts +54 -0
  145. package/dist/src/components/chatbot/core/event-bus.js +102 -0
  146. package/dist/src/components/chatbot/core/index.d.ts +12 -0
  147. package/dist/src/components/chatbot/core/index.js +15 -0
  148. package/dist/src/components/chatbot/core/types.d.ts +403 -0
  149. package/dist/src/components/chatbot/core/types.js +16 -0
  150. package/dist/src/components/chatbot/locales/locale-codes.d.ts +14 -0
  151. package/dist/src/components/chatbot/locales/locale-codes.js +23 -0
  152. package/dist/src/components/chatbot/plugins/analytics-plugin.d.ts +23 -0
  153. package/dist/src/components/chatbot/plugins/analytics-plugin.js +52 -0
  154. package/dist/src/components/chatbot/plugins/artifact-plugin.d.ts +71 -0
  155. package/dist/src/components/chatbot/plugins/artifact-plugin.js +313 -0
  156. package/dist/src/components/chatbot/plugins/chat-plugin.d.ts +44 -0
  157. package/dist/src/components/chatbot/plugins/chat-plugin.js +58 -0
  158. package/dist/src/components/chatbot/plugins/flight-card-plugin.d.ts +116 -0
  159. package/dist/src/components/chatbot/plugins/flight-card-plugin.js +594 -0
  160. package/dist/src/components/chatbot/plugins/flow-diagram-plugin.d.ts +23 -0
  161. package/dist/src/components/chatbot/plugins/flow-diagram-plugin.js +495 -0
  162. package/dist/src/components/chatbot/plugins/index.d.ts +16 -0
  163. package/dist/src/components/chatbot/plugins/index.js +17 -0
  164. package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.d.ts +43 -0
  165. package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.js +166 -0
  166. package/dist/src/components/chatbot/plugins/markdown-plugin.d.ts +26 -0
  167. package/dist/src/components/chatbot/plugins/markdown-plugin.js +68 -0
  168. package/dist/src/components/chatbot/plugins/persistence-plugin.d.ts +30 -0
  169. package/dist/src/components/chatbot/plugins/persistence-plugin.js +91 -0
  170. package/dist/src/components/chatbot/plugins/print-job-card-plugin.d.ts +110 -0
  171. package/dist/src/components/chatbot/plugins/print-job-card-plugin.js +505 -0
  172. package/dist/src/components/chatbot/plugins/selection-card-plugin.d.ts +111 -0
  173. package/dist/src/components/chatbot/plugins/selection-card-plugin.js +318 -0
  174. package/dist/src/components/chatbot/providers/custom-api-provider.d.ts +63 -0
  175. package/dist/src/components/chatbot/providers/custom-api-provider.js +240 -0
  176. package/dist/src/components/chatbot/providers/index.d.ts +16 -0
  177. package/dist/src/components/chatbot/providers/index.js +13 -0
  178. package/dist/src/components/chatbot/providers/mock-provider.d.ts +154 -0
  179. package/dist/src/components/chatbot/providers/mock-provider.js +411 -0
  180. package/dist/src/components/chatbot/providers/native-ws-provider.d.ts +184 -0
  181. package/dist/src/components/chatbot/providers/native-ws-provider.js +544 -0
  182. package/dist/src/components/chatbot/providers/openai-provider.d.ts +32 -0
  183. package/dist/src/components/chatbot/providers/openai-provider.js +246 -0
  184. package/dist/src/components/chatbot/providers/socket-provider.d.ts +159 -0
  185. package/dist/src/components/chatbot/providers/socket-provider.js +390 -0
  186. package/dist/src/components/chatbot/providers/workflow-socket-provider.d.ts +116 -0
  187. package/dist/src/components/chatbot/providers/workflow-socket-provider.js +484 -0
  188. package/dist/src/components/chatbot/storage/index.d.ts +7 -0
  189. package/dist/src/components/chatbot/storage/index.js +8 -0
  190. package/dist/src/components/chatbot/storage/storage-implementations.d.ts +43 -0
  191. package/dist/src/components/chatbot/storage/storage-implementations.js +179 -0
  192. package/dist/src/components/chatbot/templates/artifact-panel.template.d.ts +22 -0
  193. package/dist/src/components/chatbot/templates/artifact-panel.template.js +81 -0
  194. package/dist/src/components/chatbot/templates/chatbot-main.template.d.ts +49 -0
  195. package/dist/src/components/chatbot/templates/chatbot-main.template.js +115 -0
  196. package/dist/src/components/chatbot/templates/file-preview-modal.template.d.ts +19 -0
  197. package/dist/src/components/chatbot/templates/file-preview-modal.template.js +74 -0
  198. package/dist/src/components/chatbot/templates/file-upload-area.template.d.ts +19 -0
  199. package/dist/src/components/chatbot/templates/file-upload-area.template.js +29 -0
  200. package/dist/src/components/chatbot/templates/index.d.ts +15 -0
  201. package/dist/src/components/chatbot/templates/index.js +15 -0
  202. package/dist/src/components/chatbot/templates/input-box.template.d.ts +49 -0
  203. package/dist/src/components/chatbot/templates/input-box.template.js +317 -0
  204. package/dist/src/components/chatbot/templates/message.template.d.ts +31 -0
  205. package/dist/src/components/chatbot/templates/message.template.js +214 -0
  206. package/dist/src/components/chatbot/templates/suggestion.template.d.ts +20 -0
  207. package/dist/src/components/chatbot/templates/suggestion.template.js +40 -0
  208. package/dist/src/components/chatbot/templates/thread-sidebar.template.d.ts +24 -0
  209. package/dist/src/components/chatbot/templates/thread-sidebar.template.js +160 -0
  210. package/dist/src/components/chatbot/templates/url-modal.template.d.ts +25 -0
  211. package/dist/src/components/chatbot/templates/url-modal.template.js +100 -0
  212. package/dist/src/components/chatbot/utils/format.d.ts +23 -0
  213. package/dist/src/components/chatbot/utils/format.js +84 -0
  214. package/dist/src/components/chatbot/utils/index.d.ts +7 -0
  215. package/dist/src/components/chatbot/utils/index.js +7 -0
  216. package/dist/src/components/checkbox/mixins/checkbox-event-mixin.d.ts +87 -0
  217. package/dist/src/components/checkbox/mixins/checkbox-event-mixin.js +94 -0
  218. package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.d.ts +55 -0
  219. package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.js +57 -0
  220. package/dist/src/components/checkbox/mixins/index.d.ts +10 -0
  221. package/dist/src/components/checkbox/mixins/index.js +8 -0
  222. package/dist/src/components/checkbox/test/checkbox_test.d.ts +2 -0
  223. package/dist/src/components/checkbox/test/checkbox_test.js +88 -0
  224. package/dist/src/components/collapse/controllers/accordion.controller.d.ts +60 -0
  225. package/dist/src/components/collapse/controllers/accordion.controller.js +132 -0
  226. package/dist/src/components/collapse/controllers/animation.controller.d.ts +40 -0
  227. package/dist/src/components/collapse/controllers/animation.controller.js +125 -0
  228. package/dist/src/components/collapse/controllers/base.controller.d.ts +48 -0
  229. package/dist/src/components/collapse/controllers/base.controller.js +69 -0
  230. package/dist/src/components/collapse/controllers/index.d.ts +12 -0
  231. package/dist/src/components/collapse/controllers/index.js +11 -0
  232. package/dist/src/components/collapse/controllers/keyboard.controller.d.ts +73 -0
  233. package/dist/src/components/collapse/controllers/keyboard.controller.js +186 -0
  234. package/dist/src/components/colorpicker/controllers/base.controller.d.ts +14 -0
  235. package/dist/src/components/colorpicker/controllers/base.controller.js +15 -0
  236. package/dist/src/components/colorpicker/controllers/dropdown.controller.d.ts +60 -0
  237. package/dist/src/components/colorpicker/controllers/dropdown.controller.js +243 -0
  238. package/dist/src/components/colorpicker/controllers/event.controller.d.ts +46 -0
  239. package/dist/src/components/colorpicker/controllers/event.controller.js +130 -0
  240. package/dist/src/components/colorpicker/controllers/index.d.ts +4 -0
  241. package/dist/src/components/colorpicker/controllers/index.js +4 -0
  242. package/dist/src/components/colorpicker/interfaces/index.d.ts +60 -0
  243. package/dist/src/components/colorpicker/interfaces/index.js +2 -0
  244. package/dist/src/components/datepicker/controllers/calendar.controller.d.ts +78 -0
  245. package/dist/src/components/datepicker/controllers/calendar.controller.js +225 -0
  246. package/dist/src/components/datepicker/controllers/index.d.ts +11 -0
  247. package/dist/src/components/datepicker/controllers/index.js +11 -0
  248. package/dist/src/components/datepicker/controllers/keyboard.controller.d.ts +96 -0
  249. package/dist/src/components/datepicker/controllers/keyboard.controller.js +246 -0
  250. package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.d.ts +48 -0
  251. package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.js +92 -0
  252. package/dist/src/components/datepicker/controllers/positioning.controller.d.ts +82 -0
  253. package/dist/src/components/datepicker/controllers/positioning.controller.js +247 -0
  254. package/dist/src/components/datepicker/controllers/selection.controller.d.ts +92 -0
  255. package/dist/src/components/datepicker/controllers/selection.controller.js +267 -0
  256. package/dist/src/components/datepicker/interfaces/base-controller.interface.d.ts +40 -0
  257. package/dist/src/components/datepicker/interfaces/base-controller.interface.js +7 -0
  258. package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.d.ts +112 -0
  259. package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.js +7 -0
  260. package/dist/src/components/datepicker/interfaces/index.d.ts +8 -0
  261. package/dist/src/components/datepicker/interfaces/index.js +7 -0
  262. package/dist/src/components/datepicker/templates/days.template.d.ts +4 -0
  263. package/dist/src/components/datepicker/templates/days.template.js +40 -0
  264. package/dist/src/components/datepicker/templates/dropdown.template.d.ts +10 -0
  265. package/dist/src/components/datepicker/templates/dropdown.template.js +50 -0
  266. package/dist/src/components/datepicker/templates/headers.template.d.ts +2 -0
  267. package/dist/src/components/datepicker/templates/headers.template.js +5 -0
  268. package/dist/src/components/datepicker/templates/months.template.d.ts +6 -0
  269. package/dist/src/components/datepicker/templates/months.template.js +10 -0
  270. package/dist/src/components/datepicker/templates/years.template.d.ts +6 -0
  271. package/dist/src/components/datepicker/templates/years.template.js +11 -0
  272. package/dist/src/components/datepicker/test/datepicker_test.d.ts +2 -0
  273. package/dist/src/components/datepicker/test/datepicker_test.js +134 -0
  274. package/dist/src/components/datepicker/utils/day.helper.d.ts +5 -0
  275. package/dist/src/components/datepicker/utils/day.helper.js +53 -0
  276. package/dist/src/components/datepicker/utils/formatter.d.ts +2 -0
  277. package/dist/src/components/datepicker/utils/formatter.js +9 -0
  278. package/dist/src/components/datepicker/utils/index.d.ts +11 -0
  279. package/dist/src/components/datepicker/utils/index.js +11 -0
  280. package/dist/src/components/datepicker/utils/locale.helper.d.ts +144 -0
  281. package/dist/src/components/datepicker/utils/locale.helper.js +151 -0
  282. package/dist/src/components/datepicker/utils/month.helper.d.ts +3 -0
  283. package/dist/src/components/datepicker/utils/month.helper.js +24 -0
  284. package/dist/src/components/datepicker/utils/string.helper.d.ts +2 -0
  285. package/dist/src/components/datepicker/utils/string.helper.js +4 -0
  286. package/dist/src/components/document/demo/document-demo.d.ts +12 -0
  287. package/dist/src/components/document/demo/document-demo.js +40 -0
  288. package/dist/src/components/dropdown/controllers/base.controller.d.ts +18 -0
  289. package/dist/src/components/dropdown/controllers/base.controller.js +22 -0
  290. package/dist/src/components/dropdown/controllers/dropdown.controller.d.ts +50 -0
  291. package/dist/src/components/dropdown/controllers/dropdown.controller.js +408 -0
  292. package/dist/src/components/dropdown/controllers/index.d.ts +3 -0
  293. package/dist/src/components/dropdown/controllers/index.js +3 -0
  294. package/dist/src/components/dropdown/interfaces/controller-interfaces.d.ts +79 -0
  295. package/dist/src/components/dropdown/interfaces/controller-interfaces.js +2 -0
  296. package/dist/src/components/dropdown/interfaces/index.d.ts +2 -0
  297. package/dist/src/components/dropdown/interfaces/index.js +2 -0
  298. package/dist/src/components/dropdown/templates/nr-dropdown-item.d.ts +12 -0
  299. package/dist/src/components/dropdown/templates/nr-dropdown-item.js +55 -0
  300. package/dist/src/components/dropdown/templates/nr-dropdown-item.style.d.ts +2 -0
  301. package/dist/src/components/dropdown/templates/nr-dropdown-item.style.js +34 -0
  302. package/dist/src/components/dropdown/templates/nr-dropdown-menu.d.ts +18 -0
  303. package/dist/src/components/dropdown/templates/nr-dropdown-menu.js +70 -0
  304. package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.d.ts +2 -0
  305. package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.js +49 -0
  306. package/dist/src/components/file-upload/demo/file-upload-demo.d.ts +18 -0
  307. package/dist/src/components/file-upload/demo/file-upload-demo.js +156 -0
  308. package/dist/src/components/form/controllers/submission.controller.d.ts +60 -0
  309. package/dist/src/components/form/controllers/submission.controller.js +220 -0
  310. package/dist/src/components/form/controllers/validation.controller.d.ts +87 -0
  311. package/dist/src/components/form/controllers/validation.controller.js +236 -0
  312. package/dist/src/components/form/interfaces/validation.interface.d.ts +118 -0
  313. package/dist/src/components/form/interfaces/validation.interface.js +7 -0
  314. package/dist/src/components/icon/mixins/clickable-mixin.d.ts +57 -0
  315. package/dist/src/components/icon/mixins/clickable-mixin.js +111 -0
  316. package/dist/src/components/icon/mixins/index.d.ts +7 -0
  317. package/dist/src/components/icon/mixins/index.js +7 -0
  318. package/dist/src/components/iconpicker/controllers/event.controller.d.ts +38 -0
  319. package/dist/src/components/iconpicker/controllers/event.controller.js +68 -0
  320. package/dist/src/components/iconpicker/controllers/index.d.ts +9 -0
  321. package/dist/src/components/iconpicker/controllers/index.js +9 -0
  322. package/dist/src/components/iconpicker/controllers/search.controller.d.ts +34 -0
  323. package/dist/src/components/iconpicker/controllers/search.controller.js +55 -0
  324. package/dist/src/components/iconpicker/controllers/selection.controller.d.ts +27 -0
  325. package/dist/src/components/iconpicker/controllers/selection.controller.js +39 -0
  326. package/dist/src/components/iconpicker/interfaces/icon-picker.interface.d.ts +13 -0
  327. package/dist/src/components/iconpicker/interfaces/icon-picker.interface.js +7 -0
  328. package/dist/src/components/iconpicker/interfaces/index.d.ts +7 -0
  329. package/dist/src/components/iconpicker/interfaces/index.js +7 -0
  330. package/dist/src/components/iconpicker/utils/icon-filter.utils.d.ts +29 -0
  331. package/dist/src/components/iconpicker/utils/icon-filter.utils.js +96 -0
  332. package/dist/src/components/iconpicker/utils/icon-loader.utils.d.ts +39 -0
  333. package/dist/src/components/iconpicker/utils/icon-loader.utils.js +115 -0
  334. package/dist/src/components/iconpicker/utils/index.d.ts +8 -0
  335. package/dist/src/components/iconpicker/utils/index.js +8 -0
  336. package/dist/src/components/iconpicker/utils/lucide-icons.d.ts +10 -0
  337. package/dist/src/components/iconpicker/utils/lucide-icons.js +1624 -0
  338. package/dist/src/components/input/controllers/base.controller.d.ts +35 -0
  339. package/dist/src/components/input/controllers/base.controller.js +13 -0
  340. package/dist/src/components/input/controllers/event.controller.d.ts +111 -0
  341. package/dist/src/components/input/controllers/event.controller.js +355 -0
  342. package/dist/src/components/input/controllers/index.d.ts +14 -0
  343. package/dist/src/components/input/controllers/index.js +10 -0
  344. package/dist/src/components/input/controllers/state.controller.d.ts +153 -0
  345. package/dist/src/components/input/controllers/state.controller.js +245 -0
  346. package/dist/src/components/input/controllers/validation.controller.d.ts +205 -0
  347. package/dist/src/components/input/controllers/validation.controller.js +698 -0
  348. package/dist/src/components/input/mixins/focus-mixin.d.ts +60 -0
  349. package/dist/src/components/input/mixins/focus-mixin.js +65 -0
  350. package/dist/src/components/input/mixins/index.d.ts +12 -0
  351. package/dist/src/components/input/mixins/index.js +9 -0
  352. package/dist/src/components/input/mixins/number-mixin.d.ts +51 -0
  353. package/dist/src/components/input/mixins/number-mixin.js +128 -0
  354. package/dist/src/components/input/mixins/selection-mixin.d.ts +57 -0
  355. package/dist/src/components/input/mixins/selection-mixin.js +80 -0
  356. package/dist/src/components/input/test/nr-input_test.d.ts +2 -0
  357. package/dist/src/components/input/test/nr-input_test.js +159 -0
  358. package/dist/src/components/input/utils/index.d.ts +8 -0
  359. package/dist/src/components/input/utils/index.js +8 -0
  360. package/dist/src/components/input/utils/input-renderers.d.ts +54 -0
  361. package/dist/src/components/input/utils/input-renderers.js +178 -0
  362. package/dist/src/components/input/utils/input-validation.utils.d.ts +26 -0
  363. package/dist/src/components/input/utils/input-validation.utils.js +103 -0
  364. package/dist/src/components/menu/controllers/accessibility.controller.d.ts +86 -0
  365. package/dist/src/components/menu/controllers/accessibility.controller.js +235 -0
  366. package/dist/src/components/menu/controllers/base.controller.d.ts +41 -0
  367. package/dist/src/components/menu/controllers/base.controller.js +61 -0
  368. package/dist/src/components/menu/controllers/index.d.ts +10 -0
  369. package/dist/src/components/menu/controllers/index.js +10 -0
  370. package/dist/src/components/menu/controllers/keyboard.controller.d.ts +84 -0
  371. package/dist/src/components/menu/controllers/keyboard.controller.js +328 -0
  372. package/dist/src/components/menu/controllers/state.controller.d.ts +106 -0
  373. package/dist/src/components/menu/controllers/state.controller.js +249 -0
  374. package/dist/src/components/menu/interfaces/controller.interface.d.ts +51 -0
  375. package/dist/src/components/menu/interfaces/controller.interface.js +7 -0
  376. package/dist/src/components/menu/interfaces/index.d.ts +7 -0
  377. package/dist/src/components/menu/interfaces/index.js +7 -0
  378. package/dist/src/components/modal/controllers/index.d.ts +8 -0
  379. package/dist/src/components/modal/controllers/index.js +8 -0
  380. package/dist/src/components/modal/controllers/modal-drag-controller.d.ts +39 -0
  381. package/dist/src/components/modal/controllers/modal-drag-controller.js +108 -0
  382. package/dist/src/components/modal/controllers/modal-keyboard-controller.d.ts +36 -0
  383. package/dist/src/components/modal/controllers/modal-keyboard-controller.js +128 -0
  384. package/dist/src/components/panel/controllers/index.d.ts +8 -0
  385. package/dist/src/components/panel/controllers/index.js +8 -0
  386. package/dist/src/components/panel/controllers/panel-drag-controller.d.ts +40 -0
  387. package/dist/src/components/panel/controllers/panel-drag-controller.js +118 -0
  388. package/dist/src/components/panel/controllers/panel-resize-controller.d.ts +37 -0
  389. package/dist/src/components/panel/controllers/panel-resize-controller.js +124 -0
  390. package/dist/src/components/presence/bundle.js +555 -0
  391. package/dist/src/components/presence/bundle.js.gz +0 -0
  392. package/dist/src/components/presence/index.d.ts +10 -0
  393. package/dist/src/components/presence/index.js +10 -0
  394. package/dist/src/components/presence/presence-avatars.component.d.ts +40 -0
  395. package/dist/src/components/presence/presence-avatars.component.js +83 -0
  396. package/dist/src/components/presence/presence-avatars.style.d.ts +7 -0
  397. package/dist/src/components/presence/presence-avatars.style.js +105 -0
  398. package/dist/src/components/presence/presence-chat.component.d.ts +55 -0
  399. package/dist/src/components/presence/presence-chat.component.js +238 -0
  400. package/dist/src/components/presence/presence-chat.style.d.ts +7 -0
  401. package/dist/src/components/presence/presence-chat.style.js +248 -0
  402. package/dist/src/components/presence/presence.component.d.ts +95 -0
  403. package/dist/src/components/presence/presence.component.js +510 -0
  404. package/dist/src/components/presence/presence.style.d.ts +7 -0
  405. package/dist/src/components/presence/presence.style.js +12 -0
  406. package/dist/src/components/presence/presence.types.d.ts +33 -0
  407. package/dist/src/components/presence/presence.types.js +7 -0
  408. package/dist/src/components/presence/react.d.ts +24 -0
  409. package/dist/src/components/presence/react.js +41 -0
  410. package/dist/src/components/radio-group/controllers/focus.controller.d.ts +98 -0
  411. package/dist/src/components/radio-group/controllers/focus.controller.js +216 -0
  412. package/dist/src/components/radio-group/controllers/group.controller.d.ts +140 -0
  413. package/dist/src/components/radio-group/controllers/group.controller.js +179 -0
  414. package/dist/src/components/radio-group/controllers/index.d.ts +11 -0
  415. package/dist/src/components/radio-group/controllers/index.js +11 -0
  416. package/dist/src/components/radio-group/controllers/keyboard.controller.d.ts +24 -0
  417. package/dist/src/components/radio-group/controllers/keyboard.controller.js +93 -0
  418. package/dist/src/components/radio-group/controllers/ripple.controller.d.ts +59 -0
  419. package/dist/src/components/radio-group/controllers/ripple.controller.js +208 -0
  420. package/dist/src/components/radio-group/controllers/validation.controller.d.ts +73 -0
  421. package/dist/src/components/radio-group/controllers/validation.controller.js +108 -0
  422. package/dist/src/components/radio-group/interfaces/base-controller.interface.d.ts +75 -0
  423. package/dist/src/components/radio-group/interfaces/base-controller.interface.js +7 -0
  424. package/dist/src/components/radio-group/interfaces/focus-controller.interface.d.ts +40 -0
  425. package/dist/src/components/radio-group/interfaces/focus-controller.interface.js +7 -0
  426. package/dist/src/components/radio-group/interfaces/index.d.ts +11 -0
  427. package/dist/src/components/radio-group/interfaces/index.js +7 -0
  428. package/dist/src/components/radio-group/interfaces/ripple-controller.interface.d.ts +31 -0
  429. package/dist/src/components/radio-group/interfaces/ripple-controller.interface.js +7 -0
  430. package/dist/src/components/radio-group/interfaces/selection-controller.interface.d.ts +45 -0
  431. package/dist/src/components/radio-group/interfaces/selection-controller.interface.js +7 -0
  432. package/dist/src/components/radio-group/interfaces/validation-controller.interface.d.ts +48 -0
  433. package/dist/src/components/radio-group/interfaces/validation-controller.interface.js +7 -0
  434. package/dist/src/components/radio-group/test/radio_test.d.ts +2 -0
  435. package/dist/src/components/radio-group/test/radio_test.js +79 -0
  436. package/dist/src/components/select/controllers/base.controller.d.ts +10 -0
  437. package/dist/src/components/select/controllers/base.controller.js +8 -0
  438. package/dist/src/components/select/controllers/dropdown.controller.d.ts +76 -0
  439. package/dist/src/components/select/controllers/dropdown.controller.js +281 -0
  440. package/dist/src/components/select/controllers/event.controller.d.ts +54 -0
  441. package/dist/src/components/select/controllers/event.controller.js +113 -0
  442. package/dist/src/components/select/controllers/focus.controller.d.ts +79 -0
  443. package/dist/src/components/select/controllers/focus.controller.js +230 -0
  444. package/dist/src/components/select/controllers/index.d.ts +9 -0
  445. package/dist/src/components/select/controllers/index.js +9 -0
  446. package/dist/src/components/select/controllers/keyboard.controller.d.ts +75 -0
  447. package/dist/src/components/select/controllers/keyboard.controller.js +369 -0
  448. package/dist/src/components/select/controllers/search.controller.d.ts +71 -0
  449. package/dist/src/components/select/controllers/search.controller.js +167 -0
  450. package/dist/src/components/select/controllers/selection.controller.d.ts +67 -0
  451. package/dist/src/components/select/controllers/selection.controller.js +217 -0
  452. package/dist/src/components/select/controllers/validation.controller.d.ts +66 -0
  453. package/dist/src/components/select/controllers/validation.controller.js +189 -0
  454. package/dist/src/components/select/interfaces/base-controller.interface.d.ts +147 -0
  455. package/dist/src/components/select/interfaces/base-controller.interface.js +2 -0
  456. package/dist/src/components/select/interfaces/controller-interfaces.d.ts +94 -0
  457. package/dist/src/components/select/interfaces/controller-interfaces.js +11 -0
  458. package/dist/src/components/select/interfaces/index.d.ts +3 -0
  459. package/dist/src/components/select/interfaces/index.js +3 -0
  460. package/dist/src/components/slider-input/utils/debounce.d.ts +2 -0
  461. package/dist/src/components/slider-input/utils/debounce.js +8 -0
  462. package/dist/src/components/slider-input/utils/index.d.ts +2 -0
  463. package/dist/src/components/slider-input/utils/index.js +2 -0
  464. package/dist/src/components/table/controllers/base.controller.d.ts +15 -0
  465. package/dist/src/components/table/controllers/base.controller.js +13 -0
  466. package/dist/src/components/table/controllers/filter.controller.d.ts +48 -0
  467. package/dist/src/components/table/controllers/filter.controller.js +152 -0
  468. package/dist/src/components/table/controllers/index.d.ts +11 -0
  469. package/dist/src/components/table/controllers/index.js +11 -0
  470. package/dist/src/components/table/controllers/pagination.controller.d.ts +36 -0
  471. package/dist/src/components/table/controllers/pagination.controller.js +110 -0
  472. package/dist/src/components/table/controllers/selection.controller.d.ts +40 -0
  473. package/dist/src/components/table/controllers/selection.controller.js +120 -0
  474. package/dist/src/components/table/controllers/sort.controller.d.ts +32 -0
  475. package/dist/src/components/table/controllers/sort.controller.js +102 -0
  476. package/dist/src/components/table/interfaces/index.d.ts +7 -0
  477. package/dist/src/components/table/interfaces/index.js +7 -0
  478. package/dist/src/components/table/interfaces/table-host.interface.d.ts +48 -0
  479. package/dist/src/components/table/interfaces/table-host.interface.js +7 -0
  480. package/dist/src/components/table/templates/actions.template.d.ts +14 -0
  481. package/dist/src/components/table/templates/actions.template.js +15 -0
  482. package/dist/src/components/table/templates/column-filter.template.d.ts +24 -0
  483. package/dist/src/components/table/templates/column-filter.template.js +76 -0
  484. package/dist/src/components/table/templates/content.template.d.ts +37 -0
  485. package/dist/src/components/table/templates/content.template.js +208 -0
  486. package/dist/src/components/table/templates/empty.template.d.ts +8 -0
  487. package/dist/src/components/table/templates/empty.template.js +47 -0
  488. package/dist/src/components/table/templates/filter.template.d.ts +14 -0
  489. package/dist/src/components/table/templates/filter.template.js +28 -0
  490. package/dist/src/components/table/templates/index.d.ts +8 -0
  491. package/dist/src/components/table/templates/index.js +8 -0
  492. package/dist/src/components/table/templates/loading.template.d.ts +21 -0
  493. package/dist/src/components/table/templates/loading.template.js +51 -0
  494. package/dist/src/components/table/templates/pagination.template.d.ts +24 -0
  495. package/dist/src/components/table/templates/pagination.template.js +52 -0
  496. package/dist/src/components/tabs/controllers/base.controller.d.ts +49 -0
  497. package/dist/src/components/tabs/controllers/base.controller.js +26 -0
  498. package/dist/src/components/tabs/controllers/dragdrop.controller.d.ts +84 -0
  499. package/dist/src/components/tabs/controllers/dragdrop.controller.js +202 -0
  500. package/dist/src/components/tabs/controllers/editable.controller.d.ts +100 -0
  501. package/dist/src/components/tabs/controllers/editable.controller.js +242 -0
  502. package/dist/src/components/tabs/controllers/event.controller.d.ts +104 -0
  503. package/dist/src/components/tabs/controllers/event.controller.js +239 -0
  504. package/dist/src/components/tabs/controllers/index.d.ts +12 -0
  505. package/dist/src/components/tabs/controllers/index.js +18 -0
  506. package/dist/src/components/tabs/controllers/keyboard.controller.d.ts +85 -0
  507. package/dist/src/components/tabs/controllers/keyboard.controller.js +233 -0
  508. package/dist/src/components/tabs/controllers/popout.controller.d.ts +96 -0
  509. package/dist/src/components/tabs/controllers/popout.controller.js +441 -0
  510. package/dist/src/components/textarea/controllers/base.controller.d.ts +43 -0
  511. package/dist/src/components/textarea/controllers/base.controller.js +19 -0
  512. package/dist/src/components/textarea/controllers/event.controller.d.ts +169 -0
  513. package/dist/src/components/textarea/controllers/event.controller.js +408 -0
  514. package/dist/src/components/textarea/controllers/index.d.ts +9 -0
  515. package/dist/src/components/textarea/controllers/index.js +9 -0
  516. package/dist/src/components/textarea/controllers/validation.controller.d.ts +133 -0
  517. package/dist/src/components/textarea/controllers/validation.controller.js +315 -0
  518. package/dist/src/components/timepicker/controllers/formatting.controller.d.ts +93 -0
  519. package/dist/src/components/timepicker/controllers/formatting.controller.js +195 -0
  520. package/dist/src/components/timepicker/controllers/index.d.ts +9 -0
  521. package/dist/src/components/timepicker/controllers/index.js +9 -0
  522. package/dist/src/components/timepicker/controllers/selection.controller.d.ts +72 -0
  523. package/dist/src/components/timepicker/controllers/selection.controller.js +175 -0
  524. package/dist/src/components/timepicker/controllers/validation.controller.d.ts +88 -0
  525. package/dist/src/components/timepicker/controllers/validation.controller.js +200 -0
  526. package/dist/src/components/timepicker/interfaces/timepicker.interface.d.ts +103 -0
  527. package/dist/src/components/timepicker/interfaces/timepicker.interface.js +7 -0
  528. package/dist/src/components/timepicker/test/timepicker_test.d.ts +7 -0
  529. package/dist/src/components/timepicker/test/timepicker_test.js +218 -0
  530. package/dist/src/components/timepicker/utils/time.utils.d.ts +87 -0
  531. package/dist/src/components/timepicker/utils/time.utils.js +235 -0
  532. package/dist/src/components/toast/bundle.js +11 -9
  533. package/dist/src/components/toast/bundle.js.gz +0 -0
  534. package/dist/src/components/toast/controllers/base.controller.d.ts +20 -0
  535. package/dist/src/components/toast/controllers/base.controller.js +12 -0
  536. package/dist/src/components/toast/controllers/index.d.ts +8 -0
  537. package/dist/src/components/toast/controllers/index.js +7 -0
  538. package/dist/src/components/toast/toast.component.d.ts +8 -0
  539. package/dist/src/components/toast/toast.component.js +17 -7
  540. package/dist/src/components/tooltips/demo/tooltips-demo.d.ts +18 -0
  541. package/dist/src/components/tooltips/demo/tooltips-demo.js +132 -0
  542. package/dist/src/components/tooltips/test/tooltips_test.d.ts +2 -0
  543. package/dist/src/components/tooltips/test/tooltips_test.js +145 -0
  544. package/dist/src/components/video/bundle.js +13 -12
  545. package/dist/src/components/video/bundle.js.gz +0 -0
  546. package/dist/src/components/video/video.component.d.ts +15 -1
  547. package/dist/src/components/video/video.component.js +131 -3
  548. package/package.json +31 -10
  549. package/packages/common/dist/VERSIONS.md +1 -1
@@ -0,0 +1,243 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { svg, nothing } from 'lit';
7
+ import { ExecutionStatus, } from '../workflow-canvas.types.js';
8
+ /**
9
+ * Check if a node is inside a collapsed frame
10
+ */
11
+ function isNodeInCollapsedFrame(node, nodes) {
12
+ var _a;
13
+ if (!node.parentFrameId)
14
+ return null;
15
+ const parentFrame = nodes.find(n => n.id === node.parentFrameId);
16
+ if (!parentFrame)
17
+ return null;
18
+ const isCollapsed = (_a = parentFrame.configuration) === null || _a === void 0 ? void 0 : _a.frameCollapsed;
19
+ return isCollapsed ? parentFrame : null;
20
+ }
21
+ /**
22
+ * Get position for a port on a collapsed frame
23
+ * Ports are vertically centered on the left/right edges of the frame
24
+ */
25
+ function getCollapsedFramePortPosition(frame, isInput, portIndex = 0, totalPorts = 1) {
26
+ const frameWidth = 180; // Collapsed frame min-width from CSS
27
+ // Collapsed frame height: header (~44px) + icons preview (~48px) = ~92px
28
+ const frameHeight = 92;
29
+ const portSpacing = 16; // gap: 8px + port height 10px
30
+ // Calculate vertical center position
31
+ const centerY = frame.position.y + frameHeight / 2;
32
+ const offsetY = (portIndex - (totalPorts - 1) / 2) * portSpacing;
33
+ if (isInput) {
34
+ // Input ports on left side - port sticks out 5px (margin-left: -5px)
35
+ return {
36
+ x: frame.position.x,
37
+ y: centerY + offsetY,
38
+ };
39
+ }
40
+ else {
41
+ // Output ports on right side - port sticks out 5px (margin-right: -5px)
42
+ return {
43
+ x: frame.position.x + frameWidth,
44
+ y: centerY + offsetY,
45
+ };
46
+ }
47
+ }
48
+ /**
49
+ * Derive edge execution status from connected nodes
50
+ * Edge is colored only if data actually flowed through it (both source completed AND target was executed)
51
+ */
52
+ function deriveEdgeStatus(edge, sourceNode, targetNode) {
53
+ // If edge has explicit status, use it
54
+ if (edge.status) {
55
+ return edge.status;
56
+ }
57
+ const sourceStatus = sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.status;
58
+ const targetStatus = targetNode === null || targetNode === void 0 ? void 0 : targetNode.status;
59
+ // No status if source hasn't started
60
+ if (!sourceStatus || sourceStatus === ExecutionStatus.IDLE) {
61
+ return undefined;
62
+ }
63
+ // For completed/failed source, only color edge if target was actually executed
64
+ // This ensures only the taken path is colored (important for condition branches)
65
+ if (sourceStatus === ExecutionStatus.COMPLETED || sourceStatus === ExecutionStatus.FAILED) {
66
+ // Target must have been executed (not IDLE or PENDING) for the edge to be colored
67
+ if (!targetStatus || targetStatus === ExecutionStatus.IDLE || targetStatus === ExecutionStatus.PENDING) {
68
+ return undefined;
69
+ }
70
+ // If source failed, the entire path after it is the failure path (red)
71
+ if (sourceStatus === ExecutionStatus.FAILED) {
72
+ return ExecutionStatus.FAILED;
73
+ }
74
+ // If target failed, show failure
75
+ if (targetStatus === ExecutionStatus.FAILED) {
76
+ return ExecutionStatus.FAILED;
77
+ }
78
+ return ExecutionStatus.COMPLETED;
79
+ }
80
+ // If source is running, edge shows data is about to flow (only if target is pending/running)
81
+ if (sourceStatus === ExecutionStatus.RUNNING) {
82
+ if (targetStatus === ExecutionStatus.PENDING || targetStatus === ExecutionStatus.RUNNING) {
83
+ return ExecutionStatus.RUNNING;
84
+ }
85
+ return undefined;
86
+ }
87
+ // If source is pending/waiting, don't color edges yet
88
+ return undefined;
89
+ }
90
+ /**
91
+ * Get edge color based on selection, hover, and execution status
92
+ */
93
+ function getEdgeColor(isSelected, isHovered, status, currentTheme) {
94
+ const isLight = (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.includes('light')) || currentTheme === 'default';
95
+ // Execution status colors take priority
96
+ if (status === ExecutionStatus.COMPLETED) {
97
+ return '#22c55e'; // Green for completed
98
+ }
99
+ if (status === ExecutionStatus.RUNNING) {
100
+ return '#3b82f6'; // Blue for running
101
+ }
102
+ if (status === ExecutionStatus.FAILED) {
103
+ return '#ef4444'; // Red for failed
104
+ }
105
+ if (status === ExecutionStatus.PENDING) {
106
+ return '#f59e0b'; // Orange for pending
107
+ }
108
+ if (isSelected) {
109
+ return '#3b82f6'; // Blue for selected
110
+ }
111
+ if (isHovered) {
112
+ return '#60a5fa'; // Light blue for hover
113
+ }
114
+ return isLight ? '#9ca3af' : '#6b7280';
115
+ }
116
+ /**
117
+ * Render a single edge with bezier curve
118
+ */
119
+ export function renderEdgeTemplate(edge, nodes, selectedEdgeIds, hoveredEdgeId, currentTheme, callbacks) {
120
+ // Check if edge is hidden by a collapsed frame (both ends inside same frame)
121
+ if (edge._hiddenByFrame) {
122
+ return nothing;
123
+ }
124
+ const sourceNode = nodes.find(n => n.id === edge.sourceNodeId);
125
+ const targetNode = nodes.find(n => n.id === edge.targetNodeId);
126
+ if (!sourceNode || !targetNode)
127
+ return nothing;
128
+ // Check if source or target is inside a collapsed frame
129
+ const sourceCollapsedFrame = isNodeInCollapsedFrame(sourceNode, nodes);
130
+ const targetCollapsedFrame = isNodeInCollapsedFrame(targetNode, nodes);
131
+ // If both are in the same collapsed frame, don't render (internal edge)
132
+ if (sourceCollapsedFrame && targetCollapsedFrame && sourceCollapsedFrame.id === targetCollapsedFrame.id) {
133
+ return nothing;
134
+ }
135
+ // Calculate start position - redirect to frame if source is in collapsed frame
136
+ let start;
137
+ if (sourceCollapsedFrame) {
138
+ // For collapsed frame, position ports vertically centered
139
+ // Use a fixed position since we render one aggregated port per crossing edge
140
+ start = getCollapsedFramePortPosition(sourceCollapsedFrame, false, 0, 1);
141
+ }
142
+ else {
143
+ start = callbacks.getPortPosition(sourceNode, edge.sourcePortId, false);
144
+ }
145
+ // Calculate end position - redirect to frame if target is in collapsed frame
146
+ let end;
147
+ if (targetCollapsedFrame) {
148
+ // For collapsed frame, position ports vertically centered
149
+ end = getCollapsedFramePortPosition(targetCollapsedFrame, true, 0, 1);
150
+ }
151
+ else {
152
+ end = callbacks.getPortPosition(targetNode, edge.targetPortId, true);
153
+ }
154
+ // Calculate bezier curve control points
155
+ const dx = end.x - start.x;
156
+ const controlOffset = Math.min(Math.abs(dx) * 0.5, 100);
157
+ const path = `M ${start.x} ${start.y} C ${start.x + controlOffset} ${start.y}, ${end.x - controlOffset} ${end.y}, ${end.x} ${end.y}`;
158
+ const isSelected = selectedEdgeIds.has(edge.id);
159
+ const isHovered = hoveredEdgeId === edge.id;
160
+ // Derive edge status from connected nodes if not explicitly set
161
+ const edgeStatus = deriveEdgeStatus(edge, sourceNode, targetNode);
162
+ const strokeColor = getEdgeColor(isSelected, isHovered, edgeStatus, currentTheme);
163
+ const strokeWidth = isSelected || isHovered || edgeStatus ? 3 : 2;
164
+ // Calculate arrow position at middle of the curve
165
+ const arrowLength = 12;
166
+ const arrowWidth = 8;
167
+ // Position arrow at t=0.5 (middle of curve)
168
+ const tArrow = 0.5;
169
+ const arrowX = Math.pow(1 - tArrow, 3) * start.x + 3 * Math.pow(1 - tArrow, 2) * tArrow * (start.x + controlOffset) + 3 * (1 - tArrow) * Math.pow(tArrow, 2) * (end.x - controlOffset) + Math.pow(tArrow, 3) * end.x;
170
+ const arrowY = Math.pow(1 - tArrow, 3) * start.y + 3 * Math.pow(1 - tArrow, 2) * tArrow * start.y + 3 * (1 - tArrow) * Math.pow(tArrow, 2) * end.y + Math.pow(tArrow, 3) * end.y;
171
+ // Calculate tangent direction at arrow position for proper rotation
172
+ const tTangent = tArrow + 0.05;
173
+ const tangentX = Math.pow(1 - tTangent, 3) * start.x + 3 * Math.pow(1 - tTangent, 2) * tTangent * (start.x + controlOffset) + 3 * (1 - tTangent) * Math.pow(tTangent, 2) * (end.x - controlOffset) + Math.pow(tTangent, 3) * end.x;
174
+ const tangentY = Math.pow(1 - tTangent, 3) * start.y + 3 * Math.pow(1 - tTangent, 2) * tTangent * start.y + 3 * (1 - tTangent) * Math.pow(tTangent, 2) * end.y + Math.pow(tTangent, 3) * end.y;
175
+ // Calculate angle from current position toward next point on curve
176
+ const angle = Math.atan2(tangentY - arrowY, tangentX - arrowX) * 180 / Math.PI;
177
+ return svg `
178
+ <g class="edge-group" data-edge-id=${edge.id}>
179
+ <!-- Invisible wider path for easier clicking -->
180
+ <path
181
+ d=${path}
182
+ stroke="transparent"
183
+ stroke-width="14"
184
+ fill="none"
185
+ style="cursor: pointer; pointer-events: stroke;"
186
+ @click=${(e) => callbacks.onEdgeClick(e, edge)}
187
+ @mouseenter=${() => callbacks.onEdgeHover(edge.id)}
188
+ @mouseleave=${() => callbacks.onEdgeHover(null)}
189
+ />
190
+ <!-- Visible edge path -->
191
+ <path
192
+ class="edge-path"
193
+ d=${path}
194
+ fill="none"
195
+ style="pointer-events: none; stroke: ${strokeColor}; stroke-width: ${strokeWidth}px; transition: stroke 0.15s ease, stroke-width 0.15s ease;"
196
+ />
197
+ <polygon
198
+ class="edge-arrow"
199
+ points="${arrowX + arrowLength / 2},${arrowY} ${arrowX - arrowLength / 2},${arrowY - arrowWidth / 2} ${arrowX - arrowLength / 2},${arrowY + arrowWidth / 2}"
200
+ transform="rotate(${angle}, ${arrowX}, ${arrowY})"
201
+ style="pointer-events: none; fill: ${strokeColor}; transition: fill 0.15s ease;"
202
+ />
203
+ ${edge.label ? svg `
204
+ <text
205
+ class="edge-label"
206
+ x=${(start.x + end.x) / 2}
207
+ y=${(start.y + end.y) / 2 - 8}
208
+ text-anchor="middle"
209
+ fill="#666"
210
+ >${edge.label}</text>
211
+ ` : nothing}
212
+ </g>
213
+ `;
214
+ }
215
+ /**
216
+ * Render the in-progress connection line
217
+ */
218
+ export function renderConnectionLineTemplate(connectionState, nodes, getPortPosition) {
219
+ if (!connectionState)
220
+ return nothing;
221
+ const sourceNode = nodes.find(n => n.id === connectionState.sourceNodeId);
222
+ if (!sourceNode)
223
+ return nothing;
224
+ const start = getPortPosition(sourceNode, connectionState.sourcePortId, connectionState.sourceIsInput);
225
+ const end = { x: connectionState.mouseX, y: connectionState.mouseY };
226
+ const dx = end.x - start.x;
227
+ const controlOffset = Math.min(Math.abs(dx) * 0.5, 100);
228
+ const path = connectionState.sourceIsInput
229
+ ? `M ${end.x} ${end.y} C ${end.x + controlOffset} ${end.y}, ${start.x - controlOffset} ${start.y}, ${start.x} ${start.y}`
230
+ : `M ${start.x} ${start.y} C ${start.x + controlOffset} ${start.y}, ${end.x - controlOffset} ${end.y}, ${end.x} ${end.y}`;
231
+ return svg `<path class="connection-line" d=${path} stroke="#3b82f6" stroke-width="2" stroke-dasharray="5" fill="none" />`;
232
+ }
233
+ /**
234
+ * Render all edges and connection line
235
+ */
236
+ export function renderEdgesTemplate(data) {
237
+ const { edges, nodes, selectedEdgeIds, hoveredEdgeId, connectionState, currentTheme, callbacks } = data;
238
+ return svg `
239
+ ${edges.map(edge => renderEdgeTemplate(edge, nodes, selectedEdgeIds, hoveredEdgeId, currentTheme, callbacks))}
240
+ ${renderConnectionLineTemplate(connectionState, nodes, callbacks.getPortPosition)}
241
+ `;
242
+ }
243
+ //# sourceMappingURL=edges.template.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { nothing, TemplateResult } from 'lit';
7
+ /**
8
+ * Data required for rendering the empty state
9
+ */
10
+ export interface EmptyStateTemplateData {
11
+ hasNodes: boolean;
12
+ }
13
+ /**
14
+ * Render the empty state when no nodes exist
15
+ */
16
+ export declare function renderEmptyStateTemplate(data: EmptyStateTemplateData): TemplateResult | typeof nothing;
17
+ //# sourceMappingURL=empty-state.template.d.ts.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { html, nothing } from 'lit';
7
+ /**
8
+ * Render the empty state when no nodes exist
9
+ */
10
+ export function renderEmptyStateTemplate(data) {
11
+ if (data.hasNodes)
12
+ return nothing;
13
+ return html `
14
+ <div class="empty-state">
15
+ <div class="empty-state-icon">
16
+ <nr-icon name="git-branch" size="xlarge"></nr-icon>
17
+ </div>
18
+ <div class="empty-state-text">No nodes yet</div>
19
+ <div class="empty-state-hint">
20
+ Click the + button or right-click to add nodes
21
+ </div>
22
+ </div>
23
+ `;
24
+ }
25
+ //# sourceMappingURL=empty-state.template.js.map
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { TemplateResult } from 'lit';
7
+ import type { WorkflowNode } from '../workflow-canvas.types.js';
8
+ export interface FrameTemplateCallbacks {
9
+ onFrameMouseDown: (e: MouseEvent, frame: WorkflowNode) => void;
10
+ onFrameDblClick: (e: MouseEvent, frame: WorkflowNode) => void;
11
+ onFrameResize: (e: MouseEvent, frame: WorkflowNode, handle: string) => void;
12
+ onStartEditingLabel: (e: MouseEvent, frame: WorkflowNode) => void;
13
+ onLabelBlur: (e: FocusEvent, frame: WorkflowNode) => void;
14
+ onLabelKeydown: (e: KeyboardEvent, frame: WorkflowNode) => void;
15
+ }
16
+ export interface FrameTemplateData {
17
+ frame: WorkflowNode;
18
+ isSelected: boolean;
19
+ editingFrameLabelId: string | null;
20
+ readonly: boolean;
21
+ callbacks: FrameTemplateCallbacks;
22
+ }
23
+ export declare function renderExpandedFrameTemplate(data: FrameTemplateData): TemplateResult | null;
24
+ //# sourceMappingURL=frame.template.d.ts.map
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { html } from 'lit';
7
+ import { styleMap } from 'lit/directives/style-map.js';
8
+ import { FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT, FRAME_DEFAULT_BG_COLOR, FRAME_DEFAULT_BORDER_COLOR, FRAME_DEFAULT_LABEL, FRAME_DEFAULT_LABEL_POSITION, FRAME_DEFAULT_LABEL_PLACEMENT, } from '../canvas.constants.js';
9
+ function renderFrameLabel(frame, label, editingFrameLabelId, labelPosition, labelPlacement, callbacks) {
10
+ const isEditing = editingFrameLabelId === frame.id;
11
+ const labelContent = isEditing ? html `
12
+ <input
13
+ type="text"
14
+ class="frame-label-input"
15
+ .value=${label}
16
+ @blur=${(e) => callbacks.onLabelBlur(e, frame)}
17
+ @keydown=${(e) => callbacks.onLabelKeydown(e, frame)}
18
+ @click=${(e) => e.stopPropagation()}
19
+ @mousedown=${(e) => e.stopPropagation()}
20
+ />
21
+ ` : html `
22
+ <span class="frame-label-text">
23
+ ${label}
24
+ <nr-icon
25
+ name="edit-2"
26
+ size="small"
27
+ class="frame-label-edit-icon"
28
+ @click=${(e) => callbacks.onStartEditingLabel(e, frame)}
29
+ ></nr-icon>
30
+ </span>
31
+ `;
32
+ return html `<div class="frame-label ${labelPosition} ${labelPlacement}">${labelContent}</div>`;
33
+ }
34
+ export function renderExpandedFrameTemplate(data) {
35
+ const { frame, isSelected, editingFrameLabelId, callbacks } = data;
36
+ const config = frame.configuration || {};
37
+ const collapsed = config.frameCollapsed;
38
+ if (collapsed)
39
+ return null;
40
+ const width = config.frameWidth || FRAME_DEFAULT_WIDTH;
41
+ const height = config.frameHeight || FRAME_DEFAULT_HEIGHT;
42
+ const bgColor = config.frameBackgroundColor || FRAME_DEFAULT_BG_COLOR;
43
+ const borderColor = config.frameBorderColor || FRAME_DEFAULT_BORDER_COLOR;
44
+ const label = config.frameLabel || FRAME_DEFAULT_LABEL;
45
+ const labelPosition = config.frameLabelPosition || FRAME_DEFAULT_LABEL_POSITION;
46
+ const labelPlacement = config.frameLabelPlacement || FRAME_DEFAULT_LABEL_PLACEMENT;
47
+ const showLabel = config.frameShowLabel !== false;
48
+ const frameStyles = {
49
+ left: `${frame.position.x}px`,
50
+ top: `${frame.position.y}px`,
51
+ width: `${width}px`,
52
+ height: `${height}px`,
53
+ backgroundColor: bgColor,
54
+ borderColor: borderColor,
55
+ };
56
+ return html `
57
+ <div
58
+ class="frame-node ${isSelected ? 'selected' : ''}"
59
+ style=${styleMap(frameStyles)}
60
+ data-frame-id=${frame.id}
61
+ @mousedown=${(e) => callbacks.onFrameMouseDown(e, frame)}
62
+ @dblclick=${(e) => callbacks.onFrameDblClick(e, frame)}
63
+ >
64
+ ${showLabel ? renderFrameLabel(frame, label, editingFrameLabelId, labelPosition, labelPlacement, callbacks) : null}
65
+ ${isSelected ? html `
66
+ <div class="resize-handle corner se" @mousedown=${(e) => callbacks.onFrameResize(e, frame, 'se')}></div>
67
+ <div class="resize-handle corner sw" @mousedown=${(e) => callbacks.onFrameResize(e, frame, 'sw')}></div>
68
+ <div class="resize-handle corner ne" @mousedown=${(e) => callbacks.onFrameResize(e, frame, 'ne')}></div>
69
+ <div class="resize-handle corner nw" @mousedown=${(e) => callbacks.onFrameResize(e, frame, 'nw')}></div>
70
+ ` : null}
71
+ </div>
72
+ `;
73
+ }
74
+ //# sourceMappingURL=frame.template.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export { renderToolbarTemplate, renderZoomControlsTemplate, type ToolbarTemplateData, type ZoomControlsTemplateData, } from './toolbar.template.js';
7
+ export { renderPaletteTemplate, type PaletteTemplateData } from './palette.template.js';
8
+ export { renderContextMenuTemplate, type ContextMenuTemplateData } from './context-menu.template.js';
9
+ export { renderEmptyStateTemplate, type EmptyStateTemplateData } from './empty-state.template.js';
10
+ export { renderConfigPanelTemplate, type ConfigPanelTemplateData, type ConfigPanelCallbacks, } from './config-panel.template.js';
11
+ export { renderEdgesTemplate, renderEdgeTemplate, renderConnectionLineTemplate, type EdgesTemplateData, type EdgeCallbacks, } from './edges.template.js';
12
+ export { renderWbSidebarTemplate, type WbSidebarTemplateData, } from './wb-sidebar.template.js';
13
+ export { renderRemoteCursorsTemplate, type RemoteCursorsTemplateData, } from './remote-cursors.template.js';
14
+ export { renderPresenceBarTemplate, type PresenceBarTemplateData, } from './presence-bar.template.js';
15
+ export { renderChatbotPanelTemplate, type ChatbotPanelTemplateData, type ChatbotPanelCallbacks, } from './chatbot-panel.template.js';
16
+ export { renderExpandedFrameTemplate, type FrameTemplateData, type FrameTemplateCallbacks, } from './frame.template.js';
17
+ export { renderWbFloatingToolbarTemplate, wbHasText, wbHasFill, wbHasBorder, type WbFloatingToolbarData, type WbFloatingToolbarCallbacks, } from './wb-floating-toolbar.template.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ // Toolbar templates
7
+ export { renderToolbarTemplate, renderZoomControlsTemplate, } from './toolbar.template.js';
8
+ // Palette template
9
+ export { renderPaletteTemplate } from './palette.template.js';
10
+ // Context menu template
11
+ export { renderContextMenuTemplate } from './context-menu.template.js';
12
+ // Empty state template
13
+ export { renderEmptyStateTemplate } from './empty-state.template.js';
14
+ // Config panel template
15
+ export { renderConfigPanelTemplate, } from './config-panel.template.js';
16
+ // Edges template
17
+ export { renderEdgesTemplate, renderEdgeTemplate, renderConnectionLineTemplate, } from './edges.template.js';
18
+ // Whiteboard sidebar template
19
+ export { renderWbSidebarTemplate, } from './wb-sidebar.template.js';
20
+ // Remote cursors template
21
+ export { renderRemoteCursorsTemplate, } from './remote-cursors.template.js';
22
+ // Presence bar template
23
+ export { renderPresenceBarTemplate, } from './presence-bar.template.js';
24
+ // Chatbot panel template
25
+ export { renderChatbotPanelTemplate, } from './chatbot-panel.template.js';
26
+ // Frame template
27
+ export { renderExpandedFrameTemplate, } from './frame.template.js';
28
+ // Whiteboard floating toolbar template
29
+ export { renderWbFloatingToolbarTemplate, wbHasText, wbHasFill, wbHasBorder, } from './wb-floating-toolbar.template.js';
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { nothing, TemplateResult } from 'lit';
7
+ import { NodeType, CanvasType } from '../workflow-canvas.types.js';
8
+ /**
9
+ * Data required for rendering the node palette
10
+ */
11
+ export interface PaletteTemplateData {
12
+ showPalette: boolean;
13
+ expandedCategories: Set<string>;
14
+ canvasType: CanvasType;
15
+ searchTerm: string;
16
+ onClose: () => void;
17
+ onToggleCategory: (categoryId: string) => void;
18
+ onNodeDragStart: (e: DragEvent, type: NodeType) => void;
19
+ onNodeTouchStart: (e: TouchEvent, type: NodeType) => void;
20
+ onNodeDoubleClick: (type: NodeType) => void;
21
+ onSearchChange: (term: string) => void;
22
+ }
23
+ /**
24
+ * Render the node palette
25
+ */
26
+ export declare function renderPaletteTemplate(data: PaletteTemplateData): TemplateResult | typeof nothing;
27
+ //# sourceMappingURL=palette.template.d.ts.map
@@ -0,0 +1,110 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { html, nothing } from 'lit';
7
+ import { NODE_TEMPLATES, CanvasType, getCategoriesForCanvasType, } from '../workflow-canvas.types.js';
8
+ /**
9
+ * Render the node palette
10
+ */
11
+ export function renderPaletteTemplate(data) {
12
+ if (!data.showPalette)
13
+ return nothing;
14
+ const categories = getCategoriesForCanvasType(data.canvasType);
15
+ const paletteTitle = data.canvasType === CanvasType.DATABASE
16
+ ? 'Add DB Element'
17
+ : data.canvasType === CanvasType.WHITEBOARD
18
+ ? 'Add Element'
19
+ : 'Add Node';
20
+ const searchTerm = data.searchTerm.toLowerCase().trim();
21
+ // Filter categories and nodes based on search term
22
+ const filteredCategories = searchTerm
23
+ ? categories.map(category => {
24
+ const filteredNodeTypes = category.nodeTypes.filter(nodeType => {
25
+ const template = NODE_TEMPLATES.find(t => t.type === nodeType);
26
+ if (!template)
27
+ return false;
28
+ return (template.name.toLowerCase().includes(searchTerm) ||
29
+ template.description.toLowerCase().includes(searchTerm) ||
30
+ nodeType.toLowerCase().includes(searchTerm));
31
+ });
32
+ return Object.assign(Object.assign({}, category), { nodeTypes: filteredNodeTypes });
33
+ }).filter(category => category.nodeTypes.length > 0)
34
+ : categories;
35
+ const handleSearchInput = (e) => {
36
+ const input = e.target;
37
+ data.onSearchChange(input.value);
38
+ };
39
+ return html `
40
+ <div class="node-palette">
41
+ <div class="palette-header">
42
+ <span class="palette-title">${paletteTitle}</span>
43
+ <button class="palette-close" @click=${data.onClose}>
44
+ <nr-icon name="x" size="small"></nr-icon>
45
+ </button>
46
+ </div>
47
+ <div class="palette-search">
48
+ <nr-input
49
+ size="small"
50
+ placeholder="Search nodes..."
51
+ .value=${data.searchTerm}
52
+ @nr-input=${handleSearchInput}
53
+ allowClear
54
+ >
55
+ <nr-icon slot="addon-before" name="search" size="small"></nr-icon>
56
+ </nr-input>
57
+ </div>
58
+ <div class="palette-content">
59
+ ${filteredCategories.length === 0 ? html `
60
+ <div class="palette-empty">
61
+ <nr-icon name="search-x" size="medium"></nr-icon>
62
+ <span>No nodes found</span>
63
+ </div>
64
+ ` : filteredCategories.map(category => html `
65
+ <div class="palette-category">
66
+ <div
67
+ class="category-header"
68
+ @click=${() => data.onToggleCategory(category.id)}
69
+ >
70
+ <nr-icon name=${category.icon || 'folder'} size="small"></nr-icon>
71
+ <span>${category.name}</span>
72
+ <nr-icon
73
+ name=${data.expandedCategories.has(category.id) || searchTerm ? 'chevron-down' : 'chevron-right'}
74
+ size="small"
75
+ ></nr-icon>
76
+ </div>
77
+ ${data.expandedCategories.has(category.id) || searchTerm ? html `
78
+ <div class="category-items">
79
+ ${category.nodeTypes.map(nodeType => {
80
+ const template = NODE_TEMPLATES.find(t => t.type === nodeType);
81
+ if (!template)
82
+ return nothing;
83
+ return html `
84
+ <div
85
+ class="palette-item"
86
+ draggable="true"
87
+ @dragstart=${(e) => data.onNodeDragStart(e, nodeType)}
88
+ @touchstart=${(e) => data.onNodeTouchStart(e, nodeType)}
89
+ @dblclick=${() => data.onNodeDoubleClick(nodeType)}
90
+ title=${template.description}
91
+ >
92
+ <div
93
+ class="palette-item-icon"
94
+ style="background: ${template.color}"
95
+ >
96
+ <nr-icon name=${template.icon} size="small"></nr-icon>
97
+ </div>
98
+ <span class="palette-item-name">${template.name}</span>
99
+ </div>
100
+ `;
101
+ })}
102
+ </div>
103
+ ` : nothing}
104
+ </div>
105
+ `)}
106
+ </div>
107
+ </div>
108
+ `;
109
+ }
110
+ //# sourceMappingURL=palette.template.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { nothing } from 'lit';
7
+ import type { CollaborationUser } from '../interfaces/collaboration.interface.js';
8
+ export interface PresenceBarTemplateData {
9
+ users: CollaborationUser[];
10
+ connected: boolean;
11
+ onUserClick?: (userId: string) => void;
12
+ }
13
+ /**
14
+ * Renders a presence bar showing connected users as colored avatar
15
+ * circles with initials, positioned in the top-right of the canvas.
16
+ */
17
+ export declare function renderPresenceBarTemplate(data: PresenceBarTemplateData): typeof nothing | import("lit-html").TemplateResult<1>;
18
+ //# sourceMappingURL=presence-bar.template.d.ts.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { html, nothing } from 'lit';
7
+ import { styleMap } from 'lit/directives/style-map.js';
8
+ import { classMap } from 'lit/directives/class-map.js';
9
+ /**
10
+ * Renders a presence bar showing connected users as colored avatar
11
+ * circles with initials, positioned in the top-right of the canvas.
12
+ */
13
+ export function renderPresenceBarTemplate(data) {
14
+ const { users, connected, onUserClick } = data;
15
+ if (!connected && users.length === 0)
16
+ return nothing;
17
+ const getInitials = (username) => {
18
+ const parts = username.trim().split(/\s+/);
19
+ if (parts.length >= 2) {
20
+ return (parts[0][0] + parts[1][0]).toUpperCase();
21
+ }
22
+ return username.slice(0, 2).toUpperCase();
23
+ };
24
+ const maxVisible = 5;
25
+ const visibleUsers = users.slice(0, maxVisible);
26
+ const extraCount = Math.max(0, users.length - maxVisible);
27
+ return html `
28
+ <div class="presence-bar">
29
+ <div class="presence-avatars">
30
+ ${visibleUsers.map(user => html `
31
+ <div
32
+ class=${classMap({
33
+ 'presence-avatar': true,
34
+ 'presence-avatar-typing': !!user.isTyping,
35
+ 'presence-avatar-clickable': !!onUserClick,
36
+ })}
37
+ style=${styleMap({ background: user.color })}
38
+ title="${onUserClick
39
+ ? `Click to go to ${user.username}${user.isTyping ? ' (typing...)' : ''}`
40
+ : `${user.username}${user.isTyping ? ' (typing...)' : ''}`}"
41
+ @click=${onUserClick ? () => onUserClick(user.userId) : nothing}
42
+ >
43
+ ${getInitials(user.username)}
44
+ </div>
45
+ `)}
46
+ ${extraCount > 0 ? html `
47
+ <div class="presence-avatar presence-avatar-extra" title="${extraCount} more users">
48
+ +${extraCount}
49
+ </div>
50
+ ` : nothing}
51
+ </div>
52
+ <span class="presence-count">
53
+ ${connected
54
+ ? `${users.length} online`
55
+ : 'Reconnecting...'}
56
+ </span>
57
+ </div>
58
+ `;
59
+ }
60
+ //# sourceMappingURL=presence-bar.template.js.map