@nyaruka/temba-components 0.129.2 → 0.129.3
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/.github/workflows/build.yml +6 -5
- package/.github/workflows/coverage.yml +80 -0
- package/CHANGELOG.md +22 -0
- package/README.md +6 -0
- package/check-coverage.js +133 -0
- package/demo/data/flows/sample-flow.json +107 -100
- package/dist/temba-components.js +893 -476
- package/dist/temba-components.js.map +1 -1
- package/generate-coverage-badge.sh +69 -0
- package/out-tsc/src/{vectoricon/index.js → Icons.js} +1 -1
- package/out-tsc/src/Icons.js.map +1 -0
- package/out-tsc/src/display/Alert.js.map +1 -0
- package/out-tsc/src/display/Anchor.js.map +1 -0
- package/out-tsc/src/display/Button.js.map +1 -0
- package/out-tsc/src/{charcount → display}/CharCount.js +159 -2
- package/out-tsc/src/display/CharCount.js.map +1 -0
- package/out-tsc/src/display/Chat.js.map +1 -0
- package/out-tsc/src/display/ContactName.js.map +1 -0
- package/out-tsc/src/display/ContactUrn.js.map +1 -0
- package/out-tsc/src/display/Dropdown.js.map +1 -0
- package/out-tsc/src/{vectoricon/VectorIcon.js → display/Icon.js} +2 -2
- package/out-tsc/src/display/Icon.js.map +1 -0
- package/out-tsc/src/display/Label.js.map +1 -0
- package/out-tsc/src/{leafletmap → display}/LeafletMap.js +16 -1
- package/out-tsc/src/display/LeafletMap.js.map +1 -0
- package/out-tsc/src/display/Lightbox.js.map +1 -0
- package/out-tsc/src/{loading → display}/Loading.js.map +1 -1
- package/out-tsc/src/{options → display}/Options.js.map +1 -1
- package/out-tsc/src/display/ProgressBar.js.map +1 -0
- package/out-tsc/src/display/TembaDate.js.map +1 -0
- package/out-tsc/src/display/TembaUser.js.map +1 -0
- package/out-tsc/src/display/Thumbnail.js.map +1 -0
- package/out-tsc/src/{tip → display}/Tip.js +1 -2
- package/out-tsc/src/display/Tip.js.map +1 -0
- package/out-tsc/src/display/Toast.js.map +1 -0
- package/out-tsc/src/display/sms/gsmsplitter.js.map +1 -0
- package/out-tsc/src/display/sms/gsmvalidator.js.map +1 -0
- package/out-tsc/src/display/sms/index.js.map +1 -0
- package/out-tsc/src/display/sms/unicodesplitter.js.map +1 -0
- package/out-tsc/src/events.js +2 -0
- package/out-tsc/src/events.js.map +1 -0
- package/out-tsc/src/excellent/ExcellentParser.js.map +1 -0
- package/out-tsc/src/excellent/helpers.js.map +1 -0
- package/out-tsc/src/flow/Editor.js +533 -140
- package/out-tsc/src/flow/Editor.js.map +1 -1
- package/out-tsc/src/flow/EditorNode.js +287 -20
- package/out-tsc/src/flow/EditorNode.js.map +1 -1
- package/out-tsc/src/flow/Plumber.js +154 -74
- package/out-tsc/src/flow/Plumber.js.map +1 -1
- package/out-tsc/src/flow/StickyNote.js +153 -9
- package/out-tsc/src/flow/StickyNote.js.map +1 -1
- package/out-tsc/src/flow/config.js +88 -18
- package/out-tsc/src/flow/config.js.map +1 -1
- package/out-tsc/src/flow/render.js +327 -10
- package/out-tsc/src/flow/render.js.map +1 -1
- package/out-tsc/src/{checkbox → form}/Checkbox.js +2 -2
- package/out-tsc/src/form/Checkbox.js.map +1 -0
- package/out-tsc/src/{colorpicker → form}/ColorPicker.js +1 -1
- package/out-tsc/src/form/ColorPicker.js.map +1 -0
- package/out-tsc/src/{completion → form}/Completion.js +2 -2
- package/out-tsc/src/form/Completion.js.map +1 -0
- package/out-tsc/src/{compose → form}/Compose.js +1 -1
- package/out-tsc/src/form/Compose.js.map +1 -0
- package/out-tsc/src/{contactsearch → form}/ContactSearch.js +2 -2
- package/out-tsc/src/form/ContactSearch.js.map +1 -0
- package/out-tsc/src/form/CroppieCSS.js.map +1 -0
- package/out-tsc/src/{datepicker → form}/DatePicker.js +1 -1
- package/out-tsc/src/form/DatePicker.js.map +1 -0
- package/out-tsc/src/{FormElement.js → form/FormElement.js} +1 -1
- package/out-tsc/src/form/FormElement.js.map +1 -0
- package/out-tsc/src/form/FormField.js.map +1 -0
- package/out-tsc/src/{imagepicker → form}/ImagePicker.js +2 -2
- package/out-tsc/src/form/ImagePicker.js.map +1 -0
- package/out-tsc/src/{mediapicker → form}/MediaPicker.js +1 -1
- package/out-tsc/src/form/MediaPicker.js.map +1 -0
- package/out-tsc/src/form/RangePicker.js.map +1 -0
- package/out-tsc/src/{slider → form}/TembaSlider.js +1 -1
- package/out-tsc/src/form/TembaSlider.js.map +1 -0
- package/out-tsc/src/{templates → form}/TemplateEditor.js +1 -1
- package/out-tsc/src/form/TemplateEditor.js.map +1 -0
- package/out-tsc/src/{textinput → form}/TextInput.js +3 -3
- package/out-tsc/src/form/TextInput.js.map +1 -0
- package/out-tsc/src/{omnibox → form/select}/Omnibox.js +2 -2
- package/out-tsc/src/form/select/Omnibox.js.map +1 -0
- package/out-tsc/src/{select → form/select}/PopupSelect.js +1 -1
- package/out-tsc/src/form/select/PopupSelect.js.map +1 -0
- package/out-tsc/src/{select → form/select}/Select.js +86 -87
- package/out-tsc/src/form/select/Select.js.map +1 -0
- package/out-tsc/src/{select → form/select}/UserSelect.js +1 -1
- package/out-tsc/src/form/select/UserSelect.js.map +1 -0
- package/out-tsc/src/{select → form/select}/WorkspaceSelect.js +1 -1
- package/out-tsc/src/form/select/WorkspaceSelect.js.map +1 -0
- package/out-tsc/src/interfaces.js +1 -0
- package/out-tsc/src/interfaces.js.map +1 -1
- package/out-tsc/src/layout/Dialog.js.map +1 -0
- package/out-tsc/src/layout/Mask.js.map +1 -0
- package/out-tsc/src/{dialog → layout}/Modax.js.map +1 -1
- package/out-tsc/src/layout/Resizer.js.map +1 -0
- package/out-tsc/src/layout/Tab.js.map +1 -0
- package/out-tsc/src/layout/TabPane.js.map +1 -0
- package/out-tsc/src/list/NotificationList.js +1 -1
- package/out-tsc/src/list/NotificationList.js.map +1 -1
- package/out-tsc/src/list/RunList.js +1 -1
- package/out-tsc/src/list/RunList.js.map +1 -1
- package/out-tsc/src/list/ShortcutList.js.map +1 -1
- package/out-tsc/src/list/TembaMenu.js +1 -1
- package/out-tsc/src/list/TembaMenu.js.map +1 -1
- package/out-tsc/src/list/TicketList.js +1 -1
- package/out-tsc/src/list/TicketList.js.map +1 -1
- package/out-tsc/src/{aliaseditor → live}/AliasEditor.js +1 -1
- package/out-tsc/src/live/AliasEditor.js.map +1 -0
- package/out-tsc/src/{contacts → live}/ContactBadges.js +1 -1
- package/out-tsc/src/live/ContactBadges.js.map +1 -0
- package/out-tsc/src/{contacts → live}/ContactChat.js +79 -3
- package/out-tsc/src/live/ContactChat.js.map +1 -0
- package/out-tsc/src/{contacts → live}/ContactDetails.js +1 -1
- package/out-tsc/src/live/ContactDetails.js.map +1 -0
- package/out-tsc/src/{contacts → live}/ContactFieldEditor.js +2 -2
- package/out-tsc/src/live/ContactFieldEditor.js.map +1 -0
- package/out-tsc/src/live/ContactFields.js.map +1 -0
- package/out-tsc/src/live/ContactNameFetch.js.map +1 -0
- package/out-tsc/src/{contacts → live}/ContactNotepad.js +1 -1
- package/out-tsc/src/{contacts → live}/ContactNotepad.js.map +1 -1
- package/out-tsc/src/{contacts → live}/ContactPending.js +1 -1
- package/out-tsc/src/live/ContactPending.js.map +1 -0
- package/out-tsc/src/live/ContactStoreElement.js.map +1 -0
- package/out-tsc/src/live/FieldManager.js.map +1 -0
- package/out-tsc/src/live/StartProgress.js.map +1 -0
- package/out-tsc/src/live/TembaChart.js.map +1 -0
- package/out-tsc/src/store/AppState.js +54 -24
- package/out-tsc/src/store/AppState.js.map +1 -1
- package/out-tsc/src/store/Store.js +1 -1
- package/out-tsc/src/store/Store.js.map +1 -1
- package/out-tsc/src/{utils/index.js → utils.js} +22 -1
- package/out-tsc/src/utils.js.map +1 -0
- package/out-tsc/src/webchat/WebChat.js +1 -1
- package/out-tsc/src/webchat/WebChat.js.map +1 -1
- package/out-tsc/temba-components.js +2 -2
- package/out-tsc/temba-components.js.map +1 -1
- package/out-tsc/temba-modules.js +54 -54
- package/out-tsc/temba-modules.js.map +1 -1
- package/out-tsc/temba-webchat.js +2 -2
- package/out-tsc/temba-webchat.js.map +1 -1
- package/out-tsc/test/temba-alert.test.js +1 -1
- package/out-tsc/test/temba-alert.test.js.map +1 -1
- package/out-tsc/test/temba-appstate-language.test.js +90 -0
- package/out-tsc/test/temba-appstate-language.test.js.map +1 -1
- package/out-tsc/test/temba-charcount.test.js.map +1 -1
- package/out-tsc/test/temba-chart.test.js +1 -1
- package/out-tsc/test/temba-chart.test.js.map +1 -1
- package/out-tsc/test/temba-checkbox.test.js.map +1 -1
- package/out-tsc/test/temba-color-picker.test.js +1 -1
- package/out-tsc/test/temba-color-picker.test.js.map +1 -1
- package/out-tsc/test/temba-completion.test.js +1 -1
- package/out-tsc/test/temba-completion.test.js.map +1 -1
- package/out-tsc/test/temba-compose.test.js +1 -1
- package/out-tsc/test/temba-compose.test.js.map +1 -1
- package/out-tsc/test/temba-contact-badges.test.js +1 -1
- package/out-tsc/test/temba-contact-badges.test.js.map +1 -1
- package/out-tsc/test/temba-contact-chat.test.js +3 -1
- package/out-tsc/test/temba-contact-chat.test.js.map +1 -1
- package/out-tsc/test/temba-contact-details.test.js +1 -1
- package/out-tsc/test/temba-contact-details.test.js.map +1 -1
- package/out-tsc/test/temba-contact-fields.test.js +1 -1
- package/out-tsc/test/temba-contact-fields.test.js.map +1 -1
- package/out-tsc/test/temba-contact-search.test.js +1 -1
- package/out-tsc/test/temba-contact-search.test.js.map +1 -1
- package/out-tsc/test/temba-date.test.js +5 -1
- package/out-tsc/test/temba-date.test.js.map +1 -1
- package/out-tsc/test/temba-datepicker.test.js +1 -1
- package/out-tsc/test/temba-datepicker.test.js.map +1 -1
- package/out-tsc/test/temba-dialog.test.js +1 -1
- package/out-tsc/test/temba-dialog.test.js.map +1 -1
- package/out-tsc/test/temba-dropdown.test.js +1 -1
- package/out-tsc/test/temba-dropdown.test.js.map +1 -1
- package/out-tsc/test/temba-excellent-helpers.test.js +316 -0
- package/out-tsc/test/temba-excellent-helpers.test.js.map +1 -0
- package/out-tsc/test/temba-field-manager.test.js.map +1 -1
- package/out-tsc/test/temba-flow-editor-node.test.js +414 -1
- package/out-tsc/test/temba-flow-editor-node.test.js.map +1 -1
- package/out-tsc/test/temba-flow-editor.test.js +185 -0
- package/out-tsc/test/temba-flow-editor.test.js.map +1 -1
- package/out-tsc/test/temba-flow-plumber-connections.test.js +113 -0
- package/out-tsc/test/temba-flow-plumber-connections.test.js.map +1 -0
- package/out-tsc/test/temba-flow-plumber.test.js +73 -93
- package/out-tsc/test/temba-flow-plumber.test.js.map +1 -1
- package/out-tsc/test/temba-flow-render.test.js +624 -1
- package/out-tsc/test/temba-flow-render.test.js.map +1 -1
- package/out-tsc/test/temba-flow-self-routing.test.js +172 -0
- package/out-tsc/test/temba-flow-self-routing.test.js.map +1 -0
- package/out-tsc/test/temba-formfield.test.js.map +1 -1
- package/out-tsc/test/temba-icon.test.js +1 -1
- package/out-tsc/test/temba-icon.test.js.map +1 -1
- package/out-tsc/test/temba-integration-markdown.test.js.map +1 -1
- package/out-tsc/test/temba-label.test.js +1 -1
- package/out-tsc/test/temba-label.test.js.map +1 -1
- package/out-tsc/test/temba-lightbox.test.js +1 -1
- package/out-tsc/test/temba-lightbox.test.js.map +1 -1
- package/out-tsc/test/temba-markdown.test.js +127 -0
- package/out-tsc/test/temba-markdown.test.js.map +1 -0
- package/out-tsc/test/temba-menu.test.js +1 -1
- package/out-tsc/test/temba-menu.test.js.map +1 -1
- package/out-tsc/test/temba-modax.test.js +1 -1
- package/out-tsc/test/temba-modax.test.js.map +1 -1
- package/out-tsc/test/temba-modules.test.js +47 -0
- package/out-tsc/test/temba-modules.test.js.map +1 -0
- package/out-tsc/test/temba-omnibox.test.js +1 -1
- package/out-tsc/test/temba-omnibox.test.js.map +1 -1
- package/out-tsc/test/temba-options.test.js.map +1 -1
- package/out-tsc/test/temba-range-picker.test.js +9 -2
- package/out-tsc/test/temba-range-picker.test.js.map +1 -1
- package/out-tsc/test/temba-rapid-element.test.js +273 -0
- package/out-tsc/test/temba-rapid-element.test.js.map +1 -0
- package/out-tsc/test/temba-resize-element.test.js +85 -0
- package/out-tsc/test/temba-resize-element.test.js.map +1 -0
- package/out-tsc/test/temba-select.test.js +2 -2
- package/out-tsc/test/temba-select.test.js.map +1 -1
- package/out-tsc/test/temba-slider.test.js.map +1 -1
- package/out-tsc/test/temba-sticky-note.test.js +194 -0
- package/out-tsc/test/temba-sticky-note.test.js.map +1 -0
- package/out-tsc/test/temba-template-editor.test.js.map +1 -1
- package/out-tsc/test/temba-textinput.test.js +1 -1
- package/out-tsc/test/temba-textinput.test.js.map +1 -1
- package/out-tsc/test/temba-tip.test.js +1 -1
- package/out-tsc/test/temba-tip.test.js.map +1 -1
- package/out-tsc/test/temba-toast.test.js +1 -1
- package/out-tsc/test/temba-toast.test.js.map +1 -1
- package/out-tsc/test/temba-utils-index.test.js +1 -1
- package/out-tsc/test/temba-utils-index.test.js.map +1 -1
- package/out-tsc/test/temba-utils-uuid.test.js +38 -0
- package/out-tsc/test/temba-utils-uuid.test.js.map +1 -0
- package/out-tsc/test/temba-webchat.test.js +28 -12
- package/out-tsc/test/temba-webchat.test.js.map +1 -1
- package/out-tsc/test/utils.test.js +2 -6
- package/out-tsc/test/utils.test.js.map +1 -1
- package/package.json +18 -9
- package/rollup.components.mjs +1 -1
- package/screenshots/truth/datepicker/range-picker-all.png +0 -0
- package/screenshots/truth/datepicker/range-picker-button-states.png +0 -0
- package/screenshots/truth/datepicker/range-picker-default.png +0 -0
- package/screenshots/truth/datepicker/range-picker-editing-start.png +0 -0
- package/screenshots/truth/datepicker/range-picker-initial-values.png +0 -0
- package/screenshots/truth/datepicker/range-picker-week.png +0 -0
- package/screenshots/truth/datepicker/range-picker-year.png +0 -0
- package/screenshots/truth/sticky-note/blue-color.png +0 -0
- package/screenshots/truth/sticky-note/blue.png +0 -0
- package/screenshots/truth/sticky-note/color-picker-expanded.png +0 -0
- package/screenshots/truth/sticky-note/default.png +0 -0
- package/screenshots/truth/sticky-note/gray-color.png +0 -0
- package/screenshots/truth/sticky-note/gray.png +0 -0
- package/screenshots/truth/sticky-note/green-color.png +0 -0
- package/screenshots/truth/sticky-note/green.png +0 -0
- package/screenshots/truth/sticky-note/pink-color.png +0 -0
- package/screenshots/truth/sticky-note/pink.png +0 -0
- package/screenshots/truth/sticky-note/yellow-color.png +0 -0
- package/screenshots/truth/sticky-note/yellow.png +0 -0
- package/src/{charcount → display}/CharCount.ts +164 -2
- package/src/{vectoricon/VectorIcon.ts → display/Icon.ts} +1 -1
- package/src/{leafletmap → display}/LeafletMap.ts +19 -1
- package/src/{thumbnail → display}/Thumbnail.ts +1 -1
- package/src/{tip → display}/Tip.ts +1 -2
- package/src/{contacts/events.ts → events.ts} +1 -64
- package/src/flow/Editor.ts +655 -165
- package/src/flow/EditorNode.ts +337 -22
- package/src/flow/Plumber.ts +186 -79
- package/src/flow/StickyNote.ts +165 -9
- package/src/flow/config.ts +114 -18
- package/src/flow/render.ts +398 -11
- package/src/{checkbox → form}/Checkbox.ts +2 -2
- package/src/{colorpicker → form}/ColorPicker.ts +2 -2
- package/src/{completion → form}/Completion.ts +3 -3
- package/src/{compose → form}/Compose.ts +7 -7
- package/src/{contactsearch → form}/ContactSearch.ts +6 -6
- package/src/{datepicker → form}/DatePicker.ts +1 -1
- package/src/{FormElement.ts → form/FormElement.ts} +1 -1
- package/src/{imagepicker → form}/ImagePicker.ts +2 -2
- package/src/{mediapicker → form}/MediaPicker.ts +1 -1
- package/src/{slider → form}/TembaSlider.ts +1 -1
- package/src/{templates → form}/TemplateEditor.ts +2 -2
- package/src/{textinput → form}/TextInput.ts +5 -5
- package/src/{omnibox → form/select}/Omnibox.ts +2 -2
- package/src/{select → form/select}/PopupSelect.ts +1 -1
- package/src/{select → form/select}/Select.ts +124 -126
- package/src/{select → form/select}/UserSelect.ts +1 -1
- package/src/{select → form/select}/WorkspaceSelect.ts +1 -1
- package/src/interfaces.ts +2 -1
- package/src/{dialog → layout}/Dialog.ts +1 -1
- package/src/list/NotificationList.ts +2 -2
- package/src/list/RunList.ts +3 -3
- package/src/list/ShortcutList.ts +1 -1
- package/src/list/TembaMenu.ts +2 -2
- package/src/list/TicketList.ts +1 -1
- package/src/{aliaseditor → live}/AliasEditor.ts +3 -3
- package/src/{contacts → live}/ContactBadges.ts +1 -1
- package/src/{contacts → live}/ContactChat.ts +118 -8
- package/src/{contacts → live}/ContactDetails.ts +1 -1
- package/src/{contacts → live}/ContactFieldEditor.ts +4 -4
- package/src/{contacts → live}/ContactFields.ts +1 -1
- package/src/{contacts → live}/ContactNotepad.ts +1 -1
- package/src/{contacts → live}/ContactPending.ts +1 -1
- package/src/{chart → live}/TembaChart.ts +1 -1
- package/src/store/AppState.ts +75 -29
- package/src/store/Store.ts +1 -1
- package/src/store/flow-definition.d.ts +125 -0
- package/src/{utils/index.ts → utils.ts} +26 -10
- package/src/webchat/WebChat.ts +1 -1
- package/static/css/temba-components.css +1 -0
- package/svg.js +1 -4
- package/temba-components.ts +2 -2
- package/temba-modules.ts +54 -54
- package/temba-webchat.ts +2 -2
- package/test/temba-alert.test.ts +1 -1
- package/test/temba-appstate-language.test.ts +108 -0
- package/test/temba-charcount.test.ts +1 -1
- package/test/temba-chart.test.ts +1 -1
- package/test/temba-checkbox.test.ts +1 -1
- package/test/temba-color-picker.test.ts +1 -1
- package/test/temba-completion.test.ts +1 -1
- package/test/temba-compose.test.ts +1 -1
- package/test/temba-contact-badges.test.ts +1 -1
- package/test/temba-contact-chat.test.ts +6 -4
- package/test/temba-contact-details.test.ts +1 -1
- package/test/temba-contact-fields.test.ts +1 -1
- package/test/temba-contact-search.test.ts +2 -2
- package/test/temba-date.test.ts +8 -3
- package/test/temba-datepicker.test.ts +1 -1
- package/test/temba-dialog.test.ts +1 -1
- package/test/temba-dropdown.test.ts +1 -1
- package/test/temba-excellent-helpers.test.ts +417 -0
- package/test/temba-field-manager.test.ts +2 -2
- package/test/temba-flow-editor-node.test.ts +536 -1
- package/test/temba-flow-editor.test.ts +224 -0
- package/test/temba-flow-editor.test.ts.backup +563 -0
- package/test/temba-flow-plumber-connections.test.ts +142 -0
- package/test/temba-flow-plumber.test.ts +83 -120
- package/test/temba-flow-render.test.ts +787 -4
- package/test/temba-flow-self-routing.test.ts +215 -0
- package/test/temba-formfield.test.ts +1 -1
- package/test/temba-icon.test.ts +1 -1
- package/test/temba-integration-markdown.test.ts +1 -1
- package/test/temba-label.test.ts +1 -1
- package/test/temba-lightbox.test.ts +1 -1
- package/test/temba-markdown.test.ts +162 -0
- package/test/temba-menu.test.ts +1 -1
- package/test/temba-modax.test.ts +2 -2
- package/test/temba-modules.test.ts +56 -0
- package/test/temba-omnibox.test.ts +1 -1
- package/test/temba-options.test.ts +1 -1
- package/test/temba-range-picker.test.ts +17 -2
- package/test/temba-rapid-element.test.ts +341 -0
- package/test/temba-resize-element.test.ts +104 -0
- package/test/temba-select.test.ts +2 -2
- package/test/temba-slider.test.ts +1 -1
- package/test/temba-sticky-note.test.ts +281 -0
- package/test/temba-template-editor.test.ts +1 -1
- package/test/temba-textinput.test.ts +1 -1
- package/test/temba-tip.test.ts +1 -1
- package/test/temba-toast.test.ts +1 -1
- package/test/temba-utils-index.test.ts +1 -1
- package/test/temba-utils-index.test.ts.backup +1737 -0
- package/test/temba-utils-uuid.test.ts +48 -0
- package/test/temba-webchat.test.ts +30 -12
- package/test/utils.test.ts +5 -9
- package/web-dev-server.config.mjs +1 -1
- package/out-tsc/src/FormElement.js.map +0 -1
- package/out-tsc/src/alert/Alert.js.map +0 -1
- package/out-tsc/src/aliaseditor/AliasEditor.js.map +0 -1
- package/out-tsc/src/anchor/Anchor.js.map +0 -1
- package/out-tsc/src/button/Button.js.map +0 -1
- package/out-tsc/src/charcount/CharCount.js.map +0 -1
- package/out-tsc/src/charcount/helpers.js +0 -159
- package/out-tsc/src/charcount/helpers.js.map +0 -1
- package/out-tsc/src/chart/TembaChart.js.map +0 -1
- package/out-tsc/src/chat/Chat.js.map +0 -1
- package/out-tsc/src/checkbox/Checkbox.js.map +0 -1
- package/out-tsc/src/colorpicker/ColorPicker.js.map +0 -1
- package/out-tsc/src/completion/Completion.js.map +0 -1
- package/out-tsc/src/completion/ExcellentParser.js.map +0 -1
- package/out-tsc/src/completion/helpers.js.map +0 -1
- package/out-tsc/src/compose/Compose.js.map +0 -1
- package/out-tsc/src/contacts/ContactBadges.js.map +0 -1
- package/out-tsc/src/contacts/ContactChat.js.map +0 -1
- package/out-tsc/src/contacts/ContactDetails.js.map +0 -1
- package/out-tsc/src/contacts/ContactFieldEditor.js.map +0 -1
- package/out-tsc/src/contacts/ContactFields.js.map +0 -1
- package/out-tsc/src/contacts/ContactName.js.map +0 -1
- package/out-tsc/src/contacts/ContactNameFetch.js.map +0 -1
- package/out-tsc/src/contacts/ContactPending.js.map +0 -1
- package/out-tsc/src/contacts/ContactStoreElement.js.map +0 -1
- package/out-tsc/src/contacts/ContactUrn.js.map +0 -1
- package/out-tsc/src/contacts/events.js +0 -65
- package/out-tsc/src/contacts/events.js.map +0 -1
- package/out-tsc/src/contacts/helpers.js +0 -77
- package/out-tsc/src/contacts/helpers.js.map +0 -1
- package/out-tsc/src/contactsearch/ContactSearch.js.map +0 -1
- package/out-tsc/src/date/TembaDate.js.map +0 -1
- package/out-tsc/src/datepicker/DatePicker.js.map +0 -1
- package/out-tsc/src/datepicker/RangePicker.js.map +0 -1
- package/out-tsc/src/dialog/Dialog.js.map +0 -1
- package/out-tsc/src/dropdown/Dropdown.js.map +0 -1
- package/out-tsc/src/fields/FieldManager.js.map +0 -1
- package/out-tsc/src/formfield/FormField.js.map +0 -1
- package/out-tsc/src/imagepicker/CroppieCSS.js.map +0 -1
- package/out-tsc/src/imagepicker/ImagePicker.js.map +0 -1
- package/out-tsc/src/label/Label.js.map +0 -1
- package/out-tsc/src/leafletmap/LeafletMap.js.map +0 -1
- package/out-tsc/src/leafletmap/helpers.js +0 -17
- package/out-tsc/src/leafletmap/helpers.js.map +0 -1
- package/out-tsc/src/lightbox/Lightbox.js.map +0 -1
- package/out-tsc/src/mask/Mask.js.map +0 -1
- package/out-tsc/src/mediapicker/MediaPicker.js.map +0 -1
- package/out-tsc/src/omnibox/Omnibox.js.map +0 -1
- package/out-tsc/src/options/helpers.js +0 -28
- package/out-tsc/src/options/helpers.js.map +0 -1
- package/out-tsc/src/progress/ProgressBar.js.map +0 -1
- package/out-tsc/src/progress/StartProgress.js.map +0 -1
- package/out-tsc/src/resizer/Resizer.js.map +0 -1
- package/out-tsc/src/select/PopupSelect.js.map +0 -1
- package/out-tsc/src/select/Select.js.map +0 -1
- package/out-tsc/src/select/UserSelect.js.map +0 -1
- package/out-tsc/src/select/WorkspaceSelect.js.map +0 -1
- package/out-tsc/src/select/helpers.js +0 -1
- package/out-tsc/src/select/helpers.js.map +0 -1
- package/out-tsc/src/shadowless/Shadowless.js +0 -33
- package/out-tsc/src/shadowless/Shadowless.js.map +0 -1
- package/out-tsc/src/slider/TembaSlider.js.map +0 -1
- package/out-tsc/src/sms/gsmsplitter.js.map +0 -1
- package/out-tsc/src/sms/gsmvalidator.js.map +0 -1
- package/out-tsc/src/sms/index.js.map +0 -1
- package/out-tsc/src/sms/unicodesplitter.js.map +0 -1
- package/out-tsc/src/tabpane/Tab.js.map +0 -1
- package/out-tsc/src/tabpane/TabPane.js.map +0 -1
- package/out-tsc/src/templates/TemplateEditor.js.map +0 -1
- package/out-tsc/src/textinput/TextInput.js.map +0 -1
- package/out-tsc/src/textinput/helpers.js +0 -12
- package/out-tsc/src/textinput/helpers.js.map +0 -1
- package/out-tsc/src/thumbnail/Thumbnail.js.map +0 -1
- package/out-tsc/src/tip/Tip.js.map +0 -1
- package/out-tsc/src/tip/helpers.js +0 -7
- package/out-tsc/src/tip/helpers.js.map +0 -1
- package/out-tsc/src/toast/Toast.js.map +0 -1
- package/out-tsc/src/user/TembaUser.js.map +0 -1
- package/out-tsc/src/utils/index.js.map +0 -1
- package/out-tsc/src/vectoricon/VectorIcon.js.map +0 -1
- package/out-tsc/src/vectoricon/index.js.map +0 -1
- package/src/charcount/helpers.ts +0 -162
- package/src/contacts/helpers.ts +0 -103
- package/src/leafletmap/helpers.ts +0 -18
- package/src/options/helpers.ts +0 -37
- package/src/select/helpers.ts +0 -0
- package/src/shadowless/Shadowless.ts +0 -32
- package/src/textinput/helpers.ts +0 -11
- package/src/tip/helpers.ts +0 -7
- /package/out-tsc/src/{alert → display}/Alert.js +0 -0
- /package/out-tsc/src/{anchor → display}/Anchor.js +0 -0
- /package/out-tsc/src/{button → display}/Button.js +0 -0
- /package/out-tsc/src/{chat → display}/Chat.js +0 -0
- /package/out-tsc/src/{contacts → display}/ContactName.js +0 -0
- /package/out-tsc/src/{contacts → display}/ContactUrn.js +0 -0
- /package/out-tsc/src/{dropdown → display}/Dropdown.js +0 -0
- /package/out-tsc/src/{label → display}/Label.js +0 -0
- /package/out-tsc/src/{lightbox → display}/Lightbox.js +0 -0
- /package/out-tsc/src/{loading → display}/Loading.js +0 -0
- /package/out-tsc/src/{options → display}/Options.js +0 -0
- /package/out-tsc/src/{progress → display}/ProgressBar.js +0 -0
- /package/out-tsc/src/{date → display}/TembaDate.js +0 -0
- /package/out-tsc/src/{user → display}/TembaUser.js +0 -0
- /package/out-tsc/src/{thumbnail → display}/Thumbnail.js +0 -0
- /package/out-tsc/src/{toast → display}/Toast.js +0 -0
- /package/out-tsc/src/{sms → display/sms}/gsmsplitter.js +0 -0
- /package/out-tsc/src/{sms → display/sms}/gsmvalidator.js +0 -0
- /package/out-tsc/src/{sms → display/sms}/index.js +0 -0
- /package/out-tsc/src/{sms → display/sms}/unicodesplitter.js +0 -0
- /package/out-tsc/src/{completion → excellent}/ExcellentParser.js +0 -0
- /package/out-tsc/src/{completion → excellent}/helpers.js +0 -0
- /package/out-tsc/src/{imagepicker → form}/CroppieCSS.js +0 -0
- /package/out-tsc/src/{formfield → form}/FormField.js +0 -0
- /package/out-tsc/src/{datepicker → form}/RangePicker.js +0 -0
- /package/out-tsc/src/{dialog → layout}/Dialog.js +0 -0
- /package/out-tsc/src/{mask → layout}/Mask.js +0 -0
- /package/out-tsc/src/{dialog → layout}/Modax.js +0 -0
- /package/out-tsc/src/{resizer → layout}/Resizer.js +0 -0
- /package/out-tsc/src/{tabpane → layout}/Tab.js +0 -0
- /package/out-tsc/src/{tabpane → layout}/TabPane.js +0 -0
- /package/out-tsc/src/{contacts → live}/ContactFields.js +0 -0
- /package/out-tsc/src/{contacts → live}/ContactNameFetch.js +0 -0
- /package/out-tsc/src/{contacts → live}/ContactStoreElement.js +0 -0
- /package/out-tsc/src/{fields → live}/FieldManager.js +0 -0
- /package/out-tsc/src/{progress → live}/StartProgress.js +0 -0
- /package/out-tsc/src/{chart → live}/TembaChart.js +0 -0
- /package/src/{vectoricon/index.ts → Icons.ts} +0 -0
- /package/src/{alert → display}/Alert.ts +0 -0
- /package/src/{anchor → display}/Anchor.ts +0 -0
- /package/src/{button → display}/Button.ts +0 -0
- /package/src/{chat → display}/Chat.ts +0 -0
- /package/src/{contacts → display}/ContactName.ts +0 -0
- /package/src/{contacts → display}/ContactUrn.ts +0 -0
- /package/src/{dropdown → display}/Dropdown.ts +0 -0
- /package/src/{label → display}/Label.ts +0 -0
- /package/src/{lightbox → display}/Lightbox.ts +0 -0
- /package/src/{loading → display}/Loading.ts +0 -0
- /package/src/{options → display}/Options.ts +0 -0
- /package/src/{progress → display}/ProgressBar.ts +0 -0
- /package/src/{date → display}/TembaDate.ts +0 -0
- /package/src/{user → display}/TembaUser.ts +0 -0
- /package/src/{toast → display}/Toast.ts +0 -0
- /package/src/{sms → display/sms}/gsmsplitter.ts +0 -0
- /package/src/{sms → display/sms}/gsmvalidator.ts +0 -0
- /package/src/{sms → display/sms}/index.ts +0 -0
- /package/src/{sms → display/sms}/unicodesplitter.ts +0 -0
- /package/src/{completion → excellent}/ExcellentParser.ts +0 -0
- /package/src/{completion → excellent}/helpers.ts +0 -0
- /package/src/{imagepicker → form}/CroppieCSS.ts +0 -0
- /package/src/{formfield → form}/FormField.ts +0 -0
- /package/src/{datepicker → form}/RangePicker.ts +0 -0
- /package/src/{mask → layout}/Mask.ts +0 -0
- /package/src/{dialog → layout}/Modax.ts +0 -0
- /package/src/{resizer → layout}/Resizer.ts +0 -0
- /package/src/{tabpane → layout}/Tab.ts +0 -0
- /package/src/{tabpane → layout}/TabPane.ts +0 -0
- /package/src/{contacts → live}/ContactNameFetch.ts +0 -0
- /package/src/{contacts → live}/ContactStoreElement.ts +0 -0
- /package/src/{fields → live}/FieldManager.ts +0 -0
- /package/src/{progress → live}/StartProgress.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebChat.js","sourceRoot":"","sources":["../../../src/webchat/WebChat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-this-alias */\nimport { LitElement, TemplateResult, html, css, PropertyValueMap } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { getCookie, setCookie } from '../utils';\nimport { DEFAULT_AVATAR } from './assets';\nimport { Chat, ChatEvent, Message, MessageType } from '../chat/Chat';\n\ninterface User {\n avatar?: string;\n email: string;\n name: string;\n id: string;\n}\n\ninterface MsgIn {\n id: string;\n text: string;\n time: string;\n}\n\ninterface MsgOut extends MsgIn {\n user: User;\n origin: string;\n}\n\ninterface SockMsg {\n type:\n | 'start_chat'\n | 'get_history'\n | 'send_msg'\n | 'ack_chat'\n\n // responses\n | 'chat_started'\n | 'chat_resumed'\n | 'msg_in'\n | 'msg_out'\n | 'history'\n\n // receiving\n | 'chat_out';\n}\n\ninterface GetHistoryCmd extends SockMsg {\n before?: string;\n}\n\ninterface StartChatCmd extends SockMsg {\n chat_id?: string;\n}\n\ninterface SendMsgCmd extends SockMsg {\n text: string;\n}\n\ninterface Ack extends SockMsg {\n msg_id: string;\n}\n\ninterface MsgOutResponse extends SockMsg {\n msg_out: MsgOut;\n}\n\ninterface MsgInResponse extends SockMsg {\n msg_in: MsgIn;\n}\n\ninterface HistoryResponse extends SockMsg {\n history: (MsgInResponse | MsgOutResponse)[];\n}\n\ninterface StartChatResponse extends SockMsg {\n chat_id: string;\n}\n\ninterface ResumeChatResponse extends StartChatResponse {\n email?: string;\n}\n\nenum ChatStatus {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected'\n}\n\nconst sockToChat = function (msg: any): ChatEvent | Message {\n const type = msg.msg_in ? MessageType.MsgIn : MessageType.MsgOut;\n const msgContent = msg.msg_in || msg.msg_out;\n\n return {\n id: msgContent.id,\n type,\n text: msgContent.text,\n date: new Date(msgContent.time),\n user: msgContent.user,\n attachments: msgContent.attachments\n };\n};\n\nexport class WebChat extends LitElement {\n static get styles() {\n return css`\n :host {\n display: flex;\n align-items: center;\n align-self: center;\n --curvature: 0.6em;\n --color-primary: hsla(208, 70%, 55%, 1);\n font-family: 'Roboto', 'Helvetica Neue', sans-serif;\n font-weight: 400;\n --toggle-speed: 80ms;\n position: fixed;\n right: 0;\n bottom: 0;\n z-index: 10000;\n }\n\n .header {\n background: var(--color-primary);\n height: 3em;\n display: flex;\n align-items: center;\n width: 100%;\n color: rgba(255, 255, 255, 0.8);\n font-size: 0.8em;\n }\n\n .header slot {\n flex-grow: 1;\n padding: 1em;\n color: rgba(255, 255, 255, 0.9);\n font-size: 1.2em;\n display: block;\n }\n\n .header .close-button {\n margin: 0.5em;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n }\n\n .header .close-button:hover {\n cursor: pointer;\n color: rgba(255, 255, 255, 1);\n }\n\n .block {\n margin-bottom: 1em;\n }\n\n .time {\n text-align: center;\n font-size: 0.8em;\n color: #999;\n margin-top: 2em;\n border-top: 1px solid #f8f8f8;\n padding: 1em;\n margin-left: 4em;\n margin-right: 4em;\n }\n\n .first .time {\n margin-top: 0;\n border-top: none;\n padding-top: 0;\n }\n\n .row {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n }\n\n .input-panel {\n padding: 1em;\n background: #fff;\n }\n\n .border {\n border-top: 1px solid #e9e9e9;\n margin: 0 1em;\n }\n\n .avatar {\n margin-top: 0.6em;\n margin-right: 0.6em;\n flex-shrink: 0;\n width: 2em;\n height: 2em;\n overflow: hidden;\n border-radius: 100%;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 7px 0px,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px,\n inset 0 0 0 0.15em rgba(0, 0, 0, 0.1);\n }\n\n .toggle {\n flex-shrink: 0;\n width: 4em;\n height: 4em;\n overflow: hidden;\n border-radius: 100%;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 1em 0.7em,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px,\n inset 0 0 0 0.25em rgba(0, 0, 0, 0.1);\n cursor: pointer;\n transition: box-shadow var(--toggle-speed) ease-out;\n position: absolute;\n bottom: 1em;\n right: 1em;\n }\n\n .toggle:hover {\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 1em 0.7em,\n rgba(0, 0, 0, 0.4) 0px 1px 2px 0px,\n inset 0 0 0 0.25em rgba(0, 0, 0, 0.2);\n }\n\n .incoming .row {\n flex-direction: row-reverse;\n margin-left: 1em;\n }\n\n .bubble {\n padding: 1em;\n padding-bottom: 0.5em;\n background: #fafafa;\n border-radius: var(--curvature);\n max-width: 70%;\n }\n\n .bubble .name {\n font-size: 0.95em;\n font-weight: 400;\n color: #888;\n margin-bottom: 0.25em;\n }\n\n .outgoing .bubble {\n border-top-left-radius: 0;\n }\n\n .incoming .bubble {\n background: var(--color-primary);\n color: white;\n border-top-right-radius: 0;\n text-align: right;\n }\n\n .message {\n margin-bottom: 0.5em;\n line-height: 1.2em;\n }\n\n .chat {\n height: 40rem;\n width: 28rem;\n border-radius: var(--curvature);\n overflow: hidden;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 7px 0px,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px, rgba(0, 0, 0, 0.1) 5em 5em 5em 5em;\n position: absolute;\n bottom: 3em;\n right: 1em;\n transition: all var(--toggle-speed) ease-out;\n transform: scale(0.9);\n pointer-events: none;\n opacity: 0;\n display: flex;\n flex-direction: column;\n background: #fff;\n }\n\n .chat.open {\n bottom: 6em;\n opacity: 1;\n transform: scale(1);\n pointer-events: initial;\n }\n\n .input {\n border: none;\n flex-grow: 1;\n color: #333;\n font-size: 1em;\n }\n\n .input:focus {\n outline: none;\n }\n\n input::placeholder {\n opacity: 0.3;\n }\n\n .input.inactive {\n // pointer-events: none;\n // opacity: 0.3;\n }\n\n .active {\n }\n\n .send-icon {\n color: #eee;\n pointer-events: none;\n transform: rotate(-45deg);\n transition: transform 0.2s ease-out;\n }\n\n .pending .send-icon {\n color: var(--color-primary);\n pointer-events: initial;\n transform: rotate(0deg);\n }\n\n .notice {\n padding: 1em;\n background: #f8f8f8;\n color: #666;\n text-align: center;\n cursor: pointer;\n }\n\n .connecting .notice {\n display: flex;\n justify-content: center;\n }\n\n .connecting .notice temba-icon {\n margin-left: 0.5em;\n }\n\n .reconnect {\n color: var(--color-primary);\n text-decoration: underline;\n font-size: 0.9em;\n }\n\n .input:disabled {\n background: transparent !important;\n }\n\n temba-loading {\n justify-content: center;\n margin: 0.5em auto;\n margin-bottom: 2em;\n }\n\n temba-loading.hidden {\n display: none;\n }\n `;\n }\n\n @property({ type: String })\n channel: string;\n\n @property({ type: String })\n urn: string;\n\n @property({ type: Array })\n messageGroups: string[][] = [];\n\n // is our socket connection established\n @property({ type: String })\n status: ChatStatus = ChatStatus.DISCONNECTED;\n\n // is the chat widget open\n @property({ type: Boolean })\n open = false;\n\n @property({ type: Boolean })\n hasPendingText = false;\n\n @property({ type: String })\n host: string;\n\n @property({ type: String })\n activeUserAvatar: string;\n\n @property({ type: Boolean, attribute: false })\n blockHistoryFetching = false;\n\n private chat: Chat;\n private sock: WebSocket;\n private newMessageCount = 0;\n private fetchRequested: Date;\n private beforeTime: string;\n\n public constructor() {\n super();\n }\n\n public firstUpdated(\n changed: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.firstUpdated(changed);\n this.chat = this.shadowRoot.querySelector('temba-chat');\n\n // Only create lightbox if one doesn't already exist\n if (!document.querySelector('temba-lightbox')) {\n const lightbox = document.createElement('temba-lightbox');\n document.querySelector('body').appendChild(lightbox);\n }\n }\n\n private handleReconnect() {\n this.openSocket();\n }\n\n private sendSockMessage(\n cmd: GetHistoryCmd | StartChatCmd | SendMsgCmd | Ack\n ) {\n // eslint-disable-next-line no-console\n console.log('out', cmd);\n this.sock.send(JSON.stringify(cmd));\n }\n\n private openSocket(): void {\n if (this.status !== ChatStatus.DISCONNECTED) {\n return;\n }\n\n this.status = ChatStatus.CONNECTING;\n const webChat = this;\n let url = `wss://localhost.textit.com/wc/connect/${this.channel}/`;\n if (this.urn) {\n url = `${url}?chat_id=${this.urn}`;\n }\n const sock = new WebSocket(url);\n this.sock = sock;\n this.sock.onclose = function () {\n webChat.status = ChatStatus.DISCONNECTED;\n };\n\n this.sock.onopen = function () {\n webChat.beforeTime = new Date().toISOString();\n webChat.status = ChatStatus.CONNECTED;\n webChat.urn = getCookie('temba-chat-urn');\n const cmd: StartChatCmd = { type: 'start_chat' };\n if (webChat.urn) {\n cmd.chat_id = webChat.urn;\n }\n webChat.sendSockMessage(cmd);\n };\n\n this.sock.onmessage = function (event: MessageEvent) {\n webChat.status = ChatStatus.CONNECTED;\n const msg = JSON.parse(event.data) as SockMsg;\n // eslint-disable-next-line no-console\n console.log('in', msg);\n if (msg.type === 'chat_started') {\n const response = msg as StartChatResponse;\n if (webChat.urn !== response.chat_id) {\n webChat.messageGroups = [];\n }\n webChat.urn = response.chat_id;\n setCookie('temba-chat-urn', response.chat_id);\n webChat.requestUpdate('messageGroups');\n } else if (msg.type === 'chat_resumed') {\n const response = msg as ResumeChatResponse;\n webChat.urn = response.chat_id;\n webChat.fetchPreviousMessages();\n } else if (msg.type === 'chat_out') {\n const response = msg as MsgOutResponse;\n webChat.chat.addMessages([sockToChat(response)], null, true);\n\n // ack receipt\n const ack: Ack = { type: 'ack_chat', msg_id: response.msg_out.id };\n webChat.sendSockMessage(ack);\n } else if (msg.type === 'history') {\n webChat.handleHistoryResponse(msg as HistoryResponse);\n }\n };\n\n this.sock.onerror = function () {\n webChat.status = ChatStatus.DISCONNECTED;\n };\n }\n\n public fetchPreviousMessages() {\n if (!this.blockHistoryFetching) {\n this.fetchRequested = new Date();\n this.blockHistoryFetching = true;\n this.chat.fetching = true;\n\n const cmd: GetHistoryCmd = {\n type: 'get_history',\n before: this.beforeTime\n };\n this.fetchRequested = new Date();\n this.sendSockMessage(cmd);\n }\n }\n\n private handleHistoryResponse(response: HistoryResponse) {\n const messages = response.history.reverse();\n if (messages.length > 0) {\n const oldestMessage = messages[0];\n if (oldestMessage['msg_in']) {\n const msgIn = (oldestMessage as MsgInResponse).msg_in;\n this.beforeTime = msgIn.time;\n } else if (oldestMessage['msg_out']) {\n const msgOut = (oldestMessage as MsgOutResponse).msg_out;\n this.beforeTime = msgOut.time;\n }\n }\n\n // convert messages to chat messages\n this.chat.addMessages(messages.map(sockToChat), this.fetchRequested);\n }\n\n public fetchComplete() {\n this.blockHistoryFetching = false;\n }\n\n private focusInput() {\n const input = this.shadowRoot.querySelector('.input') as any;\n if (input) {\n input.focus();\n }\n }\n\n public updated(\n changed: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.updated(changed);\n\n if (this.open && changed.has('open') && changed.get('open') !== undefined) {\n if (this.status === ChatStatus.DISCONNECTED) {\n this.openSocket();\n }\n }\n\n if (changed.has('status')) {\n if (this.status === ChatStatus.CONNECTED) {\n this.focusInput();\n }\n }\n }\n\n public openChat(): void {\n this.open = true;\n }\n\n public handleKeyUp(event: any) {\n if (this.hasPendingText && event.key === 'Enter') {\n this.sendPendingMessage();\n }\n\n this.hasPendingText = event.target.value.length > 0;\n }\n\n private sendPendingMessage() {\n if (this.status === ChatStatus.CONNECTED) {\n const input = this.shadowRoot.querySelector('.input') as any;\n const text = input.value;\n input.value = '';\n\n const msg: SendMsgCmd = {\n // msg_id: `pending-${this.newMessageCount++}`,\n type: 'send_msg',\n text: text\n // time: new Date().toISOString()\n };\n\n this.sendSockMessage(msg);\n\n const date = new Date();\n\n this.chat.addMessages(\n [{ type: MessageType.MsgIn, text, date }],\n date,\n true\n );\n this.hasPendingText = input.value.length > 0;\n }\n }\n\n private handleClickInputPanel(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const input = this.shadowRoot.querySelector('.input') as any;\n input.focus();\n }\n\n private toggleChat() {\n this.open = !this.open;\n }\n\n public render(): TemplateResult {\n return html`\n <div class=\"chat ${this.status} ${this.open ? 'open' : ''}\">\n <div class=\"header\">\n <slot name=\"header\">${this.urn ? this.urn : 'Chat'}</slot>\n <temba-icon\n name=\"close\"\n size=\"1.3\"\n class=\"close-button\"\n @click=${this.toggleChat}\n ></temba-icon>\n </div>\n\n <temba-chat\n @temba-scroll-threshold=${this.fetchPreviousMessages}\n @temba-fetch-complete=${this.fetchComplete}\n ></temba-chat>\n\n ${this.status === ChatStatus.DISCONNECTED\n ? html`<div class=\"notice\">\n <div>This chat is not currently connected.</div>\n <div class=\"reconnect\" @click=${this.handleReconnect}>\n Click here to reconnect\n <div></div>\n </div>\n </div>`\n : null}\n ${this.status === ChatStatus.CONNECTING\n ? html`<div class=\"notice\">\n <div>Connecting</div>\n <temba-icon name=\"progress_spinner\" spin></temba-icon>\n </div>`\n : null}\n ${this.status === ChatStatus.CONNECTED\n ? html` <div class=\"border\"></div>\n <div\n class=\"row input-panel ${this.hasPendingText ? 'pending' : ''}\"\n @click=${this.handleClickInputPanel}\n >\n <input\n class=\"input ${this.status === ChatStatus.CONNECTED\n ? 'active'\n : 'inactive'}\"\n type=\"text\"\n placeholder=\"Message..\"\n ?disabled=${this.status !== ChatStatus.CONNECTED}\n @keydown=${this.handleKeyUp}\n />\n <temba-icon\n tabindex=\"1\"\n class=\"send-icon\"\n name=\"send\"\n size=\"1\"\n clickable\n @click=${this.sendPendingMessage}\n ></temba-icon>\n </div>`\n : null}\n </div>\n\n <div @click=${this.toggleChat}>\n <div\n class=\"toggle\"\n style=\"background: center / contain no-repeat url(${this\n .activeUserAvatar || DEFAULT_AVATAR})\"\n ></div>\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WebChat.js","sourceRoot":"","sources":["../../../src/webchat/WebChat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-this-alias */\nimport { LitElement, TemplateResult, html, css, PropertyValueMap } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { getCookie, setCookie } from '../utils';\nimport { DEFAULT_AVATAR } from './assets';\nimport { Chat, ChatEvent, Message, MessageType } from '../display/Chat';\n\ninterface User {\n avatar?: string;\n email: string;\n name: string;\n id: string;\n}\n\ninterface MsgIn {\n id: string;\n text: string;\n time: string;\n}\n\ninterface MsgOut extends MsgIn {\n user: User;\n origin: string;\n}\n\ninterface SockMsg {\n type:\n | 'start_chat'\n | 'get_history'\n | 'send_msg'\n | 'ack_chat'\n\n // responses\n | 'chat_started'\n | 'chat_resumed'\n | 'msg_in'\n | 'msg_out'\n | 'history'\n\n // receiving\n | 'chat_out';\n}\n\ninterface GetHistoryCmd extends SockMsg {\n before?: string;\n}\n\ninterface StartChatCmd extends SockMsg {\n chat_id?: string;\n}\n\ninterface SendMsgCmd extends SockMsg {\n text: string;\n}\n\ninterface Ack extends SockMsg {\n msg_id: string;\n}\n\ninterface MsgOutResponse extends SockMsg {\n msg_out: MsgOut;\n}\n\ninterface MsgInResponse extends SockMsg {\n msg_in: MsgIn;\n}\n\ninterface HistoryResponse extends SockMsg {\n history: (MsgInResponse | MsgOutResponse)[];\n}\n\ninterface StartChatResponse extends SockMsg {\n chat_id: string;\n}\n\ninterface ResumeChatResponse extends StartChatResponse {\n email?: string;\n}\n\nenum ChatStatus {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected'\n}\n\nconst sockToChat = function (msg: any): ChatEvent | Message {\n const type = msg.msg_in ? MessageType.MsgIn : MessageType.MsgOut;\n const msgContent = msg.msg_in || msg.msg_out;\n\n return {\n id: msgContent.id,\n type,\n text: msgContent.text,\n date: new Date(msgContent.time),\n user: msgContent.user,\n attachments: msgContent.attachments\n };\n};\n\nexport class WebChat extends LitElement {\n static get styles() {\n return css`\n :host {\n display: flex;\n align-items: center;\n align-self: center;\n --curvature: 0.6em;\n --color-primary: hsla(208, 70%, 55%, 1);\n font-family: 'Roboto', 'Helvetica Neue', sans-serif;\n font-weight: 400;\n --toggle-speed: 80ms;\n position: fixed;\n right: 0;\n bottom: 0;\n z-index: 10000;\n }\n\n .header {\n background: var(--color-primary);\n height: 3em;\n display: flex;\n align-items: center;\n width: 100%;\n color: rgba(255, 255, 255, 0.8);\n font-size: 0.8em;\n }\n\n .header slot {\n flex-grow: 1;\n padding: 1em;\n color: rgba(255, 255, 255, 0.9);\n font-size: 1.2em;\n display: block;\n }\n\n .header .close-button {\n margin: 0.5em;\n color: rgba(255, 255, 255, 0.5);\n cursor: pointer;\n }\n\n .header .close-button:hover {\n cursor: pointer;\n color: rgba(255, 255, 255, 1);\n }\n\n .block {\n margin-bottom: 1em;\n }\n\n .time {\n text-align: center;\n font-size: 0.8em;\n color: #999;\n margin-top: 2em;\n border-top: 1px solid #f8f8f8;\n padding: 1em;\n margin-left: 4em;\n margin-right: 4em;\n }\n\n .first .time {\n margin-top: 0;\n border-top: none;\n padding-top: 0;\n }\n\n .row {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n }\n\n .input-panel {\n padding: 1em;\n background: #fff;\n }\n\n .border {\n border-top: 1px solid #e9e9e9;\n margin: 0 1em;\n }\n\n .avatar {\n margin-top: 0.6em;\n margin-right: 0.6em;\n flex-shrink: 0;\n width: 2em;\n height: 2em;\n overflow: hidden;\n border-radius: 100%;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 7px 0px,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px,\n inset 0 0 0 0.15em rgba(0, 0, 0, 0.1);\n }\n\n .toggle {\n flex-shrink: 0;\n width: 4em;\n height: 4em;\n overflow: hidden;\n border-radius: 100%;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 1em 0.7em,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px,\n inset 0 0 0 0.25em rgba(0, 0, 0, 0.1);\n cursor: pointer;\n transition: box-shadow var(--toggle-speed) ease-out;\n position: absolute;\n bottom: 1em;\n right: 1em;\n }\n\n .toggle:hover {\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 1em 0.7em,\n rgba(0, 0, 0, 0.4) 0px 1px 2px 0px,\n inset 0 0 0 0.25em rgba(0, 0, 0, 0.2);\n }\n\n .incoming .row {\n flex-direction: row-reverse;\n margin-left: 1em;\n }\n\n .bubble {\n padding: 1em;\n padding-bottom: 0.5em;\n background: #fafafa;\n border-radius: var(--curvature);\n max-width: 70%;\n }\n\n .bubble .name {\n font-size: 0.95em;\n font-weight: 400;\n color: #888;\n margin-bottom: 0.25em;\n }\n\n .outgoing .bubble {\n border-top-left-radius: 0;\n }\n\n .incoming .bubble {\n background: var(--color-primary);\n color: white;\n border-top-right-radius: 0;\n text-align: right;\n }\n\n .message {\n margin-bottom: 0.5em;\n line-height: 1.2em;\n }\n\n .chat {\n height: 40rem;\n width: 28rem;\n border-radius: var(--curvature);\n overflow: hidden;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 7px 0px,\n rgba(0, 0, 0, 0.2) 0px 1px 2px 0px, rgba(0, 0, 0, 0.1) 5em 5em 5em 5em;\n position: absolute;\n bottom: 3em;\n right: 1em;\n transition: all var(--toggle-speed) ease-out;\n transform: scale(0.9);\n pointer-events: none;\n opacity: 0;\n display: flex;\n flex-direction: column;\n background: #fff;\n }\n\n .chat.open {\n bottom: 6em;\n opacity: 1;\n transform: scale(1);\n pointer-events: initial;\n }\n\n .input {\n border: none;\n flex-grow: 1;\n color: #333;\n font-size: 1em;\n }\n\n .input:focus {\n outline: none;\n }\n\n input::placeholder {\n opacity: 0.3;\n }\n\n .input.inactive {\n // pointer-events: none;\n // opacity: 0.3;\n }\n\n .active {\n }\n\n .send-icon {\n color: #eee;\n pointer-events: none;\n transform: rotate(-45deg);\n transition: transform 0.2s ease-out;\n }\n\n .pending .send-icon {\n color: var(--color-primary);\n pointer-events: initial;\n transform: rotate(0deg);\n }\n\n .notice {\n padding: 1em;\n background: #f8f8f8;\n color: #666;\n text-align: center;\n cursor: pointer;\n }\n\n .connecting .notice {\n display: flex;\n justify-content: center;\n }\n\n .connecting .notice temba-icon {\n margin-left: 0.5em;\n }\n\n .reconnect {\n color: var(--color-primary);\n text-decoration: underline;\n font-size: 0.9em;\n }\n\n .input:disabled {\n background: transparent !important;\n }\n\n temba-loading {\n justify-content: center;\n margin: 0.5em auto;\n margin-bottom: 2em;\n }\n\n temba-loading.hidden {\n display: none;\n }\n `;\n }\n\n @property({ type: String })\n channel: string;\n\n @property({ type: String })\n urn: string;\n\n @property({ type: Array })\n messageGroups: string[][] = [];\n\n // is our socket connection established\n @property({ type: String })\n status: ChatStatus = ChatStatus.DISCONNECTED;\n\n // is the chat widget open\n @property({ type: Boolean })\n open = false;\n\n @property({ type: Boolean })\n hasPendingText = false;\n\n @property({ type: String })\n host: string;\n\n @property({ type: String })\n activeUserAvatar: string;\n\n @property({ type: Boolean, attribute: false })\n blockHistoryFetching = false;\n\n private chat: Chat;\n private sock: WebSocket;\n private newMessageCount = 0;\n private fetchRequested: Date;\n private beforeTime: string;\n\n public constructor() {\n super();\n }\n\n public firstUpdated(\n changed: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.firstUpdated(changed);\n this.chat = this.shadowRoot.querySelector('temba-chat');\n\n // Only create lightbox if one doesn't already exist\n if (!document.querySelector('temba-lightbox')) {\n const lightbox = document.createElement('temba-lightbox');\n document.querySelector('body').appendChild(lightbox);\n }\n }\n\n private handleReconnect() {\n this.openSocket();\n }\n\n private sendSockMessage(\n cmd: GetHistoryCmd | StartChatCmd | SendMsgCmd | Ack\n ) {\n // eslint-disable-next-line no-console\n console.log('out', cmd);\n this.sock.send(JSON.stringify(cmd));\n }\n\n private openSocket(): void {\n if (this.status !== ChatStatus.DISCONNECTED) {\n return;\n }\n\n this.status = ChatStatus.CONNECTING;\n const webChat = this;\n let url = `wss://localhost.textit.com/wc/connect/${this.channel}/`;\n if (this.urn) {\n url = `${url}?chat_id=${this.urn}`;\n }\n const sock = new WebSocket(url);\n this.sock = sock;\n this.sock.onclose = function () {\n webChat.status = ChatStatus.DISCONNECTED;\n };\n\n this.sock.onopen = function () {\n webChat.beforeTime = new Date().toISOString();\n webChat.status = ChatStatus.CONNECTED;\n webChat.urn = getCookie('temba-chat-urn');\n const cmd: StartChatCmd = { type: 'start_chat' };\n if (webChat.urn) {\n cmd.chat_id = webChat.urn;\n }\n webChat.sendSockMessage(cmd);\n };\n\n this.sock.onmessage = function (event: MessageEvent) {\n webChat.status = ChatStatus.CONNECTED;\n const msg = JSON.parse(event.data) as SockMsg;\n // eslint-disable-next-line no-console\n console.log('in', msg);\n if (msg.type === 'chat_started') {\n const response = msg as StartChatResponse;\n if (webChat.urn !== response.chat_id) {\n webChat.messageGroups = [];\n }\n webChat.urn = response.chat_id;\n setCookie('temba-chat-urn', response.chat_id);\n webChat.requestUpdate('messageGroups');\n } else if (msg.type === 'chat_resumed') {\n const response = msg as ResumeChatResponse;\n webChat.urn = response.chat_id;\n webChat.fetchPreviousMessages();\n } else if (msg.type === 'chat_out') {\n const response = msg as MsgOutResponse;\n webChat.chat.addMessages([sockToChat(response)], null, true);\n\n // ack receipt\n const ack: Ack = { type: 'ack_chat', msg_id: response.msg_out.id };\n webChat.sendSockMessage(ack);\n } else if (msg.type === 'history') {\n webChat.handleHistoryResponse(msg as HistoryResponse);\n }\n };\n\n this.sock.onerror = function () {\n webChat.status = ChatStatus.DISCONNECTED;\n };\n }\n\n public fetchPreviousMessages() {\n if (!this.blockHistoryFetching) {\n this.fetchRequested = new Date();\n this.blockHistoryFetching = true;\n this.chat.fetching = true;\n\n const cmd: GetHistoryCmd = {\n type: 'get_history',\n before: this.beforeTime\n };\n this.fetchRequested = new Date();\n this.sendSockMessage(cmd);\n }\n }\n\n private handleHistoryResponse(response: HistoryResponse) {\n const messages = response.history.reverse();\n if (messages.length > 0) {\n const oldestMessage = messages[0];\n if (oldestMessage['msg_in']) {\n const msgIn = (oldestMessage as MsgInResponse).msg_in;\n this.beforeTime = msgIn.time;\n } else if (oldestMessage['msg_out']) {\n const msgOut = (oldestMessage as MsgOutResponse).msg_out;\n this.beforeTime = msgOut.time;\n }\n }\n\n // convert messages to chat messages\n this.chat.addMessages(messages.map(sockToChat), this.fetchRequested);\n }\n\n public fetchComplete() {\n this.blockHistoryFetching = false;\n }\n\n private focusInput() {\n const input = this.shadowRoot.querySelector('.input') as any;\n if (input) {\n input.focus();\n }\n }\n\n public updated(\n changed: PropertyValueMap<any> | Map<PropertyKey, unknown>\n ): void {\n super.updated(changed);\n\n if (this.open && changed.has('open') && changed.get('open') !== undefined) {\n if (this.status === ChatStatus.DISCONNECTED) {\n this.openSocket();\n }\n }\n\n if (changed.has('status')) {\n if (this.status === ChatStatus.CONNECTED) {\n this.focusInput();\n }\n }\n }\n\n public openChat(): void {\n this.open = true;\n }\n\n public handleKeyUp(event: any) {\n if (this.hasPendingText && event.key === 'Enter') {\n this.sendPendingMessage();\n }\n\n this.hasPendingText = event.target.value.length > 0;\n }\n\n private sendPendingMessage() {\n if (this.status === ChatStatus.CONNECTED) {\n const input = this.shadowRoot.querySelector('.input') as any;\n const text = input.value;\n input.value = '';\n\n const msg: SendMsgCmd = {\n // msg_id: `pending-${this.newMessageCount++}`,\n type: 'send_msg',\n text: text\n // time: new Date().toISOString()\n };\n\n this.sendSockMessage(msg);\n\n const date = new Date();\n\n this.chat.addMessages(\n [{ type: MessageType.MsgIn, text, date }],\n date,\n true\n );\n this.hasPendingText = input.value.length > 0;\n }\n }\n\n private handleClickInputPanel(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const input = this.shadowRoot.querySelector('.input') as any;\n input.focus();\n }\n\n private toggleChat() {\n this.open = !this.open;\n }\n\n public render(): TemplateResult {\n return html`\n <div class=\"chat ${this.status} ${this.open ? 'open' : ''}\">\n <div class=\"header\">\n <slot name=\"header\">${this.urn ? this.urn : 'Chat'}</slot>\n <temba-icon\n name=\"close\"\n size=\"1.3\"\n class=\"close-button\"\n @click=${this.toggleChat}\n ></temba-icon>\n </div>\n\n <temba-chat\n @temba-scroll-threshold=${this.fetchPreviousMessages}\n @temba-fetch-complete=${this.fetchComplete}\n ></temba-chat>\n\n ${this.status === ChatStatus.DISCONNECTED\n ? html`<div class=\"notice\">\n <div>This chat is not currently connected.</div>\n <div class=\"reconnect\" @click=${this.handleReconnect}>\n Click here to reconnect\n <div></div>\n </div>\n </div>`\n : null}\n ${this.status === ChatStatus.CONNECTING\n ? html`<div class=\"notice\">\n <div>Connecting</div>\n <temba-icon name=\"progress_spinner\" spin></temba-icon>\n </div>`\n : null}\n ${this.status === ChatStatus.CONNECTED\n ? html` <div class=\"border\"></div>\n <div\n class=\"row input-panel ${this.hasPendingText ? 'pending' : ''}\"\n @click=${this.handleClickInputPanel}\n >\n <input\n class=\"input ${this.status === ChatStatus.CONNECTED\n ? 'active'\n : 'inactive'}\"\n type=\"text\"\n placeholder=\"Message..\"\n ?disabled=${this.status !== ChatStatus.CONNECTED}\n @keydown=${this.handleKeyUp}\n />\n <temba-icon\n tabindex=\"1\"\n class=\"send-icon\"\n name=\"send\"\n size=\"1\"\n clickable\n @click=${this.sendPendingMessage}\n ></temba-icon>\n </div>`\n : null}\n </div>\n\n <div @click=${this.toggleChat}>\n <div\n class=\"toggle\"\n style=\"background: center / contain no-repeat url(${this\n .activeUserAvatar || DEFAULT_AVATAR})\"\n ></div>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { addCustomElement } from './temba-modules';
|
|
3
3
|
// we import and declare the alias editor seperately since
|
|
4
4
|
// leaflet-map doesn't work in dev mode
|
|
5
|
-
import { AliasEditor } from './src/
|
|
6
|
-
import { LeafletMap } from './src/
|
|
5
|
+
import { AliasEditor } from './src/live/AliasEditor';
|
|
6
|
+
import { LeafletMap } from './src/display/LeafletMap';
|
|
7
7
|
addCustomElement('leaflet-map', LeafletMap);
|
|
8
8
|
addCustomElement('alias-editor', AliasEditor);
|
|
9
9
|
//# sourceMappingURL=temba-components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-components.js","sourceRoot":"","sources":["../temba-components.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,0DAA0D;AAC1D,uCAAuC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"temba-components.js","sourceRoot":"","sources":["../temba-components.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,0DAA0D;AAC1D,uCAAuC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC5C,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC","sourcesContent":["// bring in the rest of our modules\nimport { addCustomElement } from './temba-modules';\n\n// we import and declare the alias editor seperately since\n// leaflet-map doesn't work in dev mode\nimport { AliasEditor } from './src/live/AliasEditor';\nimport { LeafletMap } from './src/display/LeafletMap';\n\naddCustomElement('leaflet-map', LeafletMap);\naddCustomElement('alias-editor', AliasEditor);\n"]}
|
package/out-tsc/temba-modules.js
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import { Checkbox } from './src/
|
|
2
|
-
import { TextInput } from './src/
|
|
1
|
+
import { Checkbox } from './src/form/Checkbox';
|
|
2
|
+
import { TextInput } from './src/form/TextInput';
|
|
3
3
|
import { Store } from './src/store/Store';
|
|
4
|
-
import { Select } from './src/select/Select';
|
|
5
|
-
import { Completion } from './src/
|
|
6
|
-
import { Modax } from './src/
|
|
7
|
-
import { Dialog } from './src/
|
|
8
|
-
import { Button } from './src/
|
|
9
|
-
import { FormField } from './src/
|
|
10
|
-
import { Loading } from './src/
|
|
11
|
-
import { CharCount } from './src/
|
|
12
|
-
import { Options } from './src/
|
|
13
|
-
import { ContactChat } from './src/
|
|
4
|
+
import { Select } from './src/form/select/Select';
|
|
5
|
+
import { Completion } from './src/form/Completion';
|
|
6
|
+
import { Modax } from './src/layout/Modax';
|
|
7
|
+
import { Dialog } from './src/layout/Dialog';
|
|
8
|
+
import { Button } from './src/display/Button';
|
|
9
|
+
import { FormField } from './src/form/FormField';
|
|
10
|
+
import { Loading } from './src/display/Loading';
|
|
11
|
+
import { CharCount } from './src/display/CharCount';
|
|
12
|
+
import { Options } from './src/display/Options';
|
|
13
|
+
import { ContactChat } from './src/live/ContactChat';
|
|
14
14
|
import { TicketList } from './src/list/TicketList';
|
|
15
|
-
import { ContactDetails } from './src/
|
|
15
|
+
import { ContactDetails } from './src/live/ContactDetails';
|
|
16
16
|
import { TembaList } from './src/list/TembaList';
|
|
17
|
-
import { ContactSearch } from './src/
|
|
18
|
-
import { VectorIcon } from './src/
|
|
19
|
-
import { Alert } from './src/
|
|
20
|
-
import { Omnibox } from './src/
|
|
21
|
-
import { Tip } from './src/
|
|
17
|
+
import { ContactSearch } from './src/form/ContactSearch';
|
|
18
|
+
import { VectorIcon } from './src/display/Icon';
|
|
19
|
+
import { Alert } from './src/display/Alert';
|
|
20
|
+
import { Omnibox } from './src/form/select/Omnibox';
|
|
21
|
+
import { Tip } from './src/display/Tip';
|
|
22
22
|
import { TembaMenu } from './src/list/TembaMenu';
|
|
23
|
-
import { Anchor } from './src/
|
|
24
|
-
import { Dropdown } from './src/
|
|
25
|
-
import { TabPane } from './src/
|
|
26
|
-
import { Tab } from './src/
|
|
27
|
-
import Label from './src/
|
|
28
|
-
import { ContactName } from './src/
|
|
29
|
-
import { ContactUrn } from './src/
|
|
30
|
-
import { ContactFields } from './src/
|
|
31
|
-
import { ContactFieldEditor } from './src/
|
|
32
|
-
import { ContactBadges } from './src/
|
|
33
|
-
import { ContactPending } from './src/
|
|
34
|
-
import { TembaSlider } from './src/
|
|
23
|
+
import { Anchor } from './src/display/Anchor';
|
|
24
|
+
import { Dropdown } from './src/display/Dropdown';
|
|
25
|
+
import { TabPane } from './src/layout/TabPane';
|
|
26
|
+
import { Tab } from './src/layout/Tab';
|
|
27
|
+
import Label from './src/display/Label';
|
|
28
|
+
import { ContactName } from './src/display/ContactName';
|
|
29
|
+
import { ContactUrn } from './src/display/ContactUrn';
|
|
30
|
+
import { ContactFields } from './src/live/ContactFields';
|
|
31
|
+
import { ContactFieldEditor } from './src/live/ContactFieldEditor';
|
|
32
|
+
import { ContactBadges } from './src/live/ContactBadges';
|
|
33
|
+
import { ContactPending } from './src/live/ContactPending';
|
|
34
|
+
import { TembaSlider } from './src/form/TembaSlider';
|
|
35
35
|
import { RunList } from './src/list/RunList';
|
|
36
36
|
import { FlowStoreElement } from './src/store/FlowStoreElement';
|
|
37
|
-
import { ContactNameFetch } from './src/
|
|
38
|
-
import { DatePicker } from './src/
|
|
39
|
-
import { FieldManager } from './src/
|
|
37
|
+
import { ContactNameFetch } from './src/live/ContactNameFetch';
|
|
38
|
+
import { DatePicker } from './src/form/DatePicker';
|
|
39
|
+
import { FieldManager } from './src/live/FieldManager';
|
|
40
40
|
import { SortableList } from './src/list/SortableList';
|
|
41
41
|
import { ContentMenu } from './src/list/ContentMenu';
|
|
42
|
-
import { TembaDate } from './src/
|
|
43
|
-
import { Compose } from './src/
|
|
44
|
-
import { Lightbox } from './src/
|
|
45
|
-
import { ColorPicker } from './src/
|
|
46
|
-
import { Resizer } from './src/
|
|
47
|
-
import { Thumbnail } from './src/
|
|
42
|
+
import { TembaDate } from './src/display/TembaDate';
|
|
43
|
+
import { Compose } from './src/form/Compose';
|
|
44
|
+
import { Lightbox } from './src/display/Lightbox';
|
|
45
|
+
import { ColorPicker } from './src/form/ColorPicker';
|
|
46
|
+
import { Resizer } from './src/layout/Resizer';
|
|
47
|
+
import { Thumbnail } from './src/display/Thumbnail';
|
|
48
48
|
import { NotificationList } from './src/list/NotificationList';
|
|
49
49
|
import { WebChat } from './src/webchat/WebChat';
|
|
50
|
-
import { ImagePicker } from './src/
|
|
51
|
-
import { Mask } from './src/
|
|
52
|
-
import { TembaUser } from './src/
|
|
53
|
-
import { TemplateEditor } from './src/
|
|
54
|
-
import { Toast } from './src/
|
|
55
|
-
import { Chat } from './src/
|
|
56
|
-
import { MediaPicker } from './src/
|
|
50
|
+
import { ImagePicker } from './src/form/ImagePicker';
|
|
51
|
+
import { Mask } from './src/layout/Mask';
|
|
52
|
+
import { TembaUser } from './src/display/TembaUser';
|
|
53
|
+
import { TemplateEditor } from './src/form/TemplateEditor';
|
|
54
|
+
import { Toast } from './src/display/Toast';
|
|
55
|
+
import { Chat } from './src/display/Chat';
|
|
56
|
+
import { MediaPicker } from './src/form/MediaPicker';
|
|
57
57
|
import { Editor } from './src/flow/Editor';
|
|
58
58
|
import { EditorNode } from './src/flow/EditorNode';
|
|
59
59
|
import { StickyNote } from './src/flow/StickyNote';
|
|
60
|
-
import { ContactNotepad } from './src/
|
|
61
|
-
import { ProgressBar } from './src/
|
|
62
|
-
import { StartProgress } from './src/
|
|
60
|
+
import { ContactNotepad } from './src/live/ContactNotepad';
|
|
61
|
+
import { ProgressBar } from './src/display/ProgressBar';
|
|
62
|
+
import { StartProgress } from './src/live/StartProgress';
|
|
63
63
|
import { ShortcutList } from './src/list/ShortcutList';
|
|
64
|
-
import { PopupSelect } from './src/select/PopupSelect';
|
|
65
|
-
import { UserSelect } from './src/select/UserSelect';
|
|
66
|
-
import { WorkspaceSelect } from './src/select/WorkspaceSelect';
|
|
67
|
-
import { TembaChart } from './src/
|
|
68
|
-
import { RangePicker } from './src/
|
|
64
|
+
import { PopupSelect } from './src/form/select/PopupSelect';
|
|
65
|
+
import { UserSelect } from './src/form/select/UserSelect';
|
|
66
|
+
import { WorkspaceSelect } from './src/form/select/WorkspaceSelect';
|
|
67
|
+
import { TembaChart } from './src/live/TembaChart';
|
|
68
|
+
import { RangePicker } from './src/form/RangePicker';
|
|
69
69
|
export function addCustomElement(name, comp) {
|
|
70
70
|
if (!window.customElements.get(name)) {
|
|
71
71
|
window.customElements.define(name, comp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-modules.js","sourceRoot":"","sources":["../temba-modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox } from './src/checkbox/Checkbox';\nimport { TextInput } from './src/textinput/TextInput';\nimport { Store } from './src/store/Store';\nimport { Select } from './src/select/Select';\nimport { Completion } from './src/completion/Completion';\nimport { Modax } from './src/dialog/Modax';\nimport { Dialog } from './src/dialog/Dialog';\nimport { Button } from './src/button/Button';\nimport { FormField } from './src/formfield/FormField';\nimport { Loading } from './src/loading/Loading';\nimport { CharCount } from './src/charcount/CharCount';\nimport { Options } from './src/options/Options';\nimport { ContactChat } from './src/contacts/ContactChat';\nimport { TicketList } from './src/list/TicketList';\nimport { ContactDetails } from './src/contacts/ContactDetails';\nimport { TembaList } from './src/list/TembaList';\nimport { ContactSearch } from './src/contactsearch/ContactSearch';\nimport { VectorIcon } from './src/vectoricon/VectorIcon';\nimport { Alert } from './src/alert/Alert';\nimport { Omnibox } from './src/omnibox/Omnibox';\nimport { Tip } from './src/tip/Tip';\nimport { TembaMenu } from './src/list/TembaMenu';\nimport { Anchor } from './src/anchor/Anchor';\nimport { Dropdown } from './src/dropdown/Dropdown';\nimport { TabPane } from './src/tabpane/TabPane';\nimport { Tab } from './src/tabpane/Tab';\nimport Label from './src/label/Label';\nimport { ContactName } from './src/contacts/ContactName';\nimport { ContactUrn } from './src/contacts/ContactUrn';\nimport { ContactFields } from './src/contacts/ContactFields';\nimport { ContactFieldEditor } from './src/contacts/ContactFieldEditor';\n\nimport { ContactBadges } from './src/contacts/ContactBadges';\nimport { ContactPending } from './src/contacts/ContactPending';\nimport { TembaSlider } from './src/slider/TembaSlider';\nimport { RunList } from './src/list/RunList';\nimport { FlowStoreElement } from './src/store/FlowStoreElement';\nimport { ContactNameFetch } from './src/contacts/ContactNameFetch';\nimport { DatePicker } from './src/datepicker/DatePicker';\nimport { FieldManager } from './src/fields/FieldManager';\nimport { SortableList } from './src/list/SortableList';\nimport { ContentMenu } from './src/list/ContentMenu';\nimport { TembaDate } from './src/date/TembaDate';\nimport { Compose } from './src/compose/Compose';\nimport { Lightbox } from './src/lightbox/Lightbox';\nimport { ColorPicker } from './src/colorpicker/ColorPicker';\nimport { Resizer } from './src/resizer/Resizer';\nimport { Thumbnail } from './src/thumbnail/Thumbnail';\nimport { NotificationList } from './src/list/NotificationList';\nimport { WebChat } from './src/webchat/WebChat';\nimport { ImagePicker } from './src/imagepicker/ImagePicker';\nimport { Mask } from './src/mask/Mask';\nimport { TembaUser } from './src/user/TembaUser';\nimport { TemplateEditor } from './src/templates/TemplateEditor';\nimport { Toast } from './src/toast/Toast';\nimport { Chat } from './src/chat/Chat';\nimport { MediaPicker } from './src/mediapicker/MediaPicker';\nimport { Editor } from './src/flow/Editor';\nimport { EditorNode } from './src/flow/EditorNode';\nimport { StickyNote } from './src/flow/StickyNote';\nimport { ContactNotepad } from './src/contacts/ContactNotepad';\nimport { ProgressBar } from './src/progress/ProgressBar';\nimport { StartProgress } from './src/progress/StartProgress';\nimport { ShortcutList } from './src/list/ShortcutList';\nimport { PopupSelect } from './src/select/PopupSelect';\nimport { UserSelect } from './src/select/UserSelect';\nimport { WorkspaceSelect } from './src/select/WorkspaceSelect';\nimport { TembaChart } from './src/chart/TembaChart';\nimport { RangePicker } from './src/datepicker/RangePicker';\n\nexport function addCustomElement(name: string, comp: any) {\n if (!window.customElements.get(name)) {\n window.customElements.define(name, comp);\n }\n}\n\naddCustomElement('temba-anchor', Anchor);\naddCustomElement('temba-alert', Alert);\naddCustomElement('temba-store', Store);\naddCustomElement('temba-textinput', TextInput);\naddCustomElement('temba-datepicker', DatePicker);\naddCustomElement('temba-range-picker', RangePicker);\naddCustomElement('temba-date', TembaDate);\naddCustomElement('temba-completion', Completion);\naddCustomElement('temba-checkbox', Checkbox);\naddCustomElement('temba-select', Select);\naddCustomElement('temba-options', Options);\naddCustomElement('temba-loading', Loading);\naddCustomElement('temba-lightbox', Lightbox);\naddCustomElement('temba-button', Button);\naddCustomElement('temba-omnibox', Omnibox);\naddCustomElement('temba-tip', Tip);\naddCustomElement('temba-contact-name', ContactName);\naddCustomElement('temba-contact-name-fetch', ContactNameFetch);\naddCustomElement('temba-contact-field', ContactFieldEditor);\naddCustomElement('temba-contact-fields', ContactFields);\naddCustomElement('temba-field-manager', FieldManager);\naddCustomElement('temba-urn', ContactUrn);\naddCustomElement('temba-content-menu', ContentMenu);\n\naddCustomElement('temba-field', FormField);\naddCustomElement('temba-dialog', Dialog);\naddCustomElement('temba-modax', Modax);\naddCustomElement('temba-charcount', CharCount);\naddCustomElement('temba-contact-chat', ContactChat);\naddCustomElement('temba-contact-details', ContactDetails);\naddCustomElement('temba-ticket-list', TicketList);\naddCustomElement('temba-notification-list', NotificationList);\naddCustomElement('temba-list', TembaList);\naddCustomElement('temba-sortable-list', SortableList);\naddCustomElement('temba-run-list', RunList);\naddCustomElement('temba-flow-details', FlowStoreElement);\naddCustomElement('temba-label', Label);\naddCustomElement('temba-menu', TembaMenu);\naddCustomElement('temba-contact-search', ContactSearch);\naddCustomElement('temba-icon', VectorIcon);\naddCustomElement('temba-dropdown', Dropdown);\naddCustomElement('temba-tabs', TabPane);\naddCustomElement('temba-tab', Tab);\naddCustomElement('temba-contact-badges', ContactBadges);\naddCustomElement('temba-contact-pending', ContactPending);\naddCustomElement('temba-slider', TembaSlider);\naddCustomElement('temba-content-menu', ContentMenu);\naddCustomElement('temba-compose', Compose);\naddCustomElement('temba-color-picker', ColorPicker);\naddCustomElement('temba-resizer', Resizer);\naddCustomElement('temba-thumbnail', Thumbnail);\naddCustomElement('temba-webchat', WebChat);\naddCustomElement('temba-image-picker', ImagePicker);\naddCustomElement('temba-mask', Mask);\naddCustomElement('temba-user', TembaUser);\naddCustomElement('temba-template-editor', TemplateEditor);\naddCustomElement('temba-toast', Toast);\naddCustomElement('temba-chat', Chat);\naddCustomElement('temba-media-picker', MediaPicker);\naddCustomElement('temba-flow-editor', Editor);\naddCustomElement('temba-flow-node', EditorNode);\naddCustomElement('temba-sticky-note', StickyNote);\naddCustomElement('temba-contact-notepad', ContactNotepad);\naddCustomElement('temba-progress', ProgressBar);\naddCustomElement('temba-start-progress', StartProgress);\naddCustomElement('temba-shortcuts', ShortcutList);\naddCustomElement('temba-popup-select', PopupSelect);\naddCustomElement('temba-user-select', UserSelect);\naddCustomElement('temba-workspace-select', WorkspaceSelect);\naddCustomElement('temba-chart', TembaChart);\n"]}
|
|
1
|
+
{"version":3,"file":"temba-modules.js","sourceRoot":"","sources":["../temba-modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox } from './src/form/Checkbox';\nimport { TextInput } from './src/form/TextInput';\nimport { Store } from './src/store/Store';\nimport { Select } from './src/form/select/Select';\nimport { Completion } from './src/form/Completion';\nimport { Modax } from './src/layout/Modax';\nimport { Dialog } from './src/layout/Dialog';\nimport { Button } from './src/display/Button';\nimport { FormField } from './src/form/FormField';\nimport { Loading } from './src/display/Loading';\nimport { CharCount } from './src/display/CharCount';\nimport { Options } from './src/display/Options';\nimport { ContactChat } from './src/live/ContactChat';\nimport { TicketList } from './src/list/TicketList';\nimport { ContactDetails } from './src/live/ContactDetails';\nimport { TembaList } from './src/list/TembaList';\nimport { ContactSearch } from './src/form/ContactSearch';\nimport { VectorIcon } from './src/display/Icon';\nimport { Alert } from './src/display/Alert';\nimport { Omnibox } from './src/form/select/Omnibox';\nimport { Tip } from './src/display/Tip';\nimport { TembaMenu } from './src/list/TembaMenu';\nimport { Anchor } from './src/display/Anchor';\nimport { Dropdown } from './src/display/Dropdown';\nimport { TabPane } from './src/layout/TabPane';\nimport { Tab } from './src/layout/Tab';\nimport Label from './src/display/Label';\nimport { ContactName } from './src/display/ContactName';\nimport { ContactUrn } from './src/display/ContactUrn';\nimport { ContactFields } from './src/live/ContactFields';\nimport { ContactFieldEditor } from './src/live/ContactFieldEditor';\n\nimport { ContactBadges } from './src/live/ContactBadges';\nimport { ContactPending } from './src/live/ContactPending';\nimport { TembaSlider } from './src/form/TembaSlider';\nimport { RunList } from './src/list/RunList';\nimport { FlowStoreElement } from './src/store/FlowStoreElement';\nimport { ContactNameFetch } from './src/live/ContactNameFetch';\nimport { DatePicker } from './src/form/DatePicker';\nimport { FieldManager } from './src/live/FieldManager';\nimport { SortableList } from './src/list/SortableList';\nimport { ContentMenu } from './src/list/ContentMenu';\nimport { TembaDate } from './src/display/TembaDate';\nimport { Compose } from './src/form/Compose';\nimport { Lightbox } from './src/display/Lightbox';\nimport { ColorPicker } from './src/form/ColorPicker';\nimport { Resizer } from './src/layout/Resizer';\nimport { Thumbnail } from './src/display/Thumbnail';\nimport { NotificationList } from './src/list/NotificationList';\nimport { WebChat } from './src/webchat/WebChat';\nimport { ImagePicker } from './src/form/ImagePicker';\nimport { Mask } from './src/layout/Mask';\nimport { TembaUser } from './src/display/TembaUser';\nimport { TemplateEditor } from './src/form/TemplateEditor';\nimport { Toast } from './src/display/Toast';\nimport { Chat } from './src/display/Chat';\nimport { MediaPicker } from './src/form/MediaPicker';\nimport { Editor } from './src/flow/Editor';\nimport { EditorNode } from './src/flow/EditorNode';\nimport { StickyNote } from './src/flow/StickyNote';\nimport { ContactNotepad } from './src/live/ContactNotepad';\nimport { ProgressBar } from './src/display/ProgressBar';\nimport { StartProgress } from './src/live/StartProgress';\nimport { ShortcutList } from './src/list/ShortcutList';\nimport { PopupSelect } from './src/form/select/PopupSelect';\nimport { UserSelect } from './src/form/select/UserSelect';\nimport { WorkspaceSelect } from './src/form/select/WorkspaceSelect';\nimport { TembaChart } from './src/live/TembaChart';\nimport { RangePicker } from './src/form/RangePicker';\n\nexport function addCustomElement(name: string, comp: any) {\n if (!window.customElements.get(name)) {\n window.customElements.define(name, comp);\n }\n}\n\naddCustomElement('temba-anchor', Anchor);\naddCustomElement('temba-alert', Alert);\naddCustomElement('temba-store', Store);\naddCustomElement('temba-textinput', TextInput);\naddCustomElement('temba-datepicker', DatePicker);\naddCustomElement('temba-range-picker', RangePicker);\naddCustomElement('temba-date', TembaDate);\naddCustomElement('temba-completion', Completion);\naddCustomElement('temba-checkbox', Checkbox);\naddCustomElement('temba-select', Select);\naddCustomElement('temba-options', Options);\naddCustomElement('temba-loading', Loading);\naddCustomElement('temba-lightbox', Lightbox);\naddCustomElement('temba-button', Button);\naddCustomElement('temba-omnibox', Omnibox);\naddCustomElement('temba-tip', Tip);\naddCustomElement('temba-contact-name', ContactName);\naddCustomElement('temba-contact-name-fetch', ContactNameFetch);\naddCustomElement('temba-contact-field', ContactFieldEditor);\naddCustomElement('temba-contact-fields', ContactFields);\naddCustomElement('temba-field-manager', FieldManager);\naddCustomElement('temba-urn', ContactUrn);\naddCustomElement('temba-content-menu', ContentMenu);\n\naddCustomElement('temba-field', FormField);\naddCustomElement('temba-dialog', Dialog);\naddCustomElement('temba-modax', Modax);\naddCustomElement('temba-charcount', CharCount);\naddCustomElement('temba-contact-chat', ContactChat);\naddCustomElement('temba-contact-details', ContactDetails);\naddCustomElement('temba-ticket-list', TicketList);\naddCustomElement('temba-notification-list', NotificationList);\naddCustomElement('temba-list', TembaList);\naddCustomElement('temba-sortable-list', SortableList);\naddCustomElement('temba-run-list', RunList);\naddCustomElement('temba-flow-details', FlowStoreElement);\naddCustomElement('temba-label', Label);\naddCustomElement('temba-menu', TembaMenu);\naddCustomElement('temba-contact-search', ContactSearch);\naddCustomElement('temba-icon', VectorIcon);\naddCustomElement('temba-dropdown', Dropdown);\naddCustomElement('temba-tabs', TabPane);\naddCustomElement('temba-tab', Tab);\naddCustomElement('temba-contact-badges', ContactBadges);\naddCustomElement('temba-contact-pending', ContactPending);\naddCustomElement('temba-slider', TembaSlider);\naddCustomElement('temba-content-menu', ContentMenu);\naddCustomElement('temba-compose', Compose);\naddCustomElement('temba-color-picker', ColorPicker);\naddCustomElement('temba-resizer', Resizer);\naddCustomElement('temba-thumbnail', Thumbnail);\naddCustomElement('temba-webchat', WebChat);\naddCustomElement('temba-image-picker', ImagePicker);\naddCustomElement('temba-mask', Mask);\naddCustomElement('temba-user', TembaUser);\naddCustomElement('temba-template-editor', TemplateEditor);\naddCustomElement('temba-toast', Toast);\naddCustomElement('temba-chat', Chat);\naddCustomElement('temba-media-picker', MediaPicker);\naddCustomElement('temba-flow-editor', Editor);\naddCustomElement('temba-flow-node', EditorNode);\naddCustomElement('temba-sticky-note', StickyNote);\naddCustomElement('temba-contact-notepad', ContactNotepad);\naddCustomElement('temba-progress', ProgressBar);\naddCustomElement('temba-start-progress', StartProgress);\naddCustomElement('temba-shortcuts', ShortcutList);\naddCustomElement('temba-popup-select', PopupSelect);\naddCustomElement('temba-user-select', UserSelect);\naddCustomElement('temba-workspace-select', WorkspaceSelect);\naddCustomElement('temba-chart', TembaChart);\n"]}
|
package/out-tsc/temba-webchat.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Chat } from './src/
|
|
2
|
-
import { VectorIcon } from './src/
|
|
1
|
+
import { Chat } from './src/display/Chat';
|
|
2
|
+
import { VectorIcon } from './src/display/Icon';
|
|
3
3
|
import { WebChat } from './src/webchat/WebChat';
|
|
4
4
|
export function addCustomElement(name, comp) {
|
|
5
5
|
if (!window.customElements.get(name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-webchat.js","sourceRoot":"","sources":["../temba-webchat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"temba-webchat.js","sourceRoot":"","sources":["../temba-webchat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAS;IACtD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3C,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACrC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import { Chat } from './src/display/Chat';\nimport { VectorIcon } from './src/display/Icon';\nimport { WebChat } from './src/webchat/WebChat';\n\nexport function addCustomElement(name: string, comp: any) {\n if (!window.customElements.get(name)) {\n window.customElements.define(name, comp);\n }\n}\n\naddCustomElement('temba-icon', VectorIcon);\naddCustomElement('temba-chat', Chat);\naddCustomElement('temba-webchat', WebChat);\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fixture, assert } from '@open-wc/testing';
|
|
2
|
-
import { Alert } from '../src/
|
|
2
|
+
import { Alert } from '../src/display/Alert';
|
|
3
3
|
import { assertScreenshot, getClip } from './utils.test';
|
|
4
4
|
export const createAlert = async (level, body) => {
|
|
5
5
|
const parentNode = document.createElement('div');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-alert.test.js","sourceRoot":"","sources":["../../test/temba-alert.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"temba-alert.test.js","sourceRoot":"","sources":["../../test/temba-alert.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,OAAO,CAAC,uBAAuB,KAAK,KAAK,IAAI,gBAAgB,EAAE;QAC3E,UAAU;KACX,CAAC,CAAU,CAAC;AACf,CAAC,CAAC;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAChE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture, assert } from '@open-wc/testing';\nimport { Alert } from '../src/display/Alert';\n\nimport { assertScreenshot, getClip } from './utils.test';\n\nexport const createAlert = async (level: string, body: string) => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 250px;');\n return (await fixture(`<temba-alert level=\"${level}\">${body}</temba-alert>`, {\n parentNode\n })) as Alert;\n};\n\ndescribe('temba-alert', () => {\n it('shows info', async () => {\n const alert = await createAlert('info', 'Here is some info');\n assert.instanceOf(alert, Alert);\n await assertScreenshot('alert/info', getClip(alert));\n });\n\n it('shows warning', async () => {\n const alert = await createAlert('warning', 'Here is a warning');\n assert.instanceOf(alert, Alert);\n await assertScreenshot('alert/warning', getClip(alert));\n });\n\n it('shows error', async () => {\n const alert = await createAlert('error', 'Here is an error');\n assert.instanceOf(alert, Alert);\n await assertScreenshot('alert/error', getClip(alert));\n });\n});\n"]}
|
|
@@ -173,4 +173,94 @@ describe('AppState Language Reset', () => {
|
|
|
173
173
|
assert.equal(zustand.getState().isTranslating, false);
|
|
174
174
|
});
|
|
175
175
|
});
|
|
176
|
+
describe('AppState Sticky Note Creation', () => {
|
|
177
|
+
beforeEach(() => {
|
|
178
|
+
// Reset the store state before each test
|
|
179
|
+
const state = zustand.getState();
|
|
180
|
+
zustand.setState({
|
|
181
|
+
...state,
|
|
182
|
+
languageCode: '',
|
|
183
|
+
isTranslating: false,
|
|
184
|
+
flowDefinition: {
|
|
185
|
+
language: 'en',
|
|
186
|
+
localization: {},
|
|
187
|
+
name: 'Test Flow',
|
|
188
|
+
nodes: [],
|
|
189
|
+
uuid: 'test-uuid',
|
|
190
|
+
type: 'messaging',
|
|
191
|
+
revision: 1,
|
|
192
|
+
spec_version: '14.3',
|
|
193
|
+
_ui: {
|
|
194
|
+
nodes: {},
|
|
195
|
+
stickies: {},
|
|
196
|
+
languages: []
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
flowInfo: {
|
|
200
|
+
results: [],
|
|
201
|
+
dependencies: [],
|
|
202
|
+
counts: { nodes: 0, languages: 1 },
|
|
203
|
+
locals: []
|
|
204
|
+
},
|
|
205
|
+
dirtyDate: null
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
it('should create a new sticky note with correct defaults', () => {
|
|
209
|
+
const state = zustand.getState();
|
|
210
|
+
const position = { left: 100, top: 200 };
|
|
211
|
+
const stickyUuid = state.createStickyNote(position);
|
|
212
|
+
// Verify UUID was returned
|
|
213
|
+
assert.isString(stickyUuid);
|
|
214
|
+
assert.isTrue(stickyUuid.length > 0);
|
|
215
|
+
// Verify sticky was added to the flow definition
|
|
216
|
+
const currentState = zustand.getState();
|
|
217
|
+
const stickies = currentState.flowDefinition._ui.stickies;
|
|
218
|
+
assert.property(stickies, stickyUuid);
|
|
219
|
+
const createdSticky = stickies[stickyUuid];
|
|
220
|
+
assert.deepEqual(createdSticky.position, position);
|
|
221
|
+
assert.equal(createdSticky.title, '');
|
|
222
|
+
assert.equal(createdSticky.body, '');
|
|
223
|
+
assert.equal(createdSticky.color, 'yellow');
|
|
224
|
+
// Verify dirty date was set
|
|
225
|
+
assert.isNotNull(currentState.dirtyDate);
|
|
226
|
+
assert.instanceOf(currentState.dirtyDate, Date);
|
|
227
|
+
});
|
|
228
|
+
it('should create multiple unique sticky notes', () => {
|
|
229
|
+
const state = zustand.getState();
|
|
230
|
+
const position1 = { left: 100, top: 200 };
|
|
231
|
+
const position2 = { left: 300, top: 400 };
|
|
232
|
+
const uuid1 = state.createStickyNote(position1);
|
|
233
|
+
const uuid2 = state.createStickyNote(position2);
|
|
234
|
+
// UUIDs should be different
|
|
235
|
+
assert.notEqual(uuid1, uuid2);
|
|
236
|
+
// Both stickies should exist
|
|
237
|
+
const currentState = zustand.getState();
|
|
238
|
+
const stickies = currentState.flowDefinition._ui.stickies;
|
|
239
|
+
assert.property(stickies, uuid1);
|
|
240
|
+
assert.property(stickies, uuid2);
|
|
241
|
+
// Positions should be correct
|
|
242
|
+
assert.deepEqual(stickies[uuid1].position, position1);
|
|
243
|
+
assert.deepEqual(stickies[uuid2].position, position2);
|
|
244
|
+
});
|
|
245
|
+
it('should initialize stickies object if it does not exist', () => {
|
|
246
|
+
// Set up state without stickies
|
|
247
|
+
const state = zustand.getState();
|
|
248
|
+
zustand.setState({
|
|
249
|
+
...state,
|
|
250
|
+
flowDefinition: {
|
|
251
|
+
...state.flowDefinition,
|
|
252
|
+
_ui: {
|
|
253
|
+
...state.flowDefinition._ui,
|
|
254
|
+
stickies: undefined
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
const position = { left: 50, top: 75 };
|
|
259
|
+
const stickyUuid = state.createStickyNote(position);
|
|
260
|
+
// Verify stickies object was created
|
|
261
|
+
const currentState = zustand.getState();
|
|
262
|
+
assert.isObject(currentState.flowDefinition._ui.stickies);
|
|
263
|
+
assert.property(currentState.flowDefinition._ui.stickies, stickyUuid);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
176
266
|
//# sourceMappingURL=temba-appstate-language.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-appstate-language.test.js","sourceRoot":"","sources":["../../test/temba-appstate-language.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@open-wc/testing';\nimport { zustand } from '../src/store/AppState';\n\ndescribe('AppState Language Reset', () => {\n beforeEach(() => {\n // Reset the store state before each test\n const state = zustand.getState();\n zustand.setState({\n ...state,\n languageCode: '',\n isTranslating: false,\n flowDefinition: null,\n flowInfo: null\n });\n });\n\n it('should reset language when loading a new flow', () => {\n const state = zustand.getState();\n\n // First, load an initial flow to establish state\n const initialFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Initial Flow',\n nodes: [],\n uuid: 'initial-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(initialFlowContents);\n\n // Simulate having a previous flow with localization\n state.setLanguageCode('es'); // User selected Spanish for localization\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, true); // Now translating from English to Spanish\n\n // Simulate loading a new flow with English as default\n const mockFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // The language should reset to the flow's default language\n assert.equal(\n zustand.getState().languageCode,\n 'en',\n 'Language should reset to flow default'\n );\n assert.equal(\n zustand.getState().isTranslating,\n false,\n 'Should not be in translation mode'\n );\n });\n\n it('should set isTranslating correctly when languages differ', () => {\n const state = zustand.getState();\n\n // Load a flow with Spanish as default\n const mockFlowContents = {\n definition: {\n language: 'es',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should be in Spanish and not translating\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, false);\n\n // Now switch to English for localization\n state.setLanguageCode('en');\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(\n zustand.getState().isTranslating,\n true,\n 'Should be translating when language differs from flow default'\n );\n });\n\n it('should preserve flow default language when no previous language is set', () => {\n const state = zustand.getState();\n\n // Load a flow with French as default, no previous language set\n const mockFlowContents = {\n definition: {\n language: 'fr',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should use the flow's default language\n assert.equal(\n zustand.getState().languageCode,\n 'fr',\n 'Should use flow default language'\n );\n assert.equal(\n zustand.getState().isTranslating,\n false,\n 'Should not be translating'\n );\n });\n\n it('should handle language switching after flow is loaded', () => {\n const state = zustand.getState();\n\n // Load a flow with English as default\n const mockFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should start in English, not translating\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(zustand.getState().isTranslating, false);\n\n // Switch to Spanish for localization\n state.setLanguageCode('es');\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, true);\n\n // Switch back to English\n state.setLanguageCode('en');\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(zustand.getState().isTranslating, false);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"temba-appstate-language.test.js","sourceRoot":"","sources":["../../test/temba-appstate-language.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@open-wc/testing';\nimport { zustand } from '../src/store/AppState';\n\ndescribe('AppState Language Reset', () => {\n beforeEach(() => {\n // Reset the store state before each test\n const state = zustand.getState();\n zustand.setState({\n ...state,\n languageCode: '',\n isTranslating: false,\n flowDefinition: null,\n flowInfo: null\n });\n });\n\n it('should reset language when loading a new flow', () => {\n const state = zustand.getState();\n\n // First, load an initial flow to establish state\n const initialFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Initial Flow',\n nodes: [],\n uuid: 'initial-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(initialFlowContents);\n\n // Simulate having a previous flow with localization\n state.setLanguageCode('es'); // User selected Spanish for localization\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, true); // Now translating from English to Spanish\n\n // Simulate loading a new flow with English as default\n const mockFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // The language should reset to the flow's default language\n assert.equal(\n zustand.getState().languageCode,\n 'en',\n 'Language should reset to flow default'\n );\n assert.equal(\n zustand.getState().isTranslating,\n false,\n 'Should not be in translation mode'\n );\n });\n\n it('should set isTranslating correctly when languages differ', () => {\n const state = zustand.getState();\n\n // Load a flow with Spanish as default\n const mockFlowContents = {\n definition: {\n language: 'es',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should be in Spanish and not translating\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, false);\n\n // Now switch to English for localization\n state.setLanguageCode('en');\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(\n zustand.getState().isTranslating,\n true,\n 'Should be translating when language differs from flow default'\n );\n });\n\n it('should preserve flow default language when no previous language is set', () => {\n const state = zustand.getState();\n\n // Load a flow with French as default, no previous language set\n const mockFlowContents = {\n definition: {\n language: 'fr',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should use the flow's default language\n assert.equal(\n zustand.getState().languageCode,\n 'fr',\n 'Should use flow default language'\n );\n assert.equal(\n zustand.getState().isTranslating,\n false,\n 'Should not be translating'\n );\n });\n\n it('should handle language switching after flow is loaded', () => {\n const state = zustand.getState();\n\n // Load a flow with English as default\n const mockFlowContents = {\n definition: {\n language: 'en',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n languages: []\n }\n },\n info: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n }\n };\n\n state.setFlowContents(mockFlowContents);\n\n // Should start in English, not translating\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(zustand.getState().isTranslating, false);\n\n // Switch to Spanish for localization\n state.setLanguageCode('es');\n assert.equal(zustand.getState().languageCode, 'es');\n assert.equal(zustand.getState().isTranslating, true);\n\n // Switch back to English\n state.setLanguageCode('en');\n assert.equal(zustand.getState().languageCode, 'en');\n assert.equal(zustand.getState().isTranslating, false);\n });\n});\n\ndescribe('AppState Sticky Note Creation', () => {\n beforeEach(() => {\n // Reset the store state before each test\n const state = zustand.getState();\n zustand.setState({\n ...state,\n languageCode: '',\n isTranslating: false,\n flowDefinition: {\n language: 'en',\n localization: {},\n name: 'Test Flow',\n nodes: [],\n uuid: 'test-uuid',\n type: 'messaging' as const,\n revision: 1,\n spec_version: '14.3',\n _ui: {\n nodes: {},\n stickies: {},\n languages: []\n }\n },\n flowInfo: {\n results: [],\n dependencies: [],\n counts: { nodes: 0, languages: 1 },\n locals: []\n },\n dirtyDate: null\n });\n });\n\n it('should create a new sticky note with correct defaults', () => {\n const state = zustand.getState();\n\n const position = { left: 100, top: 200 };\n const stickyUuid = state.createStickyNote(position);\n\n // Verify UUID was returned\n assert.isString(stickyUuid);\n assert.isTrue(stickyUuid.length > 0);\n\n // Verify sticky was added to the flow definition\n const currentState = zustand.getState();\n const stickies = currentState.flowDefinition._ui.stickies;\n\n assert.property(stickies, stickyUuid);\n\n const createdSticky = stickies[stickyUuid];\n assert.deepEqual(createdSticky.position, position);\n assert.equal(createdSticky.title, '');\n assert.equal(createdSticky.body, '');\n assert.equal(createdSticky.color, 'yellow');\n\n // Verify dirty date was set\n assert.isNotNull(currentState.dirtyDate);\n assert.instanceOf(currentState.dirtyDate, Date);\n });\n\n it('should create multiple unique sticky notes', () => {\n const state = zustand.getState();\n\n const position1 = { left: 100, top: 200 };\n const position2 = { left: 300, top: 400 };\n\n const uuid1 = state.createStickyNote(position1);\n const uuid2 = state.createStickyNote(position2);\n\n // UUIDs should be different\n assert.notEqual(uuid1, uuid2);\n\n // Both stickies should exist\n const currentState = zustand.getState();\n const stickies = currentState.flowDefinition._ui.stickies;\n\n assert.property(stickies, uuid1);\n assert.property(stickies, uuid2);\n\n // Positions should be correct\n assert.deepEqual(stickies[uuid1].position, position1);\n assert.deepEqual(stickies[uuid2].position, position2);\n });\n\n it('should initialize stickies object if it does not exist', () => {\n // Set up state without stickies\n const state = zustand.getState();\n zustand.setState({\n ...state,\n flowDefinition: {\n ...state.flowDefinition,\n _ui: {\n ...state.flowDefinition._ui,\n stickies: undefined\n }\n }\n });\n\n const position = { left: 50, top: 75 };\n const stickyUuid = state.createStickyNote(position);\n\n // Verify stickies object was created\n const currentState = zustand.getState();\n assert.isObject(currentState.flowDefinition._ui.stickies);\n assert.property(currentState.flowDefinition._ui.stickies, stickyUuid);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temba-charcount.test.js","sourceRoot":"","sources":["../../test/temba-charcount.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAEnD,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAc,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/D,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,4DAA4D,CAC7D,CAAC;QACF,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,6DAA6D,CAC9D,CAAC;QACF,yCAAyC;QACzC,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,8IAA8I,CAC/I,CAAC;QACF,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,mJAAmJ,CACpJ,CAAC;QACF,MAAM,gBAAgB,CAAC,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,mJAAmJ,CACpJ,CAAC;QAEF,MAAM,IAAI,GAAG,MAAa,CAAC;QAE3B,8CAA8C;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAElB,oDAAoD;QACpD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAEhD,oCAAoC;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from '@open-wc/testing';\nimport { CharCount } from '../src/
|
|
1
|
+
{"version":3,"file":"temba-charcount.test.js","sourceRoot":"","sources":["../../test/temba-charcount.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAEnD,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAc,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/D,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,4DAA4D,CAC7D,CAAC;QACF,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,6DAA6D,CAC9D,CAAC;QACF,yCAAyC;QACzC,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,8IAA8I,CAC/I,CAAC;QACF,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,mJAAmJ,CACpJ,CAAC;QACF,MAAM,gBAAgB,CAAC,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,OAAO,GAAc,MAAM,YAAY,CAC3C,mJAAmJ,CACpJ,CAAC;QAEF,MAAM,IAAI,GAAG,MAAa,CAAC;QAE3B,8CAA8C;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAElB,oDAAoD;QACpD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAEhD,oCAAoC;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from '@open-wc/testing';\nimport { CharCount } from '../src/display/CharCount';\nimport { assertScreenshot, getClip } from './utils.test';\n\nconst parentNode = document.createElement('div');\nparentNode.setAttribute('style', ' width: 250px;');\n\nconst getCharCount = async (html: string) => {\n const counter: CharCount = await fixture(html, { parentNode });\n return counter;\n};\n\ndescribe('temba-charcount', () => {\n it('counts plain text', async () => {\n const counter = await getCharCount(\n \"<temba-charcount text='count this text'></temba-charcount>\"\n );\n await assertScreenshot('counter/text', getClip(counter));\n });\n\n it('counts variables', async () => {\n const counter: CharCount = await getCharCount(\n \"<temba-charcount text='hi @contact.name'></temba-charcount>\"\n );\n // assert(counter).instanceOf(CharCount);\n await assertScreenshot('counter/variable', getClip(counter));\n });\n\n it('counts unicode', async () => {\n const counter: CharCount = await getCharCount(\n \"<temba-charcount text='Messages with 🎱 count extra segments after 70 characters. This message should show two segments.'></temba-charcount>\"\n );\n await assertScreenshot('counter/unicode', getClip(counter));\n });\n\n it('counts unicode with variables', async () => {\n const counter: CharCount = await getCharCount(\n \"<temba-charcount text='@contact.name with 🎱 count extra segments after 70 characters. This message should show two segments.'></temba-charcount>\"\n );\n await assertScreenshot('counter/unicode-variables', getClip(counter));\n });\n\n it('shows hover summary', async () => {\n const counter: CharCount = await getCharCount(\n \"<temba-charcount text='@contact.name with 🎱 count extra segments after 70 characters. This message should show two segments.'></temba-charcount>\"\n );\n\n const page = window as any;\n\n // make room for our summary in the screenshot\n const clip = getClip(counter);\n clip.height = 250;\n\n // move our mouse over the count to show the summary\n await page.moveMouse(clip.right - 15, clip.top + 15);\n await assertScreenshot('counter/summary', clip);\n\n // put our cursor back in the corner\n await page.moveMouse(0, 0);\n });\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { formatDurationFromSeconds } from '../src/
|
|
2
|
+
import { formatDurationFromSeconds } from '../src/live/TembaChart';
|
|
3
3
|
import { getComponent } from './utils.test';
|
|
4
4
|
const sampleData = {
|
|
5
5
|
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|