@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,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Analytics plugin - tracks chatbot usage and events
|
|
8
|
+
*/
|
|
9
|
+
export class AnalyticsPlugin {
|
|
10
|
+
constructor(trackEvent) {
|
|
11
|
+
this.id = 'analytics';
|
|
12
|
+
this.name = 'Analytics Plugin';
|
|
13
|
+
this.version = '1.0.0';
|
|
14
|
+
this.trackEvent = trackEvent;
|
|
15
|
+
}
|
|
16
|
+
onInit() {
|
|
17
|
+
this.trackEvent('chatbot:initialized', {
|
|
18
|
+
timestamp: new Date().toISOString()
|
|
19
|
+
});
|
|
20
|
+
console.log('[AnalyticsPlugin] Initialized');
|
|
21
|
+
}
|
|
22
|
+
onDestroy() {
|
|
23
|
+
this.trackEvent('chatbot:destroyed', {
|
|
24
|
+
timestamp: new Date().toISOString()
|
|
25
|
+
});
|
|
26
|
+
console.log('[AnalyticsPlugin] Destroyed');
|
|
27
|
+
}
|
|
28
|
+
onMessageSent(message) {
|
|
29
|
+
this.trackEvent('chatbot:message:sent', {
|
|
30
|
+
messageId: message.id,
|
|
31
|
+
messageLength: message.text.length,
|
|
32
|
+
hasFiles: !!message.files && message.files.length > 0,
|
|
33
|
+
timestamp: message.timestamp
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
onMessageReceived(message) {
|
|
37
|
+
this.trackEvent('chatbot:message:received', {
|
|
38
|
+
messageId: message.id,
|
|
39
|
+
messageLength: message.text.length,
|
|
40
|
+
sender: message.sender,
|
|
41
|
+
timestamp: message.timestamp
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
onError(error) {
|
|
45
|
+
this.trackEvent('chatbot:error', {
|
|
46
|
+
error: error.message,
|
|
47
|
+
stack: error.stack,
|
|
48
|
+
timestamp: new Date().toISOString()
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=analytics-plugin.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { ChatbotPlugin } from '../core/types.js';
|
|
7
|
+
import type { ChatbotMessage, ChatbotArtifact } from '../chatbot.types.js';
|
|
8
|
+
import { ChatPluginBase } from './chat-plugin.js';
|
|
9
|
+
/**
|
|
10
|
+
* Artifact Plugin - extracts fenced code blocks from bot messages and replaces
|
|
11
|
+
* them with clickable placeholder cards. Works with a right-side artifact
|
|
12
|
+
* panel rendered by the chatbot component.
|
|
13
|
+
*
|
|
14
|
+
* The plugin operates on *completed* bot messages (`onMessageReceived`) so
|
|
15
|
+
* that streaming chunk-splitting cannot break partially-received code fences.
|
|
16
|
+
* While streaming is in progress the code blocks render normally via the
|
|
17
|
+
* MarkdownPlugin; once the full message arrives the blocks are collapsed into
|
|
18
|
+
* compact cards.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const artifactPlugin = new ArtifactPlugin();
|
|
23
|
+
* const controller = new ChatbotCoreController({
|
|
24
|
+
* plugins: [new MarkdownPlugin(), artifactPlugin],
|
|
25
|
+
* // ...
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class ArtifactPlugin extends ChatPluginBase implements ChatbotPlugin {
|
|
30
|
+
readonly id = "artifact";
|
|
31
|
+
readonly name = "Artifact Plugin";
|
|
32
|
+
readonly version = "1.0.0";
|
|
33
|
+
/** All extracted artifacts keyed by their id */
|
|
34
|
+
private readonly artifacts;
|
|
35
|
+
/** Reference to the core controller (set via onInit) */
|
|
36
|
+
private controller;
|
|
37
|
+
onInit(controller: any): void;
|
|
38
|
+
/**
|
|
39
|
+
* Post-process a complete bot message (called from both onMessageReceived
|
|
40
|
+
* for addMessage()-based messages and from the processing:end listener
|
|
41
|
+
* for streamed messages).
|
|
42
|
+
*/
|
|
43
|
+
onMessageReceived(message: ChatbotMessage): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Detect fenced code blocks, extract them as artifacts, and replace each
|
|
46
|
+
* block in the message text with a compact clickable placeholder card.
|
|
47
|
+
*/
|
|
48
|
+
private processMessage;
|
|
49
|
+
/**
|
|
50
|
+
* Rebuild the artifact Map entries from a message that was already processed.
|
|
51
|
+
* This is needed after thread switches: the message text/metadata are persisted
|
|
52
|
+
* in the thread, but the in-memory artifact Map is not.
|
|
53
|
+
*/
|
|
54
|
+
private rebuildArtifactsFromMetadata;
|
|
55
|
+
/** Get an artifact by its id */
|
|
56
|
+
getArtifact(id: string): ChatbotArtifact | undefined;
|
|
57
|
+
/** Get all stored artifacts */
|
|
58
|
+
getAllArtifacts(): ChatbotArtifact[];
|
|
59
|
+
/** Get all artifacts belonging to a specific message */
|
|
60
|
+
getArtifactsForMessage(messageId: string): ChatbotArtifact[];
|
|
61
|
+
/**
|
|
62
|
+
* Try to extract a meaningful title from the first comment line of the code.
|
|
63
|
+
* Falls back to a generic "Code Snippet #N" title.
|
|
64
|
+
*/
|
|
65
|
+
private extractTitle;
|
|
66
|
+
/** Render a compact clickable placeholder card for an artifact */
|
|
67
|
+
private renderPlaceholderCard;
|
|
68
|
+
/** CSS for the placeholder cards (injected once via style tag) */
|
|
69
|
+
private getStyles;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=artifact-plugin.d.ts.map
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
import { ChatbotSender } from '../chatbot.types.js';
|
|
16
|
+
import { ChatPluginBase } from './chat-plugin.js';
|
|
17
|
+
import { escapeHtml, getLangDisplayName, renderMarkdown } from '../utils/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Artifact Plugin - extracts fenced code blocks from bot messages and replaces
|
|
20
|
+
* them with clickable placeholder cards. Works with a right-side artifact
|
|
21
|
+
* panel rendered by the chatbot component.
|
|
22
|
+
*
|
|
23
|
+
* The plugin operates on *completed* bot messages (`onMessageReceived`) so
|
|
24
|
+
* that streaming chunk-splitting cannot break partially-received code fences.
|
|
25
|
+
* While streaming is in progress the code blocks render normally via the
|
|
26
|
+
* MarkdownPlugin; once the full message arrives the blocks are collapsed into
|
|
27
|
+
* compact cards.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const artifactPlugin = new ArtifactPlugin();
|
|
32
|
+
* const controller = new ChatbotCoreController({
|
|
33
|
+
* plugins: [new MarkdownPlugin(), artifactPlugin],
|
|
34
|
+
* // ...
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export class ArtifactPlugin extends ChatPluginBase {
|
|
39
|
+
constructor() {
|
|
40
|
+
super(...arguments);
|
|
41
|
+
this.id = 'artifact';
|
|
42
|
+
this.name = 'Artifact Plugin';
|
|
43
|
+
this.version = '1.0.0';
|
|
44
|
+
/** All extracted artifacts keyed by their id */
|
|
45
|
+
this.artifacts = new Map();
|
|
46
|
+
}
|
|
47
|
+
// ── Lifecycle ──────────────────────────────────────────────────────
|
|
48
|
+
onInit(controller) {
|
|
49
|
+
this.controller = controller;
|
|
50
|
+
// For streamed messages, onMessageReceived() is NOT called (only
|
|
51
|
+
// messageHandler.addMessage triggers it, while streaming uses
|
|
52
|
+
// appendToBotMessage). Listen for processing:end to post-process
|
|
53
|
+
// the final bot message after the stream finishes.
|
|
54
|
+
if (controller && typeof controller.on === 'function') {
|
|
55
|
+
controller.on('processing:end', () => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
try {
|
|
58
|
+
const messages = ((_a = controller.getMessages) === null || _a === void 0 ? void 0 : _a.call(controller)) || [];
|
|
59
|
+
const lastBotMsg = [...messages].reverse().find((m) => m.sender === ChatbotSender.Bot);
|
|
60
|
+
if (lastBotMsg && !((_b = lastBotMsg.metadata) === null || _b === void 0 ? void 0 : _b.hasArtifacts)) {
|
|
61
|
+
this.processMessage(lastBotMsg);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (_c) {
|
|
65
|
+
// best-effort
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Post-process a complete bot message (called from both onMessageReceived
|
|
72
|
+
* for addMessage()-based messages and from the processing:end listener
|
|
73
|
+
* for streamed messages).
|
|
74
|
+
*/
|
|
75
|
+
onMessageReceived(message) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
if (message.sender !== ChatbotSender.Bot)
|
|
78
|
+
return;
|
|
79
|
+
this.processMessage(message);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Detect fenced code blocks, extract them as artifacts, and replace each
|
|
84
|
+
* block in the message text with a compact clickable placeholder card.
|
|
85
|
+
*/
|
|
86
|
+
processMessage(message) {
|
|
87
|
+
var _a;
|
|
88
|
+
// If already processed, rebuild the artifact Map from stored metadata
|
|
89
|
+
// so that artifact lookups work after thread switches.
|
|
90
|
+
if ((_a = message.metadata) === null || _a === void 0 ? void 0 : _a.hasArtifacts) {
|
|
91
|
+
this.rebuildArtifactsFromMetadata(message);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const rawText = message.text;
|
|
95
|
+
if (!rawText)
|
|
96
|
+
return;
|
|
97
|
+
// Match fenced code blocks: ```lang\n...\n```
|
|
98
|
+
const fenceRegex = /```(\w*)\n([\s\S]*?)```/g;
|
|
99
|
+
let match;
|
|
100
|
+
const extracted = [];
|
|
101
|
+
let index = 0;
|
|
102
|
+
while ((match = fenceRegex.exec(rawText)) !== null) {
|
|
103
|
+
const language = (match[1] || 'text').toLowerCase();
|
|
104
|
+
const content = match[2];
|
|
105
|
+
const id = `artifact-${message.id}-${index}`;
|
|
106
|
+
const title = this.extractTitle(content, language, index);
|
|
107
|
+
const artifact = {
|
|
108
|
+
id,
|
|
109
|
+
language,
|
|
110
|
+
content,
|
|
111
|
+
title,
|
|
112
|
+
messageId: message.id,
|
|
113
|
+
index
|
|
114
|
+
};
|
|
115
|
+
extracted.push(artifact);
|
|
116
|
+
this.artifacts.set(id, artifact);
|
|
117
|
+
index++;
|
|
118
|
+
}
|
|
119
|
+
if (extracted.length === 0)
|
|
120
|
+
return;
|
|
121
|
+
// Replace each fenced block with a placeholder card, and render basic
|
|
122
|
+
// markdown for the surrounding prose (since afterReceive from the
|
|
123
|
+
// MarkdownPlugin may not run for addMessage()-based messages).
|
|
124
|
+
let transformed = rawText;
|
|
125
|
+
let cardIndex = 0;
|
|
126
|
+
transformed = transformed.replaceAll(fenceRegex, () => {
|
|
127
|
+
const artifact = extracted[cardIndex++];
|
|
128
|
+
// Temporarily mark card positions with a unique token so they survive
|
|
129
|
+
// the markdown pass unscathed.
|
|
130
|
+
return `\x00ARTIFACT_CARD_${artifact.id}\x00`;
|
|
131
|
+
});
|
|
132
|
+
// Render markdown on the surrounding prose
|
|
133
|
+
transformed = renderMarkdown(transformed);
|
|
134
|
+
// Swap the tokens back to actual card HTML
|
|
135
|
+
for (const artifact of extracted) {
|
|
136
|
+
transformed = transformed.replace(`\x00ARTIFACT_CARD_${artifact.id}\x00`, this.renderPlaceholderCard(artifact));
|
|
137
|
+
}
|
|
138
|
+
// Inject styles (once per conversation)
|
|
139
|
+
const styleTag = this.getOncePerConversationStyleTag(this.getStyles());
|
|
140
|
+
// Update the message through the controller
|
|
141
|
+
if (this.controller && typeof this.controller.updateMessage === 'function') {
|
|
142
|
+
this.controller.updateMessage(message.id, {
|
|
143
|
+
text: styleTag + transformed,
|
|
144
|
+
metadata: Object.assign(Object.assign({}, message.metadata), { renderAsHtml: true, hasArtifacts: true, artifactIds: extracted.map(a => a.id),
|
|
145
|
+
// Preserve original text so artifacts can be rebuilt after thread switch
|
|
146
|
+
artifactOriginalText: rawText })
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Rebuild the artifact Map entries from a message that was already processed.
|
|
152
|
+
* This is needed after thread switches: the message text/metadata are persisted
|
|
153
|
+
* in the thread, but the in-memory artifact Map is not.
|
|
154
|
+
*/
|
|
155
|
+
rebuildArtifactsFromMetadata(message) {
|
|
156
|
+
var _a, _b;
|
|
157
|
+
const ids = (_a = message.metadata) === null || _a === void 0 ? void 0 : _a.artifactIds;
|
|
158
|
+
if (!(ids === null || ids === void 0 ? void 0 : ids.length))
|
|
159
|
+
return;
|
|
160
|
+
// Check if artifacts are already in the Map (no work needed)
|
|
161
|
+
if (ids.every(id => this.artifacts.has(id)))
|
|
162
|
+
return;
|
|
163
|
+
// Re-extract from the preserved original text
|
|
164
|
+
const originalText = (_b = message.metadata) === null || _b === void 0 ? void 0 : _b.artifactOriginalText;
|
|
165
|
+
if (!originalText)
|
|
166
|
+
return;
|
|
167
|
+
const fenceRegex = /```(\w*)\n([\s\S]*?)```/g;
|
|
168
|
+
let match;
|
|
169
|
+
let index = 0;
|
|
170
|
+
while ((match = fenceRegex.exec(originalText)) !== null) {
|
|
171
|
+
const language = (match[1] || 'text').toLowerCase();
|
|
172
|
+
const content = match[2];
|
|
173
|
+
const id = `artifact-${message.id}-${index}`;
|
|
174
|
+
const title = this.extractTitle(content, language, index);
|
|
175
|
+
this.artifacts.set(id, {
|
|
176
|
+
id,
|
|
177
|
+
language,
|
|
178
|
+
content,
|
|
179
|
+
title,
|
|
180
|
+
messageId: message.id,
|
|
181
|
+
index
|
|
182
|
+
});
|
|
183
|
+
index++;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// ── Public API ─────────────────────────────────────────────────────
|
|
187
|
+
/** Get an artifact by its id */
|
|
188
|
+
getArtifact(id) {
|
|
189
|
+
return this.artifacts.get(id);
|
|
190
|
+
}
|
|
191
|
+
/** Get all stored artifacts */
|
|
192
|
+
getAllArtifacts() {
|
|
193
|
+
return Array.from(this.artifacts.values());
|
|
194
|
+
}
|
|
195
|
+
/** Get all artifacts belonging to a specific message */
|
|
196
|
+
getArtifactsForMessage(messageId) {
|
|
197
|
+
return Array.from(this.artifacts.values()).filter(a => a.messageId === messageId);
|
|
198
|
+
}
|
|
199
|
+
// ── Private helpers ────────────────────────────────────────────────
|
|
200
|
+
/**
|
|
201
|
+
* Try to extract a meaningful title from the first comment line of the code.
|
|
202
|
+
* Falls back to a generic "Code Snippet #N" title.
|
|
203
|
+
*/
|
|
204
|
+
extractTitle(content, language, index) {
|
|
205
|
+
const firstLine = content.trimStart().split('\n')[0] || '';
|
|
206
|
+
// Single-line comment patterns: // ..., # ..., -- ..., /* ... */
|
|
207
|
+
const commentPatterns = [
|
|
208
|
+
/^\/\/\s*(.+)/, // // comment
|
|
209
|
+
/^#\s*(.+)/, // # comment
|
|
210
|
+
/^--\s*(.+)/, // -- comment (SQL)
|
|
211
|
+
/^\/\*\s*(.*?)\*\//, // /* comment */ (no trailing \s* — trim in code)
|
|
212
|
+
/^<!--\s*(.*?)-->/ // <!-- comment --> (no trailing \s* — trim in code)
|
|
213
|
+
];
|
|
214
|
+
for (const pattern of commentPatterns) {
|
|
215
|
+
const m = pattern.exec(firstLine);
|
|
216
|
+
if (m === null || m === void 0 ? void 0 : m[1]) {
|
|
217
|
+
const title = m[1].trim();
|
|
218
|
+
if (title.length > 0 && title.length <= 60)
|
|
219
|
+
return title;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Fallback: use language + index
|
|
223
|
+
const langLabel = getLangDisplayName(language);
|
|
224
|
+
return `${langLabel} Snippet ${index + 1}`;
|
|
225
|
+
}
|
|
226
|
+
/** Render a compact clickable placeholder card for an artifact */
|
|
227
|
+
renderPlaceholderCard(artifact) {
|
|
228
|
+
const langLabel = getLangDisplayName(artifact.language);
|
|
229
|
+
const title = escapeHtml(artifact.title);
|
|
230
|
+
return `<div class="nr-artifact-card" data-artifact-id="${artifact.id}" role="button" tabindex="0" aria-label="View ${title}">
|
|
231
|
+
<nr-icon name="code" size="small" class="nr-artifact-card__icon"></nr-icon>
|
|
232
|
+
<span class="nr-artifact-card__info">
|
|
233
|
+
<span class="nr-artifact-card__title">${title}</span>
|
|
234
|
+
<nr-tag size="small" class="nr-artifact-card__lang">${langLabel}</nr-tag>
|
|
235
|
+
</span>
|
|
236
|
+
<nr-icon name="chevron-right" size="small" class="nr-artifact-card__chevron"></nr-icon>
|
|
237
|
+
</div>`;
|
|
238
|
+
}
|
|
239
|
+
/** CSS for the placeholder cards (injected once via style tag) */
|
|
240
|
+
getStyles() {
|
|
241
|
+
return `
|
|
242
|
+
.nr-artifact-card {
|
|
243
|
+
display: flex;
|
|
244
|
+
align-items: center;
|
|
245
|
+
gap: 10px;
|
|
246
|
+
padding: 10px 14px;
|
|
247
|
+
margin: 8px 0;
|
|
248
|
+
background: #f6f8fa;
|
|
249
|
+
border: 1px solid #d0d7de;
|
|
250
|
+
border-radius: 8px;
|
|
251
|
+
cursor: pointer;
|
|
252
|
+
transition: background 0.15s ease, border-color 0.15s ease;
|
|
253
|
+
user-select: none;
|
|
254
|
+
max-width: 100%;
|
|
255
|
+
}
|
|
256
|
+
.nr-artifact-card:hover {
|
|
257
|
+
background: #eaeef2;
|
|
258
|
+
border-color: #8b949e;
|
|
259
|
+
}
|
|
260
|
+
.nr-artifact-card:focus-visible {
|
|
261
|
+
outline: 2px solid #0b5fff;
|
|
262
|
+
outline-offset: 2px;
|
|
263
|
+
}
|
|
264
|
+
.nr-artifact-card__icon {
|
|
265
|
+
flex-shrink: 0;
|
|
266
|
+
color: #57606a;
|
|
267
|
+
}
|
|
268
|
+
.nr-artifact-card__info {
|
|
269
|
+
display: flex;
|
|
270
|
+
flex-direction: column;
|
|
271
|
+
gap: 4px;
|
|
272
|
+
min-width: 0;
|
|
273
|
+
flex: 1;
|
|
274
|
+
}
|
|
275
|
+
.nr-artifact-card__title {
|
|
276
|
+
font-size: 13px;
|
|
277
|
+
font-weight: 500;
|
|
278
|
+
color: #1f2937;
|
|
279
|
+
white-space: nowrap;
|
|
280
|
+
overflow: hidden;
|
|
281
|
+
text-overflow: ellipsis;
|
|
282
|
+
line-height: 1.3;
|
|
283
|
+
}
|
|
284
|
+
.nr-artifact-card__lang {
|
|
285
|
+
align-self: flex-start;
|
|
286
|
+
}
|
|
287
|
+
.nr-artifact-card__chevron {
|
|
288
|
+
flex-shrink: 0;
|
|
289
|
+
color: #6c757d;
|
|
290
|
+
}
|
|
291
|
+
@media (prefers-color-scheme: dark) {
|
|
292
|
+
.nr-artifact-card {
|
|
293
|
+
background: #161b22;
|
|
294
|
+
border-color: #30363d;
|
|
295
|
+
}
|
|
296
|
+
.nr-artifact-card:hover {
|
|
297
|
+
background: #1c2128;
|
|
298
|
+
border-color: #484f58;
|
|
299
|
+
}
|
|
300
|
+
.nr-artifact-card__icon {
|
|
301
|
+
color: #c9d1d9;
|
|
302
|
+
}
|
|
303
|
+
.nr-artifact-card__title {
|
|
304
|
+
color: #c9d1d9;
|
|
305
|
+
}
|
|
306
|
+
.nr-artifact-card__chevron {
|
|
307
|
+
color: #8b949e;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
`;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=artifact-plugin.js.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { ChatbotPlugin } from '../core/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Base class for Chatbot plugins with handy utilities.
|
|
9
|
+
* - Provides one-time-per-conversation style injection with a data-marker.
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class ChatPluginBase implements ChatbotPlugin {
|
|
12
|
+
abstract readonly id: string;
|
|
13
|
+
abstract readonly name: string;
|
|
14
|
+
abstract readonly version: string;
|
|
15
|
+
private _stylesInjected;
|
|
16
|
+
private _lastThreadId?;
|
|
17
|
+
/**
|
|
18
|
+
* Returns a <style> tag only once per conversation (thread) to avoid duplicates.
|
|
19
|
+
* Adds a data attribute marker to the style tag for easy detection.
|
|
20
|
+
*
|
|
21
|
+
* Usage: const styleTag = this.getOncePerConversationStyleTag(cssString)
|
|
22
|
+
*/
|
|
23
|
+
protected getOncePerConversationStyleTag(css: string, hostSelector?: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Reset style injection flag when conversation (thread) changes.
|
|
26
|
+
* This relies on ChatbotState.currentThreadId presence.
|
|
27
|
+
*/
|
|
28
|
+
onStateChange?(state: Readonly<any>): void;
|
|
29
|
+
onInit?(controller?: any): void;
|
|
30
|
+
onDestroy?(): void;
|
|
31
|
+
onMessageSent?(message: any): void | Promise<void>;
|
|
32
|
+
onMessageReceived?(message: any): void | Promise<void>;
|
|
33
|
+
beforeSend?(text: string): string | Promise<string>;
|
|
34
|
+
afterReceive?(text: string): string | Promise<string>;
|
|
35
|
+
onError?(error: Error): void;
|
|
36
|
+
htmlTags?: Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
open: string;
|
|
39
|
+
close: string;
|
|
40
|
+
}>;
|
|
41
|
+
renderHtmlBlock?(name: string, content: string): string;
|
|
42
|
+
renderArtifactContent?(artifact: any): string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=chat-plugin.d.ts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Base class for Chatbot plugins with handy utilities.
|
|
8
|
+
* - Provides one-time-per-conversation style injection with a data-marker.
|
|
9
|
+
*/
|
|
10
|
+
export class ChatPluginBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
// Per-conversation style injection tracking
|
|
13
|
+
this._stylesInjected = false;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns a <style> tag only once per conversation (thread) to avoid duplicates.
|
|
17
|
+
* Adds a data attribute marker to the style tag for easy detection.
|
|
18
|
+
*
|
|
19
|
+
* Usage: const styleTag = this.getOncePerConversationStyleTag(cssString)
|
|
20
|
+
*/
|
|
21
|
+
getOncePerConversationStyleTag(css, hostSelector = 'nr-chatbot') {
|
|
22
|
+
var _a;
|
|
23
|
+
// Compute a stable data attribute unique to this plugin id
|
|
24
|
+
const markerAttr = `data-plugin-styles-${this.id}`;
|
|
25
|
+
// Best-effort check inside the host shadowRoot for an existing marker
|
|
26
|
+
let markerFound = false;
|
|
27
|
+
try {
|
|
28
|
+
const host = document.querySelector(hostSelector);
|
|
29
|
+
const hasMarker = (_a = host === null || host === void 0 ? void 0 : host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`style[${markerAttr}]`);
|
|
30
|
+
markerFound = !!hasMarker;
|
|
31
|
+
}
|
|
32
|
+
catch (_b) {
|
|
33
|
+
// ignore DOM access errors
|
|
34
|
+
}
|
|
35
|
+
if (!this._stylesInjected && !markerFound) {
|
|
36
|
+
this._stylesInjected = true;
|
|
37
|
+
return `<style ${markerAttr}="true">${css}</style>`;
|
|
38
|
+
}
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reset style injection flag when conversation (thread) changes.
|
|
43
|
+
* This relies on ChatbotState.currentThreadId presence.
|
|
44
|
+
*/
|
|
45
|
+
onStateChange(state) {
|
|
46
|
+
try {
|
|
47
|
+
const currentThreadId = state === null || state === void 0 ? void 0 : state.currentThreadId;
|
|
48
|
+
if (currentThreadId !== this._lastThreadId) {
|
|
49
|
+
this._lastThreadId = currentThreadId;
|
|
50
|
+
this._stylesInjected = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (_a) {
|
|
54
|
+
// best-effort only
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=chat-plugin.js.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { ChatbotPlugin } from '../core/types.js';
|
|
7
|
+
import { ChatPluginBase } from './chat-plugin.js';
|
|
8
|
+
/**
|
|
9
|
+
* Interface for flight information
|
|
10
|
+
*/
|
|
11
|
+
export interface FlightInfo {
|
|
12
|
+
origin: string;
|
|
13
|
+
destination: string;
|
|
14
|
+
departureTime: string;
|
|
15
|
+
arrivalTime: string;
|
|
16
|
+
departureDate: string;
|
|
17
|
+
arrivalDate: string;
|
|
18
|
+
terminal?: string;
|
|
19
|
+
gate?: string;
|
|
20
|
+
arrivalTerminal?: string;
|
|
21
|
+
arrivalGate?: string;
|
|
22
|
+
duration: string;
|
|
23
|
+
flightNumber?: string;
|
|
24
|
+
airline?: string;
|
|
25
|
+
status?: string;
|
|
26
|
+
updated?: string;
|
|
27
|
+
source?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Flight Card Plugin - transforms flight information into visual cards
|
|
31
|
+
*
|
|
32
|
+
* This plugin detects flight information in messages and renders them as styled cards.
|
|
33
|
+
* Developers can customize the card template by extending this class.
|
|
34
|
+
*
|
|
35
|
+
* @example Basic usage
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const flightPlugin = new FlightCardPlugin();
|
|
38
|
+
* controller.registerPlugin(flightPlugin);
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Custom template
|
|
42
|
+
* ```typescript
|
|
43
|
+
* class MyFlightCardPlugin extends FlightCardPlugin {
|
|
44
|
+
* protected renderFlightCard(flight: FlightInfo): string {
|
|
45
|
+
* return `<div class="my-custom-card">...</div>`;
|
|
46
|
+
* }
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example JSON format in message
|
|
51
|
+
* ```json
|
|
52
|
+
* {
|
|
53
|
+
* "type": "flight",
|
|
54
|
+
* "origin": "JED",
|
|
55
|
+
* "destination": "TUN",
|
|
56
|
+
* "departureTime": "11:40 PM",
|
|
57
|
+
* "arrivalTime": "2:35 AM",
|
|
58
|
+
* "departureDate": "mar. 14 oct.",
|
|
59
|
+
* "arrivalDate": "mer. 15 oct.",
|
|
60
|
+
* "duration": "4h 55min",
|
|
61
|
+
* "terminal": "N",
|
|
62
|
+
* "arrivalTerminal": "M"
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare class FlightCardPlugin extends ChatPluginBase implements ChatbotPlugin {
|
|
67
|
+
readonly id = "flight-card";
|
|
68
|
+
readonly name = "Flight Card Plugin";
|
|
69
|
+
readonly version = "1.0.0";
|
|
70
|
+
readonly htmlTags: {
|
|
71
|
+
name: string;
|
|
72
|
+
open: string;
|
|
73
|
+
close: string;
|
|
74
|
+
}[];
|
|
75
|
+
/**
|
|
76
|
+
* CSS class prefix for styling
|
|
77
|
+
*/
|
|
78
|
+
protected cssPrefix: string;
|
|
79
|
+
/**
|
|
80
|
+
* Render a skeleton placeholder while the flight data is loading
|
|
81
|
+
*/
|
|
82
|
+
renderHtmlBlockPlaceholder?(name: string): string;
|
|
83
|
+
onInit(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Process received messages and convert flight data to cards
|
|
86
|
+
*/
|
|
87
|
+
afterReceive(text: string): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Render a completed [FLIGHT]...[/FLIGHT] block when tokenized by the Provider/Service
|
|
90
|
+
*/
|
|
91
|
+
renderHtmlBlock(name: string, content: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* Check if data object contains flight information
|
|
94
|
+
*/
|
|
95
|
+
protected isFlightData(data: any): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Render flight information as a card
|
|
98
|
+
* Override this method to customize the card appearance
|
|
99
|
+
*/
|
|
100
|
+
protected renderFlightCard(flight: FlightInfo): string;
|
|
101
|
+
/**
|
|
102
|
+
* Get city name from airport code
|
|
103
|
+
* Override this to provide custom city mappings
|
|
104
|
+
*/
|
|
105
|
+
protected getCityName(airportCode: string): string;
|
|
106
|
+
/**
|
|
107
|
+
* Escape HTML to prevent XSS
|
|
108
|
+
*/
|
|
109
|
+
protected escapeHtml(text: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* Inject default styles for the flight card
|
|
112
|
+
* Override this method to provide custom styles
|
|
113
|
+
*/
|
|
114
|
+
protected getStyles(): string;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=flight-card-plugin.d.ts.map
|