@oneblink/apps-react 8.14.0 → 9.0.0-beta.10

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 (661) hide show
  1. package/dist/OneBlinkAutoSaveForm.d.ts +1 -1
  2. package/dist/OneBlinkAutoSaveForm.js +6 -8
  3. package/dist/OneBlinkAutoSaveForm.js.map +1 -1
  4. package/dist/OneBlinkForm.d.ts +6 -10
  5. package/dist/OneBlinkForm.js +3 -6
  6. package/dist/OneBlinkForm.js.map +1 -1
  7. package/dist/OneBlinkFormBase.d.ts +2 -2
  8. package/dist/OneBlinkFormBase.js +51 -147
  9. package/dist/OneBlinkFormBase.js.map +1 -1
  10. package/dist/OneBlinkReadOnlyForm.d.ts +2 -2
  11. package/dist/OneBlinkReadOnlyForm.js +3 -2
  12. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  13. package/dist/PaymentReceipt.d.ts +2 -2
  14. package/dist/PaymentReceipt.js +12 -33
  15. package/dist/PaymentReceipt.js.map +1 -1
  16. package/dist/apps/Sentry.d.ts +7 -0
  17. package/dist/apps/Sentry.js +16 -0
  18. package/dist/apps/Sentry.js.map +1 -0
  19. package/dist/apps/approvals-service.d.ts +390 -0
  20. package/dist/apps/approvals-service.js +987 -0
  21. package/dist/apps/approvals-service.js.map +1 -0
  22. package/dist/apps/attachments-service.d.ts +49 -0
  23. package/dist/apps/attachments-service.js +134 -0
  24. package/dist/apps/attachments-service.js.map +1 -0
  25. package/dist/apps/auth-service.d.ts +114 -0
  26. package/dist/apps/auth-service.js +194 -0
  27. package/dist/apps/auth-service.js.map +1 -0
  28. package/dist/apps/auto-save-service.d.ts +82 -0
  29. package/dist/apps/auto-save-service.js +105 -0
  30. package/dist/apps/auto-save-service.js.map +1 -0
  31. package/dist/apps/draft-service.d.ts +148 -0
  32. package/dist/apps/draft-service.js +583 -0
  33. package/dist/apps/draft-service.js.map +1 -0
  34. package/dist/apps/form-service.d.ts +204 -0
  35. package/dist/apps/form-service.js +718 -0
  36. package/dist/apps/form-service.js.map +1 -0
  37. package/dist/apps/form-store-service.d.ts +141 -0
  38. package/dist/apps/form-store-service.js +114 -0
  39. package/dist/apps/form-store-service.js.map +1 -0
  40. package/dist/apps/forms-app-environment-service.d.ts +19 -0
  41. package/dist/apps/forms-app-environment-service.js +55 -0
  42. package/dist/apps/forms-app-environment-service.js.map +1 -0
  43. package/dist/apps/forms-app-service.d.ts +18 -0
  44. package/dist/apps/forms-app-service.js +53 -0
  45. package/dist/apps/forms-app-service.js.map +1 -0
  46. package/dist/apps/index.d.ts +253 -0
  47. package/dist/apps/index.js +255 -0
  48. package/dist/apps/index.js.map +1 -0
  49. package/dist/apps/job-service.d.ts +20 -0
  50. package/dist/apps/job-service.js +95 -0
  51. package/dist/apps/job-service.js.map +1 -0
  52. package/dist/apps/localisation-service.d.ts +207 -0
  53. package/dist/apps/localisation-service.js +321 -0
  54. package/dist/apps/localisation-service.js.map +1 -0
  55. package/dist/apps/notification-service.d.ts +83 -0
  56. package/dist/apps/notification-service.js +315 -0
  57. package/dist/apps/notification-service.js.map +1 -0
  58. package/dist/apps/offline-service.d.ts +18 -0
  59. package/dist/apps/offline-service.js +25 -0
  60. package/dist/apps/offline-service.js.map +1 -0
  61. package/dist/apps/payment-service.d.ts +110 -0
  62. package/dist/apps/payment-service.js +182 -0
  63. package/dist/apps/payment-service.js.map +1 -0
  64. package/dist/apps/prefill-service.d.ts +14 -0
  65. package/dist/apps/prefill-service.js +19 -0
  66. package/dist/apps/prefill-service.js.map +1 -0
  67. package/dist/apps/scheduled-tasks-service.d.ts +127 -0
  68. package/dist/apps/scheduled-tasks-service.js +240 -0
  69. package/dist/apps/scheduled-tasks-service.js.map +1 -0
  70. package/dist/apps/scheduling-service.d.ts +101 -0
  71. package/dist/apps/scheduling-service.js +171 -0
  72. package/dist/apps/scheduling-service.js.map +1 -0
  73. package/dist/apps/services/AWSCognitoClient.d.ts +55 -0
  74. package/dist/apps/services/AWSCognitoClient.js +436 -0
  75. package/dist/apps/services/AWSCognitoClient.js.map +1 -0
  76. package/dist/apps/services/api/drafts.d.ts +7 -0
  77. package/dist/apps/services/api/drafts.js +236 -0
  78. package/dist/apps/services/api/drafts.js.map +1 -0
  79. package/dist/apps/services/api/notifications.d.ts +3 -0
  80. package/dist/apps/services/api/notifications.js +60 -0
  81. package/dist/apps/services/api/notifications.js.map +1 -0
  82. package/dist/apps/services/api/payment.d.ts +23 -0
  83. package/dist/apps/services/api/payment.js +235 -0
  84. package/dist/apps/services/api/payment.js.map +1 -0
  85. package/dist/apps/services/api/post-submission-attachment-urls.d.ts +7 -0
  86. package/dist/apps/services/api/post-submission-attachment-urls.js +19 -0
  87. package/dist/apps/services/api/post-submission-attachment-urls.js.map +1 -0
  88. package/dist/apps/services/api/prefill.d.ts +1 -0
  89. package/dist/apps/services/api/prefill.js +70 -0
  90. package/dist/apps/services/api/prefill.js.map +1 -0
  91. package/dist/apps/services/api/receipt-id.d.ts +2 -0
  92. package/dist/apps/services/api/receipt-id.js +54 -0
  93. package/dist/apps/services/api/receipt-id.js.map +1 -0
  94. package/dist/apps/services/api/scheduling.d.ts +38 -0
  95. package/dist/apps/services/api/scheduling.js +142 -0
  96. package/dist/apps/services/api/scheduling.js.map +1 -0
  97. package/dist/apps/services/api/submissions.d.ts +18 -0
  98. package/dist/apps/services/api/submissions.js +166 -0
  99. package/dist/apps/services/api/submissions.js.map +1 -0
  100. package/dist/apps/services/cognito.d.ts +302 -0
  101. package/dist/apps/services/cognito.js +441 -0
  102. package/dist/apps/services/cognito.js.map +1 -0
  103. package/dist/apps/services/draft-data-store.d.ts +16 -0
  104. package/dist/apps/services/draft-data-store.js +115 -0
  105. package/dist/apps/services/draft-data-store.js.map +1 -0
  106. package/dist/apps/services/errors/oneBlinkAppsError.d.ts +35 -0
  107. package/dist/apps/services/errors/oneBlinkAppsError.js +32 -0
  108. package/dist/apps/services/errors/oneBlinkAppsError.js.map +1 -0
  109. package/dist/apps/services/external-id-generation.d.ts +4 -0
  110. package/dist/apps/services/external-id-generation.js +59 -0
  111. package/dist/apps/services/external-id-generation.js.map +1 -0
  112. package/dist/apps/services/fetch.d.ts +12 -0
  113. package/dist/apps/services/fetch.js +95 -0
  114. package/dist/apps/services/fetch.js.map +1 -0
  115. package/dist/apps/services/forms-key.d.ts +51 -0
  116. package/dist/apps/services/forms-key.js +83 -0
  117. package/dist/apps/services/forms-key.js.map +1 -0
  118. package/dist/apps/services/generate-generic-error.d.ts +3 -0
  119. package/dist/apps/services/generate-generic-error.js +52 -0
  120. package/dist/apps/services/generate-generic-error.js.map +1 -0
  121. package/dist/apps/services/generateOneBlinkDownloader.d.ts +2 -0
  122. package/dist/apps/services/generateOneBlinkDownloader.js +11 -0
  123. package/dist/apps/services/generateOneBlinkDownloader.js.map +1 -0
  124. package/dist/apps/services/generateOneBlinkUploader.d.ts +2 -0
  125. package/dist/apps/services/generateOneBlinkUploader.js +11 -0
  126. package/dist/apps/services/generateOneBlinkUploader.js.map +1 -0
  127. package/dist/apps/services/getDeviceInformation.d.ts +17 -0
  128. package/dist/apps/services/getDeviceInformation.js +38 -0
  129. package/dist/apps/services/getDeviceInformation.js.map +1 -0
  130. package/dist/apps/services/integration-elements.d.ts +383 -0
  131. package/dist/apps/services/integration-elements.js +761 -0
  132. package/dist/apps/services/integration-elements.js.map +1 -0
  133. package/dist/apps/services/job-prefill.d.ts +40 -0
  134. package/dist/apps/services/job-prefill.js +78 -0
  135. package/dist/apps/services/job-prefill.js.map +1 -0
  136. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.d.ts +29 -0
  137. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js +59 -0
  138. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js.map +1 -0
  139. package/dist/apps/services/payment-providers/CPPayPaymentProvider.d.ts +27 -0
  140. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js +63 -0
  141. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js.map +1 -0
  142. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.d.ts +30 -0
  143. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js +116 -0
  144. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js.map +1 -0
  145. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.d.ts +49 -0
  146. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js +116 -0
  147. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js.map +1 -0
  148. package/dist/apps/services/payment-providers/receipt-items.d.ts +8 -0
  149. package/dist/apps/services/payment-providers/receipt-items.js +58 -0
  150. package/dist/apps/services/payment-providers/receipt-items.js.map +1 -0
  151. package/dist/apps/services/pending-queue.d.ts +150 -0
  152. package/dist/apps/services/pending-queue.js +316 -0
  153. package/dist/apps/services/pending-queue.js.map +1 -0
  154. package/dist/apps/services/prepareSubmissionData.d.ts +2 -0
  155. package/dist/apps/services/prepareSubmissionData.js +113 -0
  156. package/dist/apps/services/prepareSubmissionData.js.map +1 -0
  157. package/dist/apps/services/query-string.d.ts +1 -0
  158. package/dist/apps/services/query-string.js +16 -0
  159. package/dist/apps/services/query-string.js.map +1 -0
  160. package/dist/apps/services/replaceInjectablesWithSubmissionValues.d.ts +3 -0
  161. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js +18 -0
  162. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js.map +1 -0
  163. package/dist/apps/services/schedulingHandlers.d.ts +36 -0
  164. package/dist/apps/services/schedulingHandlers.js +76 -0
  165. package/dist/apps/services/schedulingHandlers.js.map +1 -0
  166. package/dist/apps/services/server-validation.d.ts +2 -0
  167. package/dist/apps/services/server-validation.js +36 -0
  168. package/dist/apps/services/server-validation.js.map +1 -0
  169. package/dist/apps/services/serverRequest.d.ts +5 -0
  170. package/dist/apps/services/serverRequest.js +24 -0
  171. package/dist/apps/services/serverRequest.js.map +1 -0
  172. package/dist/apps/services/submit.d.ts +19 -0
  173. package/dist/apps/services/submit.js +219 -0
  174. package/dist/apps/services/submit.js.map +1 -0
  175. package/dist/apps/services/uploadAttachment.d.ts +52 -0
  176. package/dist/apps/services/uploadAttachment.js +73 -0
  177. package/dist/apps/services/uploadAttachment.js.map +1 -0
  178. package/dist/apps/services/user-token.d.ts +27 -0
  179. package/dist/apps/services/user-token.js +33 -0
  180. package/dist/apps/services/user-token.js.map +1 -0
  181. package/dist/apps/services/utils.d.ts +12 -0
  182. package/dist/apps/services/utils.js +100 -0
  183. package/dist/apps/services/utils.js.map +1 -0
  184. package/dist/apps/submission-service.d.ts +226 -0
  185. package/dist/apps/submission-service.js +425 -0
  186. package/dist/apps/submission-service.js.map +1 -0
  187. package/dist/apps/tenants.d.ts +30 -0
  188. package/dist/apps/tenants.js +155 -0
  189. package/dist/apps/tenants.js.map +1 -0
  190. package/dist/apps/types/form.d.ts +4 -0
  191. package/dist/apps/types/form.js +2 -0
  192. package/dist/apps/types/form.js.map +1 -0
  193. package/dist/apps/types/payments.d.ts +45 -0
  194. package/dist/apps/types/payments.js +2 -0
  195. package/dist/apps/types/payments.js.map +1 -0
  196. package/dist/apps/types/scheduling.d.ts +5 -0
  197. package/dist/apps/types/scheduling.js +2 -0
  198. package/dist/apps/types/scheduling.js.map +1 -0
  199. package/dist/apps/types/submissions.d.ts +175 -0
  200. package/dist/apps/types/submissions.js +2 -0
  201. package/dist/apps/types/submissions.js.map +1 -0
  202. package/dist/components/ArcGISWebMap.d.ts +3 -3
  203. package/dist/components/ArcGISWebMap.js +29 -39
  204. package/dist/components/ArcGISWebMap.js.map +1 -1
  205. package/dist/components/Clickable.d.ts +1 -1
  206. package/dist/components/Clickable.js +2 -1
  207. package/dist/components/Clickable.js.map +1 -1
  208. package/dist/components/ConfirmDialog.d.ts +2 -2
  209. package/dist/components/ConfirmDialog.js +8 -14
  210. package/dist/components/ConfirmDialog.js.map +1 -1
  211. package/dist/components/CopyToClipboardIconButton.d.ts +1 -1
  212. package/dist/components/CopyToClipboardIconButton.js +10 -14
  213. package/dist/components/CopyToClipboardIconButton.js.map +1 -1
  214. package/dist/components/CustomAccordion.d.ts +2 -19
  215. package/dist/components/ErrorSnackbar.d.ts +1 -1
  216. package/dist/components/ErrorSnackbar.js +6 -7
  217. package/dist/components/ErrorSnackbar.js.map +1 -1
  218. package/dist/components/ImageCropper/CropModal.d.ts +1 -1
  219. package/dist/components/ImageCropper/CropModal.js +2 -8
  220. package/dist/components/ImageCropper/CropModal.js.map +1 -1
  221. package/dist/components/ImageCropper/index.d.ts +1 -1
  222. package/dist/components/ImageCropper/index.js +3 -5
  223. package/dist/components/ImageCropper/index.js.map +1 -1
  224. package/dist/components/InputClear.js +2 -3
  225. package/dist/components/InputClear.js.map +1 -1
  226. package/dist/components/InputField.d.ts +3 -2
  227. package/dist/components/InputField.js +5 -2
  228. package/dist/components/InputField.js.map +1 -1
  229. package/dist/components/Lists.d.ts +1 -3
  230. package/dist/components/Lists.js +2 -2
  231. package/dist/components/Lists.js.map +1 -1
  232. package/dist/components/LoadingWithMessage.js +2 -6
  233. package/dist/components/LoadingWithMessage.js.map +1 -1
  234. package/dist/components/MaterialIcon.d.ts +2 -4
  235. package/dist/components/MaterialIcon.js +4 -4
  236. package/dist/components/MaterialIcon.js.map +1 -1
  237. package/dist/components/NotificationGrid.d.ts +2 -2
  238. package/dist/components/NotificationGrid.js +4 -7
  239. package/dist/components/NotificationGrid.js.map +1 -1
  240. package/dist/components/QuillHTML.d.ts +1 -1
  241. package/dist/components/QuillHTML.js +2 -1
  242. package/dist/components/QuillHTML.js.map +1 -1
  243. package/dist/components/SuccessSnackbar.d.ts +1 -1
  244. package/dist/components/SuccessSnackbar.js +3 -6
  245. package/dist/components/SuccessSnackbar.js.map +1 -1
  246. package/dist/components/ValidationErrorsCard.d.ts +2 -2
  247. package/dist/components/ValidationErrorsCard.js +32 -49
  248. package/dist/components/ValidationErrorsCard.js.map +1 -1
  249. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.d.ts +1 -1
  250. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js +6 -7
  251. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js.map +1 -1
  252. package/dist/components/calendar-bookings/CalendarBookingsContainer.d.ts +1 -1
  253. package/dist/components/calendar-bookings/CalendarBookingsContainer.js +9 -11
  254. package/dist/components/calendar-bookings/CalendarBookingsContainer.js.map +1 -1
  255. package/dist/components/calendar-bookings/CalendarBookingsForm.d.ts +2 -2
  256. package/dist/components/calendar-bookings/CalendarBookingsForm.js +34 -46
  257. package/dist/components/calendar-bookings/CalendarBookingsForm.js.map +1 -1
  258. package/dist/components/calendar-bookings/CalendarBookingsProvider.d.ts +1 -1
  259. package/dist/components/calendar-bookings/CalendarBookingsProvider.js +2 -6
  260. package/dist/components/calendar-bookings/CalendarBookingsProvider.js.map +1 -1
  261. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.d.ts +1 -1
  262. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js +6 -7
  263. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js.map +1 -1
  264. package/dist/components/calendar-bookings/ErrorModal.d.ts +1 -1
  265. package/dist/components/calendar-bookings/ErrorModal.js +8 -12
  266. package/dist/components/calendar-bookings/ErrorModal.js.map +1 -1
  267. package/dist/components/downloadable-files/LayoutProvider.d.ts +1 -1
  268. package/dist/components/downloadable-files/LayoutProvider.js +2 -1
  269. package/dist/components/downloadable-files/LayoutProvider.js.map +1 -1
  270. package/dist/components/downloadable-files/index.d.ts +2 -2
  271. package/dist/components/downloadable-files/index.js +4 -6
  272. package/dist/components/downloadable-files/index.js.map +1 -1
  273. package/dist/components/downloadable-files/resource-components.d.ts +4 -4
  274. package/dist/components/downloadable-files/resource-components.js +10 -33
  275. package/dist/components/downloadable-files/resource-components.js.map +1 -1
  276. package/dist/components/formStore/FormStoreTableProvider.d.ts +1 -1
  277. package/dist/components/formStore/FormStoreTableProvider.js +6 -16
  278. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
  279. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.d.ts +1 -1
  280. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +3 -4
  281. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
  282. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.d.ts +1 -1
  283. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js +21 -54
  284. package/dist/components/formStore/OneBlinkFormStoreColumnsButton.js.map +1 -1
  285. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.d.ts +2 -2
  286. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +8 -27
  287. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
  288. package/dist/components/formStore/OneBlinkFormStoreProvider.d.ts +1 -1
  289. package/dist/components/formStore/OneBlinkFormStoreProvider.js +5 -6
  290. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
  291. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.d.ts +1 -1
  292. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +2 -3
  293. package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -1
  294. package/dist/components/formStore/OneBlinkFormStoreTable.d.ts +1 -1
  295. package/dist/components/formStore/OneBlinkFormStoreTable.js +129 -95
  296. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
  297. package/dist/components/formStore/display/ElementDisplay.d.ts +3 -4
  298. package/dist/components/formStore/display/ElementDisplay.js +11 -14
  299. package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
  300. package/dist/components/formStore/display/FormStoreIcon.d.ts +1 -1
  301. package/dist/components/formStore/display/FormStoreIcon.js +2 -2
  302. package/dist/components/formStore/display/FormStoreIcon.js.map +1 -1
  303. package/dist/components/formStore/table/ActionedByTableCell.d.ts +1 -1
  304. package/dist/components/formStore/table/ActionedByTableCell.js +6 -7
  305. package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -1
  306. package/dist/components/formStore/table/ColumnFilters.d.ts +3 -3
  307. package/dist/components/formStore/table/ColumnFilters.js +85 -101
  308. package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
  309. package/dist/components/formStore/table/FormElementTableCell.d.ts +1 -1
  310. package/dist/components/formStore/table/FormElementTableCell.js +35 -98
  311. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
  312. package/dist/components/formStore/table/HeaderCellMoreButton.d.ts +4 -4
  313. package/dist/components/formStore/table/HeaderCellMoreButton.js +26 -32
  314. package/dist/components/formStore/table/HeaderCellMoreButton.js.map +1 -1
  315. package/dist/components/formStore/table/Pickers.d.ts +4 -4
  316. package/dist/components/formStore/table/Pickers.js +15 -14
  317. package/dist/components/formStore/table/Pickers.js.map +1 -1
  318. package/dist/components/formStore/table/RepeatableSetCell.js +17 -21
  319. package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -1
  320. package/dist/components/formStore/table/RepeatableSetCellAccordion.js +2 -4
  321. package/dist/components/formStore/table/RepeatableSetCellAccordion.js.map +1 -1
  322. package/dist/components/formStore/table/TableCellCopyButton.d.ts +1 -1
  323. package/dist/components/formStore/table/TableCellCopyButton.js +2 -3
  324. package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -1
  325. package/dist/components/formStore/table/generateColumns.d.ts +6 -7
  326. package/dist/components/formStore/table/generateColumns.js +23 -18
  327. package/dist/components/formStore/table/generateColumns.js.map +1 -1
  328. package/dist/components/formStore/table/getVersionedState.d.ts +4 -3
  329. package/dist/components/formStore/table/getVersionedState.js +23 -6
  330. package/dist/components/formStore/table/getVersionedState.js.map +1 -1
  331. package/dist/components/formStore/table/useFormStoreTable.d.ts +146 -37
  332. package/dist/components/formStore/table/useFormStoreTable.js +268 -199
  333. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
  334. package/dist/components/formStore/useFormStoreTableContext.d.ts +144 -35
  335. package/dist/components/messages/ErrorMessage.js +3 -3
  336. package/dist/components/messages/ErrorMessage.js.map +1 -1
  337. package/dist/components/messages/LargeIconMessage.js +2 -6
  338. package/dist/components/messages/LargeIconMessage.js.map +1 -1
  339. package/dist/components/messages/NoResourcesYet.d.ts +1 -1
  340. package/dist/components/messages/NoResourcesYet.js +2 -1
  341. package/dist/components/messages/NoResourcesYet.js.map +1 -1
  342. package/dist/components/mfa/MfaDialog.d.ts +2 -2
  343. package/dist/components/mfa/MfaDialog.js +10 -49
  344. package/dist/components/mfa/MfaDialog.js.map +1 -1
  345. package/dist/components/mfa/MultiFactorAuthentication.d.ts +2 -5
  346. package/dist/components/mfa/MultiFactorAuthentication.js +14 -45
  347. package/dist/components/mfa/MultiFactorAuthentication.js.map +1 -1
  348. package/dist/components/payments/PaymentForm.d.ts +1 -1
  349. package/dist/components/payments/PaymentForm.js +5 -10
  350. package/dist/components/payments/PaymentForm.js.map +1 -1
  351. package/dist/components/payments/WestpacQuickStreamPaymentForm.d.ts +2 -2
  352. package/dist/components/payments/WestpacQuickStreamPaymentForm.js +12 -46
  353. package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
  354. package/dist/components/receipts/Receipt.d.ts +1 -1
  355. package/dist/components/receipts/Receipt.js +2 -2
  356. package/dist/components/receipts/Receipt.js.map +1 -1
  357. package/dist/components/receipts/ReceiptButton.d.ts +1 -1
  358. package/dist/components/receipts/ReceiptButton.js +3 -2
  359. package/dist/components/receipts/ReceiptButton.js.map +1 -1
  360. package/dist/components/receipts/ReceiptList.d.ts +1 -1
  361. package/dist/components/receipts/ReceiptList.js +2 -9
  362. package/dist/components/receipts/ReceiptList.js.map +1 -1
  363. package/dist/components/receipts/ReceiptListItem.d.ts +1 -1
  364. package/dist/components/receipts/ReceiptListItem.js +2 -11
  365. package/dist/components/receipts/ReceiptListItem.js.map +1 -1
  366. package/dist/components/renderer/AnnotationModal.d.ts +1 -1
  367. package/dist/components/renderer/AnnotationModal.js +6 -14
  368. package/dist/components/renderer/AnnotationModal.js.map +1 -1
  369. package/dist/components/renderer/AutocompleteDropdown.d.ts +1 -1
  370. package/dist/components/renderer/AutocompleteDropdown.js +16 -35
  371. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
  372. package/dist/components/renderer/CopyToClipboardButton.d.ts +1 -1
  373. package/dist/components/renderer/CopyToClipboardButton.js +2 -4
  374. package/dist/components/renderer/CopyToClipboardButton.js.map +1 -1
  375. package/dist/components/renderer/CustomisableButtonInner.js +2 -4
  376. package/dist/components/renderer/CustomisableButtonInner.js.map +1 -1
  377. package/dist/components/renderer/FormElementLabelContainer.d.ts +3 -3
  378. package/dist/components/renderer/FormElementLabelContainer.js +7 -14
  379. package/dist/components/renderer/FormElementLabelContainer.js.map +1 -1
  380. package/dist/components/renderer/FormElementOptions.d.ts +1 -1
  381. package/dist/components/renderer/FormElementOptions.js +4 -5
  382. package/dist/components/renderer/FormElementOptions.js.map +1 -1
  383. package/dist/components/renderer/FormElementValidationMessage.js +3 -5
  384. package/dist/components/renderer/FormElementValidationMessage.js.map +1 -1
  385. package/dist/components/renderer/LookupButton.d.ts +1 -1
  386. package/dist/components/renderer/LookupButton.js +4 -8
  387. package/dist/components/renderer/LookupButton.js.map +1 -1
  388. package/dist/components/renderer/LookupNotification.d.ts +1 -1
  389. package/dist/components/renderer/LookupNotification.js +16 -38
  390. package/dist/components/renderer/LookupNotification.js.map +1 -1
  391. package/dist/components/renderer/Modal.d.ts +3 -3
  392. package/dist/components/renderer/Modal.js +7 -10
  393. package/dist/components/renderer/Modal.js.map +1 -1
  394. package/dist/components/renderer/OnLoading.d.ts +1 -1
  395. package/dist/components/renderer/OnLoading.js +3 -3
  396. package/dist/components/renderer/OnLoading.js.map +1 -1
  397. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.d.ts +1 -1
  398. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js +3 -5
  399. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
  400. package/dist/components/renderer/OneBlinkFormElements.d.ts +1 -1
  401. package/dist/components/renderer/OneBlinkFormElements.js +61 -90
  402. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
  403. package/dist/components/renderer/PageFormElements.d.ts +1 -1
  404. package/dist/components/renderer/PageFormElements.js +3 -5
  405. package/dist/components/renderer/PageFormElements.js.map +1 -1
  406. package/dist/components/renderer/ProgressBar.d.ts +1 -1
  407. package/dist/components/renderer/ProgressBar.js +2 -1
  408. package/dist/components/renderer/ProgressBar.js.map +1 -1
  409. package/dist/components/renderer/ReverseGeocode.d.ts +1 -1
  410. package/dist/components/renderer/ReverseGeocode.js +3 -2
  411. package/dist/components/renderer/ReverseGeocode.js.map +1 -1
  412. package/dist/components/renderer/ToggleAllCheckbox.js +4 -5
  413. package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -1
  414. package/dist/components/renderer/Tooltip.d.ts +1 -1
  415. package/dist/components/renderer/Tooltip.js +5 -1
  416. package/dist/components/renderer/Tooltip.js.map +1 -1
  417. package/dist/components/renderer/attachments/AttachmentStatus.d.ts +1 -1
  418. package/dist/components/renderer/attachments/AttachmentStatus.js +6 -15
  419. package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -1
  420. package/dist/components/renderer/attachments/DropdownMenu.js +30 -42
  421. package/dist/components/renderer/attachments/DropdownMenu.js.map +1 -1
  422. package/dist/components/renderer/attachments/FileCard.d.ts +1 -1
  423. package/dist/components/renderer/attachments/FileCard.js +2 -10
  424. package/dist/components/renderer/attachments/FileCard.js.map +1 -1
  425. package/dist/components/renderer/attachments/FileCardContent.d.ts +1 -1
  426. package/dist/components/renderer/attachments/FileCardContent.js +3 -4
  427. package/dist/components/renderer/attachments/FileCardContent.js.map +1 -1
  428. package/dist/components/renderer/attachments/ImagePreviewUnavailable.d.ts +1 -1
  429. package/dist/components/renderer/attachments/ImagePreviewUnavailable.js +2 -5
  430. package/dist/components/renderer/attachments/ImagePreviewUnavailable.js.map +1 -1
  431. package/dist/components/renderer/attachments/ProgressBar.js +2 -4
  432. package/dist/components/renderer/attachments/ProgressBar.js.map +1 -1
  433. package/dist/form-elements/ComplianceButton.js +3 -4
  434. package/dist/form-elements/ComplianceButton.js.map +1 -1
  435. package/dist/form-elements/FormElementABN.d.ts +1 -1
  436. package/dist/form-elements/FormElementABN.js +18 -28
  437. package/dist/form-elements/FormElementABN.js.map +1 -1
  438. package/dist/form-elements/FormElementAPINSWLiquorLicence.d.ts +2 -2
  439. package/dist/form-elements/FormElementAPINSWLiquorLicence.js +4 -22
  440. package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
  441. package/dist/form-elements/FormElementArcGISWebMap.d.ts +1 -1
  442. package/dist/form-elements/FormElementArcGISWebMap.js +21 -36
  443. package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
  444. package/dist/form-elements/FormElementAutocomplete.d.ts +1 -1
  445. package/dist/form-elements/FormElementAutocomplete.js +6 -10
  446. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  447. package/dist/form-elements/FormElementBSB.d.ts +1 -1
  448. package/dist/form-elements/FormElementBSB.js +22 -31
  449. package/dist/form-elements/FormElementBSB.js.map +1 -1
  450. package/dist/form-elements/FormElementBarcodeScanner.d.ts +1 -1
  451. package/dist/form-elements/FormElementBarcodeScanner.js +16 -50
  452. package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
  453. package/dist/form-elements/FormElementBoolean.d.ts +1 -1
  454. package/dist/form-elements/FormElementBoolean.js +4 -4
  455. package/dist/form-elements/FormElementBoolean.js.map +1 -1
  456. package/dist/form-elements/FormElementCalculation.d.ts +1 -1
  457. package/dist/form-elements/FormElementCalculation.js +4 -11
  458. package/dist/form-elements/FormElementCalculation.js.map +1 -1
  459. package/dist/form-elements/FormElementCamera.d.ts +1 -1
  460. package/dist/form-elements/FormElementCamera.js +7 -53
  461. package/dist/form-elements/FormElementCamera.js.map +1 -1
  462. package/dist/form-elements/FormElementCaptcha.d.ts +1 -1
  463. package/dist/form-elements/FormElementCaptcha.js +2 -4
  464. package/dist/form-elements/FormElementCaptcha.js.map +1 -1
  465. package/dist/form-elements/FormElementCheckBoxes.d.ts +1 -1
  466. package/dist/form-elements/FormElementCheckBoxes.js +23 -33
  467. package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
  468. package/dist/form-elements/FormElementCivicaNameRecord.d.ts +1 -1
  469. package/dist/form-elements/FormElementCivicaNameRecord.js +3 -2
  470. package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
  471. package/dist/form-elements/FormElementCivicaStreetName.d.ts +1 -1
  472. package/dist/form-elements/FormElementCivicaStreetName.js +3 -5
  473. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  474. package/dist/form-elements/FormElementCompliance.d.ts +2 -2
  475. package/dist/form-elements/FormElementCompliance.js +13 -25
  476. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  477. package/dist/form-elements/FormElementDate.d.ts +1 -1
  478. package/dist/form-elements/FormElementDate.js +3 -10
  479. package/dist/form-elements/FormElementDate.js.map +1 -1
  480. package/dist/form-elements/FormElementDateTime.d.ts +1 -1
  481. package/dist/form-elements/FormElementDateTime.js +3 -10
  482. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  483. package/dist/form-elements/FormElementEmail.d.ts +1 -1
  484. package/dist/form-elements/FormElementEmail.js +4 -13
  485. package/dist/form-elements/FormElementEmail.js.map +1 -1
  486. package/dist/form-elements/FormElementFile.d.ts +1 -1
  487. package/dist/form-elements/FormElementFile.js +2 -12
  488. package/dist/form-elements/FormElementFile.js.map +1 -1
  489. package/dist/form-elements/FormElementFiles.d.ts +2 -2
  490. package/dist/form-elements/FormElementFiles.js +9 -17
  491. package/dist/form-elements/FormElementFiles.js.map +1 -1
  492. package/dist/form-elements/FormElementForm.d.ts +1 -1
  493. package/dist/form-elements/FormElementForm.js +2 -1
  494. package/dist/form-elements/FormElementForm.js.map +1 -1
  495. package/dist/form-elements/FormElementFreshdeskDependentField.d.ts +1 -1
  496. package/dist/form-elements/FormElementFreshdeskDependentField.js +5 -11
  497. package/dist/form-elements/FormElementFreshdeskDependentField.js.map +1 -1
  498. package/dist/form-elements/FormElementGeoscapeAddress.d.ts +1 -1
  499. package/dist/form-elements/FormElementGeoscapeAddress.js +3 -5
  500. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  501. package/dist/form-elements/FormElementGoogleAddress.d.ts +1 -1
  502. package/dist/form-elements/FormElementGoogleAddress.js +3 -8
  503. package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
  504. package/dist/form-elements/FormElementHTML.d.ts +1 -1
  505. package/dist/form-elements/FormElementHTML.js +2 -3
  506. package/dist/form-elements/FormElementHTML.js.map +1 -1
  507. package/dist/form-elements/FormElementHeading.d.ts +1 -1
  508. package/dist/form-elements/FormElementHeading.js +7 -8
  509. package/dist/form-elements/FormElementHeading.js.map +1 -1
  510. package/dist/form-elements/FormElementImage.d.ts +1 -1
  511. package/dist/form-elements/FormElementImage.js +3 -3
  512. package/dist/form-elements/FormElementImage.js.map +1 -1
  513. package/dist/form-elements/FormElementLocation.d.ts +1 -1
  514. package/dist/form-elements/FormElementLocation.js +21 -48
  515. package/dist/form-elements/FormElementLocation.js.map +1 -1
  516. package/dist/form-elements/FormElementLookupButton.d.ts +2 -3
  517. package/dist/form-elements/FormElementLookupButton.js +5 -8
  518. package/dist/form-elements/FormElementLookupButton.js.map +1 -1
  519. package/dist/form-elements/FormElementNumber.d.ts +1 -1
  520. package/dist/form-elements/FormElementNumber.js +4 -15
  521. package/dist/form-elements/FormElementNumber.js.map +1 -1
  522. package/dist/form-elements/FormElementPointAddress.d.ts +2 -2
  523. package/dist/form-elements/FormElementPointAddress.js +7 -14
  524. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  525. package/dist/form-elements/FormElementPointAddressV3.d.ts +1 -1
  526. package/dist/form-elements/FormElementPointAddressV3.js +3 -10
  527. package/dist/form-elements/FormElementPointAddressV3.js.map +1 -1
  528. package/dist/form-elements/FormElementPointCadastralParcel.d.ts +1 -1
  529. package/dist/form-elements/FormElementPointCadastralParcel.js +15 -27
  530. package/dist/form-elements/FormElementPointCadastralParcel.js.map +1 -1
  531. package/dist/form-elements/FormElementRadio.d.ts +1 -1
  532. package/dist/form-elements/FormElementRadio.js +24 -30
  533. package/dist/form-elements/FormElementRadio.js.map +1 -1
  534. package/dist/form-elements/FormElementRepeatableSet.d.ts +1 -1
  535. package/dist/form-elements/FormElementRepeatableSet.js +21 -39
  536. package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
  537. package/dist/form-elements/FormElementSection.d.ts +1 -1
  538. package/dist/form-elements/FormElementSection.js +16 -34
  539. package/dist/form-elements/FormElementSection.js.map +1 -1
  540. package/dist/form-elements/FormElementSelect.d.ts +1 -1
  541. package/dist/form-elements/FormElementSelect.js +12 -23
  542. package/dist/form-elements/FormElementSelect.js.map +1 -1
  543. package/dist/form-elements/FormElementSignature.d.ts +1 -1
  544. package/dist/form-elements/FormElementSignature.js +21 -46
  545. package/dist/form-elements/FormElementSignature.js.map +1 -1
  546. package/dist/form-elements/FormElementSummary.d.ts +1 -1
  547. package/dist/form-elements/FormElementSummary.js +9 -6
  548. package/dist/form-elements/FormElementSummary.js.map +1 -1
  549. package/dist/form-elements/FormElementTelephone.d.ts +1 -1
  550. package/dist/form-elements/FormElementTelephone.js +4 -13
  551. package/dist/form-elements/FormElementTelephone.js.map +1 -1
  552. package/dist/form-elements/FormElementText.d.ts +1 -1
  553. package/dist/form-elements/FormElementText.js +6 -21
  554. package/dist/form-elements/FormElementText.js.map +1 -1
  555. package/dist/form-elements/FormElementTextarea.d.ts +1 -1
  556. package/dist/form-elements/FormElementTextarea.js +6 -20
  557. package/dist/form-elements/FormElementTextarea.js.map +1 -1
  558. package/dist/form-elements/FormElementTime.d.ts +1 -1
  559. package/dist/form-elements/FormElementTime.js +3 -10
  560. package/dist/form-elements/FormElementTime.js.map +1 -1
  561. package/dist/form-elements/OptionButton.js +3 -5
  562. package/dist/form-elements/OptionButton.js.map +1 -1
  563. package/dist/hooks/attachments/useAttachment.d.ts +1 -1
  564. package/dist/hooks/attachments/useAttachment.js +1 -1
  565. package/dist/hooks/attachments/useAttachment.js.map +1 -1
  566. package/dist/hooks/attachments/useAttachmentBlobs.d.ts +1 -1
  567. package/dist/hooks/attachments/useAttachmentBlobs.js +2 -1
  568. package/dist/hooks/attachments/useAttachmentBlobs.js.map +1 -1
  569. package/dist/hooks/attachments/useAttachments.d.ts +1 -1
  570. package/dist/hooks/attachments/useAttachments.js.map +1 -1
  571. package/dist/hooks/form-date-picker/useFormDatePickerProps.d.ts +7 -8
  572. package/dist/hooks/form-date-picker/useFormDatePickerProps.js +10 -10
  573. package/dist/hooks/form-date-picker/useFormDatePickerProps.js.map +1 -1
  574. package/dist/hooks/useAuth.d.ts +1 -1
  575. package/dist/hooks/useAuth.js +3 -2
  576. package/dist/hooks/useAuth.js.map +1 -1
  577. package/dist/hooks/useConditionalLogic.js +1 -1
  578. package/dist/hooks/useConditionalLogic.js.map +1 -1
  579. package/dist/hooks/useDrafts.d.ts +2 -2
  580. package/dist/hooks/useDrafts.js +3 -2
  581. package/dist/hooks/useDrafts.js.map +1 -1
  582. package/dist/hooks/useDynamicOptionsLoaderState.d.ts +2 -2
  583. package/dist/hooks/useDynamicOptionsLoaderState.js +5 -14
  584. package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
  585. package/dist/hooks/useFormElementLookups.d.ts +2 -2
  586. package/dist/hooks/useFormElementLookups.js +3 -2
  587. package/dist/hooks/useFormElementLookups.js.map +1 -1
  588. package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -1
  589. package/dist/hooks/useFormSubmissionAutoSaveState.js +1 -1
  590. package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
  591. package/dist/hooks/useFormSubmissionDuration.js +2 -0
  592. package/dist/hooks/useFormSubmissionDuration.js.map +1 -1
  593. package/dist/hooks/useFormSubmissionModelContext.d.ts +1 -1
  594. package/dist/hooks/useFormSubmissionModelContext.js +2 -1
  595. package/dist/hooks/useFormSubmissionModelContext.js.map +1 -1
  596. package/dist/hooks/useFormSubmissionState.d.ts +1 -1
  597. package/dist/hooks/useFormSubmissionState.js +1 -1
  598. package/dist/hooks/useFormSubmissionState.js.map +1 -1
  599. package/dist/hooks/useIsHovering.d.ts +1 -1
  600. package/dist/hooks/useIsHovering.js +4 -4
  601. package/dist/hooks/useIsHovering.js.map +1 -1
  602. package/dist/hooks/useIsOffline.d.ts +1 -1
  603. package/dist/hooks/useIsOffline.js +3 -2
  604. package/dist/hooks/useIsOffline.js.map +1 -1
  605. package/dist/hooks/useIsPageVisible.d.ts +1 -1
  606. package/dist/hooks/useIsPageVisible.js +2 -1
  607. package/dist/hooks/useIsPageVisible.js.map +1 -1
  608. package/dist/hooks/useLoadDataState.js +3 -1
  609. package/dist/hooks/useLoadDataState.js.map +1 -1
  610. package/dist/hooks/useLogin.js +1 -1
  611. package/dist/hooks/useLogin.js.map +1 -1
  612. package/dist/hooks/useMfa.d.ts +2 -2
  613. package/dist/hooks/useMfa.js +3 -2
  614. package/dist/hooks/useMfa.js.map +1 -1
  615. package/dist/hooks/useOnUploadAttachment.d.ts +1 -1
  616. package/dist/hooks/useOnUploadAttachment.js +1 -1
  617. package/dist/hooks/useOnUploadAttachment.js.map +1 -1
  618. package/dist/hooks/useOneBlinkFormContainer.d.ts +2 -1
  619. package/dist/hooks/useOneBlinkFormContainer.js +2 -2
  620. package/dist/hooks/useOneBlinkFormContainer.js.map +1 -1
  621. package/dist/hooks/usePages.d.ts +1 -1
  622. package/dist/hooks/usePendingSubmissions.d.ts +2 -2
  623. package/dist/hooks/usePendingSubmissions.js +3 -2
  624. package/dist/hooks/usePendingSubmissions.js.map +1 -1
  625. package/dist/hooks/useReCAPTCHAProps.d.ts +1 -1
  626. package/dist/hooks/useReCAPTCHAProps.js.map +1 -1
  627. package/dist/hooks/useReplaceableText.js +1 -1
  628. package/dist/hooks/useReplaceableText.js.map +1 -1
  629. package/dist/hooks/useSignUp.js +1 -1
  630. package/dist/hooks/useSignUp.js.map +1 -1
  631. package/dist/index.d.ts +1 -0
  632. package/dist/index.js +2 -0
  633. package/dist/index.js.map +1 -1
  634. package/dist/services/attachments.d.ts +1 -1
  635. package/dist/services/attachments.js +1 -1
  636. package/dist/services/attachments.js.map +1 -1
  637. package/dist/services/blob-utils.js +1 -1
  638. package/dist/services/blob-utils.js.map +1 -1
  639. package/dist/services/checkIfAttachmentsExist.d.ts +1 -1
  640. package/dist/services/checkIfAttachmentsExist.js.map +1 -1
  641. package/dist/services/defaultCoordinates.js +1 -1
  642. package/dist/services/defaultCoordinates.js.map +1 -1
  643. package/dist/services/download-file.d.ts +1 -1
  644. package/dist/services/download-file.js +2 -2
  645. package/dist/services/download-file.js.map +1 -1
  646. package/dist/services/drawTimestampOnCanvas.js +1 -1
  647. package/dist/services/drawTimestampOnCanvas.js.map +1 -1
  648. package/dist/services/form-validation/validateSubmission.js +1 -1
  649. package/dist/services/form-validation/validateSubmission.js.map +1 -1
  650. package/dist/services/form-validation/validators.d.ts +1 -1
  651. package/dist/services/form-validation/validators.js.map +1 -1
  652. package/dist/services/generate-default-data.js +1 -1
  653. package/dist/services/generate-default-data.js.map +1 -1
  654. package/dist/services/injectableOptions.js +1 -1
  655. package/dist/services/injectableOptions.js.map +1 -1
  656. package/dist/styles.css +208 -204
  657. package/dist/types/attachments.d.ts +1 -1
  658. package/dist/types/attachments.js.map +1 -1
  659. package/dist/utils/sendGoogleAnalyticsEvent.js +1 -1
  660. package/dist/utils/sendGoogleAnalyticsEvent.js.map +1 -1
  661. package/package.json +58 -51
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { formService } from '@oneblink/apps';
2
+ import { formService } from '../apps';
3
3
  import { FormTypes, FreshdeskTypes } from '@oneblink/types';
4
4
  import { LoadDataState } from './useLoadDataState';
5
5
  import { UpdateFormElementsHandler } from '../types/form';
@@ -12,6 +12,6 @@ export declare const FreshdeskFieldsStateContext: React.Context<LoadDataState<Fr
12
12
  export declare function FormElementOptionsContextProvider({ formIsReadOnly, children, }: {
13
13
  formIsReadOnly: boolean;
14
14
  children: React.ReactNode;
15
- }): React.JSX.Element;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
16
  export declare function useLoadDynamicOptionsEffect(formElement: FormTypes.FormElementWithOptions, onUpdateFormElements: UpdateFormElementsHandler): void;
17
17
  export {};
@@ -1,6 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
3
  import { formElementsService, typeCastService } from '@oneblink/sdk-core';
3
- import { formService, localisationService, OneBlinkAppsError, } from '@oneblink/apps';
4
+ import { formService, localisationService, OneBlinkAppsError } from '../apps';
4
5
  import useLoadDataState from './useLoadDataState';
5
6
  import OneBlinkAppsErrorOriginalMessage from '../components/renderer/OneBlinkAppsErrorOriginalMessage';
6
7
  import useFormDefinition from './useFormDefinition';
@@ -69,19 +70,9 @@ export function FormElementOptionsContextProvider({ formIsReadOnly, children, })
69
70
  }
70
71
  }, [freshdeskFieldsState, optionsSetResults, optionsSetResultsState]);
71
72
  if (error) {
72
- return (React.createElement(React.Fragment, null,
73
- React.createElement("div", { className: "has-text-centered" },
74
- React.createElement(MaterialIcon, { className: "has-text-warning icon-x-large" }, "error"),
75
- React.createElement("h3", { className: "title is-3" }, error.title),
76
- React.createElement("p", null, error.message),
77
- React.createElement("p", { className: "has-text-grey" }, localisationService.formatDatetimeLong(new Date()))),
78
- React.createElement(OneBlinkAppsErrorOriginalMessage, { error: error.originalError })));
73
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "has-text-centered", children: [_jsx(MaterialIcon, { className: "has-text-warning icon-x-large", children: "error" }), _jsx("h3", { className: "title is-3", children: error.title }), _jsx("p", { children: error.message }), _jsx("p", { className: "has-text-grey", children: localisationService.formatDatetimeLong(new Date()) })] }), _jsx(OneBlinkAppsErrorOriginalMessage, { error: error.originalError })] }));
79
74
  }
80
- return (React.createElement(React.Fragment, null,
81
- optionsSetResults.map((optionsSetResult) => (React.createElement(React.Fragment, { key: optionsSetResult.formElementOptionsSet.id },
82
- React.createElement(LoadOptionsSet, { optionsSetResult: optionsSetResult, form: form, setOptionsSetResults: setOptionsSetResults })))),
83
- React.createElement(FormElementOptionsContext.Provider, { value: optionsSetResults },
84
- React.createElement(FreshdeskFieldsStateContext.Provider, { value: freshdeskFieldsState }, children))));
75
+ return (_jsxs(_Fragment, { children: [optionsSetResults.map((optionsSetResult) => (_jsx(React.Fragment, { children: _jsx(LoadOptionsSet, { optionsSetResult: optionsSetResult, form: form, setOptionsSetResults: setOptionsSetResults }) }, optionsSetResult.formElementOptionsSet.id))), _jsx(FormElementOptionsContext.Provider, { value: optionsSetResults, children: _jsx(FreshdeskFieldsStateContext.Provider, { value: freshdeskFieldsState, children: children }) })] }));
85
76
  }
86
77
  const LoadOptionsSet = React.memo(function LoadOptionsSet({ form, optionsSetResult, setOptionsSetResults, }) {
87
78
  const hasOptionsSet = React.useMemo(() => {
@@ -149,7 +140,7 @@ const LoadOptionsSet = React.memo(function LoadOptionsSet({ form, optionsSetResu
149
140
  optionsSetResult.result,
150
141
  setOptionsSetResult,
151
142
  ]);
152
- return React.createElement(React.Fragment, null);
143
+ return _jsx(_Fragment, {});
153
144
  });
154
145
  export function useLoadDynamicOptionsEffect(formElement, onUpdateFormElements) {
155
146
  const form = useFormDefinition();
@@ -1 +1 @@
1
- {"version":3,"file":"useDynamicOptionsLoaderState.js","sourceRoot":"","sources":["../../src/hooks/useDynamicOptionsLoaderState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,gBAAmC,MAAM,oBAAoB,CAAA;AACpE,OAAO,gCAAgC,MAAM,yDAAyD,CAAA;AACtG,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,YAAY,MAAM,4BAA4B,CAAA;AAQrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,aAAa,CAE1D,EAAE,CAAC,CAAA;AACL,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAE5D,SAAS,CAAC,CAAA;AAEZ,MAAM,UAAU,iCAAiC,CAAC,EAChD,cAAc,EACd,QAAQ,GAIT;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;IAEhC,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAU,GAAG,EAAE;QACrD,OAAO,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAC1C,IAAI,CAAC,QAAQ,EACb,CAAC,WAAW,EAAE,EAAE;YACd,MAAM,sBAAsB,GAC1B,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;YAC5D,OAAO,CACL,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW,MAAK,iBAAiB;gBACzD,CAAC,CAAC,sBAAsB,CAAC,kBAAkB,CAC5C,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnB,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC3C,KAAK,EAAE,WAAW,EAA4C,EAAE;QAC9D,IAAI,kBAAkB,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO,MAAM,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAC9C,CAAA;IAED,MAAM,CAAC,oBAAoB,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAA;IAEpE,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAU,GAAG,EAAE;QACjD,OAAO,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAC1C,IAAI,CAAC,QAAQ,EACb,CAAC,WAAW,EAAE,EAAE;YACd,MAAM,sBAAsB,GAC1B,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;YAC5D,OAAO,CACL,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW,MAAK,SAAS;gBACjD,CAAC,CAAC,sBAAsB,CAAC,kBAAkB,CAC5C,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnB,MAAM,0BAA0B,GAAG,KAAK,CAAC,WAAW,CAClD,KAAK,EAAE,WAAW,EAA+B,EAAE;QACjD,IAAI,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;YACtC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,sBAAsB,GAC1B,MAAM,WAAW,CAAC,yBAAyB,CACzC,IAAI,CAAC,cAAc,EACnB,WAAW,CACZ,CAAA;QACH,OAAO,sBAAsB,CAAC,GAAG,CAC/B,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YAC1B,qBAAqB;SACtB,CAAC,CACH,CAAA;IACH,CAAC,EACD,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CACtD,CAAA;IAED,MAAM,CAAC,sBAAsB,EAAE,AAAD,EAAG,oBAAoB,CAAC,GAAG,gBAAgB,CACvE,0BAA0B,CAC3B,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,sBAAsB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,sBAAsB,CAAC,MAAM,CAAA;QACtC,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAgC,GAAG,EAAE;;QAC9D,IAAI,oBAAoB,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5C,OAAO,oBAAoB,CAAC,KAAK,YAAY,iBAAiB;gBAC5D,CAAC,CAAC,oBAAoB,CAAC,KAAK;gBAC5B,CAAC,CAAC,IAAI,iBAAiB,CAAC,+BAA+B,EAAE;oBACrD,aAAa,EAAE,oBAAoB,CAAC,KAAK;iBAC1C,CAAC,CAAA;QACR,CAAC;QACD,IAAI,sBAAsB,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9C,OAAO,sBAAsB,CAAC,KAAK,YAAY,iBAAiB;gBAC9D,CAAC,CAAC,sBAAsB,CAAC,KAAK;gBAC9B,CAAC,CAAC,IAAI,iBAAiB,CAAC,+BAA+B,EAAE;oBACrD,aAAa,EAAE,sBAAsB,CAAC,KAAK;iBAC5C,CAAC,CAAA;QACR,CAAC;QACD,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YACjD,IAAI,CAAA,MAAA,gBAAgB,CAAC,MAAM,0CAAE,IAAI,MAAK,OAAO,EAAE,CAAC;gBAC9C,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAA;YACtC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAErE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL;YACE,6BAAK,SAAS,EAAC,mBAAmB;gBAChC,oBAAC,YAAY,IAAC,SAAS,EAAC,+BAA+B,YAExC;gBACf,4BAAI,SAAS,EAAC,YAAY,IAAE,KAAK,CAAC,KAAK,CAAM;gBAC7C,+BAAI,KAAK,CAAC,OAAO,CAAK;gBACtB,2BAAG,SAAS,EAAC,eAAe,IACzB,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE,CAAC,CACjD,CACA;YAEN,oBAAC,gCAAgC,IAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAI,CAC/D,CACJ,CAAA;IACH,CAAC;IAED,OAAO,CACL;QACG,iBAAiB,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAC3C,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAAE;YAC5D,oBAAC,cAAc,IACb,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,IAAI,EACV,oBAAoB,EAAE,oBAAoB,GAC1C,CACa,CAClB,CAAC;QACF,oBAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB;YAC1D,oBAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,oBAAoB,IAC9D,QAAQ,CAC4B,CACJ,CACpC,CACJ,CAAA;AACH,CAAC;AAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,EACxD,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,GAKrB;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAU,GAAG,EAAE;QAChD,OAAO,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAC1C,IAAI,CAAC,QAAQ,EACb,CAAC,WAAW,EAAE,EAAE;;YACd,MAAM,sBAAsB,GAC1B,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;YAE5D,OAAO,CACL,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,WAAW,MAAK,SAAS;gBACjD,CAAC,CAAA,MAAA,sBAAsB,CAAC,OAAO,0CAAE,MAAM,CAAA;gBACvC,sBAAsB,CAAC,kBAAkB;oBACvC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAC5C,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAA;IAE9D,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC3C,CAAC,MAAkC,EAAE,EAAE;QACrC,oBAAoB,CAAC,CAAC,wBAAwB,EAAE,EAAE;YAChD,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,EAAE;gBAC9D,IACE,uBAAuB,CAAC,qBAAqB,CAAC,EAAE;oBAChD,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,EACzC,CAAC;oBACD,OAAO;wBACL,GAAG,gBAAgB;wBACnB,MAAM;qBACP,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,uBAAuB,CAAA;gBAChC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CACzC,CAAA;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAE5C;QAAA,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,+BAA+B,CAC9D,gBAAgB,CAAC,qBAAqB,EACtC;oBACE,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;iBAClD,EACD,eAAe,CAAC,MAAM,CACvB,CAAA;gBACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpC,mBAAmB,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpC,mBAAmB,CAAC;wBAClB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,iBAAiB,CAC1B,KAAK,YAAY,KAAK;4BACpB,CAAC,CAAC,KAAK,CAAC,OAAO;4BACf,CAAC,CAAC,+BAA+B,EACnC;4BACE,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;yBAC1D,CACF;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,EAAE;QACD,IAAI,CAAC,qBAAqB;QAC1B,IAAI,CAAC,EAAE;QACP,aAAa;QACb,gBAAgB,CAAC,qBAAqB;QACtC,gBAAgB,CAAC,MAAM;QACvB,mBAAmB;KACpB,CAAC,CAAA;IAEF,OAAO,yCAAK,CAAA;AACd,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,2BAA2B,CACzC,WAA6C,EAC7C,oBAA+C;IAE/C,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;IAChC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IACrE,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAA;IAE1E,MAAM,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrD,IACE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,MAAK,SAAS;YAC1C,gEAAgE;YAChE,WAAW,CAAC,WAAW,KAAK,iBAAiB;YAC7C,sEAAsE;YACtE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EACnC,CAAC;YACD,OAAO,WAAW,CAAC,0BAA0B,CAC3C,oBAAoB,CAAC,MAAM,EAC3B,WAAW,CACZ,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAEvC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAA+B,GAAG,EAAE;QACxE;QACE,kDAAkD;QAClD,WAAW,CAAC,WAAW,KAAK,SAAS;YACrC,sEAAsE;YACtE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAClC,CAAC;YACD,OAAM;QACR,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAC3B,CAAC,gBAAgB,EAAE,EAAE,CACnB,gBAAgB,CAAC,qBAAqB,CAAC,EAAE;YACvC,WAAW,CAAC,kBAAkB,IAAI,gBAAgB,CAAC,MAAM,CAC9D,CAAA;IACH,CAAC,EAAE;QACD,WAAW,CAAC,kBAAkB;QAC9B,WAAW,CAAC,OAAO;QACnB,WAAW,CAAC,WAAW;QACvB,iBAAiB;KAClB,CAAC,CAAA;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,gBAAgB,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACtD,OAAM;QACR,CAAC;QAED,oBAAoB,CAAC,CAAC,YAAY,EAAE,EAAE;YACpC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;;gBAC9C,IAAI,mBAAmB,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE,CAAC;oBAC9C,QAAQ,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,0CAAE,IAAI,EAAE,CAAC;wBACvC,KAAK,QAAQ,CAAC,CAAC,CAAC;4BACd,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gCACxC,OAAO;oCACL,GAAG,mBAAmB;oCACtB,WAAW,EAAE,QAAQ;oCACrB,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG;oCACtC,0BAA0B,EACxB,gBAAgB,CAAC,MAAM,CAAC,0BAA0B;iCACrD,CAAA;4BACH,CAAC;4BACD,MAAK;wBACP,CAAC;wBACD,KAAK,SAAS,CAAC,CAAC,CAAC;4BACf,OAAO,WAAW,CAAC,uBAAuB,CACxC,IAAI,EACJ,WAAW,EACX,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAChC,CAAA;wBACH,CAAC;oBACH,CAAC;oBAED,IAAI,2BAA2B,EAAE,CAAC;wBAChC,OAAO;4BACL,GAAG,mBAAmB;4BACtB,OAAO,EACL,2BAA2B,CAAC,IAAI,KAAK,SAAS;gCAC5C,CAAC,CAAC,2BAA2B,CAAC,OAAO;gCACrC,CAAC,CAAC,EAAE;yBACT,CAAA;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,mBAAmB,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE;QACD,IAAI;QACJ,WAAW;QACX,2BAA2B;QAC3B,oBAAoB;QACpB,gBAAgB;KACjB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import * as React from 'react'\nimport { formElementsService, typeCastService } from '@oneblink/sdk-core'\nimport {\n formService,\n localisationService,\n OneBlinkAppsError,\n} from '@oneblink/apps'\nimport { FormTypes, FreshdeskTypes } from '@oneblink/types'\nimport useLoadDataState, { LoadDataState } from './useLoadDataState'\nimport OneBlinkAppsErrorOriginalMessage from '../components/renderer/OneBlinkAppsErrorOriginalMessage'\nimport useFormDefinition from './useFormDefinition'\nimport MaterialIcon from '../components/MaterialIcon'\nimport { UpdateFormElementsHandler } from '../types/form'\n\ntype OptionsSetResult = {\n formElementOptionsSet: FormTypes.FormElementOptionSet\n result?: formService.FormElementOptionsSetResult\n}\n\nexport const FormElementOptionsContext = React.createContext<\n OptionsSetResult[]\n>([])\nexport const FreshdeskFieldsStateContext = React.createContext<\n LoadDataState<FreshdeskTypes.FreshdeskField[]> | undefined\n>(undefined)\n\nexport function FormElementOptionsContextProvider({\n formIsReadOnly,\n children,\n}: {\n formIsReadOnly: boolean\n children: React.ReactNode\n}) {\n const form = useFormDefinition()\n\n const hasFreshdeskFields = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n return (\n formElementWithOptions?.optionsType === 'FRESHDESK_FIELD' &&\n !!formElementWithOptions.freshdeskFieldName\n )\n },\n )\n }, [form.elements])\n\n const loadFreshdeskFields = React.useCallback(\n async (abortSignal): Promise<FreshdeskTypes.FreshdeskField[]> => {\n if (hasFreshdeskFields && !formIsReadOnly) {\n return await formService.getFreshdeskFields(form.id, abortSignal)\n }\n return []\n },\n [form.id, hasFreshdeskFields, formIsReadOnly],\n )\n\n const [freshdeskFieldsState] = useLoadDataState(loadFreshdeskFields)\n\n const hasOptionsSets = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n return (\n formElementWithOptions?.optionsType === 'DYNAMIC' &&\n !!formElementWithOptions.dynamicOptionSetId\n )\n },\n )\n }, [form.elements])\n\n const loadFormElementOptionsSets = React.useCallback(\n async (abortSignal): Promise<OptionsSetResult[]> => {\n if (!hasOptionsSets || formIsReadOnly) {\n return []\n }\n const formElementOptionsSets =\n await formService.getFormElementOptionsSets(\n form.organisationId,\n abortSignal,\n )\n return formElementOptionsSets.map<OptionsSetResult>(\n (formElementOptionsSet) => ({\n formElementOptionsSet,\n }),\n )\n },\n [form.organisationId, hasOptionsSets, formIsReadOnly],\n )\n\n const [optionsSetResultsState, , setOptionsSetResults] = useLoadDataState(\n loadFormElementOptionsSets,\n )\n\n const optionsSetResults = React.useMemo(() => {\n if (optionsSetResultsState.status === 'SUCCESS') {\n return optionsSetResultsState.result\n }\n return []\n }, [optionsSetResultsState])\n\n const error = React.useMemo<OneBlinkAppsError | undefined>(() => {\n if (freshdeskFieldsState.status === 'ERROR') {\n return freshdeskFieldsState.error instanceof OneBlinkAppsError\n ? freshdeskFieldsState.error\n : new OneBlinkAppsError('An unknown error has occurred', {\n originalError: freshdeskFieldsState.error,\n })\n }\n if (optionsSetResultsState.status === 'ERROR') {\n return optionsSetResultsState.error instanceof OneBlinkAppsError\n ? optionsSetResultsState.error\n : new OneBlinkAppsError('An unknown error has occurred', {\n originalError: optionsSetResultsState.error,\n })\n }\n for (const optionsSetResult of optionsSetResults) {\n if (optionsSetResult.result?.type === 'ERROR') {\n return optionsSetResult.result.error\n }\n }\n }, [freshdeskFieldsState, optionsSetResults, optionsSetResultsState])\n\n if (error) {\n return (\n <>\n <div className=\"has-text-centered\">\n <MaterialIcon className=\"has-text-warning icon-x-large\">\n error\n </MaterialIcon>\n <h3 className=\"title is-3\">{error.title}</h3>\n <p>{error.message}</p>\n <p className=\"has-text-grey\">\n {localisationService.formatDatetimeLong(new Date())}\n </p>\n </div>\n\n <OneBlinkAppsErrorOriginalMessage error={error.originalError} />\n </>\n )\n }\n\n return (\n <>\n {optionsSetResults.map((optionsSetResult) => (\n <React.Fragment key={optionsSetResult.formElementOptionsSet.id}>\n <LoadOptionsSet\n optionsSetResult={optionsSetResult}\n form={form}\n setOptionsSetResults={setOptionsSetResults}\n />\n </React.Fragment>\n ))}\n <FormElementOptionsContext.Provider value={optionsSetResults}>\n <FreshdeskFieldsStateContext.Provider value={freshdeskFieldsState}>\n {children}\n </FreshdeskFieldsStateContext.Provider>\n </FormElementOptionsContext.Provider>\n </>\n )\n}\n\nconst LoadOptionsSet = React.memo(function LoadOptionsSet({\n form,\n optionsSetResult,\n setOptionsSetResults,\n}: {\n form: FormTypes.Form\n optionsSetResult: OptionsSetResult\n setOptionsSetResults: React.Dispatch<React.SetStateAction<OptionsSetResult[]>>\n}) {\n const hasOptionsSet = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n\n return (\n formElementWithOptions?.optionsType === 'DYNAMIC' &&\n !formElementWithOptions.options?.length &&\n formElementWithOptions.dynamicOptionSetId ===\n optionsSetResult.formElementOptionsSet.id\n )\n },\n )\n }, [form.elements, optionsSetResult.formElementOptionsSet.id])\n\n const setOptionsSetResult = React.useCallback(\n (result: OptionsSetResult['result']) => {\n setOptionsSetResults((currentOptionsSetResults) => {\n return currentOptionsSetResults.map((currentOptionsSetResult) => {\n if (\n currentOptionsSetResult.formElementOptionsSet.id ===\n optionsSetResult.formElementOptionsSet.id\n ) {\n return {\n ...optionsSetResult,\n result,\n }\n } else {\n return currentOptionsSetResult\n }\n })\n })\n },\n [optionsSetResult, setOptionsSetResults],\n )\n\n React.useEffect(() => {\n if (!hasOptionsSet || optionsSetResult.result) {\n return\n }\n\n const abortController = new AbortController()\n\n ;(async () => {\n try {\n const result = await formService.getFormElementOptionsSetOptions(\n optionsSetResult.formElementOptionsSet,\n {\n formId: form.id,\n formsAppEnvironmentId: form.formsAppEnvironmentId,\n },\n abortController.signal,\n )\n if (!abortController.signal.aborted) {\n setOptionsSetResult(result)\n }\n } catch (error) {\n if (!abortController.signal.aborted) {\n setOptionsSetResult({\n type: 'ERROR',\n error: new OneBlinkAppsError(\n error instanceof Error\n ? error.message\n : 'An unknown error has occurred',\n {\n originalError: error instanceof Error ? error : undefined,\n },\n ),\n })\n }\n }\n })()\n\n return () => {\n abortController.abort()\n }\n }, [\n form.formsAppEnvironmentId,\n form.id,\n hasOptionsSet,\n optionsSetResult.formElementOptionsSet,\n optionsSetResult.result,\n setOptionsSetResult,\n ])\n\n return <></>\n})\n\nexport function useLoadDynamicOptionsEffect(\n formElement: FormTypes.FormElementWithOptions,\n onUpdateFormElements: UpdateFormElementsHandler,\n) {\n const form = useFormDefinition()\n const optionsSetResults = React.useContext(FormElementOptionsContext)\n const freshdeskFieldsState = React.useContext(FreshdeskFieldsStateContext)\n\n const freshdeskFieldOptionsResult = React.useMemo(() => {\n if (\n freshdeskFieldsState?.status === 'SUCCESS' &&\n // We can stop here if the options are not coming from freshdesk\n formElement.optionsType === 'FRESHDESK_FIELD' &&\n // If the element already has options, we don't need to set them again\n !Array.isArray(formElement.options)\n ) {\n return formService.parseFreshdeskFieldOptions(\n freshdeskFieldsState.result,\n formElement,\n )\n }\n }, [formElement, freshdeskFieldsState])\n\n const optionsSetResult = React.useMemo<OptionsSetResult | undefined>(() => {\n if (\n // We can stop here if the options are not dynamic\n formElement.optionsType !== 'DYNAMIC' ||\n // If the element already has options, we don't need to set them again\n Array.isArray(formElement.options)\n ) {\n return\n }\n return optionsSetResults.find(\n (optionsSetResult) =>\n optionsSetResult.formElementOptionsSet.id ===\n formElement.dynamicOptionSetId && optionsSetResult.result,\n )\n }, [\n formElement.dynamicOptionSetId,\n formElement.options,\n formElement.optionsType,\n optionsSetResults,\n ])\n\n React.useEffect(() => {\n if (!optionsSetResult && !freshdeskFieldOptionsResult) {\n return\n }\n\n onUpdateFormElements((formElements) => {\n return formElements.map((existingFormElement) => {\n if (existingFormElement.id === formElement.id) {\n switch (optionsSetResult?.result?.type) {\n case 'SEARCH': {\n if (formElement.type === 'autocomplete') {\n return {\n ...existingFormElement,\n optionsType: 'SEARCH',\n searchUrl: optionsSetResult.result.url,\n searchQuerystringParameter:\n optionsSetResult.result.searchQuerystringParameter,\n }\n }\n break\n }\n case 'OPTIONS': {\n return formService.parseFormElementOptions(\n form,\n formElement,\n optionsSetResult.result.options,\n )\n }\n }\n\n if (freshdeskFieldOptionsResult) {\n return {\n ...existingFormElement,\n options:\n freshdeskFieldOptionsResult.type === 'OPTIONS'\n ? freshdeskFieldOptionsResult.options\n : [],\n }\n }\n }\n\n return existingFormElement\n })\n })\n }, [\n form,\n formElement,\n freshdeskFieldOptionsResult,\n onUpdateFormElements,\n optionsSetResult,\n ])\n}\n"]}
1
+ {"version":3,"file":"useDynamicOptionsLoaderState.js","sourceRoot":"","sources":["../../src/hooks/useDynamicOptionsLoaderState.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport { formElementsService, typeCastService } from '@oneblink/sdk-core'\nimport { formService, localisationService, OneBlinkAppsError } from '../apps'\nimport { FormTypes, FreshdeskTypes } from '@oneblink/types'\nimport useLoadDataState, { LoadDataState } from './useLoadDataState'\nimport OneBlinkAppsErrorOriginalMessage from '../components/renderer/OneBlinkAppsErrorOriginalMessage'\nimport useFormDefinition from './useFormDefinition'\nimport MaterialIcon from '../components/MaterialIcon'\nimport { UpdateFormElementsHandler } from '../types/form'\n\ntype OptionsSetResult = {\n formElementOptionsSet: FormTypes.FormElementOptionSet\n result?: formService.FormElementOptionsSetResult\n}\n\nexport const FormElementOptionsContext = React.createContext<\n OptionsSetResult[]\n>([])\nexport const FreshdeskFieldsStateContext = React.createContext<\n LoadDataState<FreshdeskTypes.FreshdeskField[]> | undefined\n>(undefined)\n\nexport function FormElementOptionsContextProvider({\n formIsReadOnly,\n children,\n}: {\n formIsReadOnly: boolean\n children: React.ReactNode\n}) {\n const form = useFormDefinition()\n\n const hasFreshdeskFields = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n return (\n formElementWithOptions?.optionsType === 'FRESHDESK_FIELD' &&\n !!formElementWithOptions.freshdeskFieldName\n )\n },\n )\n }, [form.elements])\n\n const loadFreshdeskFields = React.useCallback(\n async (\n abortSignal: AbortSignal,\n ): Promise<FreshdeskTypes.FreshdeskField[]> => {\n if (hasFreshdeskFields && !formIsReadOnly) {\n return await formService.getFreshdeskFields(form.id, abortSignal)\n }\n return []\n },\n [form.id, hasFreshdeskFields, formIsReadOnly],\n )\n\n const [freshdeskFieldsState] = useLoadDataState(loadFreshdeskFields)\n\n const hasOptionsSets = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n return (\n formElementWithOptions?.optionsType === 'DYNAMIC' &&\n !!formElementWithOptions.dynamicOptionSetId\n )\n },\n )\n }, [form.elements])\n\n const loadFormElementOptionsSets = React.useCallback(\n async (abortSignal: AbortSignal): Promise<OptionsSetResult[]> => {\n if (!hasOptionsSets || formIsReadOnly) {\n return []\n }\n const formElementOptionsSets =\n await formService.getFormElementOptionsSets(\n form.organisationId,\n abortSignal,\n )\n return formElementOptionsSets.map<OptionsSetResult>(\n (formElementOptionsSet) => ({\n formElementOptionsSet,\n }),\n )\n },\n [form.organisationId, hasOptionsSets, formIsReadOnly],\n )\n\n const [optionsSetResultsState, , setOptionsSetResults] = useLoadDataState(\n loadFormElementOptionsSets,\n )\n\n const optionsSetResults = React.useMemo(() => {\n if (optionsSetResultsState.status === 'SUCCESS') {\n return optionsSetResultsState.result\n }\n return []\n }, [optionsSetResultsState])\n\n const error = React.useMemo<OneBlinkAppsError | undefined>(() => {\n if (freshdeskFieldsState.status === 'ERROR') {\n return freshdeskFieldsState.error instanceof OneBlinkAppsError\n ? freshdeskFieldsState.error\n : new OneBlinkAppsError('An unknown error has occurred', {\n originalError: freshdeskFieldsState.error,\n })\n }\n if (optionsSetResultsState.status === 'ERROR') {\n return optionsSetResultsState.error instanceof OneBlinkAppsError\n ? optionsSetResultsState.error\n : new OneBlinkAppsError('An unknown error has occurred', {\n originalError: optionsSetResultsState.error,\n })\n }\n for (const optionsSetResult of optionsSetResults) {\n if (optionsSetResult.result?.type === 'ERROR') {\n return optionsSetResult.result.error\n }\n }\n }, [freshdeskFieldsState, optionsSetResults, optionsSetResultsState])\n\n if (error) {\n return (\n <>\n <div className=\"has-text-centered\">\n <MaterialIcon className=\"has-text-warning icon-x-large\">\n error\n </MaterialIcon>\n <h3 className=\"title is-3\">{error.title}</h3>\n <p>{error.message}</p>\n <p className=\"has-text-grey\">\n {localisationService.formatDatetimeLong(new Date())}\n </p>\n </div>\n\n <OneBlinkAppsErrorOriginalMessage error={error.originalError} />\n </>\n )\n }\n\n return (\n <>\n {optionsSetResults.map((optionsSetResult) => (\n <React.Fragment key={optionsSetResult.formElementOptionsSet.id}>\n <LoadOptionsSet\n optionsSetResult={optionsSetResult}\n form={form}\n setOptionsSetResults={setOptionsSetResults}\n />\n </React.Fragment>\n ))}\n <FormElementOptionsContext.Provider value={optionsSetResults}>\n <FreshdeskFieldsStateContext.Provider value={freshdeskFieldsState}>\n {children}\n </FreshdeskFieldsStateContext.Provider>\n </FormElementOptionsContext.Provider>\n </>\n )\n}\n\nconst LoadOptionsSet = React.memo(function LoadOptionsSet({\n form,\n optionsSetResult,\n setOptionsSetResults,\n}: {\n form: FormTypes.Form\n optionsSetResult: OptionsSetResult\n setOptionsSetResults: React.Dispatch<React.SetStateAction<OptionsSetResult[]>>\n}) {\n const hasOptionsSet = React.useMemo<boolean>(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const formElementWithOptions =\n typeCastService.formElements.toOptionsElement(formElement)\n\n return (\n formElementWithOptions?.optionsType === 'DYNAMIC' &&\n !formElementWithOptions.options?.length &&\n formElementWithOptions.dynamicOptionSetId ===\n optionsSetResult.formElementOptionsSet.id\n )\n },\n )\n }, [form.elements, optionsSetResult.formElementOptionsSet.id])\n\n const setOptionsSetResult = React.useCallback(\n (result: OptionsSetResult['result']) => {\n setOptionsSetResults((currentOptionsSetResults) => {\n return currentOptionsSetResults.map((currentOptionsSetResult) => {\n if (\n currentOptionsSetResult.formElementOptionsSet.id ===\n optionsSetResult.formElementOptionsSet.id\n ) {\n return {\n ...optionsSetResult,\n result,\n }\n } else {\n return currentOptionsSetResult\n }\n })\n })\n },\n [optionsSetResult, setOptionsSetResults],\n )\n\n React.useEffect(() => {\n if (!hasOptionsSet || optionsSetResult.result) {\n return\n }\n\n const abortController = new AbortController()\n\n ;(async () => {\n try {\n const result = await formService.getFormElementOptionsSetOptions(\n optionsSetResult.formElementOptionsSet,\n {\n formId: form.id,\n formsAppEnvironmentId: form.formsAppEnvironmentId,\n },\n abortController.signal,\n )\n if (!abortController.signal.aborted) {\n setOptionsSetResult(result)\n }\n } catch (error) {\n if (!abortController.signal.aborted) {\n setOptionsSetResult({\n type: 'ERROR',\n error: new OneBlinkAppsError(\n error instanceof Error\n ? error.message\n : 'An unknown error has occurred',\n {\n originalError: error instanceof Error ? error : undefined,\n },\n ),\n })\n }\n }\n })()\n\n return () => {\n abortController.abort()\n }\n }, [\n form.formsAppEnvironmentId,\n form.id,\n hasOptionsSet,\n optionsSetResult.formElementOptionsSet,\n optionsSetResult.result,\n setOptionsSetResult,\n ])\n\n return <></>\n})\n\nexport function useLoadDynamicOptionsEffect(\n formElement: FormTypes.FormElementWithOptions,\n onUpdateFormElements: UpdateFormElementsHandler,\n) {\n const form = useFormDefinition()\n const optionsSetResults = React.useContext(FormElementOptionsContext)\n const freshdeskFieldsState = React.useContext(FreshdeskFieldsStateContext)\n\n const freshdeskFieldOptionsResult = React.useMemo(() => {\n if (\n freshdeskFieldsState?.status === 'SUCCESS' &&\n // We can stop here if the options are not coming from freshdesk\n formElement.optionsType === 'FRESHDESK_FIELD' &&\n // If the element already has options, we don't need to set them again\n !Array.isArray(formElement.options)\n ) {\n return formService.parseFreshdeskFieldOptions(\n freshdeskFieldsState.result,\n formElement,\n )\n }\n }, [formElement, freshdeskFieldsState])\n\n const optionsSetResult = React.useMemo<OptionsSetResult | undefined>(() => {\n if (\n // We can stop here if the options are not dynamic\n formElement.optionsType !== 'DYNAMIC' ||\n // If the element already has options, we don't need to set them again\n Array.isArray(formElement.options)\n ) {\n return\n }\n return optionsSetResults.find(\n (optionsSetResult) =>\n optionsSetResult.formElementOptionsSet.id ===\n formElement.dynamicOptionSetId && optionsSetResult.result,\n )\n }, [\n formElement.dynamicOptionSetId,\n formElement.options,\n formElement.optionsType,\n optionsSetResults,\n ])\n\n React.useEffect(() => {\n if (!optionsSetResult && !freshdeskFieldOptionsResult) {\n return\n }\n\n onUpdateFormElements((formElements) => {\n return formElements.map((existingFormElement) => {\n if (existingFormElement.id === formElement.id) {\n switch (optionsSetResult?.result?.type) {\n case 'SEARCH': {\n if (formElement.type === 'autocomplete') {\n return {\n ...existingFormElement,\n optionsType: 'SEARCH',\n searchUrl: optionsSetResult.result.url,\n searchQuerystringParameter:\n optionsSetResult.result.searchQuerystringParameter,\n }\n }\n break\n }\n case 'OPTIONS': {\n return formService.parseFormElementOptions(\n form,\n formElement,\n optionsSetResult.result.options,\n )\n }\n }\n\n if (freshdeskFieldOptionsResult) {\n return {\n ...existingFormElement,\n options:\n freshdeskFieldOptionsResult.type === 'OPTIONS'\n ? freshdeskFieldOptionsResult.options\n : [],\n }\n }\n }\n\n return existingFormElement\n })\n })\n }, [\n form,\n formElement,\n freshdeskFieldOptionsResult,\n onUpdateFormElements,\n optionsSetResult,\n ])\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { formService } from '@oneblink/apps';
2
+ import { formService } from '../apps';
3
3
  type FormElementLookupsContextValue = {
4
4
  formElementLookups: formService.FormElementLookupResult[];
5
5
  isLoading: boolean;
@@ -8,6 +8,6 @@ type FormElementLookupsContextValue = {
8
8
  };
9
9
  export declare function FormElementLookupsContextProvider({ children, }: {
10
10
  children: React.ReactNode;
11
- }): React.JSX.Element;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
12
  export default function useFormElementLookups(): FormElementLookupsContextValue;
13
13
  export {};
@@ -1,6 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
3
  import { formElementsService, typeCastService } from '@oneblink/sdk-core';
3
- import { formService } from '@oneblink/apps';
4
+ import { formService } from '../apps';
4
5
  import useFormDefinition from './useFormDefinition';
5
6
  import useLoadResourcesState from './useLoadResourcesState';
6
7
  const FormElementLookupsContext = React.createContext(undefined);
@@ -28,7 +29,7 @@ export function FormElementLookupsContextProvider({ children, }) {
28
29
  onTryAgain,
29
30
  };
30
31
  }, [formElementLookups, isLoading, loadError, onTryAgain]);
31
- return (React.createElement(FormElementLookupsContext.Provider, { value: value }, children));
32
+ return (_jsx(FormElementLookupsContext.Provider, { value: value, children: children }));
32
33
  }
33
34
  export default function useFormElementLookups() {
34
35
  const formElementLookupsContext = React.useContext(FormElementLookupsContext);
@@ -1 +1 @@
1
- {"version":3,"file":"useFormElementLookups.js","sourceRoot":"","sources":["../../src/hooks/useFormElementLookups.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAS3D,MAAM,yBAAyB,GAAG,KAAK,CAAC,aAAa,CAEnD,SAAS,CAAC,CAAA;AAEZ,MAAM,UAAU,iCAAiC,CAAC,EAChD,QAAQ,GAGT;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAC1C,IAAI,CAAC,QAAQ,EACb,CAAC,WAAW,EAAE,EAAE;YACd,MAAM,iBAAiB,GACrB,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,CACP,iBAAiB;gBACjB,CAAC,iBAAiB,CAAC,YAAY,IAAI,iBAAiB,CAAC,eAAe,CAAC,CACtE,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnB,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC9C,KAAK,EAAE,WAAoC,EAAE,EAAE;QAC7C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,MAAM,WAAW,CAAC,qBAAqB,CAC5C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,qBAAqB,EAC1B,WAAW,CACZ,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,EACD,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAC9D,CAAA;IAED,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAC1D,qBAAqB,CAAC,sBAAsB,CAAC,CAAA;IAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAiC,GAAG,EAAE;QAC/D,OAAO;YACL,kBAAkB;YAClB,SAAS;YACT,SAAS;YACT,UAAU;SACX,CAAA;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAE1D,OAAO,CACL,oBAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAC7C,QAAQ,CAC0B,CACtC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC3C,MAAM,yBAAyB,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IAC7E,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAA;IACH,CAAC;IACD,OAAO,yBAAyB,CAAA;AAClC,CAAC","sourcesContent":["import * as React from 'react'\nimport { formElementsService, typeCastService } from '@oneblink/sdk-core'\nimport { formService } from '@oneblink/apps'\nimport useFormDefinition from './useFormDefinition'\nimport useLoadResourcesState from './useLoadResourcesState'\n\ntype FormElementLookupsContextValue = {\n formElementLookups: formService.FormElementLookupResult[]\n isLoading: boolean\n loadError: Error | null\n onTryAgain: (abortSignal?: AbortSignal) => void\n}\n\nconst FormElementLookupsContext = React.createContext<\n FormElementLookupsContextValue | undefined\n>(undefined)\n\nexport function FormElementLookupsContextProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const form = useFormDefinition()\n const hasLookups = React.useMemo(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const lookupFormElement =\n typeCastService.formElements.toLookupElement(formElement)\n return !!(\n lookupFormElement &&\n (lookupFormElement.isDataLookup || lookupFormElement.isElementLookup)\n )\n },\n )\n }, [form.elements])\n\n const loadFormElementLookups = React.useCallback(\n async (abortSignal: AbortSignal | undefined) => {\n if (hasLookups) {\n return await formService.getFormElementLookups(\n form.organisationId,\n form.formsAppEnvironmentId,\n abortSignal,\n )\n }\n return []\n },\n [form.formsAppEnvironmentId, form.organisationId, hasLookups],\n )\n\n const [formElementLookups, isLoading, loadError, onTryAgain] =\n useLoadResourcesState(loadFormElementLookups)\n\n const value = React.useMemo<FormElementLookupsContextValue>(() => {\n return {\n formElementLookups,\n isLoading,\n loadError,\n onTryAgain,\n }\n }, [formElementLookups, isLoading, loadError, onTryAgain])\n\n return (\n <FormElementLookupsContext.Provider value={value}>\n {children}\n </FormElementLookupsContext.Provider>\n )\n}\n\nexport default function useFormElementLookups() {\n const formElementLookupsContext = React.useContext(FormElementLookupsContext)\n if (!formElementLookupsContext) {\n throw new Error(\n '\"FormElementLookupsContext\" does not have a value in this context',\n )\n }\n return formElementLookupsContext\n}\n"]}
1
+ {"version":3,"file":"useFormElementLookups.js","sourceRoot":"","sources":["../../src/hooks/useFormElementLookups.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAS3D,MAAM,yBAAyB,GAAG,KAAK,CAAC,aAAa,CAEnD,SAAS,CAAC,CAAA;AAEZ,MAAM,UAAU,iCAAiC,CAAC,EAChD,QAAQ,GAGT;IACC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAC1C,IAAI,CAAC,QAAQ,EACb,CAAC,WAAW,EAAE,EAAE;YACd,MAAM,iBAAiB,GACrB,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,CACP,iBAAiB;gBACjB,CAAC,iBAAiB,CAAC,YAAY,IAAI,iBAAiB,CAAC,eAAe,CAAC,CACtE,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnB,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAC9C,KAAK,EAAE,WAAoC,EAAE,EAAE;QAC7C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,MAAM,WAAW,CAAC,qBAAqB,CAC5C,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,qBAAqB,EAC1B,WAAW,CACZ,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,EACD,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAC9D,CAAA;IAED,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAC1D,qBAAqB,CAAC,sBAAsB,CAAC,CAAA;IAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAiC,GAAG,EAAE;QAC/D,OAAO;YACL,kBAAkB;YAClB,SAAS;YACT,SAAS;YACT,UAAU;SACX,CAAA;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAE1D,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC7C,QAAQ,GAC0B,CACtC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC3C,MAAM,yBAAyB,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IAC7E,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAA;IACH,CAAC;IACD,OAAO,yBAAyB,CAAA;AAClC,CAAC","sourcesContent":["import * as React from 'react'\nimport { formElementsService, typeCastService } from '@oneblink/sdk-core'\nimport { formService } from '../apps'\nimport useFormDefinition from './useFormDefinition'\nimport useLoadResourcesState from './useLoadResourcesState'\n\ntype FormElementLookupsContextValue = {\n formElementLookups: formService.FormElementLookupResult[]\n isLoading: boolean\n loadError: Error | null\n onTryAgain: (abortSignal?: AbortSignal) => void\n}\n\nconst FormElementLookupsContext = React.createContext<\n FormElementLookupsContextValue | undefined\n>(undefined)\n\nexport function FormElementLookupsContextProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const form = useFormDefinition()\n const hasLookups = React.useMemo(() => {\n return !!formElementsService.findFormElement(\n form.elements,\n (formElement) => {\n const lookupFormElement =\n typeCastService.formElements.toLookupElement(formElement)\n return !!(\n lookupFormElement &&\n (lookupFormElement.isDataLookup || lookupFormElement.isElementLookup)\n )\n },\n )\n }, [form.elements])\n\n const loadFormElementLookups = React.useCallback(\n async (abortSignal: AbortSignal | undefined) => {\n if (hasLookups) {\n return await formService.getFormElementLookups(\n form.organisationId,\n form.formsAppEnvironmentId,\n abortSignal,\n )\n }\n return []\n },\n [form.formsAppEnvironmentId, form.organisationId, hasLookups],\n )\n\n const [formElementLookups, isLoading, loadError, onTryAgain] =\n useLoadResourcesState(loadFormElementLookups)\n\n const value = React.useMemo<FormElementLookupsContextValue>(() => {\n return {\n formElementLookups,\n isLoading,\n loadError,\n onTryAgain,\n }\n }, [formElementLookups, isLoading, loadError, onTryAgain])\n\n return (\n <FormElementLookupsContext.Provider value={value}>\n {children}\n </FormElementLookupsContext.Provider>\n )\n}\n\nexport default function useFormElementLookups() {\n const formElementLookupsContext = React.useContext(FormElementLookupsContext)\n if (!formElementLookupsContext) {\n throw new Error(\n '\"FormElementLookupsContext\" does not have a value in this context',\n )\n }\n return formElementLookupsContext\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { submissionService } from '@oneblink/apps';
2
+ import { submissionService } from '../apps';
3
3
  import { FormTypes, SubmissionTypes } from '@oneblink/types';
4
4
  import { SectionState } from '../types/form';
5
5
  /**
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import _throttle from 'lodash.throttle';
3
- import { autoSaveService, Sentry } from '@oneblink/apps';
3
+ import { autoSaveService, Sentry } from '../apps';
4
4
  import useFormSubmissionState from './useFormSubmissionState';
5
5
  import useFormSubmissionDuration from './useFormSubmissionDuration';
6
6
  import { getElementDisplayNameForAnalyticsEvent, sendGoogleAnalyticsEvent, } from '../utils/sendGoogleAnalyticsEvent';
@@ -1 +1 @@
1
- {"version":3,"file":"useFormSubmissionAutoSaveState.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionAutoSaveState.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport _throttle from 'lodash.throttle'\nimport { autoSaveService, submissionService, Sentry } from '@oneblink/apps'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport useFormSubmissionState from './useFormSubmissionState'\nimport useFormSubmissionDuration from './useFormSubmissionDuration'\nimport { FormElement } from '@oneblink/types/typescript/forms'\nimport { SectionState } from '../types/form'\nimport {\n getElementDisplayNameForAnalyticsEvent,\n sendGoogleAnalyticsEvent,\n} from '../utils/sendGoogleAnalyticsEvent'\n\n/**\n * Use this if you want to implement a controlled auto saving form. See\n * {@link OneBlinkFormControlled} for a full example. If you do not need to\n * control the `submission` or `definition` properties, you can use the\n * {@link OneBlinkAutoSaveForm} component.\n *\n * @param options\n * @returns\n * @group Hooks\n */\nexport default function useFormSubmissionAutoSaveState({\n form,\n initialSubmission,\n resumeAtElement,\n removeAutoSaveDataBeforeSubmit,\n removeAutoSaveDataBeforeSaveDraft,\n autoSaveKey,\n formIsDisabled,\n onCancel,\n onSubmit,\n onSaveDraft,\n resumeSectionState,\n resumePreviousElapsedDurationSeconds,\n}: {\n form: FormTypes.Form\n removeAutoSaveDataBeforeSubmit?: boolean\n removeAutoSaveDataBeforeSaveDraft?: boolean\n autoSaveKey: string\n formIsDisabled?: boolean\n onCancel: () => unknown\n onSubmit: (newFormSubmission: submissionService.NewFormSubmission) => unknown\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission']\n resumeAtElement?: FormTypes.FormElement\n onSaveDraft?: (\n newDraftSubmission: submissionService.NewDraftSubmission,\n ) => unknown\n resumeSectionState?: SectionState\n resumePreviousElapsedDurationSeconds?: number\n}) {\n const [\n {\n definition,\n submission,\n lastElementUpdated,\n executedLookups,\n sectionState,\n },\n setFormSubmission,\n ] = useFormSubmissionState(\n form,\n initialSubmission,\n resumeAtElement,\n resumeSectionState,\n )\n\n const [getCurrentSubmissionDuration, resetCurrentSubmissionDuration] =\n useFormSubmissionDuration(resumePreviousElapsedDurationSeconds)\n\n const [\n {\n isLoadingAutoSaveSubmission,\n autoSaveSubmission,\n autoSaveElement,\n autoSaveSectionState,\n autoSavePreviousElapsedDurationSeconds,\n },\n setAutoSaveState,\n ] = React.useState<{\n isLoadingAutoSaveSubmission: boolean\n autoSaveSubmission: SubmissionTypes.S3SubmissionData['submission'] | null\n autoSaveElement: FormElement | null\n autoSaveSectionState: SectionState | null\n autoSavePreviousElapsedDurationSeconds: number\n }>({\n isLoadingAutoSaveSubmission: true,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n\n const throttledAutoSave = React.useMemo(() => {\n return _throttle(\n (\n model: SubmissionTypes.S3SubmissionData['submission'],\n lastElementUpdated?: FormElement,\n sectionState?: SectionState,\n ) => {\n if (!formIsDisabled) {\n switch (lastElementUpdated?.type) {\n case 'summary':\n case 'calculation':\n case 'captcha': {\n return\n }\n }\n console.log('Auto saving...')\n autoSaveService\n .upsertAutoSaveData(definition.id, autoSaveKey, model)\n .then(() => {\n if (lastElementUpdated) {\n return autoSaveService.upsertAutoSaveData<FormElement>(\n definition.id,\n `LAST_ELEMENT_UPDATED_${autoSaveKey}`,\n lastElementUpdated,\n )\n }\n })\n .then(() => {\n if (sectionState) {\n return autoSaveService.upsertAutoSaveData<{\n sectionState: SectionState\n }>(definition.id, `SECTION_STATE_${autoSaveKey}`, {\n sectionState,\n })\n }\n })\n .then(() => {\n return autoSaveService.upsertAutoSaveData<{\n previousElapsedDurationSeconds: number\n }>(definition.id, `PREVIOUS_ELAPSED_DURATION_${autoSaveKey}`, {\n previousElapsedDurationSeconds: getCurrentSubmissionDuration(),\n })\n })\n .catch((error) => {\n console.warn('Error while auto saving', error)\n Sentry.captureException(error)\n })\n }\n },\n 9580, // https://en.wikipedia.org/wiki/100_metres\n { trailing: true, leading: false },\n )\n }, [autoSaveKey, definition.id, formIsDisabled, getCurrentSubmissionDuration])\n\n const cancelAutoSave = React.useCallback(() => {\n if (throttledAutoSave) {\n throttledAutoSave.cancel()\n }\n }, [throttledAutoSave])\n\n const deleteAutoSaveSubmission = React.useCallback(() => {\n return autoSaveService\n .deleteAutoSaveData(definition.id, autoSaveKey)\n .catch((error) => {\n console.warn('Error removing auto save data: ', error)\n Sentry.captureException(error)\n })\n }, [autoSaveKey, definition.id])\n\n const handleSubmit = React.useCallback(\n (submissionResult: submissionService.NewFormSubmission) => {\n cancelAutoSave()\n if (removeAutoSaveDataBeforeSubmit !== false) {\n deleteAutoSaveSubmission()\n }\n onSubmit(submissionResult)\n },\n [\n cancelAutoSave,\n deleteAutoSaveSubmission,\n onSubmit,\n removeAutoSaveDataBeforeSubmit,\n ],\n )\n\n const handleSaveDraft = React.useMemo(() => {\n if (onSaveDraft) {\n return (newDraftSubmission: submissionService.NewDraftSubmission) => {\n cancelAutoSave()\n if (removeAutoSaveDataBeforeSaveDraft !== false) {\n deleteAutoSaveSubmission()\n }\n if (onSaveDraft) {\n onSaveDraft(newDraftSubmission)\n }\n }\n }\n }, [\n cancelAutoSave,\n deleteAutoSaveSubmission,\n onSaveDraft,\n removeAutoSaveDataBeforeSaveDraft,\n ])\n\n const handleNavigateAway = React.useCallback(() => {\n cancelAutoSave()\n deleteAutoSaveSubmission()\n }, [cancelAutoSave, deleteAutoSaveSubmission])\n\n const handleCancel = React.useCallback(() => {\n cancelAutoSave()\n deleteAutoSaveSubmission()\n onCancel()\n }, [cancelAutoSave, deleteAutoSaveSubmission, onCancel])\n\n React.useEffect(() => {\n let ignore = false\n const loadAutoSaveData = async () => {\n try {\n const autoSaveSubmission = await autoSaveService.getAutoSaveData<\n SubmissionTypes.S3SubmissionData['submission']\n >(definition.id, autoSaveKey)\n const autoSaveElement =\n await autoSaveService.getAutoSaveData<FormElement>(\n definition.id,\n `LAST_ELEMENT_UPDATED_${autoSaveKey}`,\n )\n const autoSaveSectionStateData = await autoSaveService.getAutoSaveData<{\n sectionState: SectionState\n }>(definition.id, `SECTION_STATE_${autoSaveKey}`)\n const autoSavePreviousElapsedDurationSeconds =\n await autoSaveService.getAutoSaveData<{\n previousElapsedDurationSeconds: number\n }>(definition.id, `PREVIOUS_ELAPSED_DURATION_${autoSaveKey}`)\n\n if (!ignore) {\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission,\n autoSaveElement,\n autoSaveSectionState:\n autoSaveSectionStateData?.sectionState || null,\n autoSavePreviousElapsedDurationSeconds:\n autoSavePreviousElapsedDurationSeconds?.previousElapsedDurationSeconds ||\n 0,\n })\n }\n } catch (error) {\n console.warn('Error loading auto save data', error)\n Sentry.captureException(error)\n if (!ignore) {\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }\n }\n }\n loadAutoSaveData()\n return () => {\n ignore = true\n }\n }, [autoSaveKey, definition.id])\n\n // Clean up throttle function on unmount\n React.useEffect(() => {\n return () => {\n cancelAutoSave()\n }\n }, [cancelAutoSave])\n\n const setFormSubmissionAutoSave: typeof setFormSubmission = React.useCallback(\n (formSubmission) => {\n setFormSubmission((currentFormSubmission) => {\n const newFormSubmission =\n typeof formSubmission === 'function'\n ? formSubmission(currentFormSubmission)\n : formSubmission\n\n throttledAutoSave(\n newFormSubmission.submission,\n newFormSubmission.lastElementUpdated,\n newFormSubmission.sectionState,\n )\n\n return newFormSubmission\n })\n },\n [setFormSubmission, throttledAutoSave],\n )\n\n const startNewSubmission = React.useCallback(() => {\n sendGoogleAnalyticsEvent('oneblink_form_abandon', {\n formId: definition.id,\n formName: definition.name,\n lastElementUpdated:\n getElementDisplayNameForAnalyticsEvent(autoSaveElement),\n durationUntilAbandon: autoSavePreviousElapsedDurationSeconds,\n })\n deleteAutoSaveSubmission()\n resetCurrentSubmissionDuration()\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }, [\n autoSaveElement,\n autoSavePreviousElapsedDurationSeconds,\n definition.id,\n definition.name,\n deleteAutoSaveSubmission,\n resetCurrentSubmissionDuration,\n ])\n\n const continueAutoSaveSubmission = React.useCallback(() => {\n if (autoSaveSubmission) {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: autoSaveSubmission,\n lastElementUpdated: autoSaveElement ? autoSaveElement : undefined,\n sectionState: autoSaveSectionState || [],\n }))\n }\n resetCurrentSubmissionDuration(autoSavePreviousElapsedDurationSeconds)\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }, [\n autoSaveSubmission,\n resetCurrentSubmissionDuration,\n autoSavePreviousElapsedDurationSeconds,\n setFormSubmission,\n autoSaveElement,\n autoSaveSectionState,\n ])\n\n React.useEffect(() => {\n if (form.continueWithAutosave) {\n continueAutoSaveSubmission()\n }\n }, [continueAutoSaveSubmission, form.continueWithAutosave])\n\n return {\n definition,\n submission,\n lastElementUpdated,\n executedLookups,\n sectionState,\n isLoadingAutoSaveSubmission,\n isAutoSaveSubmissionAvailable:\n autoSaveSubmission !== null && !form.continueWithAutosave,\n startNewSubmission,\n continueAutoSaveSubmission,\n handleSubmit,\n handleCancel,\n handleSaveDraft,\n handleNavigateAway,\n setFormSubmission: setFormSubmissionAutoSave,\n getCurrentSubmissionDuration,\n }\n}\n"]}
1
+ {"version":3,"file":"useFormSubmissionAutoSaveState.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionAutoSaveState.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\nimport _throttle from 'lodash.throttle'\nimport { autoSaveService, submissionService, Sentry } from '../apps'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport useFormSubmissionState from './useFormSubmissionState'\nimport useFormSubmissionDuration from './useFormSubmissionDuration'\nimport { FormElement } from '@oneblink/types/typescript/forms'\nimport { SectionState } from '../types/form'\nimport {\n getElementDisplayNameForAnalyticsEvent,\n sendGoogleAnalyticsEvent,\n} from '../utils/sendGoogleAnalyticsEvent'\n\n/**\n * Use this if you want to implement a controlled auto saving form. See\n * {@link OneBlinkFormControlled} for a full example. If you do not need to\n * control the `submission` or `definition` properties, you can use the\n * {@link OneBlinkAutoSaveForm} component.\n *\n * @param options\n * @returns\n * @group Hooks\n */\nexport default function useFormSubmissionAutoSaveState({\n form,\n initialSubmission,\n resumeAtElement,\n removeAutoSaveDataBeforeSubmit,\n removeAutoSaveDataBeforeSaveDraft,\n autoSaveKey,\n formIsDisabled,\n onCancel,\n onSubmit,\n onSaveDraft,\n resumeSectionState,\n resumePreviousElapsedDurationSeconds,\n}: {\n form: FormTypes.Form\n removeAutoSaveDataBeforeSubmit?: boolean\n removeAutoSaveDataBeforeSaveDraft?: boolean\n autoSaveKey: string\n formIsDisabled?: boolean\n onCancel: () => unknown\n onSubmit: (newFormSubmission: submissionService.NewFormSubmission) => unknown\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission']\n resumeAtElement?: FormTypes.FormElement\n onSaveDraft?: (\n newDraftSubmission: submissionService.NewDraftSubmission,\n ) => unknown\n resumeSectionState?: SectionState\n resumePreviousElapsedDurationSeconds?: number\n}) {\n const [\n {\n definition,\n submission,\n lastElementUpdated,\n executedLookups,\n sectionState,\n },\n setFormSubmission,\n ] = useFormSubmissionState(\n form,\n initialSubmission,\n resumeAtElement,\n resumeSectionState,\n )\n\n const [getCurrentSubmissionDuration, resetCurrentSubmissionDuration] =\n useFormSubmissionDuration(resumePreviousElapsedDurationSeconds)\n\n const [\n {\n isLoadingAutoSaveSubmission,\n autoSaveSubmission,\n autoSaveElement,\n autoSaveSectionState,\n autoSavePreviousElapsedDurationSeconds,\n },\n setAutoSaveState,\n ] = React.useState<{\n isLoadingAutoSaveSubmission: boolean\n autoSaveSubmission: SubmissionTypes.S3SubmissionData['submission'] | null\n autoSaveElement: FormElement | null\n autoSaveSectionState: SectionState | null\n autoSavePreviousElapsedDurationSeconds: number\n }>({\n isLoadingAutoSaveSubmission: true,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n\n const throttledAutoSave = React.useMemo(() => {\n return _throttle(\n (\n model: SubmissionTypes.S3SubmissionData['submission'],\n lastElementUpdated?: FormElement,\n sectionState?: SectionState,\n ) => {\n if (!formIsDisabled) {\n switch (lastElementUpdated?.type) {\n case 'summary':\n case 'calculation':\n case 'captcha': {\n return\n }\n }\n console.log('Auto saving...')\n autoSaveService\n .upsertAutoSaveData(definition.id, autoSaveKey, model)\n .then(() => {\n if (lastElementUpdated) {\n return autoSaveService.upsertAutoSaveData<FormElement>(\n definition.id,\n `LAST_ELEMENT_UPDATED_${autoSaveKey}`,\n lastElementUpdated,\n )\n }\n })\n .then(() => {\n if (sectionState) {\n return autoSaveService.upsertAutoSaveData<{\n sectionState: SectionState\n }>(definition.id, `SECTION_STATE_${autoSaveKey}`, {\n sectionState,\n })\n }\n })\n .then(() => {\n return autoSaveService.upsertAutoSaveData<{\n previousElapsedDurationSeconds: number\n }>(definition.id, `PREVIOUS_ELAPSED_DURATION_${autoSaveKey}`, {\n previousElapsedDurationSeconds: getCurrentSubmissionDuration(),\n })\n })\n .catch((error) => {\n console.warn('Error while auto saving', error)\n Sentry.captureException(error)\n })\n }\n },\n 9580, // https://en.wikipedia.org/wiki/100_metres\n { trailing: true, leading: false },\n )\n }, [autoSaveKey, definition.id, formIsDisabled, getCurrentSubmissionDuration])\n\n const cancelAutoSave = React.useCallback(() => {\n if (throttledAutoSave) {\n throttledAutoSave.cancel()\n }\n }, [throttledAutoSave])\n\n const deleteAutoSaveSubmission = React.useCallback(() => {\n return autoSaveService\n .deleteAutoSaveData(definition.id, autoSaveKey)\n .catch((error) => {\n console.warn('Error removing auto save data: ', error)\n Sentry.captureException(error)\n })\n }, [autoSaveKey, definition.id])\n\n const handleSubmit = React.useCallback(\n (submissionResult: submissionService.NewFormSubmission) => {\n cancelAutoSave()\n if (removeAutoSaveDataBeforeSubmit !== false) {\n deleteAutoSaveSubmission()\n }\n onSubmit(submissionResult)\n },\n [\n cancelAutoSave,\n deleteAutoSaveSubmission,\n onSubmit,\n removeAutoSaveDataBeforeSubmit,\n ],\n )\n\n const handleSaveDraft = React.useMemo(() => {\n if (onSaveDraft) {\n return (newDraftSubmission: submissionService.NewDraftSubmission) => {\n cancelAutoSave()\n if (removeAutoSaveDataBeforeSaveDraft !== false) {\n deleteAutoSaveSubmission()\n }\n if (onSaveDraft) {\n onSaveDraft(newDraftSubmission)\n }\n }\n }\n }, [\n cancelAutoSave,\n deleteAutoSaveSubmission,\n onSaveDraft,\n removeAutoSaveDataBeforeSaveDraft,\n ])\n\n const handleNavigateAway = React.useCallback(() => {\n cancelAutoSave()\n deleteAutoSaveSubmission()\n }, [cancelAutoSave, deleteAutoSaveSubmission])\n\n const handleCancel = React.useCallback(() => {\n cancelAutoSave()\n deleteAutoSaveSubmission()\n onCancel()\n }, [cancelAutoSave, deleteAutoSaveSubmission, onCancel])\n\n React.useEffect(() => {\n let ignore = false\n const loadAutoSaveData = async () => {\n try {\n const autoSaveSubmission = await autoSaveService.getAutoSaveData<\n SubmissionTypes.S3SubmissionData['submission']\n >(definition.id, autoSaveKey)\n const autoSaveElement =\n await autoSaveService.getAutoSaveData<FormElement>(\n definition.id,\n `LAST_ELEMENT_UPDATED_${autoSaveKey}`,\n )\n const autoSaveSectionStateData = await autoSaveService.getAutoSaveData<{\n sectionState: SectionState\n }>(definition.id, `SECTION_STATE_${autoSaveKey}`)\n const autoSavePreviousElapsedDurationSeconds =\n await autoSaveService.getAutoSaveData<{\n previousElapsedDurationSeconds: number\n }>(definition.id, `PREVIOUS_ELAPSED_DURATION_${autoSaveKey}`)\n\n if (!ignore) {\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission,\n autoSaveElement,\n autoSaveSectionState:\n autoSaveSectionStateData?.sectionState || null,\n autoSavePreviousElapsedDurationSeconds:\n autoSavePreviousElapsedDurationSeconds?.previousElapsedDurationSeconds ||\n 0,\n })\n }\n } catch (error) {\n console.warn('Error loading auto save data', error)\n Sentry.captureException(error)\n if (!ignore) {\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }\n }\n }\n loadAutoSaveData()\n return () => {\n ignore = true\n }\n }, [autoSaveKey, definition.id])\n\n // Clean up throttle function on unmount\n React.useEffect(() => {\n return () => {\n cancelAutoSave()\n }\n }, [cancelAutoSave])\n\n const setFormSubmissionAutoSave: typeof setFormSubmission = React.useCallback(\n (formSubmission) => {\n setFormSubmission((currentFormSubmission) => {\n const newFormSubmission =\n typeof formSubmission === 'function'\n ? formSubmission(currentFormSubmission)\n : formSubmission\n\n throttledAutoSave(\n newFormSubmission.submission,\n newFormSubmission.lastElementUpdated,\n newFormSubmission.sectionState,\n )\n\n return newFormSubmission\n })\n },\n [setFormSubmission, throttledAutoSave],\n )\n\n const startNewSubmission = React.useCallback(() => {\n sendGoogleAnalyticsEvent('oneblink_form_abandon', {\n formId: definition.id,\n formName: definition.name,\n lastElementUpdated:\n getElementDisplayNameForAnalyticsEvent(autoSaveElement),\n durationUntilAbandon: autoSavePreviousElapsedDurationSeconds,\n })\n deleteAutoSaveSubmission()\n resetCurrentSubmissionDuration()\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }, [\n autoSaveElement,\n autoSavePreviousElapsedDurationSeconds,\n definition.id,\n definition.name,\n deleteAutoSaveSubmission,\n resetCurrentSubmissionDuration,\n ])\n\n const continueAutoSaveSubmission = React.useCallback(() => {\n if (autoSaveSubmission) {\n setFormSubmission((currentFormSubmission) => ({\n ...currentFormSubmission,\n submission: autoSaveSubmission,\n lastElementUpdated: autoSaveElement ? autoSaveElement : undefined,\n sectionState: autoSaveSectionState || [],\n }))\n }\n resetCurrentSubmissionDuration(autoSavePreviousElapsedDurationSeconds)\n setAutoSaveState({\n isLoadingAutoSaveSubmission: false,\n autoSaveSubmission: null,\n autoSaveElement: null,\n autoSaveSectionState: null,\n autoSavePreviousElapsedDurationSeconds: 0,\n })\n }, [\n autoSaveSubmission,\n resetCurrentSubmissionDuration,\n autoSavePreviousElapsedDurationSeconds,\n setFormSubmission,\n autoSaveElement,\n autoSaveSectionState,\n ])\n\n React.useEffect(() => {\n if (form.continueWithAutosave) {\n continueAutoSaveSubmission()\n }\n }, [continueAutoSaveSubmission, form.continueWithAutosave])\n\n return {\n definition,\n submission,\n lastElementUpdated,\n executedLookups,\n sectionState,\n isLoadingAutoSaveSubmission,\n isAutoSaveSubmissionAvailable:\n autoSaveSubmission !== null && !form.continueWithAutosave,\n startNewSubmission,\n continueAutoSaveSubmission,\n handleSubmit,\n handleCancel,\n handleSaveDraft,\n handleNavigateAway,\n setFormSubmission: setFormSubmissionAutoSave,\n getCurrentSubmissionDuration,\n }\n}\n"]}
@@ -3,6 +3,8 @@ import { differenceInSeconds } from 'date-fns';
3
3
  export default function useFormSubmissionDuration(initialPreviousElapsedDurationSeconds) {
4
4
  // a "seconds" value indicating the previous time spent on this form submission
5
5
  const [previousElapsedDurationSeconds, setPreviousElapsedDurationSeconds] = React.useState(initialPreviousElapsedDurationSeconds);
6
+ // purity not required given we're after the time
7
+ // eslint-disable-next-line react-hooks/purity
6
8
  const startTime = React.useRef(Date.now());
7
9
  // return the current submission duration in seconds
8
10
  const getCurrentSubmissionDuration = React.useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useFormSubmissionDuration.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionDuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,qCAA8C;IAE9C,+EAA+E;IAC/E,MAAM,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,GACvE,KAAK,CAAC,QAAQ,CAAqB,qCAAqC,CAAC,CAAA;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAE1C,oDAAoD;IACpD,MAAM,4BAA4B,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1D,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;QACjF,OAAO,sBAAsB,GAAG,CAAC,8BAA8B,IAAI,CAAC,CAAC,CAAA;IACvE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAA;IAEpC,MAAM,8BAA8B,GAAG,KAAK,CAAC,WAAW,CACtD,CAAC,iCAA0C,EAAE,EAAE;QAC7C,iCAAiC,CAAC,iCAAiC,CAAC,CAAA;QACpE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAChC,CAAC,EACD,EAAE,CACH,CAAA;IAED,OAAO,CAAC,4BAA4B,EAAE,8BAA8B,CAAU,CAAA;AAChF,CAAC","sourcesContent":["import * as React from 'react'\nimport { differenceInSeconds } from 'date-fns'\n\nexport default function useFormSubmissionDuration(\n initialPreviousElapsedDurationSeconds?: number,\n) {\n // a \"seconds\" value indicating the previous time spent on this form submission\n const [previousElapsedDurationSeconds, setPreviousElapsedDurationSeconds] =\n React.useState<number | undefined>(initialPreviousElapsedDurationSeconds)\n const startTime = React.useRef(Date.now())\n\n // return the current submission duration in seconds\n const getCurrentSubmissionDuration = React.useCallback(() => {\n const currentSessionDuration = differenceInSeconds(Date.now(), startTime.current)\n return currentSessionDuration + (previousElapsedDurationSeconds || 0)\n }, [previousElapsedDurationSeconds])\n\n const resetCurrentSubmissionDuration = React.useCallback(\n (newPreviousElapsedDurationSeconds?: number) => {\n setPreviousElapsedDurationSeconds(newPreviousElapsedDurationSeconds)\n startTime.current = Date.now()\n },\n [],\n )\n\n return [getCurrentSubmissionDuration, resetCurrentSubmissionDuration] as const\n}\n"]}
1
+ {"version":3,"file":"useFormSubmissionDuration.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionDuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,qCAA8C;IAE9C,+EAA+E;IAC/E,MAAM,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,GACvE,KAAK,CAAC,QAAQ,CAAqB,qCAAqC,CAAC,CAAA;IAC3E,iDAAiD;IACjD,8CAA8C;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAE1C,oDAAoD;IACpD,MAAM,4BAA4B,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1D,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;QACjF,OAAO,sBAAsB,GAAG,CAAC,8BAA8B,IAAI,CAAC,CAAC,CAAA;IACvE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAA;IAEpC,MAAM,8BAA8B,GAAG,KAAK,CAAC,WAAW,CACtD,CAAC,iCAA0C,EAAE,EAAE;QAC7C,iCAAiC,CAAC,iCAAiC,CAAC,CAAA;QACpE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAChC,CAAC,EACD,EAAE,CACH,CAAA;IAED,OAAO,CAAC,4BAA4B,EAAE,8BAA8B,CAAU,CAAA;AAChF,CAAC","sourcesContent":["import * as React from 'react'\nimport { differenceInSeconds } from 'date-fns'\n\nexport default function useFormSubmissionDuration(\n initialPreviousElapsedDurationSeconds?: number,\n) {\n // a \"seconds\" value indicating the previous time spent on this form submission\n const [previousElapsedDurationSeconds, setPreviousElapsedDurationSeconds] =\n React.useState<number | undefined>(initialPreviousElapsedDurationSeconds)\n // purity not required given we're after the time\n // eslint-disable-next-line react-hooks/purity\n const startTime = React.useRef(Date.now())\n\n // return the current submission duration in seconds\n const getCurrentSubmissionDuration = React.useCallback(() => {\n const currentSessionDuration = differenceInSeconds(Date.now(), startTime.current)\n return currentSessionDuration + (previousElapsedDurationSeconds || 0)\n }, [previousElapsedDurationSeconds])\n\n const resetCurrentSubmissionDuration = React.useCallback(\n (newPreviousElapsedDurationSeconds?: number) => {\n setPreviousElapsedDurationSeconds(newPreviousElapsedDurationSeconds)\n startTime.current = Date.now()\n },\n [],\n )\n\n return [getCurrentSubmissionDuration, resetCurrentSubmissionDuration] as const\n}\n"]}
@@ -12,6 +12,6 @@ export declare function FormSubmissionModelContextProvider({ children, model, el
12
12
  elements: FormTypes.FormElement[];
13
13
  formElementsConditionallyShown: FormElementsConditionallyShown | undefined;
14
14
  children: React.ReactNode;
15
- }): React.JSX.Element;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
16
  export default function useFormSubmissionModel(): FormSubmissionModelContextValue;
17
17
  export declare function useFormSubmissionModelParent(): FormSubmissionModelContextValue;
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
3
  import cleanFormSubmissionModel from '../services/cleanFormSubmissionModel';
3
4
  const FormSubmissionModelContext = React.createContext(undefined);
@@ -15,7 +16,7 @@ export function FormSubmissionModelContextProvider({ children, model, elements,
15
16
  formElementsConditionallyShown,
16
17
  formSubmissionModelContext,
17
18
  ]);
18
- return (React.createElement(FormSubmissionModelContext.Provider, { value: value }, children));
19
+ return (_jsx(FormSubmissionModelContext.Provider, { value: value, children: children }));
19
20
  }
20
21
  export default function useFormSubmissionModel() {
21
22
  const formSubmissionModelContext = React.useContext(FormSubmissionModelContext);
@@ -1 +1 @@
1
- {"version":3,"file":"useFormSubmissionModelContext.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionModelContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,wBAAwB,MAAM,sCAAsC,CAAA;AAS3E,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAEpD,SAAS,CAAC,CAAA;AAEZ,MAAM,UAAU,kCAAkC,CAAC,EACjD,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,8BAA8B,GAM/B;IACC,MAAM,0BAA0B,GAAG,KAAK,CAAC,UAAU,CACjD,0BAA0B,CAC3B,CAAA;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO;YACL,mBAAmB,EAAE,wBAAwB,CAC3C,KAAK,EACL,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC,KAAK;YACP,MAAM,EAAE,0BAA0B;YAClC,QAAQ;SACT,CAAA;IACH,CAAC,EAAE;QACD,KAAK;QACL,QAAQ;QACR,8BAA8B;QAC9B,0BAA0B;KAC3B,CAAC,CAAA;IACF,OAAO,CACL,oBAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAC9C,QAAQ,CAC2B,CACvC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB;IAC5C,MAAM,0BAA0B,GAAG,KAAK,CAAC,UAAU,CACjD,0BAA0B,CAC3B,CAAA;IACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAA;IACH,CAAC;IACD,OAAO,0BAA0B,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,IAAI,0BAA0B,GAAG,sBAAsB,EAAE,CAAA;IACzD,OAAO,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACzC,0BAA0B,GAAG,0BAA0B,CAAC,MAAM,CAAA;IAChE,CAAC;IACD,OAAO,0BAA0B,CAAA;AACnC,CAAC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { FormElement } from '@oneblink/types/typescript/forms'\nimport * as React from 'react'\nimport cleanFormSubmissionModel from '../services/cleanFormSubmissionModel'\nimport { FormElementsConditionallyShown } from '../types/form'\n\nexport type FormSubmissionModelContextValue = {\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission']\n parent?: FormSubmissionModelContextValue\n elements: FormElement[]\n}\n\nconst FormSubmissionModelContext = React.createContext<\n FormSubmissionModelContextValue | undefined\n>(undefined)\n\nexport function FormSubmissionModelContextProvider({\n children,\n model,\n elements,\n formElementsConditionallyShown,\n}: {\n model: SubmissionTypes.S3SubmissionData['submission']\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n children: React.ReactNode\n}) {\n const formSubmissionModelContext = React.useContext(\n FormSubmissionModelContext,\n )\n const value = React.useMemo(() => {\n return {\n formSubmissionModel: cleanFormSubmissionModel(\n model,\n elements,\n formElementsConditionallyShown,\n true,\n ).model,\n parent: formSubmissionModelContext,\n elements,\n }\n }, [\n model,\n elements,\n formElementsConditionallyShown,\n formSubmissionModelContext,\n ])\n return (\n <FormSubmissionModelContext.Provider value={value}>\n {children}\n </FormSubmissionModelContext.Provider>\n )\n}\n\nexport default function useFormSubmissionModel() {\n const formSubmissionModelContext = React.useContext(\n FormSubmissionModelContext,\n )\n if (!formSubmissionModelContext) {\n throw new Error(\n '\"FormSubmissionModelContext\" does not have a value in this context',\n )\n }\n return formSubmissionModelContext\n}\n\nexport function useFormSubmissionModelParent() {\n let formSubmissionModelContext = useFormSubmissionModel()\n while (formSubmissionModelContext.parent) {\n formSubmissionModelContext = formSubmissionModelContext.parent\n }\n return formSubmissionModelContext\n}\n"]}
1
+ {"version":3,"file":"useFormSubmissionModelContext.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionModelContext.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,wBAAwB,MAAM,sCAAsC,CAAA;AAS3E,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAEpD,SAAS,CAAC,CAAA;AAEZ,MAAM,UAAU,kCAAkC,CAAC,EACjD,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,8BAA8B,GAM/B;IACC,MAAM,0BAA0B,GAAG,KAAK,CAAC,UAAU,CACjD,0BAA0B,CAC3B,CAAA;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO;YACL,mBAAmB,EAAE,wBAAwB,CAC3C,KAAK,EACL,QAAQ,EACR,8BAA8B,EAC9B,IAAI,CACL,CAAC,KAAK;YACP,MAAM,EAAE,0BAA0B;YAClC,QAAQ;SACT,CAAA;IACH,CAAC,EAAE;QACD,KAAK;QACL,QAAQ;QACR,8BAA8B;QAC9B,0BAA0B;KAC3B,CAAC,CAAA;IACF,OAAO,CACL,KAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC9C,QAAQ,GAC2B,CACvC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB;IAC5C,MAAM,0BAA0B,GAAG,KAAK,CAAC,UAAU,CACjD,0BAA0B,CAC3B,CAAA;IACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAA;IACH,CAAC;IACD,OAAO,0BAA0B,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,IAAI,0BAA0B,GAAG,sBAAsB,EAAE,CAAA;IACzD,OAAO,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACzC,0BAA0B,GAAG,0BAA0B,CAAC,MAAM,CAAA;IAChE,CAAC;IACD,OAAO,0BAA0B,CAAA;AACnC,CAAC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { FormElement } from '@oneblink/types/typescript/forms'\nimport * as React from 'react'\nimport cleanFormSubmissionModel from '../services/cleanFormSubmissionModel'\nimport { FormElementsConditionallyShown } from '../types/form'\n\nexport type FormSubmissionModelContextValue = {\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission']\n parent?: FormSubmissionModelContextValue\n elements: FormElement[]\n}\n\nconst FormSubmissionModelContext = React.createContext<\n FormSubmissionModelContextValue | undefined\n>(undefined)\n\nexport function FormSubmissionModelContextProvider({\n children,\n model,\n elements,\n formElementsConditionallyShown,\n}: {\n model: SubmissionTypes.S3SubmissionData['submission']\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n children: React.ReactNode\n}) {\n const formSubmissionModelContext = React.useContext(\n FormSubmissionModelContext,\n )\n const value = React.useMemo(() => {\n return {\n formSubmissionModel: cleanFormSubmissionModel(\n model,\n elements,\n formElementsConditionallyShown,\n true,\n ).model,\n parent: formSubmissionModelContext,\n elements,\n }\n }, [\n model,\n elements,\n formElementsConditionallyShown,\n formSubmissionModelContext,\n ])\n return (\n <FormSubmissionModelContext.Provider value={value}>\n {children}\n </FormSubmissionModelContext.Provider>\n )\n}\n\nexport default function useFormSubmissionModel() {\n const formSubmissionModelContext = React.useContext(\n FormSubmissionModelContext,\n )\n if (!formSubmissionModelContext) {\n throw new Error(\n '\"FormSubmissionModelContext\" does not have a value in this context',\n )\n }\n return formSubmissionModelContext\n}\n\nexport function useFormSubmissionModelParent() {\n let formSubmissionModelContext = useFormSubmissionModel()\n while (formSubmissionModelContext.parent) {\n formSubmissionModelContext = formSubmissionModelContext.parent\n }\n return formSubmissionModelContext\n}\n"]}
@@ -4,7 +4,7 @@ import { ExecutedLookups, SectionState } from '../types/form';
4
4
  /**
5
5
  * This function is a simple wrapper around the react hook `useState()`. The
6
6
  * results can be passed to the [`<OneBlinkForm
7
- * />`](https://oneblink.github.io/apps-react/somewhere) //TODO: Fix link
7
+ * />`](https://oneblink.github.io/apps-react/functions/OneBlinkForm.html)
8
8
  * component.
9
9
  *
10
10
  * ## Example
@@ -4,7 +4,7 @@ import generateDefaultData from '../services/generate-default-data';
4
4
  /**
5
5
  * This function is a simple wrapper around the react hook `useState()`. The
6
6
  * results can be passed to the [`<OneBlinkForm
7
- * />`](https://oneblink.github.io/apps-react/somewhere) //TODO: Fix link
7
+ * />`](https://oneblink.github.io/apps-react/functions/OneBlinkForm.html)
8
8
  * component.
9
9
  *
10
10
  * ## Example
@@ -1 +1 @@
1
- {"version":3,"file":"useFormSubmissionState.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,mBAAmB,MAAM,mCAAmC,CAAA;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,IAAoB,EACpB,iBAAkE,EAClE,kBAA0C,EAC1C,YAA2B;IAE3B,OAAO,KAAK,CAAC,QAAQ,CAMlB,GAAG,EAAE;QACN,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,WAAW,GAAG,mBAAmB,CACrC,UAAU,CAAC,QAAQ,EACnB,iBAAiB,IAAI,EAAE,CACxB,CAAA;QACD,OAAO;YACL,UAAU;YACV,UAAU,EAAE,WAAW;YACvB,kBAAkB;YAClB,eAAe,EAAE,EAAE;YACnB,YAAY;SACb,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import * as React from 'react'\nimport _cloneDeep from 'lodash.clonedeep'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport generateDefaultData from '../services/generate-default-data'\nimport { ExecutedLookups, SectionState } from '../types/form'\n/**\n * This function is a simple wrapper around the react hook `useState()`. The\n * results can be passed to the [`<OneBlinkForm\n * />`](https://oneblink.github.io/apps-react/somewhere) //TODO: Fix link\n * component.\n *\n * ## Example\n *\n * ```js\n * import {\n * useFormSubmissionState,\n * OneBlinkFormControlled,\n * } from '@oneblink/apps-react'\n *\n * function Uncontrolled({ form, initialSubmission, ...props }) {\n * const [{ definition, submission }, setFormSubmission] =\n * useFormSubmissionState(form, initialSubmission)\n *\n * return (\n * <OneBlinkFormControlled\n * {...props}\n * definition={definition}\n * submission={submission}\n * setFormSubmission={setFormSubmission}\n * lastElementUpdated={lastElementUpdated}\n * />\n * )\n * }\n * ```\n *\n * @param form The OneBlink Form to render\n * @param initialSubmission The initial submission data to populate the form\n * with\n * @param lastElementUpdated\n * @returns\n * @group Hooks\n */\nexport default function useFormSubmissionState(\n form: FormTypes.Form,\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission'],\n lastElementUpdated?: FormTypes.FormElement,\n sectionState?: SectionState,\n) {\n return React.useState<{\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n lastElementUpdated: FormTypes.FormElement | undefined\n executedLookups: ExecutedLookups\n sectionState: SectionState | undefined\n }>(() => {\n const definition = _cloneDeep(form)\n const defaultData = generateDefaultData(\n definition.elements,\n initialSubmission || {},\n )\n return {\n definition,\n submission: defaultData,\n lastElementUpdated,\n executedLookups: {},\n sectionState,\n }\n })\n}\n"]}
1
+ {"version":3,"file":"useFormSubmissionState.js","sourceRoot":"","sources":["../../src/hooks/useFormSubmissionState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,mBAAmB,MAAM,mCAAmC,CAAA;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,IAAoB,EACpB,iBAAkE,EAClE,kBAA0C,EAC1C,YAA2B;IAE3B,OAAO,KAAK,CAAC,QAAQ,CAMlB,GAAG,EAAE;QACN,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,WAAW,GAAG,mBAAmB,CACrC,UAAU,CAAC,QAAQ,EACnB,iBAAiB,IAAI,EAAE,CACxB,CAAA;QACD,OAAO;YACL,UAAU;YACV,UAAU,EAAE,WAAW;YACvB,kBAAkB;YAClB,eAAe,EAAE,EAAE;YACnB,YAAY;SACb,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import * as React from 'react'\nimport _cloneDeep from 'lodash.clonedeep'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport generateDefaultData from '../services/generate-default-data'\nimport { ExecutedLookups, SectionState } from '../types/form'\n/**\n * This function is a simple wrapper around the react hook `useState()`. The\n * results can be passed to the [`<OneBlinkForm\n * />`](https://oneblink.github.io/apps-react/functions/OneBlinkForm.html)\n * component.\n *\n * ## Example\n *\n * ```js\n * import {\n * useFormSubmissionState,\n * OneBlinkFormControlled,\n * } from '@oneblink/apps-react'\n *\n * function Uncontrolled({ form, initialSubmission, ...props }) {\n * const [{ definition, submission }, setFormSubmission] =\n * useFormSubmissionState(form, initialSubmission)\n *\n * return (\n * <OneBlinkFormControlled\n * {...props}\n * definition={definition}\n * submission={submission}\n * setFormSubmission={setFormSubmission}\n * lastElementUpdated={lastElementUpdated}\n * />\n * )\n * }\n * ```\n *\n * @param form The OneBlink Form to render\n * @param initialSubmission The initial submission data to populate the form\n * with\n * @param lastElementUpdated\n * @returns\n * @group Hooks\n */\nexport default function useFormSubmissionState(\n form: FormTypes.Form,\n initialSubmission?: SubmissionTypes.S3SubmissionData['submission'],\n lastElementUpdated?: FormTypes.FormElement,\n sectionState?: SectionState,\n) {\n return React.useState<{\n definition: FormTypes.Form\n submission: SubmissionTypes.S3SubmissionData['submission']\n lastElementUpdated: FormTypes.FormElement | undefined\n executedLookups: ExecutedLookups\n sectionState: SectionState | undefined\n }>(() => {\n const definition = _cloneDeep(form)\n const defaultData = generateDefaultData(\n definition.elements,\n initialSubmission || {},\n )\n return {\n definition,\n submission: defaultData,\n lastElementUpdated,\n executedLookups: {},\n sectionState,\n }\n })\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
2
  declare const IsHoveringContext: React.Context<boolean>;
3
- export declare const IsHoveringProvider: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
3
+ export declare function IsHoveringProvider({ ref, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
4
4
  export declare function useIsHovering(): boolean;
5
5
  export default IsHoveringContext;
@@ -1,11 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
3
  import useBooleanState from './useBooleanState';
3
4
  const IsHoveringContext = React.createContext(false);
4
- export const IsHoveringProvider = React.forwardRef(function IsHoveringProvider(props, ref) {
5
+ export function IsHoveringProvider({ ref, ...props }) {
5
6
  const [isHovering, startHovering, stopHovering] = useBooleanState(false);
6
- return (React.createElement(IsHoveringContext.Provider, { value: isHovering },
7
- React.createElement("div", { ...props, onMouseEnter: startHovering, onMouseLeave: stopHovering, ref: ref })));
8
- });
7
+ return (_jsx(IsHoveringContext.Provider, { value: isHovering, children: _jsx("div", { ...props, onMouseEnter: startHovering, onMouseLeave: stopHovering, ref: ref }) }));
8
+ }
9
9
  export function useIsHovering() {
10
10
  return React.useContext(IsHoveringContext);
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useIsHovering.js","sourceRoot":"","sources":["../../src/hooks/useIsHovering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAGhD,SAAS,kBAAkB,CAAC,KAAkC,EAAE,GAAG;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAExE,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU;QAC3C,gCACM,KAAK,EACT,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,GAAG,GACR,CACyB,CAC9B,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAC5C,CAAC;AAED,eAAe,iBAAiB,CAAA","sourcesContent":["import * as React from 'react'\nimport useBooleanState from './useBooleanState'\n\nconst IsHoveringContext = React.createContext<boolean>(false)\n\nexport const IsHoveringProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'>\n>(function IsHoveringProvider(props: React.ComponentProps<'div'>, ref) {\n const [isHovering, startHovering, stopHovering] = useBooleanState(false)\n\n return (\n <IsHoveringContext.Provider value={isHovering}>\n <div\n {...props}\n onMouseEnter={startHovering}\n onMouseLeave={stopHovering}\n ref={ref}\n />\n </IsHoveringContext.Provider>\n )\n})\n\nexport function useIsHovering() {\n return React.useContext(IsHoveringContext)\n}\n\nexport default IsHoveringContext\n"]}
1
+ {"version":3,"file":"useIsHovering.js","sourceRoot":"","sources":["../../src/hooks/useIsHovering.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAA;AAE7D,MAAM,UAAU,kBAAkB,CAAC,EACjC,GAAG,EACH,GAAG,KAAK,EACoB;IAC5B,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAExE,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YAC3C,iBACM,KAAK,EACT,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,GAAG,GACR,GACyB,CAC9B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAC5C,CAAC;AAED,eAAe,iBAAiB,CAAA","sourcesContent":["import * as React from 'react'\nimport useBooleanState from './useBooleanState'\n\nconst IsHoveringContext = React.createContext<boolean>(false)\n\nexport function IsHoveringProvider({\n ref,\n ...props\n}: React.ComponentProps<'div'>) {\n const [isHovering, startHovering, stopHovering] = useBooleanState(false)\n\n return (\n <IsHoveringContext.Provider value={isHovering}>\n <div\n {...props}\n onMouseEnter={startHovering}\n onMouseLeave={stopHovering}\n ref={ref}\n />\n </IsHoveringContext.Provider>\n )\n}\n\nexport function useIsHovering() {\n return React.useContext(IsHoveringContext)\n}\n\nexport default IsHoveringContext\n"]}
@@ -37,7 +37,7 @@ export declare const useNetworkChangeEffect: (type: "online" | "offline", listen
37
37
  */
38
38
  export declare function IsOfflineContextProvider({ children, }: {
39
39
  children: React.ReactNode;
40
- }): React.JSX.Element;
40
+ }): import("react/jsx-runtime").JSX.Element;
41
41
  /**
42
42
  * This function is a react hook for determining whether an application is in an
43
43
  * offline state.
@@ -1,5 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
- import { offlineService } from '@oneblink/apps';
3
+ import { offlineService } from '../apps';
3
4
  import useBooleanState from '../hooks/useBooleanState';
4
5
  const defaultValue = offlineService.isOffline();
5
6
  const IsOfflineContext = React.createContext(defaultValue);
@@ -54,7 +55,7 @@ export function IsOfflineContextProvider({ children, }) {
54
55
  const [isOffline, goOffline, goOnline] = useBooleanState(defaultValue);
55
56
  useNetworkChangeEffect('online', goOnline);
56
57
  useNetworkChangeEffect('offline', goOffline);
57
- return (React.createElement(IsOfflineContext.Provider, { value: isOffline }, children));
58
+ return (_jsx(IsOfflineContext.Provider, { value: isOffline, children: children }));
58
59
  }
59
60
  /**
60
61
  * This function is a react hook for determining whether an application is in an
@@ -1 +1 @@
1
- {"version":3,"file":"useIsOffline.js","sourceRoot":"","sources":["../../src/hooks/useIsOffline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,eAAe,MAAM,0BAA0B,CAAA;AAEtD,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;AAE/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAU,YAAY,CAAC,CAAA;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA0B,EAC1B,QAAuB,EACvB,EAAE;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,sDAAsD;QACtD,sDAAsD;QACtD,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;QAClD,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAExC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC7C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;AACtB,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,GAGT;IACC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAEtE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1C,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE5C,OAAO,CACL,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,IACxC,QAAQ,CACiB,CAC7B,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY;IAClC,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAC3C,CAAC","sourcesContent":["import * as React from 'react'\n\nimport { offlineService } from '@oneblink/apps'\nimport useBooleanState from '../hooks/useBooleanState'\n\nconst defaultValue = offlineService.isOffline()\n\nconst IsOfflineContext = React.createContext<boolean>(defaultValue)\n\n/**\n * @param type\n * @param listener\n * @group Hooks\n */\nexport const useNetworkChangeEffect = (\n type: 'online' | 'offline',\n listener: () => unknown,\n) => {\n React.useEffect(() => {\n // Stupid cordova seems to require that offline/online\n // listeners are set on the document and browsers seem\n // to require window.\n const element = window.cordova ? document : window\n element.addEventListener(type, listener)\n\n return () => {\n element.removeEventListener(type, listener)\n }\n }, [type, listener])\n}\n\n/**\n * IsOfflineContextProvider is a React Component that provides the `isOffline`\n * state for components further down your component tree to consume. It should\n * be used to wrap the components requiring the state.\n *\n * - **This component is required in your component tree to be able to consume the\n * [`useIsOffline`](./useIsOffline.html) hook.**\n *\n * ### Usage\n *\n * ```jsx\n * import { IsOfflineContextProvider } from '@oneblink/apps-react'\n *\n * const TopLevelComponent = () => {\n * return (\n * <IsOfflineContextProvider>\n * <div>\n * <ComponentThatRequiresOfflineState />\n * </div>\n * </IsOfflineContextProvider>\n * )\n * }\n *\n * export default TopLevelComponent\n * ```\n *\n * @param props\n * @returns\n * @group Components\n */\nexport function IsOfflineContextProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const [isOffline, goOffline, goOnline] = useBooleanState(defaultValue)\n\n useNetworkChangeEffect('online', goOnline)\n useNetworkChangeEffect('offline', goOffline)\n\n return (\n <IsOfflineContext.Provider value={isOffline}>\n {children}\n </IsOfflineContext.Provider>\n )\n}\n\n/**\n * This function is a react hook for determining whether an application is in an\n * offline state.\n *\n * - **This component requires\n * [`<IsOfflineContextProvider/>`](./IsOfflineContextProvider.html) to be\n * present in your component tree.**\n *\n * ## Example\n *\n * ```js\n * import { useIsOffline } from '@oneblink/apps-react'\n *\n * const isOffline = useIsOffline()\n * ```\n *\n * @returns\n * @group Hooks\n */\nexport default function useIsOffline() {\n return React.useContext(IsOfflineContext)\n}\n"]}
1
+ {"version":3,"file":"useIsOffline.js","sourceRoot":"","sources":["../../src/hooks/useIsOffline.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,eAAe,MAAM,0BAA0B,CAAA;AAEtD,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,CAAA;AAE/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAU,YAAY,CAAC,CAAA;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA0B,EAC1B,QAAuB,EACvB,EAAE;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,sDAAsD;QACtD,sDAAsD;QACtD,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;QAClD,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAExC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC7C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;AACtB,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,GAGT;IACC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAEtE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1C,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE5C,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,YACxC,QAAQ,GACiB,CAC7B,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY;IAClC,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAC3C,CAAC","sourcesContent":["import * as React from 'react'\n\nimport { offlineService } from '../apps'\nimport useBooleanState from '../hooks/useBooleanState'\n\nconst defaultValue = offlineService.isOffline()\n\nconst IsOfflineContext = React.createContext<boolean>(defaultValue)\n\n/**\n * @param type\n * @param listener\n * @group Hooks\n */\nexport const useNetworkChangeEffect = (\n type: 'online' | 'offline',\n listener: () => unknown,\n) => {\n React.useEffect(() => {\n // Stupid cordova seems to require that offline/online\n // listeners are set on the document and browsers seem\n // to require window.\n const element = window.cordova ? document : window\n element.addEventListener(type, listener)\n\n return () => {\n element.removeEventListener(type, listener)\n }\n }, [type, listener])\n}\n\n/**\n * IsOfflineContextProvider is a React Component that provides the `isOffline`\n * state for components further down your component tree to consume. It should\n * be used to wrap the components requiring the state.\n *\n * - **This component is required in your component tree to be able to consume the\n * [`useIsOffline`](./useIsOffline.html) hook.**\n *\n * ### Usage\n *\n * ```jsx\n * import { IsOfflineContextProvider } from '@oneblink/apps-react'\n *\n * const TopLevelComponent = () => {\n * return (\n * <IsOfflineContextProvider>\n * <div>\n * <ComponentThatRequiresOfflineState />\n * </div>\n * </IsOfflineContextProvider>\n * )\n * }\n *\n * export default TopLevelComponent\n * ```\n *\n * @param props\n * @returns\n * @group Components\n */\nexport function IsOfflineContextProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const [isOffline, goOffline, goOnline] = useBooleanState(defaultValue)\n\n useNetworkChangeEffect('online', goOnline)\n useNetworkChangeEffect('offline', goOffline)\n\n return (\n <IsOfflineContext.Provider value={isOffline}>\n {children}\n </IsOfflineContext.Provider>\n )\n}\n\n/**\n * This function is a react hook for determining whether an application is in an\n * offline state.\n *\n * - **This component requires\n * [`<IsOfflineContextProvider/>`](./IsOfflineContextProvider.html) to be\n * present in your component tree.**\n *\n * ## Example\n *\n * ```js\n * import { useIsOffline } from '@oneblink/apps-react'\n *\n * const isOffline = useIsOffline()\n * ```\n *\n * @returns\n * @group Hooks\n */\nexport default function useIsOffline() {\n return React.useContext(IsOfflineContext)\n}\n"]}
@@ -4,6 +4,6 @@ type Props = {
4
4
  isPageVisible: IsPageVisibleContextValue;
5
5
  children: React.ReactNode;
6
6
  };
7
- export declare function IsPageVisibleProvider({ isPageVisible, children }: Props): React.JSX.Element;
7
+ export declare function IsPageVisibleProvider({ isPageVisible, children }: Props): import("react/jsx-runtime").JSX.Element;
8
8
  export default function useIsPageVisible(): boolean;
9
9
  export {};
@@ -1,7 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import * as React from 'react';
2
3
  const IsPageVisibleContext = React.createContext(false);
3
4
  export function IsPageVisibleProvider({ isPageVisible, children }) {
4
- return (React.createElement(IsPageVisibleContext.Provider, { value: isPageVisible }, children));
5
+ return (_jsx(IsPageVisibleContext.Provider, { value: isPageVisible, children: children }));
5
6
  }
6
7
  export default function useIsPageVisible() {
7
8
  return React.useContext(IsPageVisibleContext);
@@ -1 +1 @@
1
- {"version":3,"file":"useIsPageVisible.js","sourceRoot":"","sources":["../../src/hooks/useIsPageVisible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,oBAAoB,GACxB,KAAK,CAAC,aAAa,CAA4B,KAAK,CAAC,CAAA;AAEvD,MAAM,UAAU,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAS;IACtE,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,IAChD,QAAQ,CACqB,CACjC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,OAAO,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;AAC/C,CAAC","sourcesContent":["import * as React from 'react'\n\ntype IsPageVisibleContextValue = boolean\n\ntype Props = {\n isPageVisible: IsPageVisibleContextValue\n children: React.ReactNode\n}\n\nconst IsPageVisibleContext =\n React.createContext<IsPageVisibleContextValue>(false)\n\nexport function IsPageVisibleProvider({ isPageVisible, children }: Props) {\n return (\n <IsPageVisibleContext.Provider value={isPageVisible}>\n {children}\n </IsPageVisibleContext.Provider>\n )\n}\n\nexport default function useIsPageVisible() {\n return React.useContext(IsPageVisibleContext)\n}\n"]}
1
+ {"version":3,"file":"useIsPageVisible.js","sourceRoot":"","sources":["../../src/hooks/useIsPageVisible.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,oBAAoB,GACxB,KAAK,CAAC,aAAa,CAA4B,KAAK,CAAC,CAAA;AAEvD,MAAM,UAAU,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAS;IACtE,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAChD,QAAQ,GACqB,CACjC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,OAAO,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;AAC/C,CAAC","sourcesContent":["import * as React from 'react'\n\ntype IsPageVisibleContextValue = boolean\n\ntype Props = {\n isPageVisible: IsPageVisibleContextValue\n children: React.ReactNode\n}\n\nconst IsPageVisibleContext =\n React.createContext<IsPageVisibleContextValue>(false)\n\nexport function IsPageVisibleProvider({ isPageVisible, children }: Props) {\n return (\n <IsPageVisibleContext.Provider value={isPageVisible}>\n {children}\n </IsPageVisibleContext.Provider>\n )\n}\n\nexport default function useIsPageVisible() {\n return React.useContext(IsPageVisibleContext)\n}\n"]}
@@ -47,7 +47,9 @@ export default function useLoadDataState(onLoad) {
47
47
  const [state, setState] = React.useState({
48
48
  status: 'LOADING',
49
49
  });
50
- const handleLoad = React.useCallback(async (abortSignal) => {
50
+ const handleLoad = React.useCallback(
51
+ // eslint-disable-next-line react-hooks/preserve-manual-memoization
52
+ async (abortSignal) => {
51
53
  setState({
52
54
  status: 'LOADING',
53
55
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadDataState.js","sourceRoot":"","sources":["../../src/hooks/useLoadDataState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AAiBnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,MAAgD;IAMhD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAmB;QACzD,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,KAAK,EAAE,WAAwB,EAAE,EAAE;QACjC,QAAQ,CAAC;YACP,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACxC,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9C,QAAQ,CAAC;oBACP,MAAM,EAAE,SAAS;oBACjB,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9C,QAAQ,CAAC;oBACP,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,GAAY;iBACpB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,SAAS,EAAE,MAAM,CAAC,CACpB,CAAA;IAED,MAAM,SAAS,GAA4C,KAAK,CAAC,WAAW,CAC1E,CAAC,MAAM,EAAE,EAAE;QACT,QAAQ,CAAC,CAAC,YAA8B,EAAE,EAAE;YAC1C,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO;oBACL,GAAG,YAAY;oBACf,MAAM,EACJ,OAAO,MAAM,KAAK,UAAU;wBAC1B,CAAC,CAAC,oFAAoF;4BACpF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;wBAC7B,CAAC,CAAC,MAAM;iBACb,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,EAAE,CACH,CAAA;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAEnD,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC","sourcesContent":["import * as React from 'react'\nimport useIsMounted from './useIsMounted'\nimport useLoadDataEffect from './useLoadDataEffect'\n\nexport type LoadDataState<T> =\n | {\n status: 'SUCCESS'\n /** Your data. */\n result: T\n }\n | {\n status: 'ERROR'\n /** A JavaScript `Error` object. */\n error: Error\n }\n | {\n status: 'LOADING'\n }\n\n/**\n * This function is a react hook for managing the state involved with loading\n * data.\n *\n * ## Example\n *\n * ```js\n * import { useLoadDataState } from '@oneblink/apps-react'\n * const fetchData = async () => {\n * const response = await fetch(`https://some-website.com/api?data=data`)\n *\n * if (!response.ok) {\n * const text = await response.text()\n * throw new Error(text)\n * }\n *\n * return await response.json()\n * }\n *\n * const MyComponent = () => {\n * const [state, refresh, setResult] = useLoadDataState(fetchData)\n *\n * switch (state.status) {\n * case 'LOADING':\n * return <Loading />\n * case 'ERROR':\n * return <Error message={state.error} />\n * case 'SUCCESS':\n * // RENDER UI\n * }\n * }\n *\n * export default MyComponent\n * ```\n *\n * @typeParam T The type of the data returned by your `onLoad` function\n * @param onLoad The function that fetches your data. Should be a Promise that\n * returns your data\n * @returns\n * @group Hooks\n */\nexport default function useLoadDataState<T>(\n onLoad: (abortSignal: AbortSignal) => Promise<T>,\n): [\n state: LoadDataState<T>,\n handleRefresh: () => void,\n setResult: React.Dispatch<React.SetStateAction<T>>,\n] {\n const isMounted = useIsMounted()\n const [state, setState] = React.useState<LoadDataState<T>>({\n status: 'LOADING',\n })\n\n const handleLoad = React.useCallback(\n async (abortSignal: AbortSignal) => {\n setState({\n status: 'LOADING',\n })\n try {\n const result = await onLoad(abortSignal)\n if (isMounted.current && !abortSignal.aborted) {\n setState({\n status: 'SUCCESS',\n result,\n })\n }\n } catch (err) {\n if (isMounted.current && !abortSignal.aborted) {\n setState({\n status: 'ERROR',\n error: err as Error,\n })\n }\n }\n },\n [isMounted, onLoad],\n )\n\n const setResult: React.Dispatch<React.SetStateAction<T>> = React.useCallback(\n (setter) => {\n setState((currentState: LoadDataState<T>) => {\n if (currentState.status === 'SUCCESS') {\n return {\n ...currentState,\n result:\n typeof setter === 'function'\n ? // @ts-expect-error Typescript cannot tell between a generic type (T) and a function\n setter(currentState.result)\n : setter,\n }\n } else {\n return currentState\n }\n })\n },\n [],\n )\n\n const handleRefresh = useLoadDataEffect(handleLoad)\n\n return [state, handleRefresh, setResult]\n}\n"]}
1
+ {"version":3,"file":"useLoadDataState.js","sourceRoot":"","sources":["../../src/hooks/useLoadDataState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AAiBnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,MAAgD;IAMhD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAmB;QACzD,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW;IAClC,mEAAmE;IACnE,KAAK,EAAE,WAAwB,EAAE,EAAE;QACjC,QAAQ,CAAC;YACP,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACxC,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9C,QAAQ,CAAC;oBACP,MAAM,EAAE,SAAS;oBACjB,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9C,QAAQ,CAAC;oBACP,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,GAAY;iBACpB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,SAAS,EAAE,MAAM,CAAC,CACpB,CAAA;IAED,MAAM,SAAS,GAA4C,KAAK,CAAC,WAAW,CAC1E,CAAC,MAAM,EAAE,EAAE;QACT,QAAQ,CAAC,CAAC,YAA8B,EAAE,EAAE;YAC1C,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO;oBACL,GAAG,YAAY;oBACf,MAAM,EACJ,OAAO,MAAM,KAAK,UAAU;wBAC1B,CAAC,CAAC,oFAAoF;4BACpF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;wBAC7B,CAAC,CAAC,MAAM;iBACb,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,EAAE,CACH,CAAA;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAEnD,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC","sourcesContent":["import * as React from 'react'\nimport useIsMounted from './useIsMounted'\nimport useLoadDataEffect from './useLoadDataEffect'\n\nexport type LoadDataState<T> =\n | {\n status: 'SUCCESS'\n /** Your data. */\n result: T\n }\n | {\n status: 'ERROR'\n /** A JavaScript `Error` object. */\n error: Error\n }\n | {\n status: 'LOADING'\n }\n\n/**\n * This function is a react hook for managing the state involved with loading\n * data.\n *\n * ## Example\n *\n * ```js\n * import { useLoadDataState } from '@oneblink/apps-react'\n * const fetchData = async () => {\n * const response = await fetch(`https://some-website.com/api?data=data`)\n *\n * if (!response.ok) {\n * const text = await response.text()\n * throw new Error(text)\n * }\n *\n * return await response.json()\n * }\n *\n * const MyComponent = () => {\n * const [state, refresh, setResult] = useLoadDataState(fetchData)\n *\n * switch (state.status) {\n * case 'LOADING':\n * return <Loading />\n * case 'ERROR':\n * return <Error message={state.error} />\n * case 'SUCCESS':\n * // RENDER UI\n * }\n * }\n *\n * export default MyComponent\n * ```\n *\n * @typeParam T The type of the data returned by your `onLoad` function\n * @param onLoad The function that fetches your data. Should be a Promise that\n * returns your data\n * @returns\n * @group Hooks\n */\nexport default function useLoadDataState<T>(\n onLoad: (abortSignal: AbortSignal) => Promise<T>,\n): [\n state: LoadDataState<T>,\n handleRefresh: () => void,\n setResult: React.Dispatch<React.SetStateAction<T>>,\n] {\n const isMounted = useIsMounted()\n\n const [state, setState] = React.useState<LoadDataState<T>>({\n status: 'LOADING',\n })\n\n const handleLoad = React.useCallback(\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n async (abortSignal: AbortSignal) => {\n setState({\n status: 'LOADING',\n })\n try {\n const result = await onLoad(abortSignal)\n if (isMounted.current && !abortSignal.aborted) {\n setState({\n status: 'SUCCESS',\n result,\n })\n }\n } catch (err) {\n if (isMounted.current && !abortSignal.aborted) {\n setState({\n status: 'ERROR',\n error: err as Error,\n })\n }\n }\n },\n [isMounted, onLoad],\n )\n\n const setResult: React.Dispatch<React.SetStateAction<T>> = React.useCallback(\n (setter) => {\n setState((currentState: LoadDataState<T>) => {\n if (currentState.status === 'SUCCESS') {\n return {\n ...currentState,\n result:\n typeof setter === 'function'\n ? // @ts-expect-error Typescript cannot tell between a generic type (T) and a function\n setter(currentState.result)\n : setter,\n }\n } else {\n return currentState\n }\n })\n },\n [],\n )\n\n const handleRefresh = useLoadDataEffect(handleLoad)\n\n return [state, handleRefresh, setResult]\n}\n"]}