@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.
Files changed (524) hide show
  1. package/.github/workflows/build.yml +6 -5
  2. package/.github/workflows/coverage.yml +80 -0
  3. package/CHANGELOG.md +22 -0
  4. package/README.md +6 -0
  5. package/check-coverage.js +133 -0
  6. package/demo/data/flows/sample-flow.json +107 -100
  7. package/dist/temba-components.js +893 -476
  8. package/dist/temba-components.js.map +1 -1
  9. package/generate-coverage-badge.sh +69 -0
  10. package/out-tsc/src/{vectoricon/index.js → Icons.js} +1 -1
  11. package/out-tsc/src/Icons.js.map +1 -0
  12. package/out-tsc/src/display/Alert.js.map +1 -0
  13. package/out-tsc/src/display/Anchor.js.map +1 -0
  14. package/out-tsc/src/display/Button.js.map +1 -0
  15. package/out-tsc/src/{charcount → display}/CharCount.js +159 -2
  16. package/out-tsc/src/display/CharCount.js.map +1 -0
  17. package/out-tsc/src/display/Chat.js.map +1 -0
  18. package/out-tsc/src/display/ContactName.js.map +1 -0
  19. package/out-tsc/src/display/ContactUrn.js.map +1 -0
  20. package/out-tsc/src/display/Dropdown.js.map +1 -0
  21. package/out-tsc/src/{vectoricon/VectorIcon.js → display/Icon.js} +2 -2
  22. package/out-tsc/src/display/Icon.js.map +1 -0
  23. package/out-tsc/src/display/Label.js.map +1 -0
  24. package/out-tsc/src/{leafletmap → display}/LeafletMap.js +16 -1
  25. package/out-tsc/src/display/LeafletMap.js.map +1 -0
  26. package/out-tsc/src/display/Lightbox.js.map +1 -0
  27. package/out-tsc/src/{loading → display}/Loading.js.map +1 -1
  28. package/out-tsc/src/{options → display}/Options.js.map +1 -1
  29. package/out-tsc/src/display/ProgressBar.js.map +1 -0
  30. package/out-tsc/src/display/TembaDate.js.map +1 -0
  31. package/out-tsc/src/display/TembaUser.js.map +1 -0
  32. package/out-tsc/src/display/Thumbnail.js.map +1 -0
  33. package/out-tsc/src/{tip → display}/Tip.js +1 -2
  34. package/out-tsc/src/display/Tip.js.map +1 -0
  35. package/out-tsc/src/display/Toast.js.map +1 -0
  36. package/out-tsc/src/display/sms/gsmsplitter.js.map +1 -0
  37. package/out-tsc/src/display/sms/gsmvalidator.js.map +1 -0
  38. package/out-tsc/src/display/sms/index.js.map +1 -0
  39. package/out-tsc/src/display/sms/unicodesplitter.js.map +1 -0
  40. package/out-tsc/src/events.js +2 -0
  41. package/out-tsc/src/events.js.map +1 -0
  42. package/out-tsc/src/excellent/ExcellentParser.js.map +1 -0
  43. package/out-tsc/src/excellent/helpers.js.map +1 -0
  44. package/out-tsc/src/flow/Editor.js +533 -140
  45. package/out-tsc/src/flow/Editor.js.map +1 -1
  46. package/out-tsc/src/flow/EditorNode.js +287 -20
  47. package/out-tsc/src/flow/EditorNode.js.map +1 -1
  48. package/out-tsc/src/flow/Plumber.js +154 -74
  49. package/out-tsc/src/flow/Plumber.js.map +1 -1
  50. package/out-tsc/src/flow/StickyNote.js +153 -9
  51. package/out-tsc/src/flow/StickyNote.js.map +1 -1
  52. package/out-tsc/src/flow/config.js +88 -18
  53. package/out-tsc/src/flow/config.js.map +1 -1
  54. package/out-tsc/src/flow/render.js +327 -10
  55. package/out-tsc/src/flow/render.js.map +1 -1
  56. package/out-tsc/src/{checkbox → form}/Checkbox.js +2 -2
  57. package/out-tsc/src/form/Checkbox.js.map +1 -0
  58. package/out-tsc/src/{colorpicker → form}/ColorPicker.js +1 -1
  59. package/out-tsc/src/form/ColorPicker.js.map +1 -0
  60. package/out-tsc/src/{completion → form}/Completion.js +2 -2
  61. package/out-tsc/src/form/Completion.js.map +1 -0
  62. package/out-tsc/src/{compose → form}/Compose.js +1 -1
  63. package/out-tsc/src/form/Compose.js.map +1 -0
  64. package/out-tsc/src/{contactsearch → form}/ContactSearch.js +2 -2
  65. package/out-tsc/src/form/ContactSearch.js.map +1 -0
  66. package/out-tsc/src/form/CroppieCSS.js.map +1 -0
  67. package/out-tsc/src/{datepicker → form}/DatePicker.js +1 -1
  68. package/out-tsc/src/form/DatePicker.js.map +1 -0
  69. package/out-tsc/src/{FormElement.js → form/FormElement.js} +1 -1
  70. package/out-tsc/src/form/FormElement.js.map +1 -0
  71. package/out-tsc/src/form/FormField.js.map +1 -0
  72. package/out-tsc/src/{imagepicker → form}/ImagePicker.js +2 -2
  73. package/out-tsc/src/form/ImagePicker.js.map +1 -0
  74. package/out-tsc/src/{mediapicker → form}/MediaPicker.js +1 -1
  75. package/out-tsc/src/form/MediaPicker.js.map +1 -0
  76. package/out-tsc/src/form/RangePicker.js.map +1 -0
  77. package/out-tsc/src/{slider → form}/TembaSlider.js +1 -1
  78. package/out-tsc/src/form/TembaSlider.js.map +1 -0
  79. package/out-tsc/src/{templates → form}/TemplateEditor.js +1 -1
  80. package/out-tsc/src/form/TemplateEditor.js.map +1 -0
  81. package/out-tsc/src/{textinput → form}/TextInput.js +3 -3
  82. package/out-tsc/src/form/TextInput.js.map +1 -0
  83. package/out-tsc/src/{omnibox → form/select}/Omnibox.js +2 -2
  84. package/out-tsc/src/form/select/Omnibox.js.map +1 -0
  85. package/out-tsc/src/{select → form/select}/PopupSelect.js +1 -1
  86. package/out-tsc/src/form/select/PopupSelect.js.map +1 -0
  87. package/out-tsc/src/{select → form/select}/Select.js +86 -87
  88. package/out-tsc/src/form/select/Select.js.map +1 -0
  89. package/out-tsc/src/{select → form/select}/UserSelect.js +1 -1
  90. package/out-tsc/src/form/select/UserSelect.js.map +1 -0
  91. package/out-tsc/src/{select → form/select}/WorkspaceSelect.js +1 -1
  92. package/out-tsc/src/form/select/WorkspaceSelect.js.map +1 -0
  93. package/out-tsc/src/interfaces.js +1 -0
  94. package/out-tsc/src/interfaces.js.map +1 -1
  95. package/out-tsc/src/layout/Dialog.js.map +1 -0
  96. package/out-tsc/src/layout/Mask.js.map +1 -0
  97. package/out-tsc/src/{dialog → layout}/Modax.js.map +1 -1
  98. package/out-tsc/src/layout/Resizer.js.map +1 -0
  99. package/out-tsc/src/layout/Tab.js.map +1 -0
  100. package/out-tsc/src/layout/TabPane.js.map +1 -0
  101. package/out-tsc/src/list/NotificationList.js +1 -1
  102. package/out-tsc/src/list/NotificationList.js.map +1 -1
  103. package/out-tsc/src/list/RunList.js +1 -1
  104. package/out-tsc/src/list/RunList.js.map +1 -1
  105. package/out-tsc/src/list/ShortcutList.js.map +1 -1
  106. package/out-tsc/src/list/TembaMenu.js +1 -1
  107. package/out-tsc/src/list/TembaMenu.js.map +1 -1
  108. package/out-tsc/src/list/TicketList.js +1 -1
  109. package/out-tsc/src/list/TicketList.js.map +1 -1
  110. package/out-tsc/src/{aliaseditor → live}/AliasEditor.js +1 -1
  111. package/out-tsc/src/live/AliasEditor.js.map +1 -0
  112. package/out-tsc/src/{contacts → live}/ContactBadges.js +1 -1
  113. package/out-tsc/src/live/ContactBadges.js.map +1 -0
  114. package/out-tsc/src/{contacts → live}/ContactChat.js +79 -3
  115. package/out-tsc/src/live/ContactChat.js.map +1 -0
  116. package/out-tsc/src/{contacts → live}/ContactDetails.js +1 -1
  117. package/out-tsc/src/live/ContactDetails.js.map +1 -0
  118. package/out-tsc/src/{contacts → live}/ContactFieldEditor.js +2 -2
  119. package/out-tsc/src/live/ContactFieldEditor.js.map +1 -0
  120. package/out-tsc/src/live/ContactFields.js.map +1 -0
  121. package/out-tsc/src/live/ContactNameFetch.js.map +1 -0
  122. package/out-tsc/src/{contacts → live}/ContactNotepad.js +1 -1
  123. package/out-tsc/src/{contacts → live}/ContactNotepad.js.map +1 -1
  124. package/out-tsc/src/{contacts → live}/ContactPending.js +1 -1
  125. package/out-tsc/src/live/ContactPending.js.map +1 -0
  126. package/out-tsc/src/live/ContactStoreElement.js.map +1 -0
  127. package/out-tsc/src/live/FieldManager.js.map +1 -0
  128. package/out-tsc/src/live/StartProgress.js.map +1 -0
  129. package/out-tsc/src/live/TembaChart.js.map +1 -0
  130. package/out-tsc/src/store/AppState.js +54 -24
  131. package/out-tsc/src/store/AppState.js.map +1 -1
  132. package/out-tsc/src/store/Store.js +1 -1
  133. package/out-tsc/src/store/Store.js.map +1 -1
  134. package/out-tsc/src/{utils/index.js → utils.js} +22 -1
  135. package/out-tsc/src/utils.js.map +1 -0
  136. package/out-tsc/src/webchat/WebChat.js +1 -1
  137. package/out-tsc/src/webchat/WebChat.js.map +1 -1
  138. package/out-tsc/temba-components.js +2 -2
  139. package/out-tsc/temba-components.js.map +1 -1
  140. package/out-tsc/temba-modules.js +54 -54
  141. package/out-tsc/temba-modules.js.map +1 -1
  142. package/out-tsc/temba-webchat.js +2 -2
  143. package/out-tsc/temba-webchat.js.map +1 -1
  144. package/out-tsc/test/temba-alert.test.js +1 -1
  145. package/out-tsc/test/temba-alert.test.js.map +1 -1
  146. package/out-tsc/test/temba-appstate-language.test.js +90 -0
  147. package/out-tsc/test/temba-appstate-language.test.js.map +1 -1
  148. package/out-tsc/test/temba-charcount.test.js.map +1 -1
  149. package/out-tsc/test/temba-chart.test.js +1 -1
  150. package/out-tsc/test/temba-chart.test.js.map +1 -1
  151. package/out-tsc/test/temba-checkbox.test.js.map +1 -1
  152. package/out-tsc/test/temba-color-picker.test.js +1 -1
  153. package/out-tsc/test/temba-color-picker.test.js.map +1 -1
  154. package/out-tsc/test/temba-completion.test.js +1 -1
  155. package/out-tsc/test/temba-completion.test.js.map +1 -1
  156. package/out-tsc/test/temba-compose.test.js +1 -1
  157. package/out-tsc/test/temba-compose.test.js.map +1 -1
  158. package/out-tsc/test/temba-contact-badges.test.js +1 -1
  159. package/out-tsc/test/temba-contact-badges.test.js.map +1 -1
  160. package/out-tsc/test/temba-contact-chat.test.js +3 -1
  161. package/out-tsc/test/temba-contact-chat.test.js.map +1 -1
  162. package/out-tsc/test/temba-contact-details.test.js +1 -1
  163. package/out-tsc/test/temba-contact-details.test.js.map +1 -1
  164. package/out-tsc/test/temba-contact-fields.test.js +1 -1
  165. package/out-tsc/test/temba-contact-fields.test.js.map +1 -1
  166. package/out-tsc/test/temba-contact-search.test.js +1 -1
  167. package/out-tsc/test/temba-contact-search.test.js.map +1 -1
  168. package/out-tsc/test/temba-date.test.js +5 -1
  169. package/out-tsc/test/temba-date.test.js.map +1 -1
  170. package/out-tsc/test/temba-datepicker.test.js +1 -1
  171. package/out-tsc/test/temba-datepicker.test.js.map +1 -1
  172. package/out-tsc/test/temba-dialog.test.js +1 -1
  173. package/out-tsc/test/temba-dialog.test.js.map +1 -1
  174. package/out-tsc/test/temba-dropdown.test.js +1 -1
  175. package/out-tsc/test/temba-dropdown.test.js.map +1 -1
  176. package/out-tsc/test/temba-excellent-helpers.test.js +316 -0
  177. package/out-tsc/test/temba-excellent-helpers.test.js.map +1 -0
  178. package/out-tsc/test/temba-field-manager.test.js.map +1 -1
  179. package/out-tsc/test/temba-flow-editor-node.test.js +414 -1
  180. package/out-tsc/test/temba-flow-editor-node.test.js.map +1 -1
  181. package/out-tsc/test/temba-flow-editor.test.js +185 -0
  182. package/out-tsc/test/temba-flow-editor.test.js.map +1 -1
  183. package/out-tsc/test/temba-flow-plumber-connections.test.js +113 -0
  184. package/out-tsc/test/temba-flow-plumber-connections.test.js.map +1 -0
  185. package/out-tsc/test/temba-flow-plumber.test.js +73 -93
  186. package/out-tsc/test/temba-flow-plumber.test.js.map +1 -1
  187. package/out-tsc/test/temba-flow-render.test.js +624 -1
  188. package/out-tsc/test/temba-flow-render.test.js.map +1 -1
  189. package/out-tsc/test/temba-flow-self-routing.test.js +172 -0
  190. package/out-tsc/test/temba-flow-self-routing.test.js.map +1 -0
  191. package/out-tsc/test/temba-formfield.test.js.map +1 -1
  192. package/out-tsc/test/temba-icon.test.js +1 -1
  193. package/out-tsc/test/temba-icon.test.js.map +1 -1
  194. package/out-tsc/test/temba-integration-markdown.test.js.map +1 -1
  195. package/out-tsc/test/temba-label.test.js +1 -1
  196. package/out-tsc/test/temba-label.test.js.map +1 -1
  197. package/out-tsc/test/temba-lightbox.test.js +1 -1
  198. package/out-tsc/test/temba-lightbox.test.js.map +1 -1
  199. package/out-tsc/test/temba-markdown.test.js +127 -0
  200. package/out-tsc/test/temba-markdown.test.js.map +1 -0
  201. package/out-tsc/test/temba-menu.test.js +1 -1
  202. package/out-tsc/test/temba-menu.test.js.map +1 -1
  203. package/out-tsc/test/temba-modax.test.js +1 -1
  204. package/out-tsc/test/temba-modax.test.js.map +1 -1
  205. package/out-tsc/test/temba-modules.test.js +47 -0
  206. package/out-tsc/test/temba-modules.test.js.map +1 -0
  207. package/out-tsc/test/temba-omnibox.test.js +1 -1
  208. package/out-tsc/test/temba-omnibox.test.js.map +1 -1
  209. package/out-tsc/test/temba-options.test.js.map +1 -1
  210. package/out-tsc/test/temba-range-picker.test.js +9 -2
  211. package/out-tsc/test/temba-range-picker.test.js.map +1 -1
  212. package/out-tsc/test/temba-rapid-element.test.js +273 -0
  213. package/out-tsc/test/temba-rapid-element.test.js.map +1 -0
  214. package/out-tsc/test/temba-resize-element.test.js +85 -0
  215. package/out-tsc/test/temba-resize-element.test.js.map +1 -0
  216. package/out-tsc/test/temba-select.test.js +2 -2
  217. package/out-tsc/test/temba-select.test.js.map +1 -1
  218. package/out-tsc/test/temba-slider.test.js.map +1 -1
  219. package/out-tsc/test/temba-sticky-note.test.js +194 -0
  220. package/out-tsc/test/temba-sticky-note.test.js.map +1 -0
  221. package/out-tsc/test/temba-template-editor.test.js.map +1 -1
  222. package/out-tsc/test/temba-textinput.test.js +1 -1
  223. package/out-tsc/test/temba-textinput.test.js.map +1 -1
  224. package/out-tsc/test/temba-tip.test.js +1 -1
  225. package/out-tsc/test/temba-tip.test.js.map +1 -1
  226. package/out-tsc/test/temba-toast.test.js +1 -1
  227. package/out-tsc/test/temba-toast.test.js.map +1 -1
  228. package/out-tsc/test/temba-utils-index.test.js +1 -1
  229. package/out-tsc/test/temba-utils-index.test.js.map +1 -1
  230. package/out-tsc/test/temba-utils-uuid.test.js +38 -0
  231. package/out-tsc/test/temba-utils-uuid.test.js.map +1 -0
  232. package/out-tsc/test/temba-webchat.test.js +28 -12
  233. package/out-tsc/test/temba-webchat.test.js.map +1 -1
  234. package/out-tsc/test/utils.test.js +2 -6
  235. package/out-tsc/test/utils.test.js.map +1 -1
  236. package/package.json +18 -9
  237. package/rollup.components.mjs +1 -1
  238. package/screenshots/truth/datepicker/range-picker-all.png +0 -0
  239. package/screenshots/truth/datepicker/range-picker-button-states.png +0 -0
  240. package/screenshots/truth/datepicker/range-picker-default.png +0 -0
  241. package/screenshots/truth/datepicker/range-picker-editing-start.png +0 -0
  242. package/screenshots/truth/datepicker/range-picker-initial-values.png +0 -0
  243. package/screenshots/truth/datepicker/range-picker-week.png +0 -0
  244. package/screenshots/truth/datepicker/range-picker-year.png +0 -0
  245. package/screenshots/truth/sticky-note/blue-color.png +0 -0
  246. package/screenshots/truth/sticky-note/blue.png +0 -0
  247. package/screenshots/truth/sticky-note/color-picker-expanded.png +0 -0
  248. package/screenshots/truth/sticky-note/default.png +0 -0
  249. package/screenshots/truth/sticky-note/gray-color.png +0 -0
  250. package/screenshots/truth/sticky-note/gray.png +0 -0
  251. package/screenshots/truth/sticky-note/green-color.png +0 -0
  252. package/screenshots/truth/sticky-note/green.png +0 -0
  253. package/screenshots/truth/sticky-note/pink-color.png +0 -0
  254. package/screenshots/truth/sticky-note/pink.png +0 -0
  255. package/screenshots/truth/sticky-note/yellow-color.png +0 -0
  256. package/screenshots/truth/sticky-note/yellow.png +0 -0
  257. package/src/{charcount → display}/CharCount.ts +164 -2
  258. package/src/{vectoricon/VectorIcon.ts → display/Icon.ts} +1 -1
  259. package/src/{leafletmap → display}/LeafletMap.ts +19 -1
  260. package/src/{thumbnail → display}/Thumbnail.ts +1 -1
  261. package/src/{tip → display}/Tip.ts +1 -2
  262. package/src/{contacts/events.ts → events.ts} +1 -64
  263. package/src/flow/Editor.ts +655 -165
  264. package/src/flow/EditorNode.ts +337 -22
  265. package/src/flow/Plumber.ts +186 -79
  266. package/src/flow/StickyNote.ts +165 -9
  267. package/src/flow/config.ts +114 -18
  268. package/src/flow/render.ts +398 -11
  269. package/src/{checkbox → form}/Checkbox.ts +2 -2
  270. package/src/{colorpicker → form}/ColorPicker.ts +2 -2
  271. package/src/{completion → form}/Completion.ts +3 -3
  272. package/src/{compose → form}/Compose.ts +7 -7
  273. package/src/{contactsearch → form}/ContactSearch.ts +6 -6
  274. package/src/{datepicker → form}/DatePicker.ts +1 -1
  275. package/src/{FormElement.ts → form/FormElement.ts} +1 -1
  276. package/src/{imagepicker → form}/ImagePicker.ts +2 -2
  277. package/src/{mediapicker → form}/MediaPicker.ts +1 -1
  278. package/src/{slider → form}/TembaSlider.ts +1 -1
  279. package/src/{templates → form}/TemplateEditor.ts +2 -2
  280. package/src/{textinput → form}/TextInput.ts +5 -5
  281. package/src/{omnibox → form/select}/Omnibox.ts +2 -2
  282. package/src/{select → form/select}/PopupSelect.ts +1 -1
  283. package/src/{select → form/select}/Select.ts +124 -126
  284. package/src/{select → form/select}/UserSelect.ts +1 -1
  285. package/src/{select → form/select}/WorkspaceSelect.ts +1 -1
  286. package/src/interfaces.ts +2 -1
  287. package/src/{dialog → layout}/Dialog.ts +1 -1
  288. package/src/list/NotificationList.ts +2 -2
  289. package/src/list/RunList.ts +3 -3
  290. package/src/list/ShortcutList.ts +1 -1
  291. package/src/list/TembaMenu.ts +2 -2
  292. package/src/list/TicketList.ts +1 -1
  293. package/src/{aliaseditor → live}/AliasEditor.ts +3 -3
  294. package/src/{contacts → live}/ContactBadges.ts +1 -1
  295. package/src/{contacts → live}/ContactChat.ts +118 -8
  296. package/src/{contacts → live}/ContactDetails.ts +1 -1
  297. package/src/{contacts → live}/ContactFieldEditor.ts +4 -4
  298. package/src/{contacts → live}/ContactFields.ts +1 -1
  299. package/src/{contacts → live}/ContactNotepad.ts +1 -1
  300. package/src/{contacts → live}/ContactPending.ts +1 -1
  301. package/src/{chart → live}/TembaChart.ts +1 -1
  302. package/src/store/AppState.ts +75 -29
  303. package/src/store/Store.ts +1 -1
  304. package/src/store/flow-definition.d.ts +125 -0
  305. package/src/{utils/index.ts → utils.ts} +26 -10
  306. package/src/webchat/WebChat.ts +1 -1
  307. package/static/css/temba-components.css +1 -0
  308. package/svg.js +1 -4
  309. package/temba-components.ts +2 -2
  310. package/temba-modules.ts +54 -54
  311. package/temba-webchat.ts +2 -2
  312. package/test/temba-alert.test.ts +1 -1
  313. package/test/temba-appstate-language.test.ts +108 -0
  314. package/test/temba-charcount.test.ts +1 -1
  315. package/test/temba-chart.test.ts +1 -1
  316. package/test/temba-checkbox.test.ts +1 -1
  317. package/test/temba-color-picker.test.ts +1 -1
  318. package/test/temba-completion.test.ts +1 -1
  319. package/test/temba-compose.test.ts +1 -1
  320. package/test/temba-contact-badges.test.ts +1 -1
  321. package/test/temba-contact-chat.test.ts +6 -4
  322. package/test/temba-contact-details.test.ts +1 -1
  323. package/test/temba-contact-fields.test.ts +1 -1
  324. package/test/temba-contact-search.test.ts +2 -2
  325. package/test/temba-date.test.ts +8 -3
  326. package/test/temba-datepicker.test.ts +1 -1
  327. package/test/temba-dialog.test.ts +1 -1
  328. package/test/temba-dropdown.test.ts +1 -1
  329. package/test/temba-excellent-helpers.test.ts +417 -0
  330. package/test/temba-field-manager.test.ts +2 -2
  331. package/test/temba-flow-editor-node.test.ts +536 -1
  332. package/test/temba-flow-editor.test.ts +224 -0
  333. package/test/temba-flow-editor.test.ts.backup +563 -0
  334. package/test/temba-flow-plumber-connections.test.ts +142 -0
  335. package/test/temba-flow-plumber.test.ts +83 -120
  336. package/test/temba-flow-render.test.ts +787 -4
  337. package/test/temba-flow-self-routing.test.ts +215 -0
  338. package/test/temba-formfield.test.ts +1 -1
  339. package/test/temba-icon.test.ts +1 -1
  340. package/test/temba-integration-markdown.test.ts +1 -1
  341. package/test/temba-label.test.ts +1 -1
  342. package/test/temba-lightbox.test.ts +1 -1
  343. package/test/temba-markdown.test.ts +162 -0
  344. package/test/temba-menu.test.ts +1 -1
  345. package/test/temba-modax.test.ts +2 -2
  346. package/test/temba-modules.test.ts +56 -0
  347. package/test/temba-omnibox.test.ts +1 -1
  348. package/test/temba-options.test.ts +1 -1
  349. package/test/temba-range-picker.test.ts +17 -2
  350. package/test/temba-rapid-element.test.ts +341 -0
  351. package/test/temba-resize-element.test.ts +104 -0
  352. package/test/temba-select.test.ts +2 -2
  353. package/test/temba-slider.test.ts +1 -1
  354. package/test/temba-sticky-note.test.ts +281 -0
  355. package/test/temba-template-editor.test.ts +1 -1
  356. package/test/temba-textinput.test.ts +1 -1
  357. package/test/temba-tip.test.ts +1 -1
  358. package/test/temba-toast.test.ts +1 -1
  359. package/test/temba-utils-index.test.ts +1 -1
  360. package/test/temba-utils-index.test.ts.backup +1737 -0
  361. package/test/temba-utils-uuid.test.ts +48 -0
  362. package/test/temba-webchat.test.ts +30 -12
  363. package/test/utils.test.ts +5 -9
  364. package/web-dev-server.config.mjs +1 -1
  365. package/out-tsc/src/FormElement.js.map +0 -1
  366. package/out-tsc/src/alert/Alert.js.map +0 -1
  367. package/out-tsc/src/aliaseditor/AliasEditor.js.map +0 -1
  368. package/out-tsc/src/anchor/Anchor.js.map +0 -1
  369. package/out-tsc/src/button/Button.js.map +0 -1
  370. package/out-tsc/src/charcount/CharCount.js.map +0 -1
  371. package/out-tsc/src/charcount/helpers.js +0 -159
  372. package/out-tsc/src/charcount/helpers.js.map +0 -1
  373. package/out-tsc/src/chart/TembaChart.js.map +0 -1
  374. package/out-tsc/src/chat/Chat.js.map +0 -1
  375. package/out-tsc/src/checkbox/Checkbox.js.map +0 -1
  376. package/out-tsc/src/colorpicker/ColorPicker.js.map +0 -1
  377. package/out-tsc/src/completion/Completion.js.map +0 -1
  378. package/out-tsc/src/completion/ExcellentParser.js.map +0 -1
  379. package/out-tsc/src/completion/helpers.js.map +0 -1
  380. package/out-tsc/src/compose/Compose.js.map +0 -1
  381. package/out-tsc/src/contacts/ContactBadges.js.map +0 -1
  382. package/out-tsc/src/contacts/ContactChat.js.map +0 -1
  383. package/out-tsc/src/contacts/ContactDetails.js.map +0 -1
  384. package/out-tsc/src/contacts/ContactFieldEditor.js.map +0 -1
  385. package/out-tsc/src/contacts/ContactFields.js.map +0 -1
  386. package/out-tsc/src/contacts/ContactName.js.map +0 -1
  387. package/out-tsc/src/contacts/ContactNameFetch.js.map +0 -1
  388. package/out-tsc/src/contacts/ContactPending.js.map +0 -1
  389. package/out-tsc/src/contacts/ContactStoreElement.js.map +0 -1
  390. package/out-tsc/src/contacts/ContactUrn.js.map +0 -1
  391. package/out-tsc/src/contacts/events.js +0 -65
  392. package/out-tsc/src/contacts/events.js.map +0 -1
  393. package/out-tsc/src/contacts/helpers.js +0 -77
  394. package/out-tsc/src/contacts/helpers.js.map +0 -1
  395. package/out-tsc/src/contactsearch/ContactSearch.js.map +0 -1
  396. package/out-tsc/src/date/TembaDate.js.map +0 -1
  397. package/out-tsc/src/datepicker/DatePicker.js.map +0 -1
  398. package/out-tsc/src/datepicker/RangePicker.js.map +0 -1
  399. package/out-tsc/src/dialog/Dialog.js.map +0 -1
  400. package/out-tsc/src/dropdown/Dropdown.js.map +0 -1
  401. package/out-tsc/src/fields/FieldManager.js.map +0 -1
  402. package/out-tsc/src/formfield/FormField.js.map +0 -1
  403. package/out-tsc/src/imagepicker/CroppieCSS.js.map +0 -1
  404. package/out-tsc/src/imagepicker/ImagePicker.js.map +0 -1
  405. package/out-tsc/src/label/Label.js.map +0 -1
  406. package/out-tsc/src/leafletmap/LeafletMap.js.map +0 -1
  407. package/out-tsc/src/leafletmap/helpers.js +0 -17
  408. package/out-tsc/src/leafletmap/helpers.js.map +0 -1
  409. package/out-tsc/src/lightbox/Lightbox.js.map +0 -1
  410. package/out-tsc/src/mask/Mask.js.map +0 -1
  411. package/out-tsc/src/mediapicker/MediaPicker.js.map +0 -1
  412. package/out-tsc/src/omnibox/Omnibox.js.map +0 -1
  413. package/out-tsc/src/options/helpers.js +0 -28
  414. package/out-tsc/src/options/helpers.js.map +0 -1
  415. package/out-tsc/src/progress/ProgressBar.js.map +0 -1
  416. package/out-tsc/src/progress/StartProgress.js.map +0 -1
  417. package/out-tsc/src/resizer/Resizer.js.map +0 -1
  418. package/out-tsc/src/select/PopupSelect.js.map +0 -1
  419. package/out-tsc/src/select/Select.js.map +0 -1
  420. package/out-tsc/src/select/UserSelect.js.map +0 -1
  421. package/out-tsc/src/select/WorkspaceSelect.js.map +0 -1
  422. package/out-tsc/src/select/helpers.js +0 -1
  423. package/out-tsc/src/select/helpers.js.map +0 -1
  424. package/out-tsc/src/shadowless/Shadowless.js +0 -33
  425. package/out-tsc/src/shadowless/Shadowless.js.map +0 -1
  426. package/out-tsc/src/slider/TembaSlider.js.map +0 -1
  427. package/out-tsc/src/sms/gsmsplitter.js.map +0 -1
  428. package/out-tsc/src/sms/gsmvalidator.js.map +0 -1
  429. package/out-tsc/src/sms/index.js.map +0 -1
  430. package/out-tsc/src/sms/unicodesplitter.js.map +0 -1
  431. package/out-tsc/src/tabpane/Tab.js.map +0 -1
  432. package/out-tsc/src/tabpane/TabPane.js.map +0 -1
  433. package/out-tsc/src/templates/TemplateEditor.js.map +0 -1
  434. package/out-tsc/src/textinput/TextInput.js.map +0 -1
  435. package/out-tsc/src/textinput/helpers.js +0 -12
  436. package/out-tsc/src/textinput/helpers.js.map +0 -1
  437. package/out-tsc/src/thumbnail/Thumbnail.js.map +0 -1
  438. package/out-tsc/src/tip/Tip.js.map +0 -1
  439. package/out-tsc/src/tip/helpers.js +0 -7
  440. package/out-tsc/src/tip/helpers.js.map +0 -1
  441. package/out-tsc/src/toast/Toast.js.map +0 -1
  442. package/out-tsc/src/user/TembaUser.js.map +0 -1
  443. package/out-tsc/src/utils/index.js.map +0 -1
  444. package/out-tsc/src/vectoricon/VectorIcon.js.map +0 -1
  445. package/out-tsc/src/vectoricon/index.js.map +0 -1
  446. package/src/charcount/helpers.ts +0 -162
  447. package/src/contacts/helpers.ts +0 -103
  448. package/src/leafletmap/helpers.ts +0 -18
  449. package/src/options/helpers.ts +0 -37
  450. package/src/select/helpers.ts +0 -0
  451. package/src/shadowless/Shadowless.ts +0 -32
  452. package/src/textinput/helpers.ts +0 -11
  453. package/src/tip/helpers.ts +0 -7
  454. /package/out-tsc/src/{alert → display}/Alert.js +0 -0
  455. /package/out-tsc/src/{anchor → display}/Anchor.js +0 -0
  456. /package/out-tsc/src/{button → display}/Button.js +0 -0
  457. /package/out-tsc/src/{chat → display}/Chat.js +0 -0
  458. /package/out-tsc/src/{contacts → display}/ContactName.js +0 -0
  459. /package/out-tsc/src/{contacts → display}/ContactUrn.js +0 -0
  460. /package/out-tsc/src/{dropdown → display}/Dropdown.js +0 -0
  461. /package/out-tsc/src/{label → display}/Label.js +0 -0
  462. /package/out-tsc/src/{lightbox → display}/Lightbox.js +0 -0
  463. /package/out-tsc/src/{loading → display}/Loading.js +0 -0
  464. /package/out-tsc/src/{options → display}/Options.js +0 -0
  465. /package/out-tsc/src/{progress → display}/ProgressBar.js +0 -0
  466. /package/out-tsc/src/{date → display}/TembaDate.js +0 -0
  467. /package/out-tsc/src/{user → display}/TembaUser.js +0 -0
  468. /package/out-tsc/src/{thumbnail → display}/Thumbnail.js +0 -0
  469. /package/out-tsc/src/{toast → display}/Toast.js +0 -0
  470. /package/out-tsc/src/{sms → display/sms}/gsmsplitter.js +0 -0
  471. /package/out-tsc/src/{sms → display/sms}/gsmvalidator.js +0 -0
  472. /package/out-tsc/src/{sms → display/sms}/index.js +0 -0
  473. /package/out-tsc/src/{sms → display/sms}/unicodesplitter.js +0 -0
  474. /package/out-tsc/src/{completion → excellent}/ExcellentParser.js +0 -0
  475. /package/out-tsc/src/{completion → excellent}/helpers.js +0 -0
  476. /package/out-tsc/src/{imagepicker → form}/CroppieCSS.js +0 -0
  477. /package/out-tsc/src/{formfield → form}/FormField.js +0 -0
  478. /package/out-tsc/src/{datepicker → form}/RangePicker.js +0 -0
  479. /package/out-tsc/src/{dialog → layout}/Dialog.js +0 -0
  480. /package/out-tsc/src/{mask → layout}/Mask.js +0 -0
  481. /package/out-tsc/src/{dialog → layout}/Modax.js +0 -0
  482. /package/out-tsc/src/{resizer → layout}/Resizer.js +0 -0
  483. /package/out-tsc/src/{tabpane → layout}/Tab.js +0 -0
  484. /package/out-tsc/src/{tabpane → layout}/TabPane.js +0 -0
  485. /package/out-tsc/src/{contacts → live}/ContactFields.js +0 -0
  486. /package/out-tsc/src/{contacts → live}/ContactNameFetch.js +0 -0
  487. /package/out-tsc/src/{contacts → live}/ContactStoreElement.js +0 -0
  488. /package/out-tsc/src/{fields → live}/FieldManager.js +0 -0
  489. /package/out-tsc/src/{progress → live}/StartProgress.js +0 -0
  490. /package/out-tsc/src/{chart → live}/TembaChart.js +0 -0
  491. /package/src/{vectoricon/index.ts → Icons.ts} +0 -0
  492. /package/src/{alert → display}/Alert.ts +0 -0
  493. /package/src/{anchor → display}/Anchor.ts +0 -0
  494. /package/src/{button → display}/Button.ts +0 -0
  495. /package/src/{chat → display}/Chat.ts +0 -0
  496. /package/src/{contacts → display}/ContactName.ts +0 -0
  497. /package/src/{contacts → display}/ContactUrn.ts +0 -0
  498. /package/src/{dropdown → display}/Dropdown.ts +0 -0
  499. /package/src/{label → display}/Label.ts +0 -0
  500. /package/src/{lightbox → display}/Lightbox.ts +0 -0
  501. /package/src/{loading → display}/Loading.ts +0 -0
  502. /package/src/{options → display}/Options.ts +0 -0
  503. /package/src/{progress → display}/ProgressBar.ts +0 -0
  504. /package/src/{date → display}/TembaDate.ts +0 -0
  505. /package/src/{user → display}/TembaUser.ts +0 -0
  506. /package/src/{toast → display}/Toast.ts +0 -0
  507. /package/src/{sms → display/sms}/gsmsplitter.ts +0 -0
  508. /package/src/{sms → display/sms}/gsmvalidator.ts +0 -0
  509. /package/src/{sms → display/sms}/index.ts +0 -0
  510. /package/src/{sms → display/sms}/unicodesplitter.ts +0 -0
  511. /package/src/{completion → excellent}/ExcellentParser.ts +0 -0
  512. /package/src/{completion → excellent}/helpers.ts +0 -0
  513. /package/src/{imagepicker → form}/CroppieCSS.ts +0 -0
  514. /package/src/{formfield → form}/FormField.ts +0 -0
  515. /package/src/{datepicker → form}/RangePicker.ts +0 -0
  516. /package/src/{mask → layout}/Mask.ts +0 -0
  517. /package/src/{dialog → layout}/Modax.ts +0 -0
  518. /package/src/{resizer → layout}/Resizer.ts +0 -0
  519. /package/src/{tabpane → layout}/Tab.ts +0 -0
  520. /package/src/{tabpane → layout}/TabPane.ts +0 -0
  521. /package/src/{contacts → live}/ContactNameFetch.ts +0 -0
  522. /package/src/{contacts → live}/ContactStoreElement.ts +0 -0
  523. /package/src/{fields → live}/FieldManager.ts +0 -0
  524. /package/src/{progress → live}/StartProgress.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nyaruka/temba-components",
3
- "version": "0.129.2",
3
+ "version": "0.129.3",
4
4
  "description": "Web components to support rapidpro and related projects",
5
5
  "author": "Nyaruka <code@nyaruka.coim>",
6
6
  "main": "dist/index.js",
@@ -16,15 +16,17 @@
16
16
  "build-wc": "rollup -c rollup.webchat.mjs",
17
17
  "dev": "yarn build && cp -R ./dist/* ../temba/rapidpro/node_modules/@nyaruka/temba-components/dist/ && cp -R ./dist/* ../floweditor/node_modules/@nyaruka/temba-components/dist/",
18
18
  "postversion": "git push --tags && git push origin main",
19
- "pre-commit": "yarn locale:extract && yarn locale:build && yarn svg && git add ./src/vectoricon ./static/svg/index.svg ./xliff ./src/locales && lint-staged",
19
+ "pre-commit": "yarn locale:extract && yarn locale:build && yarn svg && git add ./src/Icons.ts ./static/svg/index.svg ./xliff ./src/locales && lint-staged",
20
20
  "format:eslint": "eslint --ext .ts . --fix --ignore-path .gitignore",
21
21
  "format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --config .prettierrc --write --ignore-path .gitignore",
22
22
  "format": "yarn format:eslint && yarn format:prettier",
23
23
  "test": "wtr --node-resolve",
24
24
  "test:fast": "wtr --node-resolve --fast",
25
- "validate": "yarn format && yarn build && yarn test --coverage",
25
+ "test:coverage": "wtr --node-resolve --coverage",
26
+ "check-coverage": "node check-coverage.js",
27
+ "validate": "yarn format && yarn build && (yarn test:coverage; yarn check-coverage)",
26
28
  "test:watch": "wtr --node-resolve --watch",
27
- "svg": "rimraf static/svg/work && node svg.js --resolution=150 --output='./static/svg/index.svg' --usage='./src/vectoricon/index.ts'",
29
+ "svg": "rimraf static/svg/work && node svg.js --resolution=150 --output='./static/svg/index.svg' --usage='./src/Icons.ts'",
28
30
  "svg-wc": "rimraf static/svg/work && node svg.js --resolution=150 --output='./static/svg/webchat.svg' --usage='./src/webchat/index.ts'",
29
31
  "version": "yarn run build && auto-changelog -p && git add CHANGELOG.md",
30
32
  "locale:extract": "lit-localize extract --config localize.config.json",
@@ -49,9 +51,11 @@
49
51
  "remarkable": "^2.0.1",
50
52
  "serialize-javascript": "^6.0.2",
51
53
  "tiny-lru": "^11.2.5",
54
+ "uuid": "^11.1.0",
52
55
  "zustand": "^5.0.3"
53
56
  },
54
57
  "devDependencies": {
58
+ "@babel/core": "^7.11.0",
55
59
  "@lit/localize-tools": "^0.7.2",
56
60
  "@open-wc/building-rollup": "3.0.2",
57
61
  "@open-wc/eslint-config": "12.0.3",
@@ -64,6 +68,7 @@
64
68
  "@types/leaflet": "1.4.4",
65
69
  "@types/node": "20.12.4",
66
70
  "@types/remarkable": "^2.0.1",
71
+ "@types/uuid": "^10.0.0",
67
72
  "@typescript-eslint/eslint-plugin": "^7.5.0",
68
73
  "@typescript-eslint/parser": "^7.5.0",
69
74
  "@web/dev-server-esbuild": "^0.3.3",
@@ -73,6 +78,12 @@
73
78
  "concurrently": "^7.6.0",
74
79
  "dynamicpixelmatch": "^0.0.2",
75
80
  "eslint": "^8.29.0",
81
+ "eslint-plugin-html": "^7.1.0",
82
+ "eslint-plugin-import": "^2.26.0",
83
+ "eslint-plugin-lit": "^1.10.1",
84
+ "eslint-plugin-lit-a11y": "^4.1.1",
85
+ "eslint-plugin-no-only-tests": "^3.1.0",
86
+ "eslint-plugin-wc": "^1.2.0",
76
87
  "fprint": "^2.0.1",
77
88
  "htmlclean": "^3.0.8",
78
89
  "husky": "^1.0.0",
@@ -81,13 +92,12 @@
81
92
  "pixelmatch": "^5.2.1",
82
93
  "prettier": "^2.0.4",
83
94
  "rimraf": "^2.6.3",
84
- "rollup": "^4.14.0",
95
+ "rollup": "^3.21.0",
85
96
  "rollup-plugin-copy": "^3.4.0",
86
97
  "rollup-plugin-svg-import": "^3.0.0",
87
- "rollup-plugin-terser": "^7.0.2",
88
98
  "rollup-plugin-url": "^3.0.1",
89
99
  "shelljs": "^0.8.5",
90
- "sinon": "15",
100
+ "sinon": "^21.0.0",
91
101
  "svgstore": "^3.0.1",
92
102
  "tslib": "2.6.2",
93
103
  "typescript": "5.4.4"
@@ -106,8 +116,7 @@
106
116
  "resolutions": {
107
117
  "trim": "^0.0.3",
108
118
  "prismjs": "^1.23.0",
109
- "wrap-ansi": "7.0.0",
110
- "string-width": "4.1.0"
119
+ "rollup-plugin-terser/**/rollup": "^3.0.0"
111
120
  },
112
121
  "packageManager": "yarn@1.22.1"
113
122
  }
@@ -2,7 +2,7 @@ import resolve from '@rollup/plugin-node-resolve';
2
2
  import commonjs from '@rollup/plugin-commonjs';
3
3
  import replace from '@rollup/plugin-replace'
4
4
  import typescript from '@rollup/plugin-typescript';
5
- import { terser } from 'rollup-plugin-terser';
5
+ import terser from '@rollup/plugin-terser';
6
6
  import svg from 'rollup-plugin-svg-import';
7
7
  import copy from 'rollup-plugin-copy';
8
8
 
@@ -1,9 +1,171 @@
1
1
  import { css, html, TemplateResult } from 'lit';
2
2
  import { RapidElement } from '../RapidElement';
3
- import { splitSMS } from '../sms';
4
- import { getExtendedCharacters } from './helpers';
3
+ import { splitSMS } from './sms';
5
4
  import { property } from 'lit/decorators.js';
6
5
 
6
+ export const MAX_GSM_SINGLE = 160;
7
+ export const MAX_GSM_MULTI = 153;
8
+ export const MAX_UNICODE_SINGLE = 70;
9
+ export const MAX_UNICODE_MULTI = 67;
10
+
11
+ export const COMPLETION_HELP = 'Tab to complete, enter to select';
12
+
13
+ export const GSM: { [key: string]: number } = {
14
+ // char: charCode
15
+ 0: 48,
16
+ 1: 49,
17
+ 2: 50,
18
+ 3: 51,
19
+ 4: 52,
20
+ 5: 53,
21
+ 6: 54,
22
+ 7: 55,
23
+ 8: 56,
24
+ 9: 57,
25
+ '\n': 10,
26
+ '\f': 12,
27
+ '\r': 13,
28
+ ' ': 32,
29
+ '!': 33,
30
+ '"': 34,
31
+ '#': 35,
32
+ $: 36,
33
+ '%': 37,
34
+ '&': 38,
35
+ "'": 39,
36
+ '(': 40,
37
+ ')': 41,
38
+ '*': 42,
39
+ '+': 43,
40
+ ',': 44,
41
+ '-': 45,
42
+ '.': 46,
43
+ '/': 47,
44
+ ':': 58,
45
+ ';': 59,
46
+ '<': 60,
47
+ '=': 61,
48
+ '>': 62,
49
+ '?': 63,
50
+ '@': 64,
51
+ A: 65,
52
+ B: 66,
53
+ C: 67,
54
+ D: 68,
55
+ E: 69,
56
+ F: 70,
57
+ G: 71,
58
+ H: 72,
59
+ I: 73,
60
+ J: 74,
61
+ K: 75,
62
+ L: 76,
63
+ M: 77,
64
+ N: 78,
65
+ O: 79,
66
+ P: 80,
67
+ Q: 81,
68
+ R: 82,
69
+ S: 83,
70
+ T: 84,
71
+ U: 85,
72
+ V: 86,
73
+ W: 87,
74
+ X: 88,
75
+ Y: 89,
76
+ Z: 90,
77
+ '[': 91,
78
+ '\\': 92,
79
+ ']': 93,
80
+ '^': 94,
81
+ _: 95,
82
+ a: 97,
83
+ b: 98,
84
+ c: 99,
85
+ d: 100,
86
+ e: 101,
87
+ f: 102,
88
+ g: 103,
89
+ h: 104,
90
+ i: 105,
91
+ j: 106,
92
+ k: 107,
93
+ l: 108,
94
+ m: 109,
95
+ n: 110,
96
+ o: 111,
97
+ p: 112,
98
+ q: 113,
99
+ r: 114,
100
+ s: 115,
101
+ t: 116,
102
+ u: 117,
103
+ v: 118,
104
+ w: 119,
105
+ x: 120,
106
+ y: 121,
107
+ z: 122,
108
+ '{': 123,
109
+ '|': 124,
110
+ '}': 125,
111
+ '~': 126,
112
+ '¡': 161,
113
+ '£': 163,
114
+ '¤': 164,
115
+ '¥': 165,
116
+ '§': 167,
117
+ '¿': 191,
118
+ Ä: 196,
119
+ Å: 197,
120
+ Æ: 198,
121
+ Ç: 199,
122
+ É: 201,
123
+ Ñ: 209,
124
+ Ö: 214,
125
+ Ø: 216,
126
+ Ü: 220,
127
+ ß: 223,
128
+ à: 224,
129
+ ä: 228,
130
+ å: 229,
131
+ æ: 230,
132
+ è: 232,
133
+ é: 233,
134
+ ì: 236,
135
+ ñ: 241,
136
+ ò: 242,
137
+ ö: 246,
138
+ ø: 248,
139
+ ù: 249,
140
+ ü: 252,
141
+ Γ: 915,
142
+ Δ: 916,
143
+ Θ: 920,
144
+ Λ: 923,
145
+ Ξ: 926,
146
+ Π: 928,
147
+ Σ: 931,
148
+ Φ: 934,
149
+ Ψ: 936,
150
+ Ω: 937,
151
+ '€': 8364
152
+ };
153
+
154
+ export const isGSM = (char: string): boolean => {
155
+ // eslint-disable-next-line no-prototype-builtins
156
+ return GSM.hasOwnProperty(char);
157
+ };
158
+
159
+ export const getExtendedCharacters = (text: string): string[] => {
160
+ const extended: { [ch: string]: boolean } = {};
161
+ for (const ch of text) {
162
+ if (!isGSM(ch)) {
163
+ extended[ch] = true;
164
+ }
165
+ }
166
+ return Object.keys(extended);
167
+ };
168
+
7
169
  export class CharCount extends RapidElement {
8
170
  static get styles() {
9
171
  return css`
@@ -1,6 +1,6 @@
1
1
  import { LitElement, TemplateResult, html, css } from 'lit';
2
2
  import { property } from 'lit/decorators.js';
3
- import { Icon, SVG_FINGERPRINT } from '.';
3
+ import { Icon, SVG_FINGERPRINT } from '../Icons';
4
4
  import { getClasses } from '../utils';
5
5
 
6
6
  export class VectorIcon extends LitElement {
@@ -13,7 +13,25 @@ import { property } from 'lit/decorators.js';
13
13
 
14
14
  import { FeatureProperties } from '../interfaces';
15
15
  import { getUrl, WebResponse } from '../utils';
16
- import { highlightedFeature, normalFeature, visibleStyle } from './helpers';
16
+
17
+ const normalFeature = {
18
+ weight: 1,
19
+ opacity: 1,
20
+ color: 'white',
21
+ fillOpacity: 0.7,
22
+ fillColor: '#2387ca'
23
+ };
24
+
25
+ const highlightedFeature = {
26
+ weight: 3,
27
+ color: 'white',
28
+ fillOpacity: 1,
29
+ fillColor: '#2387ca'
30
+ };
31
+
32
+ const visibleStyle = () => {
33
+ return normalFeature;
34
+ };
17
35
 
18
36
  export class LeafletMap extends LitElement {
19
37
  static get styles() {
@@ -2,7 +2,7 @@ import { PropertyValueMap, css, html } from 'lit';
2
2
  import { RapidElement } from '../RapidElement';
3
3
  import { property } from 'lit/decorators.js';
4
4
  import { getClasses } from '../utils';
5
- import { Lightbox } from '../lightbox/Lightbox';
5
+ import { Lightbox } from './Lightbox';
6
6
  import { WebChatIcon } from '../webchat';
7
7
 
8
8
  enum ThumbnailContentType {
@@ -2,8 +2,7 @@ import { css, html, TemplateResult } from 'lit';
2
2
  import { property } from 'lit/decorators.js';
3
3
  import { styleMap } from 'lit-html/directives/style-map.js';
4
4
  import { RapidElement } from '../RapidElement';
5
- import { getClasses } from '../utils';
6
- import { getCenter, getMiddle } from './helpers';
5
+ import { getClasses, getMiddle, getCenter } from '../utils';
7
6
 
8
7
  export class Tip extends RapidElement {
9
8
  static get styles() {
@@ -1,6 +1,4 @@
1
- import { html, TemplateResult } from 'lit';
2
- import { Msg, ObjectReference, User } from '../interfaces';
3
- import { Icon } from '../vectoricon';
1
+ import { Msg, ObjectReference, User } from './interfaces';
4
2
 
5
3
  export interface EventGroup {
6
4
  type: string;
@@ -147,64 +145,3 @@ export interface ContactHistoryPage {
147
145
  start_date: Date;
148
146
  events: ContactEvent[];
149
147
  }
150
-
151
- export const renderAttachment = (attachment: string): TemplateResult => {
152
- const idx = attachment.indexOf(':');
153
- const attType = attachment.substr(0, idx);
154
- const url = attachment.substr(idx + 1);
155
- const [mediaType, ext] = attType.split('/', 2);
156
-
157
- let inner = null;
158
- if (mediaType === 'image') {
159
- inner = html`
160
- <img src="${url}" style="height:auto;width:100%;display:block;" />
161
- `;
162
- } else if (ext === 'pdf') {
163
- return html`<div
164
- style="width:100%;height:300px;border-radius:calc(var(--curvature) * 2.5);box-shadow:0px 0px 12px 0px rgba(0,0,0,.1), 0px 0px 2px 0px rgba(0,0,0,.15);overflow:hidden"
165
- ><embed src="${url}#view=Fit" type="application/pdf" frameBorder="0" scrolling="auto" height="100%" width="100%"></embed></div>`;
166
- } else if (mediaType === 'video') {
167
- return html`<video
168
- style="border-radius:var(--curvature);box-shadow:0px 0px 12px 0px rgba(0,0,0,.1), 0px 0px 2px 0px rgba(0,0,0,.15);max-width:400px"
169
- height="auto"
170
- controls
171
- >
172
- <source src="${url}" type="video/mp4" />
173
- </video> `;
174
- } else if (mediaType === 'audio') {
175
- return html`<audio
176
- style="border-radius: 99px; box-shadow:0px 0px 12px 0px rgba(0,0,0,.1), 0px 0px 2px 0px rgba(0,0,0,.15);"
177
- src="${url}"
178
- type="${attType}"
179
- controls
180
- >
181
- <a target="_" href="${url}">${url}</a>
182
- </audio>`;
183
- } else if (attType === 'geo') {
184
- const [lat, long] = url.split(',');
185
- const latFloat = parseFloat(lat);
186
- const longFloat = parseFloat(long);
187
- const geo = `${lat}000000%2C${long}000000`;
188
-
189
- return html` <iframe
190
- style="border-radius: var(--curvature);box-shadow:0px 0px 12px 0px rgba(0,0,0,.1), 0px 0px 2px 0px rgba(0,0,0,.15);"
191
- width="300"
192
- height="300"
193
- frameborder="0"
194
- scrolling="no"
195
- marginheight="0"
196
- marginwidth="0"
197
- src="https://www.openstreetmap.org/export/embed.html?bbox=${longFloat -
198
- 0.005}000000%2C${latFloat - 0.005}%2C${longFloat +
199
- 0.005}000000%2C${latFloat +
200
- 0.005}000000&amp;layer=mapnik&amp;marker=${geo}"
201
- ></iframe>`;
202
- } else {
203
- return html`<div style="display:flex">
204
- <temba-icon name="${Icon.download}"></temba-icon>
205
- <div>Attachment ${ext}</div>
206
- </div>`;
207
- }
208
-
209
- return html`<div style="">${inner}</div>`;
210
- };