@nuraly/lumenui 0.2.1 → 0.2.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.
- package/dist/nuralyui.bundle.js +2010 -1271
- package/dist/nuralyui.bundle.js.gz +0 -0
- package/dist/src/components/button/controllers/base.controller.d.ts +15 -0
- package/dist/src/components/button/controllers/base.controller.js +13 -0
- package/dist/src/components/button/controllers/index.d.ts +10 -0
- package/dist/src/components/button/controllers/index.js +10 -0
- package/dist/src/components/button/controllers/keyboard.controller.d.ts +32 -0
- package/dist/src/components/button/controllers/keyboard.controller.js +78 -0
- package/dist/src/components/button/controllers/link.controller.d.ts +30 -0
- package/dist/src/components/button/controllers/link.controller.js +75 -0
- package/dist/src/components/button/controllers/ripple.controller.d.ts +23 -0
- package/dist/src/components/button/controllers/ripple.controller.js +69 -0
- package/dist/src/components/button/interfaces/base-controller.interface.d.ts +61 -0
- package/dist/src/components/button/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/button/interfaces/index.d.ts +2 -0
- package/dist/src/components/button/interfaces/index.js +2 -0
- package/dist/src/components/button/test/nr-button_test.d.ts +2 -0
- package/dist/src/components/button/test/nr-button_test.js +91 -0
- package/dist/src/components/canvas/base-canvas.component.d.ts +2 -1
- package/dist/src/components/canvas/base-canvas.component.js +6 -0
- package/dist/src/components/canvas/bundle.js +702 -475
- package/dist/src/components/canvas/bundle.js.gz +0 -0
- package/dist/src/components/canvas/chatbot-panel.style.js +50 -59
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.d.ts +115 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.component.js +480 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.d.ts +7 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger-fields.style.js +323 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.d.ts +162 -0
- package/dist/src/components/canvas/chatbot-trigger/chatbot-trigger.types.js +88 -0
- package/dist/src/components/canvas/chatbot-trigger/index.d.ts +9 -0
- package/dist/src/components/canvas/chatbot-trigger/index.js +12 -0
- package/dist/src/components/canvas/controllers/base.controller.d.ts +53 -0
- package/dist/src/components/canvas/controllers/base.controller.js +80 -0
- package/dist/src/components/canvas/controllers/clipboard.controller.d.ts +80 -0
- package/dist/src/components/canvas/controllers/clipboard.controller.js +300 -0
- package/dist/src/components/canvas/controllers/collaboration.controller.d.ts +54 -0
- package/dist/src/components/canvas/controllers/collaboration.controller.js +425 -0
- package/dist/src/components/canvas/controllers/config.controller.d.ts +61 -0
- package/dist/src/components/canvas/controllers/config.controller.js +118 -0
- package/dist/src/components/canvas/controllers/connection.controller.d.ts +69 -0
- package/dist/src/components/canvas/controllers/connection.controller.js +183 -0
- package/dist/src/components/canvas/controllers/drag.controller.d.ts +56 -0
- package/dist/src/components/canvas/controllers/drag.controller.js +195 -0
- package/dist/src/components/canvas/controllers/frame.controller.d.ts +94 -0
- package/dist/src/components/canvas/controllers/frame.controller.js +456 -0
- package/dist/src/components/canvas/controllers/index.d.ts +19 -0
- package/dist/src/components/canvas/controllers/index.js +32 -0
- package/dist/src/components/canvas/controllers/keyboard.controller.d.ts +44 -0
- package/dist/src/components/canvas/controllers/keyboard.controller.js +275 -0
- package/dist/src/components/canvas/controllers/marquee.controller.d.ts +71 -0
- package/dist/src/components/canvas/controllers/marquee.controller.js +128 -0
- package/dist/src/components/canvas/controllers/selection.controller.d.ts +85 -0
- package/dist/src/components/canvas/controllers/selection.controller.js +202 -0
- package/dist/src/components/canvas/controllers/touch.controller.d.ts +55 -0
- package/dist/src/components/canvas/controllers/touch.controller.js +299 -0
- package/dist/src/components/canvas/controllers/undo.controller.d.ts +100 -0
- package/dist/src/components/canvas/controllers/undo.controller.js +218 -0
- package/dist/src/components/canvas/controllers/viewport.controller.d.ts +91 -0
- package/dist/src/components/canvas/controllers/viewport.controller.js +287 -0
- package/dist/src/components/canvas/data-node/data-node-config.component.d.ts +67 -0
- package/dist/src/components/canvas/data-node/data-node-config.component.js +496 -0
- package/dist/src/components/canvas/data-node/data-node-fields.component.d.ts +198 -0
- package/dist/src/components/canvas/data-node/data-node-fields.component.js +931 -0
- package/dist/src/components/canvas/data-node/data-node-fields.style.d.ts +7 -0
- package/dist/src/components/canvas/data-node/data-node-fields.style.js +448 -0
- package/dist/src/components/canvas/data-node/data-node.types.d.ts +245 -0
- package/dist/src/components/canvas/data-node/data-node.types.js +158 -0
- package/dist/src/components/canvas/data-node/index.d.ts +9 -0
- package/dist/src/components/canvas/data-node/index.js +12 -0
- package/dist/src/components/canvas/data-node/schema-select.component.d.ts +36 -0
- package/dist/src/components/canvas/data-node/schema-select.component.js +196 -0
- package/dist/src/components/canvas/data-node/table-select.component.d.ts +38 -0
- package/dist/src/components/canvas/data-node/table-select.component.js +199 -0
- package/dist/src/components/canvas/interfaces/canvas-host.interface.d.ts +91 -0
- package/dist/src/components/canvas/interfaces/canvas-host.interface.js +7 -0
- package/dist/src/components/canvas/interfaces/collaboration.interface.d.ts +58 -0
- package/dist/src/components/canvas/interfaces/collaboration.interface.js +10 -0
- package/dist/src/components/canvas/interfaces/index.d.ts +8 -0
- package/dist/src/components/canvas/interfaces/index.js +7 -0
- package/dist/src/components/canvas/templates/chatbot-panel.template.d.ts +28 -0
- package/dist/src/components/canvas/templates/chatbot-panel.template.js +49 -0
- package/dist/src/components/canvas/templates/config-panel.template.d.ts +22 -0
- package/dist/src/components/canvas/templates/config-panel.template.js +22 -0
- package/dist/src/components/canvas/templates/context-menu.template.d.ts +30 -0
- package/dist/src/components/canvas/templates/context-menu.template.js +80 -0
- package/dist/src/components/canvas/templates/edges.template.d.ts +41 -0
- package/dist/src/components/canvas/templates/edges.template.js +243 -0
- package/dist/src/components/canvas/templates/empty-state.template.d.ts +17 -0
- package/dist/src/components/canvas/templates/empty-state.template.js +25 -0
- package/dist/src/components/canvas/templates/frame.template.d.ts +24 -0
- package/dist/src/components/canvas/templates/frame.template.js +74 -0
- package/dist/src/components/canvas/templates/index.d.ts +18 -0
- package/dist/src/components/canvas/templates/index.js +30 -0
- package/dist/src/components/canvas/templates/palette.template.d.ts +27 -0
- package/dist/src/components/canvas/templates/palette.template.js +110 -0
- package/dist/src/components/canvas/templates/presence-bar.template.d.ts +18 -0
- package/dist/src/components/canvas/templates/presence-bar.template.js +60 -0
- package/dist/src/components/canvas/templates/remote-cursors.template.d.ts +19 -0
- package/dist/src/components/canvas/templates/remote-cursors.template.js +43 -0
- package/dist/src/components/canvas/templates/toolbar.template.d.ts +52 -0
- package/dist/src/components/canvas/templates/toolbar.template.js +118 -0
- package/dist/src/components/canvas/templates/wb-floating-toolbar.template.d.ts +30 -0
- package/dist/src/components/canvas/templates/wb-floating-toolbar.template.js +219 -0
- package/dist/src/components/canvas/templates/wb-sidebar.template.d.ts +23 -0
- package/dist/src/components/canvas/templates/wb-sidebar.template.js +152 -0
- package/dist/src/components/canvas/utils/variable-resolver.d.ts +71 -0
- package/dist/src/components/canvas/utils/variable-resolver.js +280 -0
- package/dist/src/components/canvas/workflow-canvas.component.js +6 -0
- package/dist/src/components/canvas/workflow-canvas.style.js +46 -55
- package/dist/src/components/carousel/demo/carousel-demo.d.ts +6 -0
- package/dist/src/components/carousel/demo/carousel-demo.js +68 -0
- package/dist/src/components/chatbot/audio-compress.d.ts +26 -0
- package/dist/src/components/chatbot/audio-compress.js +84 -0
- package/dist/src/components/chatbot/bundle.js +388 -144
- package/dist/src/components/chatbot/bundle.js.gz +0 -0
- package/dist/src/components/chatbot/chatbot-audio.controller.d.ts +35 -0
- package/dist/src/components/chatbot/chatbot-audio.controller.js +160 -0
- package/dist/src/components/chatbot/chatbot.component.d.ts +12 -0
- package/dist/src/components/chatbot/chatbot.component.js +41 -2
- package/dist/src/components/chatbot/chatbot.style.js +141 -0
- package/dist/src/components/chatbot/chatbot.types.d.ts +8 -0
- package/dist/src/components/chatbot/controllers/index.d.ts +8 -0
- package/dist/src/components/chatbot/controllers/index.js +8 -0
- package/dist/src/components/chatbot/controllers/scroll.controller.d.ts +34 -0
- package/dist/src/components/chatbot/controllers/scroll.controller.js +43 -0
- package/dist/src/components/chatbot/core/chatbot-core.controller.d.ts +283 -0
- package/dist/src/components/chatbot/core/chatbot-core.controller.js +824 -0
- package/dist/src/components/chatbot/core/event-bus.d.ts +54 -0
- package/dist/src/components/chatbot/core/event-bus.js +102 -0
- package/dist/src/components/chatbot/core/index.d.ts +12 -0
- package/dist/src/components/chatbot/core/index.js +15 -0
- package/dist/src/components/chatbot/core/types.d.ts +403 -0
- package/dist/src/components/chatbot/core/types.js +16 -0
- package/dist/src/components/chatbot/locales/locale-codes.d.ts +14 -0
- package/dist/src/components/chatbot/locales/locale-codes.js +23 -0
- package/dist/src/components/chatbot/plugins/analytics-plugin.d.ts +23 -0
- package/dist/src/components/chatbot/plugins/analytics-plugin.js +52 -0
- package/dist/src/components/chatbot/plugins/artifact-plugin.d.ts +71 -0
- package/dist/src/components/chatbot/plugins/artifact-plugin.js +313 -0
- package/dist/src/components/chatbot/plugins/chat-plugin.d.ts +44 -0
- package/dist/src/components/chatbot/plugins/chat-plugin.js +58 -0
- package/dist/src/components/chatbot/plugins/flight-card-plugin.d.ts +116 -0
- package/dist/src/components/chatbot/plugins/flight-card-plugin.js +594 -0
- package/dist/src/components/chatbot/plugins/flow-diagram-plugin.d.ts +23 -0
- package/dist/src/components/chatbot/plugins/flow-diagram-plugin.js +495 -0
- package/dist/src/components/chatbot/plugins/index.d.ts +16 -0
- package/dist/src/components/chatbot/plugins/index.js +17 -0
- package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.d.ts +43 -0
- package/dist/src/components/chatbot/plugins/json-graph-renderer-plugin.js +166 -0
- package/dist/src/components/chatbot/plugins/markdown-plugin.d.ts +26 -0
- package/dist/src/components/chatbot/plugins/markdown-plugin.js +68 -0
- package/dist/src/components/chatbot/plugins/persistence-plugin.d.ts +30 -0
- package/dist/src/components/chatbot/plugins/persistence-plugin.js +91 -0
- package/dist/src/components/chatbot/plugins/print-job-card-plugin.d.ts +110 -0
- package/dist/src/components/chatbot/plugins/print-job-card-plugin.js +505 -0
- package/dist/src/components/chatbot/plugins/selection-card-plugin.d.ts +111 -0
- package/dist/src/components/chatbot/plugins/selection-card-plugin.js +318 -0
- package/dist/src/components/chatbot/providers/custom-api-provider.d.ts +63 -0
- package/dist/src/components/chatbot/providers/custom-api-provider.js +240 -0
- package/dist/src/components/chatbot/providers/index.d.ts +16 -0
- package/dist/src/components/chatbot/providers/index.js +13 -0
- package/dist/src/components/chatbot/providers/mock-provider.d.ts +154 -0
- package/dist/src/components/chatbot/providers/mock-provider.js +411 -0
- package/dist/src/components/chatbot/providers/native-ws-provider.d.ts +184 -0
- package/dist/src/components/chatbot/providers/native-ws-provider.js +544 -0
- package/dist/src/components/chatbot/providers/openai-provider.d.ts +32 -0
- package/dist/src/components/chatbot/providers/openai-provider.js +246 -0
- package/dist/src/components/chatbot/providers/socket-provider.d.ts +159 -0
- package/dist/src/components/chatbot/providers/socket-provider.js +390 -0
- package/dist/src/components/chatbot/providers/workflow-socket-provider.d.ts +116 -0
- package/dist/src/components/chatbot/providers/workflow-socket-provider.js +484 -0
- package/dist/src/components/chatbot/storage/index.d.ts +7 -0
- package/dist/src/components/chatbot/storage/index.js +8 -0
- package/dist/src/components/chatbot/storage/storage-implementations.d.ts +43 -0
- package/dist/src/components/chatbot/storage/storage-implementations.js +179 -0
- package/dist/src/components/chatbot/templates/artifact-panel.template.d.ts +22 -0
- package/dist/src/components/chatbot/templates/artifact-panel.template.js +81 -0
- package/dist/src/components/chatbot/templates/chatbot-main.template.d.ts +49 -0
- package/dist/src/components/chatbot/templates/chatbot-main.template.js +115 -0
- package/dist/src/components/chatbot/templates/file-preview-modal.template.d.ts +19 -0
- package/dist/src/components/chatbot/templates/file-preview-modal.template.js +74 -0
- package/dist/src/components/chatbot/templates/file-upload-area.template.d.ts +19 -0
- package/dist/src/components/chatbot/templates/file-upload-area.template.js +29 -0
- package/dist/src/components/chatbot/templates/index.d.ts +15 -0
- package/dist/src/components/chatbot/templates/index.js +15 -0
- package/dist/src/components/chatbot/templates/input-box.template.d.ts +49 -0
- package/dist/src/components/chatbot/templates/input-box.template.js +317 -0
- package/dist/src/components/chatbot/templates/message.template.d.ts +31 -0
- package/dist/src/components/chatbot/templates/message.template.js +214 -0
- package/dist/src/components/chatbot/templates/suggestion.template.d.ts +20 -0
- package/dist/src/components/chatbot/templates/suggestion.template.js +40 -0
- package/dist/src/components/chatbot/templates/thread-sidebar.template.d.ts +24 -0
- package/dist/src/components/chatbot/templates/thread-sidebar.template.js +160 -0
- package/dist/src/components/chatbot/templates/url-modal.template.d.ts +25 -0
- package/dist/src/components/chatbot/templates/url-modal.template.js +100 -0
- package/dist/src/components/chatbot/utils/format.d.ts +23 -0
- package/dist/src/components/chatbot/utils/format.js +84 -0
- package/dist/src/components/chatbot/utils/index.d.ts +7 -0
- package/dist/src/components/chatbot/utils/index.js +7 -0
- package/dist/src/components/checkbox/mixins/checkbox-event-mixin.d.ts +87 -0
- package/dist/src/components/checkbox/mixins/checkbox-event-mixin.js +94 -0
- package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.d.ts +55 -0
- package/dist/src/components/checkbox/mixins/checkbox-focus-mixin.js +57 -0
- package/dist/src/components/checkbox/mixins/index.d.ts +10 -0
- package/dist/src/components/checkbox/mixins/index.js +8 -0
- package/dist/src/components/checkbox/test/checkbox_test.d.ts +2 -0
- package/dist/src/components/checkbox/test/checkbox_test.js +88 -0
- package/dist/src/components/collapse/controllers/accordion.controller.d.ts +60 -0
- package/dist/src/components/collapse/controllers/accordion.controller.js +132 -0
- package/dist/src/components/collapse/controllers/animation.controller.d.ts +40 -0
- package/dist/src/components/collapse/controllers/animation.controller.js +125 -0
- package/dist/src/components/collapse/controllers/base.controller.d.ts +48 -0
- package/dist/src/components/collapse/controllers/base.controller.js +69 -0
- package/dist/src/components/collapse/controllers/index.d.ts +12 -0
- package/dist/src/components/collapse/controllers/index.js +11 -0
- package/dist/src/components/collapse/controllers/keyboard.controller.d.ts +73 -0
- package/dist/src/components/collapse/controllers/keyboard.controller.js +186 -0
- package/dist/src/components/colorpicker/controllers/base.controller.d.ts +14 -0
- package/dist/src/components/colorpicker/controllers/base.controller.js +15 -0
- package/dist/src/components/colorpicker/controllers/dropdown.controller.d.ts +60 -0
- package/dist/src/components/colorpicker/controllers/dropdown.controller.js +243 -0
- package/dist/src/components/colorpicker/controllers/event.controller.d.ts +46 -0
- package/dist/src/components/colorpicker/controllers/event.controller.js +130 -0
- package/dist/src/components/colorpicker/controllers/index.d.ts +4 -0
- package/dist/src/components/colorpicker/controllers/index.js +4 -0
- package/dist/src/components/colorpicker/interfaces/index.d.ts +60 -0
- package/dist/src/components/colorpicker/interfaces/index.js +2 -0
- package/dist/src/components/datepicker/controllers/calendar.controller.d.ts +78 -0
- package/dist/src/components/datepicker/controllers/calendar.controller.js +225 -0
- package/dist/src/components/datepicker/controllers/index.d.ts +11 -0
- package/dist/src/components/datepicker/controllers/index.js +11 -0
- package/dist/src/components/datepicker/controllers/keyboard.controller.d.ts +96 -0
- package/dist/src/components/datepicker/controllers/keyboard.controller.js +246 -0
- package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.d.ts +48 -0
- package/dist/src/components/datepicker/controllers/month-year-dropdown.controller.js +92 -0
- package/dist/src/components/datepicker/controllers/positioning.controller.d.ts +82 -0
- package/dist/src/components/datepicker/controllers/positioning.controller.js +247 -0
- package/dist/src/components/datepicker/controllers/selection.controller.d.ts +92 -0
- package/dist/src/components/datepicker/controllers/selection.controller.js +267 -0
- package/dist/src/components/datepicker/interfaces/base-controller.interface.d.ts +40 -0
- package/dist/src/components/datepicker/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.d.ts +112 -0
- package/dist/src/components/datepicker/interfaces/datepicker-controllers.interface.js +7 -0
- package/dist/src/components/datepicker/interfaces/index.d.ts +8 -0
- package/dist/src/components/datepicker/interfaces/index.js +7 -0
- package/dist/src/components/datepicker/templates/days.template.d.ts +4 -0
- package/dist/src/components/datepicker/templates/days.template.js +40 -0
- package/dist/src/components/datepicker/templates/dropdown.template.d.ts +10 -0
- package/dist/src/components/datepicker/templates/dropdown.template.js +50 -0
- package/dist/src/components/datepicker/templates/headers.template.d.ts +2 -0
- package/dist/src/components/datepicker/templates/headers.template.js +5 -0
- package/dist/src/components/datepicker/templates/months.template.d.ts +6 -0
- package/dist/src/components/datepicker/templates/months.template.js +10 -0
- package/dist/src/components/datepicker/templates/years.template.d.ts +6 -0
- package/dist/src/components/datepicker/templates/years.template.js +11 -0
- package/dist/src/components/datepicker/test/datepicker_test.d.ts +2 -0
- package/dist/src/components/datepicker/test/datepicker_test.js +134 -0
- package/dist/src/components/datepicker/utils/day.helper.d.ts +5 -0
- package/dist/src/components/datepicker/utils/day.helper.js +53 -0
- package/dist/src/components/datepicker/utils/formatter.d.ts +2 -0
- package/dist/src/components/datepicker/utils/formatter.js +9 -0
- package/dist/src/components/datepicker/utils/index.d.ts +11 -0
- package/dist/src/components/datepicker/utils/index.js +11 -0
- package/dist/src/components/datepicker/utils/locale.helper.d.ts +144 -0
- package/dist/src/components/datepicker/utils/locale.helper.js +151 -0
- package/dist/src/components/datepicker/utils/month.helper.d.ts +3 -0
- package/dist/src/components/datepicker/utils/month.helper.js +24 -0
- package/dist/src/components/datepicker/utils/string.helper.d.ts +2 -0
- package/dist/src/components/datepicker/utils/string.helper.js +4 -0
- package/dist/src/components/document/demo/document-demo.d.ts +12 -0
- package/dist/src/components/document/demo/document-demo.js +40 -0
- package/dist/src/components/dropdown/controllers/base.controller.d.ts +18 -0
- package/dist/src/components/dropdown/controllers/base.controller.js +22 -0
- package/dist/src/components/dropdown/controllers/dropdown.controller.d.ts +50 -0
- package/dist/src/components/dropdown/controllers/dropdown.controller.js +408 -0
- package/dist/src/components/dropdown/controllers/index.d.ts +3 -0
- package/dist/src/components/dropdown/controllers/index.js +3 -0
- package/dist/src/components/dropdown/interfaces/controller-interfaces.d.ts +79 -0
- package/dist/src/components/dropdown/interfaces/controller-interfaces.js +2 -0
- package/dist/src/components/dropdown/interfaces/index.d.ts +2 -0
- package/dist/src/components/dropdown/interfaces/index.js +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.d.ts +12 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.js +55 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.style.d.ts +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-item.style.js +34 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.d.ts +18 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.js +70 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.d.ts +2 -0
- package/dist/src/components/dropdown/templates/nr-dropdown-menu.style.js +49 -0
- package/dist/src/components/file-upload/demo/file-upload-demo.d.ts +18 -0
- package/dist/src/components/file-upload/demo/file-upload-demo.js +156 -0
- package/dist/src/components/form/controllers/submission.controller.d.ts +60 -0
- package/dist/src/components/form/controllers/submission.controller.js +220 -0
- package/dist/src/components/form/controllers/validation.controller.d.ts +87 -0
- package/dist/src/components/form/controllers/validation.controller.js +236 -0
- package/dist/src/components/form/interfaces/validation.interface.d.ts +118 -0
- package/dist/src/components/form/interfaces/validation.interface.js +7 -0
- package/dist/src/components/icon/mixins/clickable-mixin.d.ts +57 -0
- package/dist/src/components/icon/mixins/clickable-mixin.js +111 -0
- package/dist/src/components/icon/mixins/index.d.ts +7 -0
- package/dist/src/components/icon/mixins/index.js +7 -0
- package/dist/src/components/iconpicker/controllers/event.controller.d.ts +38 -0
- package/dist/src/components/iconpicker/controllers/event.controller.js +68 -0
- package/dist/src/components/iconpicker/controllers/index.d.ts +9 -0
- package/dist/src/components/iconpicker/controllers/index.js +9 -0
- package/dist/src/components/iconpicker/controllers/search.controller.d.ts +34 -0
- package/dist/src/components/iconpicker/controllers/search.controller.js +55 -0
- package/dist/src/components/iconpicker/controllers/selection.controller.d.ts +27 -0
- package/dist/src/components/iconpicker/controllers/selection.controller.js +39 -0
- package/dist/src/components/iconpicker/interfaces/icon-picker.interface.d.ts +13 -0
- package/dist/src/components/iconpicker/interfaces/icon-picker.interface.js +7 -0
- package/dist/src/components/iconpicker/interfaces/index.d.ts +7 -0
- package/dist/src/components/iconpicker/interfaces/index.js +7 -0
- package/dist/src/components/iconpicker/utils/icon-filter.utils.d.ts +29 -0
- package/dist/src/components/iconpicker/utils/icon-filter.utils.js +96 -0
- package/dist/src/components/iconpicker/utils/icon-loader.utils.d.ts +39 -0
- package/dist/src/components/iconpicker/utils/icon-loader.utils.js +115 -0
- package/dist/src/components/iconpicker/utils/index.d.ts +8 -0
- package/dist/src/components/iconpicker/utils/index.js +8 -0
- package/dist/src/components/iconpicker/utils/lucide-icons.d.ts +10 -0
- package/dist/src/components/iconpicker/utils/lucide-icons.js +1624 -0
- package/dist/src/components/input/controllers/base.controller.d.ts +35 -0
- package/dist/src/components/input/controllers/base.controller.js +13 -0
- package/dist/src/components/input/controllers/event.controller.d.ts +111 -0
- package/dist/src/components/input/controllers/event.controller.js +355 -0
- package/dist/src/components/input/controllers/index.d.ts +14 -0
- package/dist/src/components/input/controllers/index.js +10 -0
- package/dist/src/components/input/controllers/state.controller.d.ts +153 -0
- package/dist/src/components/input/controllers/state.controller.js +245 -0
- package/dist/src/components/input/controllers/validation.controller.d.ts +205 -0
- package/dist/src/components/input/controllers/validation.controller.js +698 -0
- package/dist/src/components/input/mixins/focus-mixin.d.ts +60 -0
- package/dist/src/components/input/mixins/focus-mixin.js +65 -0
- package/dist/src/components/input/mixins/index.d.ts +12 -0
- package/dist/src/components/input/mixins/index.js +9 -0
- package/dist/src/components/input/mixins/number-mixin.d.ts +51 -0
- package/dist/src/components/input/mixins/number-mixin.js +128 -0
- package/dist/src/components/input/mixins/selection-mixin.d.ts +57 -0
- package/dist/src/components/input/mixins/selection-mixin.js +80 -0
- package/dist/src/components/input/test/nr-input_test.d.ts +2 -0
- package/dist/src/components/input/test/nr-input_test.js +159 -0
- package/dist/src/components/input/utils/index.d.ts +8 -0
- package/dist/src/components/input/utils/index.js +8 -0
- package/dist/src/components/input/utils/input-renderers.d.ts +54 -0
- package/dist/src/components/input/utils/input-renderers.js +178 -0
- package/dist/src/components/input/utils/input-validation.utils.d.ts +26 -0
- package/dist/src/components/input/utils/input-validation.utils.js +103 -0
- package/dist/src/components/menu/controllers/accessibility.controller.d.ts +86 -0
- package/dist/src/components/menu/controllers/accessibility.controller.js +235 -0
- package/dist/src/components/menu/controllers/base.controller.d.ts +41 -0
- package/dist/src/components/menu/controllers/base.controller.js +61 -0
- package/dist/src/components/menu/controllers/index.d.ts +10 -0
- package/dist/src/components/menu/controllers/index.js +10 -0
- package/dist/src/components/menu/controllers/keyboard.controller.d.ts +84 -0
- package/dist/src/components/menu/controllers/keyboard.controller.js +328 -0
- package/dist/src/components/menu/controllers/state.controller.d.ts +106 -0
- package/dist/src/components/menu/controllers/state.controller.js +249 -0
- package/dist/src/components/menu/interfaces/controller.interface.d.ts +51 -0
- package/dist/src/components/menu/interfaces/controller.interface.js +7 -0
- package/dist/src/components/menu/interfaces/index.d.ts +7 -0
- package/dist/src/components/menu/interfaces/index.js +7 -0
- package/dist/src/components/modal/controllers/index.d.ts +8 -0
- package/dist/src/components/modal/controllers/index.js +8 -0
- package/dist/src/components/modal/controllers/modal-drag-controller.d.ts +39 -0
- package/dist/src/components/modal/controllers/modal-drag-controller.js +108 -0
- package/dist/src/components/modal/controllers/modal-keyboard-controller.d.ts +36 -0
- package/dist/src/components/modal/controllers/modal-keyboard-controller.js +128 -0
- package/dist/src/components/panel/controllers/index.d.ts +8 -0
- package/dist/src/components/panel/controllers/index.js +8 -0
- package/dist/src/components/panel/controllers/panel-drag-controller.d.ts +40 -0
- package/dist/src/components/panel/controllers/panel-drag-controller.js +118 -0
- package/dist/src/components/panel/controllers/panel-resize-controller.d.ts +37 -0
- package/dist/src/components/panel/controllers/panel-resize-controller.js +124 -0
- package/dist/src/components/presence/bundle.js +528 -0
- package/dist/src/components/presence/bundle.js.gz +0 -0
- package/dist/src/components/presence/index.d.ts +10 -0
- package/dist/src/components/presence/index.js +10 -0
- package/dist/src/components/presence/presence-avatars.component.d.ts +40 -0
- package/dist/src/components/presence/presence-avatars.component.js +83 -0
- package/dist/src/components/presence/presence-avatars.style.d.ts +7 -0
- package/dist/src/components/presence/presence-avatars.style.js +105 -0
- package/dist/src/components/presence/presence-chat.component.d.ts +53 -0
- package/dist/src/components/presence/presence-chat.component.js +228 -0
- package/dist/src/components/presence/presence-chat.style.d.ts +7 -0
- package/dist/src/components/presence/presence-chat.style.js +248 -0
- package/dist/src/components/presence/presence.component.d.ts +71 -0
- package/dist/src/components/presence/presence.component.js +263 -0
- package/dist/src/components/presence/presence.style.d.ts +7 -0
- package/dist/src/components/presence/presence.style.js +12 -0
- package/dist/src/components/presence/presence.types.d.ts +31 -0
- package/dist/src/components/presence/presence.types.js +7 -0
- package/dist/src/components/presence/react.d.ts +24 -0
- package/dist/src/components/presence/react.js +41 -0
- package/dist/src/components/radio-group/controllers/focus.controller.d.ts +98 -0
- package/dist/src/components/radio-group/controllers/focus.controller.js +216 -0
- package/dist/src/components/radio-group/controllers/group.controller.d.ts +140 -0
- package/dist/src/components/radio-group/controllers/group.controller.js +179 -0
- package/dist/src/components/radio-group/controllers/index.d.ts +11 -0
- package/dist/src/components/radio-group/controllers/index.js +11 -0
- package/dist/src/components/radio-group/controllers/keyboard.controller.d.ts +24 -0
- package/dist/src/components/radio-group/controllers/keyboard.controller.js +93 -0
- package/dist/src/components/radio-group/controllers/ripple.controller.d.ts +59 -0
- package/dist/src/components/radio-group/controllers/ripple.controller.js +208 -0
- package/dist/src/components/radio-group/controllers/validation.controller.d.ts +73 -0
- package/dist/src/components/radio-group/controllers/validation.controller.js +108 -0
- package/dist/src/components/radio-group/interfaces/base-controller.interface.d.ts +75 -0
- package/dist/src/components/radio-group/interfaces/base-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/focus-controller.interface.d.ts +40 -0
- package/dist/src/components/radio-group/interfaces/focus-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/index.d.ts +11 -0
- package/dist/src/components/radio-group/interfaces/index.js +7 -0
- package/dist/src/components/radio-group/interfaces/ripple-controller.interface.d.ts +31 -0
- package/dist/src/components/radio-group/interfaces/ripple-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/selection-controller.interface.d.ts +45 -0
- package/dist/src/components/radio-group/interfaces/selection-controller.interface.js +7 -0
- package/dist/src/components/radio-group/interfaces/validation-controller.interface.d.ts +48 -0
- package/dist/src/components/radio-group/interfaces/validation-controller.interface.js +7 -0
- package/dist/src/components/radio-group/test/radio_test.d.ts +2 -0
- package/dist/src/components/radio-group/test/radio_test.js +79 -0
- package/dist/src/components/select/controllers/base.controller.d.ts +10 -0
- package/dist/src/components/select/controllers/base.controller.js +8 -0
- package/dist/src/components/select/controllers/dropdown.controller.d.ts +76 -0
- package/dist/src/components/select/controllers/dropdown.controller.js +281 -0
- package/dist/src/components/select/controllers/event.controller.d.ts +54 -0
- package/dist/src/components/select/controllers/event.controller.js +113 -0
- package/dist/src/components/select/controllers/focus.controller.d.ts +79 -0
- package/dist/src/components/select/controllers/focus.controller.js +230 -0
- package/dist/src/components/select/controllers/index.d.ts +9 -0
- package/dist/src/components/select/controllers/index.js +9 -0
- package/dist/src/components/select/controllers/keyboard.controller.d.ts +75 -0
- package/dist/src/components/select/controllers/keyboard.controller.js +369 -0
- package/dist/src/components/select/controllers/search.controller.d.ts +71 -0
- package/dist/src/components/select/controllers/search.controller.js +167 -0
- package/dist/src/components/select/controllers/selection.controller.d.ts +67 -0
- package/dist/src/components/select/controllers/selection.controller.js +217 -0
- package/dist/src/components/select/controllers/validation.controller.d.ts +66 -0
- package/dist/src/components/select/controllers/validation.controller.js +189 -0
- package/dist/src/components/select/interfaces/base-controller.interface.d.ts +147 -0
- package/dist/src/components/select/interfaces/base-controller.interface.js +2 -0
- package/dist/src/components/select/interfaces/controller-interfaces.d.ts +94 -0
- package/dist/src/components/select/interfaces/controller-interfaces.js +11 -0
- package/dist/src/components/select/interfaces/index.d.ts +3 -0
- package/dist/src/components/select/interfaces/index.js +3 -0
- package/dist/src/components/slider-input/utils/debounce.d.ts +2 -0
- package/dist/src/components/slider-input/utils/debounce.js +8 -0
- package/dist/src/components/slider-input/utils/index.d.ts +2 -0
- package/dist/src/components/slider-input/utils/index.js +2 -0
- package/dist/src/components/table/controllers/base.controller.d.ts +15 -0
- package/dist/src/components/table/controllers/base.controller.js +13 -0
- package/dist/src/components/table/controllers/filter.controller.d.ts +48 -0
- package/dist/src/components/table/controllers/filter.controller.js +152 -0
- package/dist/src/components/table/controllers/index.d.ts +11 -0
- package/dist/src/components/table/controllers/index.js +11 -0
- package/dist/src/components/table/controllers/pagination.controller.d.ts +36 -0
- package/dist/src/components/table/controllers/pagination.controller.js +110 -0
- package/dist/src/components/table/controllers/selection.controller.d.ts +40 -0
- package/dist/src/components/table/controllers/selection.controller.js +120 -0
- package/dist/src/components/table/controllers/sort.controller.d.ts +32 -0
- package/dist/src/components/table/controllers/sort.controller.js +102 -0
- package/dist/src/components/table/interfaces/index.d.ts +7 -0
- package/dist/src/components/table/interfaces/index.js +7 -0
- package/dist/src/components/table/interfaces/table-host.interface.d.ts +48 -0
- package/dist/src/components/table/interfaces/table-host.interface.js +7 -0
- package/dist/src/components/table/templates/actions.template.d.ts +14 -0
- package/dist/src/components/table/templates/actions.template.js +15 -0
- package/dist/src/components/table/templates/column-filter.template.d.ts +24 -0
- package/dist/src/components/table/templates/column-filter.template.js +76 -0
- package/dist/src/components/table/templates/content.template.d.ts +37 -0
- package/dist/src/components/table/templates/content.template.js +208 -0
- package/dist/src/components/table/templates/empty.template.d.ts +8 -0
- package/dist/src/components/table/templates/empty.template.js +47 -0
- package/dist/src/components/table/templates/filter.template.d.ts +14 -0
- package/dist/src/components/table/templates/filter.template.js +28 -0
- package/dist/src/components/table/templates/index.d.ts +8 -0
- package/dist/src/components/table/templates/index.js +8 -0
- package/dist/src/components/table/templates/loading.template.d.ts +21 -0
- package/dist/src/components/table/templates/loading.template.js +51 -0
- package/dist/src/components/table/templates/pagination.template.d.ts +24 -0
- package/dist/src/components/table/templates/pagination.template.js +52 -0
- package/dist/src/components/tabs/controllers/base.controller.d.ts +49 -0
- package/dist/src/components/tabs/controllers/base.controller.js +26 -0
- package/dist/src/components/tabs/controllers/dragdrop.controller.d.ts +84 -0
- package/dist/src/components/tabs/controllers/dragdrop.controller.js +202 -0
- package/dist/src/components/tabs/controllers/editable.controller.d.ts +100 -0
- package/dist/src/components/tabs/controllers/editable.controller.js +242 -0
- package/dist/src/components/tabs/controllers/event.controller.d.ts +104 -0
- package/dist/src/components/tabs/controllers/event.controller.js +239 -0
- package/dist/src/components/tabs/controllers/index.d.ts +12 -0
- package/dist/src/components/tabs/controllers/index.js +18 -0
- package/dist/src/components/tabs/controllers/keyboard.controller.d.ts +85 -0
- package/dist/src/components/tabs/controllers/keyboard.controller.js +233 -0
- package/dist/src/components/tabs/controllers/popout.controller.d.ts +96 -0
- package/dist/src/components/tabs/controllers/popout.controller.js +441 -0
- package/dist/src/components/textarea/controllers/base.controller.d.ts +43 -0
- package/dist/src/components/textarea/controllers/base.controller.js +19 -0
- package/dist/src/components/textarea/controllers/event.controller.d.ts +169 -0
- package/dist/src/components/textarea/controllers/event.controller.js +408 -0
- package/dist/src/components/textarea/controllers/index.d.ts +9 -0
- package/dist/src/components/textarea/controllers/index.js +9 -0
- package/dist/src/components/textarea/controllers/validation.controller.d.ts +133 -0
- package/dist/src/components/textarea/controllers/validation.controller.js +315 -0
- package/dist/src/components/timepicker/controllers/formatting.controller.d.ts +93 -0
- package/dist/src/components/timepicker/controllers/formatting.controller.js +195 -0
- package/dist/src/components/timepicker/controllers/index.d.ts +9 -0
- package/dist/src/components/timepicker/controllers/index.js +9 -0
- package/dist/src/components/timepicker/controllers/selection.controller.d.ts +72 -0
- package/dist/src/components/timepicker/controllers/selection.controller.js +175 -0
- package/dist/src/components/timepicker/controllers/validation.controller.d.ts +88 -0
- package/dist/src/components/timepicker/controllers/validation.controller.js +200 -0
- package/dist/src/components/timepicker/interfaces/timepicker.interface.d.ts +103 -0
- package/dist/src/components/timepicker/interfaces/timepicker.interface.js +7 -0
- package/dist/src/components/timepicker/test/timepicker_test.d.ts +7 -0
- package/dist/src/components/timepicker/test/timepicker_test.js +218 -0
- package/dist/src/components/timepicker/utils/time.utils.d.ts +87 -0
- package/dist/src/components/timepicker/utils/time.utils.js +235 -0
- package/dist/src/components/toast/controllers/base.controller.d.ts +20 -0
- package/dist/src/components/toast/controllers/base.controller.js +12 -0
- package/dist/src/components/toast/controllers/index.d.ts +8 -0
- package/dist/src/components/toast/controllers/index.js +7 -0
- package/dist/src/components/tooltips/demo/tooltips-demo.d.ts +18 -0
- package/dist/src/components/tooltips/demo/tooltips-demo.js +132 -0
- package/dist/src/components/tooltips/test/tooltips_test.d.ts +2 -0
- package/dist/src/components/tooltips/test/tooltips_test.js +145 -0
- package/package.json +27 -1
- 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
|