@nyaruka/temba-components 0.129.10 → 0.130.0

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 (316) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/demo/components/flow/example.html +5 -1
  3. package/demo/data/flows/sample-flow.json +217 -113
  4. package/dist/temba-components.js +310 -356
  5. package/dist/temba-components.js.map +1 -1
  6. package/out-tsc/src/events.js.map +1 -1
  7. package/out-tsc/src/flow/CanvasNode.js +3 -35
  8. package/out-tsc/src/flow/CanvasNode.js.map +1 -1
  9. package/out-tsc/src/flow/Editor.js +9 -6
  10. package/out-tsc/src/flow/Editor.js.map +1 -1
  11. package/out-tsc/src/flow/NodeEditor.js +44 -11
  12. package/out-tsc/src/flow/NodeEditor.js.map +1 -1
  13. package/out-tsc/src/flow/actions/add_contact_groups.js +1 -1
  14. package/out-tsc/src/flow/actions/add_contact_groups.js.map +1 -1
  15. package/out-tsc/src/flow/actions/add_contact_urn.js +1 -1
  16. package/out-tsc/src/flow/actions/add_contact_urn.js.map +1 -1
  17. package/out-tsc/src/flow/actions/add_input_labels.js +1 -1
  18. package/out-tsc/src/flow/actions/add_input_labels.js.map +1 -1
  19. package/out-tsc/src/flow/actions/remove_contact_groups.js +1 -1
  20. package/out-tsc/src/flow/actions/remove_contact_groups.js.map +1 -1
  21. package/out-tsc/src/flow/actions/send_email.js +9 -0
  22. package/out-tsc/src/flow/actions/send_email.js.map +1 -1
  23. package/out-tsc/src/flow/actions/send_msg.js +7 -8
  24. package/out-tsc/src/flow/actions/send_msg.js.map +1 -1
  25. package/out-tsc/src/flow/actions/set_contact_channel.js +25 -4
  26. package/out-tsc/src/flow/actions/set_contact_channel.js.map +1 -1
  27. package/out-tsc/src/flow/actions/set_contact_field.js +51 -1
  28. package/out-tsc/src/flow/actions/set_contact_field.js.map +1 -1
  29. package/out-tsc/src/flow/actions/set_contact_language.js +70 -2
  30. package/out-tsc/src/flow/actions/set_contact_language.js.map +1 -1
  31. package/out-tsc/src/flow/actions/set_contact_name.js +27 -2
  32. package/out-tsc/src/flow/actions/set_contact_name.js.map +1 -1
  33. package/out-tsc/src/flow/actions/set_contact_status.js +32 -2
  34. package/out-tsc/src/flow/actions/set_contact_status.js.map +1 -1
  35. package/out-tsc/src/flow/actions/set_run_result.js +13 -11
  36. package/out-tsc/src/flow/actions/set_run_result.js.map +1 -1
  37. package/out-tsc/src/flow/actions/split_by_expression_example.js +4 -4
  38. package/out-tsc/src/flow/actions/split_by_expression_example.js.map +1 -1
  39. package/out-tsc/src/flow/config.js +2 -8
  40. package/out-tsc/src/flow/config.js.map +1 -1
  41. package/out-tsc/src/flow/forms/index.js +2 -0
  42. package/out-tsc/src/flow/forms/index.js.map +1 -0
  43. package/out-tsc/src/flow/nodes/split_by_llm.js +101 -0
  44. package/out-tsc/src/flow/nodes/split_by_llm.js.map +1 -0
  45. package/out-tsc/src/flow/nodes/split_by_llm_categorize.js +4 -89
  46. package/out-tsc/src/flow/nodes/split_by_llm_categorize.js.map +1 -1
  47. package/out-tsc/src/flow/nodes/split_by_random.js +117 -0
  48. package/out-tsc/src/flow/nodes/split_by_random.js.map +1 -1
  49. package/out-tsc/src/flow/nodes/split_by_subflow.js +123 -3
  50. package/out-tsc/src/flow/nodes/split_by_subflow.js.map +1 -1
  51. package/out-tsc/src/flow/nodes/split_by_ticket.js +114 -13
  52. package/out-tsc/src/flow/nodes/split_by_ticket.js.map +1 -1
  53. package/out-tsc/src/flow/nodes/split_by_webhook.js +158 -12
  54. package/out-tsc/src/flow/nodes/split_by_webhook.js.map +1 -1
  55. package/out-tsc/src/flow/types.js.map +1 -1
  56. package/out-tsc/src/form/ArrayEditor.js +9 -25
  57. package/out-tsc/src/form/ArrayEditor.js.map +1 -1
  58. package/out-tsc/src/form/FieldRenderer.js +6 -64
  59. package/out-tsc/src/form/FieldRenderer.js.map +1 -1
  60. package/out-tsc/src/form/select/Select.js +29 -58
  61. package/out-tsc/src/form/select/Select.js.map +1 -1
  62. package/out-tsc/src/live/ContactChat.js +48 -66
  63. package/out-tsc/src/live/ContactChat.js.map +1 -1
  64. package/out-tsc/src/utils.js +118 -0
  65. package/out-tsc/src/utils.js.map +1 -1
  66. package/out-tsc/test/nodes/split_by_llm.test.js +174 -0
  67. package/out-tsc/test/nodes/split_by_llm.test.js.map +1 -0
  68. package/out-tsc/test/nodes/split_by_random.test.js +0 -6
  69. package/out-tsc/test/nodes/split_by_random.test.js.map +1 -1
  70. package/out-tsc/test/temba-field-renderer.test.js +6 -3
  71. package/out-tsc/test/temba-field-renderer.test.js.map +1 -1
  72. package/out-tsc/test/utils.test.js +18 -0
  73. package/out-tsc/test/utils.test.js.map +1 -1
  74. package/package.json +1 -1
  75. package/screenshots/truth/actions/add_contact_groups/editor/descriptive-group-names.png +0 -0
  76. package/screenshots/truth/actions/add_contact_groups/editor/long-group-names.png +0 -0
  77. package/screenshots/truth/actions/add_contact_groups/editor/many-groups.png +0 -0
  78. package/screenshots/truth/actions/add_contact_groups/editor/multiple-groups.png +0 -0
  79. package/screenshots/truth/actions/add_contact_groups/editor/single-group.png +0 -0
  80. package/screenshots/truth/actions/add_contact_groups/render/descriptive-group-names.png +0 -0
  81. package/screenshots/truth/actions/add_contact_groups/render/long-group-names.png +0 -0
  82. package/screenshots/truth/actions/add_contact_groups/render/many-groups.png +0 -0
  83. package/screenshots/truth/actions/add_contact_groups/render/multiple-groups.png +0 -0
  84. package/screenshots/truth/actions/add_contact_groups/render/single-group.png +0 -0
  85. package/screenshots/truth/actions/call_llm/editor/information-extraction.png +0 -0
  86. package/screenshots/truth/actions/call_llm/editor/sentiment-analysis.png +0 -0
  87. package/screenshots/truth/actions/call_llm/editor/summarization.png +0 -0
  88. package/screenshots/truth/actions/call_llm/editor/translation-task.png +0 -0
  89. package/screenshots/truth/actions/remove_contact_groups/editor/cleanup-groups.png +0 -0
  90. package/screenshots/truth/actions/remove_contact_groups/editor/long-descriptive-group-names.png +0 -0
  91. package/screenshots/truth/actions/remove_contact_groups/editor/many-groups.png +0 -0
  92. package/screenshots/truth/actions/remove_contact_groups/editor/multiple-groups.png +0 -0
  93. package/screenshots/truth/actions/remove_contact_groups/editor/remove-from-all-groups.png +0 -0
  94. package/screenshots/truth/actions/remove_contact_groups/editor/single-group.png +0 -0
  95. package/screenshots/truth/actions/remove_contact_groups/render/cleanup-groups.png +0 -0
  96. package/screenshots/truth/actions/remove_contact_groups/render/long-descriptive-group-names.png +0 -0
  97. package/screenshots/truth/actions/remove_contact_groups/render/many-groups.png +0 -0
  98. package/screenshots/truth/actions/remove_contact_groups/render/multiple-groups.png +0 -0
  99. package/screenshots/truth/actions/remove_contact_groups/render/remove-from-all-groups.png +0 -0
  100. package/screenshots/truth/actions/remove_contact_groups/render/single-group.png +0 -0
  101. package/screenshots/truth/actions/send_email/editor/complex-business-email.png +0 -0
  102. package/screenshots/truth/actions/send_email/editor/empty-body.png +0 -0
  103. package/screenshots/truth/actions/send_email/editor/empty-subject.png +0 -0
  104. package/screenshots/truth/actions/send_email/editor/long-subject.png +0 -0
  105. package/screenshots/truth/actions/send_email/editor/multiline-body.png +0 -0
  106. package/screenshots/truth/actions/send_email/editor/multiple-recipients.png +0 -0
  107. package/screenshots/truth/actions/send_email/editor/simple-email.png +0 -0
  108. package/screenshots/truth/actions/send_email/editor/with-expressions.png +0 -0
  109. package/screenshots/truth/actions/send_msg/editor/long-quick-replies.png +0 -0
  110. package/screenshots/truth/actions/send_msg/editor/multiline-text-with-replies.png +0 -0
  111. package/screenshots/truth/actions/send_msg/editor/simple-text.png +0 -0
  112. package/screenshots/truth/actions/send_msg/editor/text-with-linebreaks.png +0 -0
  113. package/screenshots/truth/actions/send_msg/editor/text-with-many-quick-replies.png +0 -0
  114. package/screenshots/truth/actions/send_msg/editor/text-with-quick-replies.png +0 -0
  115. package/screenshots/truth/actions/send_msg/editor/text-without-quick-replies.png +0 -0
  116. package/screenshots/truth/checkbox/checkbox-label-background-hover.png +0 -0
  117. package/screenshots/truth/checkbox/checkbox-no-label-no-background-hover.png +0 -0
  118. package/screenshots/truth/checkbox/checkbox-whitespace-label-no-background-hover.png +0 -0
  119. package/screenshots/truth/checkbox/checkbox-with-help-text.png +0 -0
  120. package/screenshots/truth/checkbox/checked.png +0 -0
  121. package/screenshots/truth/checkbox/default.png +0 -0
  122. package/screenshots/truth/colorpicker/default.png +0 -0
  123. package/screenshots/truth/colorpicker/focused.png +0 -0
  124. package/screenshots/truth/colorpicker/initialized.png +0 -0
  125. package/screenshots/truth/colorpicker/selected.png +0 -0
  126. package/screenshots/truth/compose/attachments-tab.png +0 -0
  127. package/screenshots/truth/compose/attachments-with-files.png +0 -0
  128. package/screenshots/truth/compose/intial-text.png +0 -0
  129. package/screenshots/truth/compose/no-counter.png +0 -0
  130. package/screenshots/truth/compose/wraps-text-and-spaces.png +0 -0
  131. package/screenshots/truth/compose/wraps-text-and-url.png +0 -0
  132. package/screenshots/truth/compose/wraps-text-no-spaces.png +0 -0
  133. package/screenshots/truth/contacts/chat-failure.png +0 -0
  134. package/screenshots/truth/contacts/chat-for-active-contact.png +0 -0
  135. package/screenshots/truth/contacts/chat-sends-attachments-only.png +0 -0
  136. package/screenshots/truth/contacts/chat-sends-text-and-attachments.png +0 -0
  137. package/screenshots/truth/contacts/chat-sends-text-only.png +0 -0
  138. package/screenshots/truth/counter/summary.png +0 -0
  139. package/screenshots/truth/counter/text.png +0 -0
  140. package/screenshots/truth/counter/unicode-variables.png +0 -0
  141. package/screenshots/truth/counter/unicode.png +0 -0
  142. package/screenshots/truth/counter/variable.png +0 -0
  143. package/screenshots/truth/datepicker/date-truncated-time.png +0 -0
  144. package/screenshots/truth/datepicker/date.png +0 -0
  145. package/screenshots/truth/datepicker/initial-timezone.png +0 -0
  146. package/screenshots/truth/datepicker/range-picker-editing-start.png +0 -0
  147. package/screenshots/truth/datepicker/updated-keyboard-date.png +0 -0
  148. package/screenshots/truth/dialog/focused.png +0 -0
  149. package/screenshots/truth/dropdown/right-edge-collision.png +0 -0
  150. package/screenshots/truth/editor/router.png +0 -0
  151. package/screenshots/truth/editor/send_msg.png +0 -0
  152. package/screenshots/truth/editor/set_contact_language.png +0 -0
  153. package/screenshots/truth/editor/set_contact_name.png +0 -0
  154. package/screenshots/truth/editor/set_run_result.png +0 -0
  155. package/screenshots/truth/editor/wait.png +0 -0
  156. package/screenshots/truth/field-renderer/checkbox-checked.png +0 -0
  157. package/screenshots/truth/field-renderer/checkbox-unchecked.png +0 -0
  158. package/screenshots/truth/field-renderer/checkbox-with-errors.png +0 -0
  159. package/screenshots/truth/field-renderer/context-comparison.png +0 -0
  160. package/screenshots/truth/field-renderer/key-value-with-label.png +0 -0
  161. package/screenshots/truth/field-renderer/message-editor-with-label.png +0 -0
  162. package/screenshots/truth/field-renderer/select-multi.png +0 -0
  163. package/screenshots/truth/field-renderer/select-no-label.png +0 -0
  164. package/screenshots/truth/field-renderer/select-with-label.png +0 -0
  165. package/screenshots/truth/field-renderer/text-evaluated.png +0 -0
  166. package/screenshots/truth/field-renderer/text-no-label.png +0 -0
  167. package/screenshots/truth/field-renderer/text-with-errors.png +0 -0
  168. package/screenshots/truth/field-renderer/text-with-label.png +0 -0
  169. package/screenshots/truth/field-renderer/textarea-evaluated.png +0 -0
  170. package/screenshots/truth/field-renderer/textarea-with-label.png +0 -0
  171. package/screenshots/truth/integration/checkbox-markdown-errors.png +0 -0
  172. package/screenshots/truth/list/fields-dragging.png +0 -0
  173. package/screenshots/truth/list/fields-filtered.png +0 -0
  174. package/screenshots/truth/list/fields-hovered.png +0 -0
  175. package/screenshots/truth/list/fields.png +0 -0
  176. package/screenshots/truth/list/items-selected.png +0 -0
  177. package/screenshots/truth/list/items-updated.png +0 -0
  178. package/screenshots/truth/list/items.png +0 -0
  179. package/screenshots/truth/menu/menu-focused-with items.png +0 -0
  180. package/screenshots/truth/menu/menu-refresh-1.png +0 -0
  181. package/screenshots/truth/menu/menu-refresh-2.png +0 -0
  182. package/screenshots/truth/menu/menu-submenu.png +0 -0
  183. package/screenshots/truth/menu/menu-tasks-nextup.png +0 -0
  184. package/screenshots/truth/menu/menu-tasks.png +0 -0
  185. package/screenshots/truth/message-editor/autogrow-initial-content.png +0 -0
  186. package/screenshots/truth/message-editor/default.png +0 -0
  187. package/screenshots/truth/message-editor/drag-highlight.png +0 -0
  188. package/screenshots/truth/message-editor/filtered-attachments.png +0 -0
  189. package/screenshots/truth/message-editor/with-completion.png +0 -0
  190. package/screenshots/truth/message-editor/with-properties.png +0 -0
  191. package/screenshots/truth/modax/form.png +0 -0
  192. package/screenshots/truth/modax/simple.png +0 -0
  193. package/screenshots/truth/nodes/split_by_llm/editor/information-extraction.png +0 -0
  194. package/screenshots/truth/nodes/split_by_llm/editor/sentiment-analysis.png +0 -0
  195. package/screenshots/truth/nodes/split_by_llm/editor/summarization.png +0 -0
  196. package/screenshots/truth/nodes/split_by_llm/editor/translation-task.png +0 -0
  197. package/screenshots/truth/nodes/split_by_llm/render/information-extraction.png +0 -0
  198. package/screenshots/truth/nodes/split_by_llm/render/sentiment-analysis.png +0 -0
  199. package/screenshots/truth/nodes/split_by_llm/render/summarization.png +0 -0
  200. package/screenshots/truth/nodes/split_by_llm/render/translation-task.png +0 -0
  201. package/screenshots/truth/nodes/split_by_llm_categorize/editor/basic-categorization.png +0 -0
  202. package/screenshots/truth/nodes/split_by_llm_categorize/editor/custom-input-and-result-name.png +0 -0
  203. package/screenshots/truth/nodes/split_by_llm_categorize/editor/feedback-categorization.png +0 -0
  204. package/screenshots/truth/nodes/split_by_llm_categorize/editor/many-categories.png +0 -0
  205. package/screenshots/truth/nodes/split_by_llm_categorize/editor/minimal-categories.png +0 -0
  206. package/screenshots/truth/nodes/split_by_random/editor/ab-test-multiple-variants.png +0 -0
  207. package/screenshots/truth/nodes/split_by_random/editor/sampling-split.png +0 -0
  208. package/screenshots/truth/nodes/split_by_random/editor/three-way-split.png +0 -0
  209. package/screenshots/truth/nodes/split_by_random/editor/two-bucket-split.png +0 -0
  210. package/screenshots/truth/nodes/wait_for_digits/editor/basic-digits-wait.png +0 -0
  211. package/screenshots/truth/nodes/wait_for_digits/editor/phone-number-collection.png +0 -0
  212. package/screenshots/truth/nodes/wait_for_digits/editor/single-digit-with-timeout.png +0 -0
  213. package/screenshots/truth/nodes/wait_for_digits/editor/verification-code.png +0 -0
  214. package/screenshots/truth/nodes/wait_for_response/editor/basic-wait.png +0 -0
  215. package/screenshots/truth/nodes/wait_for_response/editor/custom-result-name.png +0 -0
  216. package/screenshots/truth/nodes/wait_for_response/editor/no-timeout.png +0 -0
  217. package/screenshots/truth/nodes/wait_for_response/editor/short-timeout.png +0 -0
  218. package/screenshots/truth/omnibox/selected.png +0 -0
  219. package/screenshots/truth/options/block.png +0 -0
  220. package/screenshots/truth/run-list/basic.png +0 -0
  221. package/screenshots/truth/select/disabled-multi-selection.png +0 -0
  222. package/screenshots/truth/select/disabled-selection.png +0 -0
  223. package/screenshots/truth/select/disabled.png +0 -0
  224. package/screenshots/truth/select/embedded.png +0 -0
  225. package/screenshots/truth/select/empty-options.png +0 -0
  226. package/screenshots/truth/select/expression-selected.png +0 -0
  227. package/screenshots/truth/select/expressions.png +0 -0
  228. package/screenshots/truth/select/functions.png +0 -0
  229. package/screenshots/truth/select/local-options.png +0 -0
  230. package/screenshots/truth/select/multi-with-endpoint.png +0 -0
  231. package/screenshots/truth/select/multiple-initial-values.png +0 -0
  232. package/screenshots/truth/select/remote-options.png +0 -0
  233. package/screenshots/truth/select/search-enabled.png +0 -0
  234. package/screenshots/truth/select/search-multi-no-matches.png +0 -0
  235. package/screenshots/truth/select/search-selected-focus.png +0 -0
  236. package/screenshots/truth/select/search-selected.png +0 -0
  237. package/screenshots/truth/select/search-with-selected.png +0 -0
  238. package/screenshots/truth/select/searching.png +0 -0
  239. package/screenshots/truth/select/selected-multi-maxitems-reached.png +0 -0
  240. package/screenshots/truth/select/selected-multi.png +0 -0
  241. package/screenshots/truth/select/selected-single.png +0 -0
  242. package/screenshots/truth/select/selection-clearable.png +0 -0
  243. package/screenshots/truth/select/static-initial-value.png +0 -0
  244. package/screenshots/truth/select/static-initial-via-selected.png +0 -0
  245. package/screenshots/truth/select/truncated-selection.png +0 -0
  246. package/screenshots/truth/select/with-placeholder.png +0 -0
  247. package/screenshots/truth/select/without-placeholder.png +0 -0
  248. package/screenshots/truth/slider/update-slider-on-circle-dragged.png +0 -0
  249. package/screenshots/truth/templates/default.png +0 -0
  250. package/screenshots/truth/templates/unapproved.png +0 -0
  251. package/screenshots/truth/textinput/autogrow-initial.png +0 -0
  252. package/screenshots/truth/textinput/input-disabled.png +0 -0
  253. package/screenshots/truth/textinput/input-focused.png +0 -0
  254. package/screenshots/truth/textinput/input-form.png +0 -0
  255. package/screenshots/truth/textinput/input-inserted.png +0 -0
  256. package/screenshots/truth/textinput/input-placeholder.png +0 -0
  257. package/screenshots/truth/textinput/input-updated.png +0 -0
  258. package/screenshots/truth/textinput/input.png +0 -0
  259. package/screenshots/truth/textinput/textarea-focused.png +0 -0
  260. package/screenshots/truth/textinput/textarea.png +0 -0
  261. package/src/events.ts +4 -2
  262. package/src/flow/CanvasNode.ts +2 -39
  263. package/src/flow/Editor.ts +6 -3
  264. package/src/flow/NodeEditor.ts +54 -13
  265. package/src/flow/actions/add_contact_groups.ts +1 -1
  266. package/src/flow/actions/add_contact_urn.ts +1 -1
  267. package/src/flow/actions/add_input_labels.ts +1 -1
  268. package/src/flow/actions/remove_contact_groups.ts +1 -1
  269. package/src/flow/actions/send_email.ts +11 -1
  270. package/src/flow/actions/send_msg.ts +20 -11
  271. package/src/flow/actions/set_contact_channel.ts +28 -5
  272. package/src/flow/actions/set_contact_field.ts +56 -2
  273. package/src/flow/actions/set_contact_language.ts +74 -3
  274. package/src/flow/actions/set_contact_name.ts +31 -3
  275. package/src/flow/actions/set_contact_status.ts +36 -3
  276. package/src/flow/actions/set_run_result.ts +13 -15
  277. package/src/flow/actions/split_by_expression_example.ts +4 -4
  278. package/src/flow/config.ts +2 -8
  279. package/src/flow/forms/index.ts +1 -0
  280. package/src/flow/nodes/split_by_llm.ts +119 -0
  281. package/src/flow/nodes/split_by_llm_categorize.ts +13 -116
  282. package/src/flow/nodes/split_by_random.ts +148 -0
  283. package/src/flow/nodes/split_by_subflow.ts +153 -3
  284. package/src/flow/nodes/split_by_ticket.ts +134 -12
  285. package/src/flow/nodes/split_by_webhook.ts +185 -12
  286. package/src/flow/types.ts +2 -1
  287. package/src/form/ArrayEditor.ts +6 -20
  288. package/src/form/FieldRenderer.ts +6 -65
  289. package/src/form/select/Select.ts +34 -66
  290. package/src/live/ContactChat.ts +56 -58
  291. package/src/store/flow-definition.d.ts +8 -2
  292. package/src/utils.ts +196 -0
  293. package/static/api/fields.json +93 -1208
  294. package/static/api/workspace.json +23 -0
  295. package/test/nodes/split_by_llm.test.ts +232 -0
  296. package/test/nodes/split_by_random.test.ts +0 -7
  297. package/test/temba-field-renderer.test.ts +26 -13
  298. package/test/utils.test.ts +20 -0
  299. package/test-assets/style.css +36 -234
  300. package/web-dev-server.config.mjs +28 -0
  301. package/web-test-runner.config.mjs +38 -1
  302. package/out-tsc/src/flow/actions/call_llm.js +0 -64
  303. package/out-tsc/src/flow/actions/call_llm.js.map +0 -1
  304. package/out-tsc/src/flow/actions/call_webhook.js +0 -131
  305. package/out-tsc/src/flow/actions/call_webhook.js.map +0 -1
  306. package/out-tsc/src/flow/actions/enter_flow.js +0 -14
  307. package/out-tsc/src/flow/actions/enter_flow.js.map +0 -1
  308. package/out-tsc/src/flow/actions/open_ticket.js +0 -73
  309. package/out-tsc/src/flow/actions/open_ticket.js.map +0 -1
  310. package/out-tsc/test/actions/call_llm.test.js +0 -103
  311. package/out-tsc/test/actions/call_llm.test.js.map +0 -1
  312. package/src/flow/actions/call_llm.ts +0 -66
  313. package/src/flow/actions/call_webhook.ts +0 -143
  314. package/src/flow/actions/enter_flow.ts +0 -15
  315. package/src/flow/actions/open_ticket.ts +0 -83
  316. package/test/actions/call_llm.test.ts +0 -137
package/CHANGELOG.md CHANGED
@@ -4,8 +4,24 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
+ #### [v0.130.0](https://github.com/nyaruka/temba-components/compare/v0.129.10...v0.130.0)
8
+
9
+ - Fix allowCreate for Select [`#684`](https://github.com/nyaruka/temba-components/pull/684)
10
+ - Implement split by random [`#683`](https://github.com/nyaruka/temba-components/pull/683)
11
+ - Implement Individual Form Configurations for Contact Update Actions [`#680`](https://github.com/nyaruka/temba-components/pull/680)
12
+ - Add support for rendering `contact_status_changed` events [`#682`](https://github.com/nyaruka/temba-components/pull/682)
13
+ - Cleanup code for no longer used channel event types [`#681`](https://github.com/nyaruka/temba-components/pull/681)
14
+ - Split by subflow [`#678`](https://github.com/nyaruka/temba-components/pull/678)
15
+ - Fixes for node-based actions [`#677`](https://github.com/nyaruka/temba-components/pull/677)
16
+ - Make tests and demos more consistent [`#676`](https://github.com/nyaruka/temba-components/pull/676)
17
+ - Rework how values in NodeEditor selects work [`056d20b`](https://github.com/nyaruka/temba-components/commit/056d20b4e79b7cd5adb6750b5816b6fb66d15dfb)
18
+ - Refactor contact actions to use individual form configurations instead of unified approach [`cc1ae10`](https://github.com/nyaruka/temba-components/commit/cc1ae10902bbd560ee3f0ec7ee5bedb0ad6e4398)
19
+ - Implement unified contact form configuration and adapter with comprehensive tests [`acf28ef`](https://github.com/nyaruka/temba-components/commit/acf28efe64572406a699dcf6e02e324fefc8c526)
20
+
7
21
  #### [v0.129.10](https://github.com/nyaruka/temba-components/compare/v0.129.9...v0.129.10)
8
22
 
23
+ > 26 August 2025
24
+
9
25
  - Add support for new event types, remove no longer used ones [`#675`](https://github.com/nyaruka/temba-components/pull/675)
10
26
  - Refactor form components to use FieldElement base class instead of manual temba-field embedding [`#674`](https://github.com/nyaruka/temba-components/pull/674)
11
27
  - Finish FieldElement refactor [`ee5bf8b`](https://github.com/nyaruka/temba-components/commit/ee5bf8ba8d7fb2cdda14778ad114448ccc73c641)
@@ -36,7 +36,11 @@
36
36
  </style>
37
37
  </head>
38
38
  <body>
39
- <temba-store completion="/api/v2/completion.json"></temba-store>
39
+ <temba-store
40
+ completion="/api/v2/completion.json"
41
+ workspace="/api/v2/workspace.json"
42
+ >
43
+ </temba-store>
40
44
  <temba-flow-editor id="flow-editor"></temba-flow-editor>
41
45
 
42
46
  <script type="module">
@@ -6,6 +6,87 @@
6
6
  "language": "eng",
7
7
  "type": "messaging",
8
8
  "nodes": [
9
+ {
10
+ "uuid": "56a6ddd3-42d4-4ec2-b8ee-546b4ceb06f1",
11
+ "actions": [],
12
+ "router": {
13
+ "type": "random",
14
+ "categories": [
15
+ {
16
+ "uuid": "2325c455-92bd-4776-958c-367b4c318881",
17
+ "name": "Bucket 1",
18
+ "exit_uuid": "4b9759ae-ab8e-4957-bc7b-01516cc0e0c5"
19
+ },
20
+ {
21
+ "uuid": "12cdc990-86a5-46ec-8242-7193d85c2413",
22
+ "name": "Bucket 2",
23
+ "exit_uuid": "7610a57d-53e6-426f-93bf-d85161b11297"
24
+ },
25
+ {
26
+ "uuid": "9e6db7e6-cf13-4809-8a3b-ea01e0a861d9",
27
+ "name": "Bucket 3",
28
+ "exit_uuid": "cb6f46db-d129-4fb3-9684-007d600a9eac"
29
+ }
30
+ ]
31
+ },
32
+ "exits": [
33
+ {
34
+ "uuid": "4b9759ae-ab8e-4957-bc7b-01516cc0e0c5",
35
+ "destination_uuid": null
36
+ },
37
+ {
38
+ "uuid": "7610a57d-53e6-426f-93bf-d85161b11297",
39
+ "destination_uuid": null
40
+ },
41
+ {
42
+ "uuid": "cb6f46db-d129-4fb3-9684-007d600a9eac",
43
+ "destination_uuid": null
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "uuid": "fb7bbf99-65cd-4e08-825a-68fc7293cc05",
49
+ "actions": [
50
+ {
51
+ "uuid": "542b9033-2578-4ba1-bac8-dee26fd608fb",
52
+ "type": "set_contact_status",
53
+ "status": "active"
54
+ },
55
+ {
56
+ "uuid": "1c68d488-7ce7-4c7d-ae05-f767589e00ff",
57
+ "type": "set_contact_channel",
58
+ "channel": {
59
+ "uuid": "d70a531e-25d8-45dc-9a5b-19ff80cee571",
60
+ "name": "Facebook"
61
+ }
62
+ },
63
+ {
64
+ "uuid": "0020495f-f919-41bc-b0a7-5e109e72a6ac",
65
+ "type": "set_contact_field",
66
+ "field": {
67
+ "name": "Profile Pic",
68
+ "key": "profile_pic"
69
+ },
70
+ "value": "Malea"
71
+ },
72
+ {
73
+ "uuid": "cc5c9892-4ba0-450a-a9d6-8567381eab1c",
74
+ "type": "set_contact_name",
75
+ "name": "Rowan"
76
+ },
77
+ {
78
+ "uuid": "2de0b3d2-8b84-43f7-8716-640c879b6730",
79
+ "type": "set_contact_language",
80
+ "language": "eng"
81
+ }
82
+ ],
83
+ "exits": [
84
+ {
85
+ "uuid": "8e90179d-bdbe-443f-8548-4911e09c6d46",
86
+ "destination_uuid": null
87
+ }
88
+ ]
89
+ },
9
90
  {
10
91
  "uuid": "a229fa3c-16bb-440b-9ae8-b7ee7a723f44",
11
92
  "actions": [
@@ -18,7 +99,9 @@
18
99
  "image/jpeg:http://localhost:9000/temba-attachments/e7d4d3cd-ec89-45c2-bc0b-4f652f1f7fde-IMG_3262.jpeg",
19
100
  "image/jpeg:http://localhost:9000/temba-attachments/ae831575-0d23-40b7-ae0c-531b8775a6bc-IMG_3282.jpeg",
20
101
  "image/png:http://localhost:9000/temba-attachments/d7b04feb-c74e-43a4-a6de-6a4516a4de59-Screenshot 2025-08-19 at 10.23.24 AM.png",
21
- "image/jpeg:http://localhost:9000/temba-attachments/d3bdb082-6dab-48ed-9598-f3a7f6b6b06d-IMG_3262.jpeg"
102
+ "image/jpeg:http://localhost:9000/temba-attachments/d3bdb082-6dab-48ed-9598-f3a7f6b6b06d-IMG_3262.jpeg",
103
+ "video:@fields.video",
104
+ "image:@fields.image"
22
105
  ],
23
106
  "quick_replies": [
24
107
  "Red",
@@ -132,32 +215,20 @@
132
215
  "uuid": "e1f22e97-a170-44b4-a79b-98ab916f4c34",
133
216
  "actions": [
134
217
  {
135
- "uuid": "cb497975-a8fb-4d28-a662-277eb7a699f9",
136
218
  "type": "call_webhook",
219
+ "uuid": "e1f22e97-a170-44b4-a79b-98ab916f4c34",
220
+ "method": "GET",
137
221
  "url": "http://google.com",
138
- "method": "POST",
139
222
  "headers": {
140
223
  "Accepts": "application/json",
141
224
  "Content-Type": "application/json",
142
225
  "Authorization": "Bearer token here"
143
226
  },
144
- "body": "@(json(object(\n \"contact\", object(\n \"uuid\", contact.uuid, \n \"name\", contact.name, \n \"urn\", contact.urn\n ),\n \"flow\", object(\n \"uuid\", run.flow.uuid, \n \"name\", run.flow.name\n ),\n \"results\", foreach_value(results, extract_object, \"value\", \"category\")\n)))ast"
227
+ "body": ""
145
228
  }
146
229
  ],
147
230
  "router": {
148
231
  "type": "switch",
149
- "operand": "@webhook.status",
150
- "cases": [
151
- {
152
- "uuid": "024a8d66-be1e-4821-bec4-8c54fd7135c6",
153
- "type": "has_number_between",
154
- "arguments": [
155
- "200",
156
- "299"
157
- ],
158
- "category_uuid": "0bb08076-45e2-4ca1-b321-1506f1779198"
159
- }
160
- ],
161
232
  "categories": [
162
233
  {
163
234
  "uuid": "1b9100a4-f3f0-410e-8b6f-d339bf58a13a",
@@ -170,8 +241,19 @@
170
241
  "exit_uuid": "8087c747-eebc-4f35-8032-33490ba390d6"
171
242
  }
172
243
  ],
173
- "default_category_uuid": "67fc0e41-eeb2-4f54-9f71-abdd64c097f4",
174
- "result_name": ""
244
+ "default_category_uuid": "13915377-5eb1-46c5-8955-78646b75b8ef",
245
+ "operand": "@webhook.status",
246
+ "cases": [
247
+ {
248
+ "uuid": "8b9201ff-b195-4e18-8124-3362d310a2e5",
249
+ "type": "has_number_between",
250
+ "arguments": [
251
+ "200",
252
+ "299"
253
+ ],
254
+ "category_uuid": "1b9100a4-f3f0-410e-8b6f-d339bf58a13a"
255
+ }
256
+ ]
175
257
  },
176
258
  "exits": [
177
259
  {
@@ -200,10 +282,45 @@
200
282
  "Blue"
201
283
  ]
202
284
  },
285
+ {
286
+ "uuid": "d0d1571c-bf9e-4156-ac7c-984789c71472",
287
+ "type": "add_input_labels",
288
+ "labels": [
289
+ {
290
+ "uuid": "61cae99b-56e1-4f3e-a2b9-07fb5cf2be9e",
291
+ "name": "Important",
292
+ "count": 234
293
+ },
294
+ {
295
+ "uuid": "76e7a094-22ea-441d-91c4-283d8168e8e3",
296
+ "name": "Follow Up",
297
+ "count": 128
298
+ },
299
+ {
300
+ "uuid": "f80ed7b6-5e6a-49eb-94b6-4631a9677cd8",
301
+ "name": "Spam",
302
+ "count": 0
303
+ }
304
+ ]
305
+ },
306
+ {
307
+ "uuid": "b32fe165-e0cc-475c-a7c4-7f484fcce2f4",
308
+ "type": "set_run_result",
309
+ "name": "Make",
310
+ "value": "Rivian",
311
+ "category": "Electric"
312
+ },
203
313
  {
204
314
  "uuid": "d1ca86da-f321-4e09-8bb2-981de03f5a90",
205
315
  "type": "add_contact_groups",
206
316
  "groups": [
317
+ {
318
+ "uuid": "66e7a094-22ea-441d-91c4-283d8168e8e4",
319
+ "name": "The Poots",
320
+ "query": "name ~ \"poots\" OR name ~ \"dave\"",
321
+ "status": "ready",
322
+ "count": 1028
323
+ },
207
324
  {
208
325
  "uuid": "a3f2990b-4096-452e-a586-dc06a9434dde",
209
326
  "name": "Empty",
@@ -220,13 +337,6 @@
220
337
  }
221
338
  ]
222
339
  },
223
- {
224
- "uuid": "b32fe165-e0cc-475c-a7c4-7f484fcce2f4",
225
- "type": "set_run_result",
226
- "name": "Make",
227
- "value": "Rivian",
228
- "category": "Electric"
229
- },
230
340
  {
231
341
  "uuid": "ffe1c2d3-4e5f-6a7b-8c9d-e0f1a2b3c4d5",
232
342
  "type": "remove_contact_groups",
@@ -241,27 +351,6 @@
241
351
  ],
242
352
  "all_groups": false
243
353
  },
244
- {
245
- "uuid": "d0d1571c-bf9e-4156-ac7c-984789c71472",
246
- "type": "add_input_labels",
247
- "labels": [
248
- {
249
- "uuid": "61cae99b-56e1-4f3e-a2b9-07fb5cf2be9e",
250
- "name": "Important",
251
- "count": 234
252
- },
253
- {
254
- "uuid": "76e7a094-22ea-441d-91c4-283d8168e8e3",
255
- "name": "Follow Up",
256
- "count": 128
257
- },
258
- {
259
- "uuid": "f80ed7b6-5e6a-49eb-94b6-4631a9677cd8",
260
- "name": "Spam",
261
- "count": 0
262
- }
263
- ]
264
- },
265
354
  {
266
355
  "uuid": "28c288f3-fb46-4c32-8a47-563132a2e8db",
267
356
  "type": "set_contact_channel",
@@ -273,7 +362,7 @@
273
362
  {
274
363
  "uuid": "730ae625-6535-467b-98af-ea83e9d27884",
275
364
  "type": "set_contact_language",
276
- "language": "eng"
365
+ "language": "spa"
277
366
  },
278
367
  {
279
368
  "uuid": "773fa48f-7341-4f57-bf74-2afed2e4b763",
@@ -292,16 +381,6 @@
292
381
  }
293
382
  ]
294
383
  },
295
- {
296
- "uuid": "a0f3f1f2-1869-4ad6-9fb0-e610a3e00ae7",
297
- "type": "send_email",
298
- "addresses": [
299
- "mistermeowface@whiskers.com",
300
- "name@domain.com"
301
- ],
302
- "subject": "Did you get this?",
303
- "body": "I hope it arrived! But this message is a bit longer."
304
- },
305
384
  {
306
385
  "type": "add_contact_urn",
307
386
  "uuid": "9ddb2da4-03da-40a9-9cec-06c9d05b6e72",
@@ -316,6 +395,16 @@
316
395
  "key": "color"
317
396
  },
318
397
  "value": "@results.color.category"
398
+ },
399
+ {
400
+ "uuid": "a0f3f1f2-1869-4ad6-9fb0-e610a3e00ae7",
401
+ "type": "send_email",
402
+ "addresses": [
403
+ "mistermeowface@whiskers.com",
404
+ "name@domain.com"
405
+ ],
406
+ "subject": "Did you get this?",
407
+ "body": "I hope it arrived! But this message is a bit longer."
319
408
  }
320
409
  ],
321
410
  "exits": [
@@ -422,6 +511,11 @@
422
511
  "uuid": "b2f0dd39-553e-4651-96ef-95cac79867f3",
423
512
  "name": "Bucket 2",
424
513
  "exit_uuid": "bdf64af3-8585-45ce-a3ba-10aab8dcc4fd"
514
+ },
515
+ {
516
+ "uuid": "edcaf2fd-34bb-46ea-bbc1-d23044b303d4",
517
+ "name": "My Other Buckets",
518
+ "exit_uuid": "df832c64-57f9-4468-b055-9b66a4e3b9bf"
425
519
  }
426
520
  ]
427
521
  },
@@ -432,6 +526,10 @@
432
526
  },
433
527
  {
434
528
  "uuid": "bdf64af3-8585-45ce-a3ba-10aab8dcc4fd",
529
+ "destination_uuid": "56a6ddd3-42d4-4ec2-b8ee-546b4ceb06f1"
530
+ },
531
+ {
532
+ "uuid": "df832c64-57f9-4468-b055-9b66a4e3b9bf",
435
533
  "destination_uuid": null
436
534
  }
437
535
  ]
@@ -601,35 +699,16 @@
601
699
  "uuid": "2c60c381-487d-42cd-80be-a31f44c36fd9",
602
700
  "actions": [
603
701
  {
604
- "uuid": "f842eab5-b7d0-4899-811f-e631c1a442ad",
605
702
  "type": "enter_flow",
703
+ "uuid": "2c60c381-487d-42cd-80be-a31f44c36fd9",
606
704
  "flow": {
607
- "uuid": "78d2429c-8fdc-421c-bd37-b381ae99b7c7",
608
- "name": "Support"
705
+ "uuid": "8f1fa2e3-740a-4f06-b67b-d521643eb52b",
706
+ "name": "Food Order"
609
707
  }
610
708
  }
611
709
  ],
612
710
  "router": {
613
711
  "type": "switch",
614
- "operand": "@child.status",
615
- "cases": [
616
- {
617
- "uuid": "625daede-4c37-45d4-9af6-5607ad4b1ce0",
618
- "type": "has_only_text",
619
- "arguments": [
620
- "completed"
621
- ],
622
- "category_uuid": "894652f9-cc6c-4192-827d-3c5543778478"
623
- },
624
- {
625
- "uuid": "1e5f9d1e-794d-4279-ad93-3c7541962388",
626
- "arguments": [
627
- "expired"
628
- ],
629
- "type": "has_only_text",
630
- "category_uuid": "48e318f7-4153-471a-856a-be01ac2f18a0"
631
- }
632
- ],
633
712
  "categories": [
634
713
  {
635
714
  "uuid": "894652f9-cc6c-4192-827d-3c5543778478",
@@ -642,7 +721,18 @@
642
721
  "exit_uuid": "e3314f8b-5598-4592-b5f9-2999c4a28a4f"
643
722
  }
644
723
  ],
645
- "default_category_uuid": "48e318f7-4153-471a-856a-be01ac2f18a0"
724
+ "default_category_uuid": "48e318f7-4153-471a-856a-be01ac2f18a0",
725
+ "operand": "@child.status",
726
+ "cases": [
727
+ {
728
+ "uuid": "625daede-4c37-45d4-9af6-5607ad4b1ce0",
729
+ "type": "has_only_text",
730
+ "arguments": [
731
+ "completed"
732
+ ],
733
+ "category_uuid": "894652f9-cc6c-4192-827d-3c5543778478"
734
+ }
735
+ ]
646
736
  },
647
737
  "exits": [
648
738
  {
@@ -738,30 +828,21 @@
738
828
  "uuid": "21ff86c2-5276-4448-afb6-54d1f832ba0c",
739
829
  "actions": [
740
830
  {
741
- "uuid": "a7f21fc4-8bf1-47ab-a6c7-3e072f88afe7",
742
831
  "type": "open_ticket",
832
+ "uuid": "21ff86c2-5276-4448-afb6-54d1f832ba0c",
743
833
  "topic": {
744
834
  "uuid": "1b1cb507-e079-4b30-818c-1898edcbd178",
745
835
  "name": "General"
746
836
  },
747
837
  "assignee": {
748
- "uuid": "ae79dd5b-8c34-4602-a2c1-1e4db2419f0f",
749
- "name": "Eric Newcomer"
838
+ "uuid": "c0f5b431-35e9-429c-9d57-5fee2fac46a3",
839
+ "name": "Marion Berry"
750
840
  },
751
841
  "note": ""
752
842
  }
753
843
  ],
754
844
  "router": {
755
845
  "type": "switch",
756
- "operand": "@locals._new_ticket",
757
- "cases": [
758
- {
759
- "uuid": "f32a3e1b-976d-4897-af3b-964041af1361",
760
- "type": "has_text",
761
- "arguments": [],
762
- "category_uuid": "1ec9135f-e670-4bae-a6d7-2f6aa6ce9b59"
763
- }
764
- ],
765
846
  "categories": [
766
847
  {
767
848
  "uuid": "1ec9135f-e670-4bae-a6d7-2f6aa6ce9b59",
@@ -775,7 +856,15 @@
775
856
  }
776
857
  ],
777
858
  "default_category_uuid": "6c1b355d-7d3e-4c17-abef-7861bac5cf48",
778
- "result_name": ""
859
+ "operand": "@locals._new_ticket",
860
+ "cases": [
861
+ {
862
+ "uuid": "f32a3e1b-976d-4897-af3b-964041af1361",
863
+ "type": "has_text",
864
+ "arguments": [],
865
+ "category_uuid": "1ec9135f-e670-4bae-a6d7-2f6aa6ce9b59"
866
+ }
867
+ ]
779
868
  },
780
869
  "exits": [
781
870
  {
@@ -817,9 +906,9 @@
817
906
  "exit_uuid": "abbdcff7-4296-4f01-907f-f709fa4a1444"
818
907
  },
819
908
  {
820
- "uuid": "7091cae1-2677-494a-967c-d9502476d4e4",
909
+ "uuid": "faa4fc1c-c4ba-47fc-8a93-a9bf8bd5818c",
821
910
  "name": "Oyster",
822
- "exit_uuid": "377e720a-4815-4fa5-83cc-b6471765a9b4"
911
+ "exit_uuid": "c38c4c0e-cb1e-4305-a008-908aa9f01850"
823
912
  },
824
913
  {
825
914
  "uuid": "8e4624ee-57fe-43cd-8fa3-fa630c22cd72",
@@ -852,12 +941,12 @@
852
941
  "category_uuid": "4632b796-f8ab-4a35-80d1-a1b53a6db803"
853
942
  },
854
943
  {
855
- "uuid": "87a8ccff-c153-4ff6-8a59-4d164b8bb2a8",
944
+ "uuid": "62a7fc70-ffbf-4925-9f9a-ca6ef531942a",
856
945
  "type": "has_only_text",
857
946
  "arguments": [
858
947
  "Oyster"
859
948
  ],
860
- "category_uuid": "7091cae1-2677-494a-967c-d9502476d4e4"
949
+ "category_uuid": "faa4fc1c-c4ba-47fc-8a93-a9bf8bd5818c"
861
950
  },
862
951
  {
863
952
  "uuid": "8fd5f13b-0398-4286-b18a-a92b5a2ea19d",
@@ -879,7 +968,7 @@
879
968
  "destination_uuid": null
880
969
  },
881
970
  {
882
- "uuid": "377e720a-4815-4fa5-83cc-b6471765a9b4",
971
+ "uuid": "c38c4c0e-cb1e-4305-a008-908aa9f01850",
883
972
  "destination_uuid": null
884
973
  },
885
974
  {
@@ -895,9 +984,16 @@
895
984
  ],
896
985
  "_ui": {
897
986
  "nodes": {
987
+ "fb7bbf99-65cd-4e08-825a-68fc7293cc05": {
988
+ "position": {
989
+ "left": 0,
990
+ "top": 0
991
+ },
992
+ "type": "execute_actions"
993
+ },
898
994
  "145eb3d3-b841-4e66-abac-297ae525c7ad": {
899
995
  "position": {
900
- "left": 720,
996
+ "left": 700,
901
997
  "top": 500
902
998
  },
903
999
  "type": "split_by_llm_categorize"
@@ -913,7 +1009,7 @@
913
1009
  "type": "wait_for_response",
914
1010
  "position": {
915
1011
  "left": 220,
916
- "top": 200
1012
+ "top": 220
917
1013
  },
918
1014
  "config": {
919
1015
  "cases": {}
@@ -922,8 +1018,8 @@
922
1018
  "e1f22e97-a170-44b4-a79b-98ab916f4c34": {
923
1019
  "type": "split_by_webhook",
924
1020
  "position": {
925
- "left": 840,
926
- "top": 20
1021
+ "left": 640,
1022
+ "top": 40
927
1023
  },
928
1024
  "config": {}
929
1025
  },
@@ -938,7 +1034,7 @@
938
1034
  "type": "split_by_subflow",
939
1035
  "position": {
940
1036
  "left": 460,
941
- "top": 740
1037
+ "top": 660
942
1038
  },
943
1039
  "config": {}
944
1040
  },
@@ -970,8 +1066,8 @@
970
1066
  "8ecec688-f154-4b80-a0b3-3cbff0fac892": {
971
1067
  "type": "split_by_random",
972
1068
  "position": {
973
- "left": 1020,
974
- "top": 360
1069
+ "left": 1000,
1070
+ "top": 300
975
1071
  },
976
1072
  "config": null
977
1073
  },
@@ -993,7 +1089,7 @@
993
1089
  "5f1394c1-4b8c-4357-8863-db24817b2aa3": {
994
1090
  "type": "split_by_groups",
995
1091
  "position": {
996
- "left": 480,
1092
+ "left": 460,
997
1093
  "top": 380
998
1094
  },
999
1095
  "config": {
@@ -1004,7 +1100,7 @@
1004
1100
  "type": "split_by_scheme",
1005
1101
  "position": {
1006
1102
  "left": 460,
1007
- "top": 600
1103
+ "top": 520
1008
1104
  },
1009
1105
  "config": {
1010
1106
  "cases": {}
@@ -1014,7 +1110,7 @@
1014
1110
  "type": "split_by_llm",
1015
1111
  "position": {
1016
1112
  "left": 460,
1017
- "top": 900
1113
+ "top": 820
1018
1114
  },
1019
1115
  "config": {}
1020
1116
  },
@@ -1032,13 +1128,21 @@
1032
1128
  "top": 920
1033
1129
  },
1034
1130
  "config": {}
1131
+ },
1132
+ "56a6ddd3-42d4-4ec2-b8ee-546b4ceb06f1": {
1133
+ "type": "split_by_random",
1134
+ "position": {
1135
+ "left": 1080,
1136
+ "top": 440
1137
+ },
1138
+ "config": null
1035
1139
  }
1036
1140
  },
1037
1141
  "stickies": {
1038
1142
  "1a32aff1-36b9-48e3-a51e-382efdcb9a83": {
1039
1143
  "position": {
1040
1144
  "left": 0,
1041
- "top": 0
1145
+ "top": 1060
1042
1146
  },
1043
1147
  "title": "Yellow Note",
1044
1148
  "body": "This flow makes no sense. That's because it's just for general testing. We can keep typing in this div though and it is interesting how it just keeps expanding even if it isn't a textarea. Even this seems okay and I can keep typing as long as I like.\n\nI can even add some extra line breaks.",
@@ -1047,7 +1151,7 @@
1047
1151
  "598a87e4-f20b-48ba-aac5-bb365d8f1509": {
1048
1152
  "position": {
1049
1153
  "left": 0,
1050
- "top": 440
1154
+ "top": 560
1051
1155
  },
1052
1156
  "title": "Blue Note",
1053
1157
  "body": "Did you know stickies can have different colors? I just realized that and I'm pretty happy to report that this expands really nicely. It seems to be working okay I think. This.",
@@ -1056,7 +1160,7 @@
1056
1160
  "598a87e4-f20b-48ba-aac5-bb365d8f1501": {
1057
1161
  "position": {
1058
1162
  "left": 0,
1059
- "top": 780
1163
+ "top": 900
1060
1164
  },
1061
1165
  "title": "Green Note",
1062
1166
  "body": "They also come in green, do I like them better? Maybe I do. There is a standard height, they will have to get used to it.",
@@ -1065,7 +1169,7 @@
1065
1169
  "598a87e4-f20b-48ba-aac5-bb365d8f1502": {
1066
1170
  "position": {
1067
1171
  "left": 0,
1068
- "top": 640
1172
+ "top": 760
1069
1173
  },
1070
1174
  "title": "Pinky Note",
1071
1175
  "body": "This is a test. How much do I like writing in pink? Seems pretty nice honestly! I think Imma go with it",
@@ -1074,7 +1178,7 @@
1074
1178
  "598a87e4-f20b-48ba-aac5-bb365d8f1503": {
1075
1179
  "position": {
1076
1180
  "left": 0,
1077
- "top": 320
1181
+ "top": 440
1078
1182
  },
1079
1183
  "title": "Gray Note",
1080
1184
  "body": "And a nice, little gray message to go with it.",