@oneblink/apps-react 9.0.0-beta.2 → 9.0.0-beta.4

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 (368) hide show
  1. package/dist/OneBlinkForm.d.ts +6 -10
  2. package/dist/OneBlinkForm.js +0 -4
  3. package/dist/OneBlinkForm.js.map +1 -1
  4. package/dist/OneBlinkFormBase.d.ts +1 -1
  5. package/dist/OneBlinkFormBase.js +2 -1
  6. package/dist/OneBlinkFormBase.js.map +1 -1
  7. package/dist/OneBlinkReadOnlyForm.d.ts +1 -1
  8. package/dist/OneBlinkReadOnlyForm.js +1 -1
  9. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  10. package/dist/PaymentReceipt.d.ts +1 -1
  11. package/dist/PaymentReceipt.js +1 -1
  12. package/dist/PaymentReceipt.js.map +1 -1
  13. package/dist/apps/Sentry.d.ts +7 -0
  14. package/dist/apps/Sentry.js +16 -0
  15. package/dist/apps/Sentry.js.map +1 -0
  16. package/dist/apps/approvals-service.d.ts +390 -0
  17. package/dist/apps/approvals-service.js +987 -0
  18. package/dist/apps/approvals-service.js.map +1 -0
  19. package/dist/apps/attachments-service.d.ts +49 -0
  20. package/dist/apps/attachments-service.js +134 -0
  21. package/dist/apps/attachments-service.js.map +1 -0
  22. package/dist/apps/auth-service.d.ts +114 -0
  23. package/dist/apps/auth-service.js +194 -0
  24. package/dist/apps/auth-service.js.map +1 -0
  25. package/dist/apps/auto-save-service.d.ts +82 -0
  26. package/dist/apps/auto-save-service.js +105 -0
  27. package/dist/apps/auto-save-service.js.map +1 -0
  28. package/dist/apps/draft-service.d.ts +148 -0
  29. package/dist/apps/draft-service.js +583 -0
  30. package/dist/apps/draft-service.js.map +1 -0
  31. package/dist/apps/form-service.d.ts +204 -0
  32. package/dist/apps/form-service.js +718 -0
  33. package/dist/apps/form-service.js.map +1 -0
  34. package/dist/apps/form-store-service.d.ts +141 -0
  35. package/dist/apps/form-store-service.js +114 -0
  36. package/dist/apps/form-store-service.js.map +1 -0
  37. package/dist/apps/forms-app-environment-service.d.ts +19 -0
  38. package/dist/apps/forms-app-environment-service.js +55 -0
  39. package/dist/apps/forms-app-environment-service.js.map +1 -0
  40. package/dist/apps/forms-app-service.d.ts +18 -0
  41. package/dist/apps/forms-app-service.js +53 -0
  42. package/dist/apps/forms-app-service.js.map +1 -0
  43. package/dist/apps/index.d.ts +252 -0
  44. package/dist/apps/index.js +254 -0
  45. package/dist/apps/index.js.map +1 -0
  46. package/dist/apps/job-service.d.ts +20 -0
  47. package/dist/apps/job-service.js +95 -0
  48. package/dist/apps/job-service.js.map +1 -0
  49. package/dist/apps/localisation-service.d.ts +207 -0
  50. package/dist/apps/localisation-service.js +321 -0
  51. package/dist/apps/localisation-service.js.map +1 -0
  52. package/dist/apps/notification-service.d.ts +83 -0
  53. package/dist/apps/notification-service.js +315 -0
  54. package/dist/apps/notification-service.js.map +1 -0
  55. package/dist/apps/offline-service.d.ts +18 -0
  56. package/dist/apps/offline-service.js +25 -0
  57. package/dist/apps/offline-service.js.map +1 -0
  58. package/dist/apps/payment-service.d.ts +110 -0
  59. package/dist/apps/payment-service.js +182 -0
  60. package/dist/apps/payment-service.js.map +1 -0
  61. package/dist/apps/prefill-service.d.ts +14 -0
  62. package/dist/apps/prefill-service.js +19 -0
  63. package/dist/apps/prefill-service.js.map +1 -0
  64. package/dist/apps/scheduled-tasks-service.d.ts +127 -0
  65. package/dist/apps/scheduled-tasks-service.js +240 -0
  66. package/dist/apps/scheduled-tasks-service.js.map +1 -0
  67. package/dist/apps/scheduling-service.d.ts +101 -0
  68. package/dist/apps/scheduling-service.js +171 -0
  69. package/dist/apps/scheduling-service.js.map +1 -0
  70. package/dist/apps/services/AWSCognitoClient.d.ts +55 -0
  71. package/dist/apps/services/AWSCognitoClient.js +436 -0
  72. package/dist/apps/services/AWSCognitoClient.js.map +1 -0
  73. package/dist/apps/services/api/drafts.d.ts +7 -0
  74. package/dist/apps/services/api/drafts.js +236 -0
  75. package/dist/apps/services/api/drafts.js.map +1 -0
  76. package/dist/apps/services/api/notifications.d.ts +3 -0
  77. package/dist/apps/services/api/notifications.js +60 -0
  78. package/dist/apps/services/api/notifications.js.map +1 -0
  79. package/dist/apps/services/api/payment.d.ts +23 -0
  80. package/dist/apps/services/api/payment.js +235 -0
  81. package/dist/apps/services/api/payment.js.map +1 -0
  82. package/dist/apps/services/api/post-submission-attachment-urls.d.ts +7 -0
  83. package/dist/apps/services/api/post-submission-attachment-urls.js +19 -0
  84. package/dist/apps/services/api/post-submission-attachment-urls.js.map +1 -0
  85. package/dist/apps/services/api/prefill.d.ts +1 -0
  86. package/dist/apps/services/api/prefill.js +70 -0
  87. package/dist/apps/services/api/prefill.js.map +1 -0
  88. package/dist/apps/services/api/receipt-id.d.ts +2 -0
  89. package/dist/apps/services/api/receipt-id.js +54 -0
  90. package/dist/apps/services/api/receipt-id.js.map +1 -0
  91. package/dist/apps/services/api/scheduling.d.ts +38 -0
  92. package/dist/apps/services/api/scheduling.js +142 -0
  93. package/dist/apps/services/api/scheduling.js.map +1 -0
  94. package/dist/apps/services/api/submissions.d.ts +18 -0
  95. package/dist/apps/services/api/submissions.js +166 -0
  96. package/dist/apps/services/api/submissions.js.map +1 -0
  97. package/dist/apps/services/cognito.d.ts +302 -0
  98. package/dist/apps/services/cognito.js +441 -0
  99. package/dist/apps/services/cognito.js.map +1 -0
  100. package/dist/apps/services/draft-data-store.d.ts +16 -0
  101. package/dist/apps/services/draft-data-store.js +115 -0
  102. package/dist/apps/services/draft-data-store.js.map +1 -0
  103. package/dist/apps/services/errors/oneBlinkAppsError.d.ts +35 -0
  104. package/dist/apps/services/errors/oneBlinkAppsError.js +32 -0
  105. package/dist/apps/services/errors/oneBlinkAppsError.js.map +1 -0
  106. package/dist/apps/services/external-id-generation.d.ts +4 -0
  107. package/dist/apps/services/external-id-generation.js +59 -0
  108. package/dist/apps/services/external-id-generation.js.map +1 -0
  109. package/dist/apps/services/fetch.d.ts +12 -0
  110. package/dist/apps/services/fetch.js +95 -0
  111. package/dist/apps/services/fetch.js.map +1 -0
  112. package/dist/apps/services/forms-key.d.ts +51 -0
  113. package/dist/apps/services/forms-key.js +83 -0
  114. package/dist/apps/services/forms-key.js.map +1 -0
  115. package/dist/apps/services/generate-generic-error.d.ts +3 -0
  116. package/dist/apps/services/generate-generic-error.js +52 -0
  117. package/dist/apps/services/generate-generic-error.js.map +1 -0
  118. package/dist/apps/services/generateOneBlinkDownloader.d.ts +2 -0
  119. package/dist/apps/services/generateOneBlinkDownloader.js +11 -0
  120. package/dist/apps/services/generateOneBlinkDownloader.js.map +1 -0
  121. package/dist/apps/services/generateOneBlinkUploader.d.ts +2 -0
  122. package/dist/apps/services/generateOneBlinkUploader.js +11 -0
  123. package/dist/apps/services/generateOneBlinkUploader.js.map +1 -0
  124. package/dist/apps/services/getDeviceInformation.d.ts +17 -0
  125. package/dist/apps/services/getDeviceInformation.js +38 -0
  126. package/dist/apps/services/getDeviceInformation.js.map +1 -0
  127. package/dist/apps/services/integration-elements.d.ts +383 -0
  128. package/dist/apps/services/integration-elements.js +761 -0
  129. package/dist/apps/services/integration-elements.js.map +1 -0
  130. package/dist/apps/services/job-prefill.d.ts +40 -0
  131. package/dist/apps/services/job-prefill.js +78 -0
  132. package/dist/apps/services/job-prefill.js.map +1 -0
  133. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.d.ts +29 -0
  134. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js +59 -0
  135. package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js.map +1 -0
  136. package/dist/apps/services/payment-providers/CPPayPaymentProvider.d.ts +27 -0
  137. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js +63 -0
  138. package/dist/apps/services/payment-providers/CPPayPaymentProvider.js.map +1 -0
  139. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.d.ts +30 -0
  140. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js +116 -0
  141. package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js.map +1 -0
  142. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.d.ts +49 -0
  143. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js +116 -0
  144. package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js.map +1 -0
  145. package/dist/apps/services/payment-providers/receipt-items.d.ts +8 -0
  146. package/dist/apps/services/payment-providers/receipt-items.js +58 -0
  147. package/dist/apps/services/payment-providers/receipt-items.js.map +1 -0
  148. package/dist/apps/services/pending-queue.d.ts +150 -0
  149. package/dist/apps/services/pending-queue.js +316 -0
  150. package/dist/apps/services/pending-queue.js.map +1 -0
  151. package/dist/apps/services/prepareSubmissionData.d.ts +2 -0
  152. package/dist/apps/services/prepareSubmissionData.js +113 -0
  153. package/dist/apps/services/prepareSubmissionData.js.map +1 -0
  154. package/dist/apps/services/query-string.d.ts +1 -0
  155. package/dist/apps/services/query-string.js +16 -0
  156. package/dist/apps/services/query-string.js.map +1 -0
  157. package/dist/apps/services/replaceInjectablesWithSubmissionValues.d.ts +3 -0
  158. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js +18 -0
  159. package/dist/apps/services/replaceInjectablesWithSubmissionValues.js.map +1 -0
  160. package/dist/apps/services/schedulingHandlers.d.ts +36 -0
  161. package/dist/apps/services/schedulingHandlers.js +76 -0
  162. package/dist/apps/services/schedulingHandlers.js.map +1 -0
  163. package/dist/apps/services/server-validation.d.ts +2 -0
  164. package/dist/apps/services/server-validation.js +36 -0
  165. package/dist/apps/services/server-validation.js.map +1 -0
  166. package/dist/apps/services/serverRequest.d.ts +5 -0
  167. package/dist/apps/services/serverRequest.js +24 -0
  168. package/dist/apps/services/serverRequest.js.map +1 -0
  169. package/dist/apps/services/submit.d.ts +19 -0
  170. package/dist/apps/services/submit.js +219 -0
  171. package/dist/apps/services/submit.js.map +1 -0
  172. package/dist/apps/services/uploadAttachment.d.ts +52 -0
  173. package/dist/apps/services/uploadAttachment.js +73 -0
  174. package/dist/apps/services/uploadAttachment.js.map +1 -0
  175. package/dist/apps/services/user-token.d.ts +27 -0
  176. package/dist/apps/services/user-token.js +33 -0
  177. package/dist/apps/services/user-token.js.map +1 -0
  178. package/dist/apps/services/utils.d.ts +12 -0
  179. package/dist/apps/services/utils.js +100 -0
  180. package/dist/apps/services/utils.js.map +1 -0
  181. package/dist/apps/submission-service.d.ts +226 -0
  182. package/dist/apps/submission-service.js +425 -0
  183. package/dist/apps/submission-service.js.map +1 -0
  184. package/dist/apps/tenants.d.ts +29 -0
  185. package/dist/apps/tenants.js +127 -0
  186. package/dist/apps/tenants.js.map +1 -0
  187. package/dist/apps/types/form.d.ts +4 -0
  188. package/dist/apps/types/form.js +2 -0
  189. package/dist/apps/types/form.js.map +1 -0
  190. package/dist/apps/types/payments.d.ts +45 -0
  191. package/dist/apps/types/payments.js +2 -0
  192. package/dist/apps/types/payments.js.map +1 -0
  193. package/dist/apps/types/scheduling.d.ts +5 -0
  194. package/dist/apps/types/scheduling.js +2 -0
  195. package/dist/apps/types/scheduling.js.map +1 -0
  196. package/dist/apps/types/submissions.d.ts +175 -0
  197. package/dist/apps/types/submissions.js +2 -0
  198. package/dist/apps/types/submissions.js.map +1 -0
  199. package/dist/components/ArcGISWebMap.js +1 -1
  200. package/dist/components/ArcGISWebMap.js.map +1 -1
  201. package/dist/components/CustomAccordion.d.ts +3 -3
  202. package/dist/components/Lists.d.ts +4 -1
  203. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js +1 -1
  204. package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js.map +1 -1
  205. package/dist/components/calendar-bookings/CalendarBookingsForm.d.ts +1 -1
  206. package/dist/components/calendar-bookings/CalendarBookingsForm.js +1 -1
  207. package/dist/components/calendar-bookings/CalendarBookingsForm.js.map +1 -1
  208. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js +1 -1
  209. package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js.map +1 -1
  210. package/dist/components/calendar-bookings/ErrorModal.d.ts +1 -1
  211. package/dist/components/calendar-bookings/ErrorModal.js +1 -1
  212. package/dist/components/calendar-bookings/ErrorModal.js.map +1 -1
  213. package/dist/components/downloadable-files/index.d.ts +1 -1
  214. package/dist/components/downloadable-files/index.js +1 -1
  215. package/dist/components/downloadable-files/index.js.map +1 -1
  216. package/dist/components/downloadable-files/resource-components.d.ts +1 -1
  217. package/dist/components/downloadable-files/resource-components.js +1 -1
  218. package/dist/components/downloadable-files/resource-components.js.map +1 -1
  219. package/dist/components/formStore/FormStoreTableProvider.js +1 -1
  220. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
  221. package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
  222. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +1 -1
  223. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
  224. package/dist/components/formStore/OneBlinkFormStoreProvider.js +1 -1
  225. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
  226. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
  227. package/dist/components/formStore/display/ElementDisplay.js +2 -2
  228. package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
  229. package/dist/components/formStore/table/ColumnFilters.js +1 -1
  230. package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
  231. package/dist/components/formStore/table/FormElementTableCell.js +1 -1
  232. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
  233. package/dist/components/formStore/table/Pickers.js +1 -1
  234. package/dist/components/formStore/table/Pickers.js.map +1 -1
  235. package/dist/components/formStore/table/generateColumns.d.ts +1 -1
  236. package/dist/components/formStore/table/generateColumns.js.map +1 -1
  237. package/dist/components/formStore/table/useFormStoreTable.d.ts +1 -1
  238. package/dist/components/formStore/table/useFormStoreTable.js +1 -1
  239. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
  240. package/dist/components/formStore/useFormStoreTableContext.d.ts +2 -2
  241. package/dist/components/mfa/MfaDialog.d.ts +1 -1
  242. package/dist/components/mfa/MfaDialog.js +1 -1
  243. package/dist/components/mfa/MfaDialog.js.map +1 -1
  244. package/dist/components/mfa/MultiFactorAuthentication.d.ts +1 -1
  245. package/dist/components/payments/PaymentForm.js +1 -1
  246. package/dist/components/payments/PaymentForm.js.map +1 -1
  247. package/dist/components/payments/WestpacQuickStreamPaymentForm.d.ts +1 -1
  248. package/dist/components/payments/WestpacQuickStreamPaymentForm.js +1 -1
  249. package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
  250. package/dist/components/renderer/AutocompleteDropdown.js +1 -1
  251. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
  252. package/dist/components/renderer/LookupNotification.js +2 -2
  253. package/dist/components/renderer/LookupNotification.js.map +1 -1
  254. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js +1 -1
  255. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
  256. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
  257. package/dist/components/renderer/ReverseGeocode.js +1 -1
  258. package/dist/components/renderer/ReverseGeocode.js.map +1 -1
  259. package/dist/form-elements/FormElementAPINSWLiquorLicence.js +1 -1
  260. package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
  261. package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
  262. package/dist/form-elements/FormElementAutocomplete.js +1 -1
  263. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  264. package/dist/form-elements/FormElementBSB.js +1 -1
  265. package/dist/form-elements/FormElementBSB.js.map +1 -1
  266. package/dist/form-elements/FormElementCalculation.js +2 -2
  267. package/dist/form-elements/FormElementCalculation.js.map +1 -1
  268. package/dist/form-elements/FormElementCivicaNameRecord.js +1 -1
  269. package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
  270. package/dist/form-elements/FormElementCivicaStreetName.js +1 -1
  271. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  272. package/dist/form-elements/FormElementCompliance.d.ts +1 -1
  273. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  274. package/dist/form-elements/FormElementDate.js +1 -1
  275. package/dist/form-elements/FormElementDate.js.map +1 -1
  276. package/dist/form-elements/FormElementDateTime.js +1 -1
  277. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  278. package/dist/form-elements/FormElementFile.d.ts +1 -1
  279. package/dist/form-elements/FormElementFile.js.map +1 -1
  280. package/dist/form-elements/FormElementFiles.d.ts +1 -1
  281. package/dist/form-elements/FormElementFiles.js.map +1 -1
  282. package/dist/form-elements/FormElementGeoscapeAddress.js +1 -1
  283. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  284. package/dist/form-elements/FormElementGoogleAddress.js +1 -1
  285. package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
  286. package/dist/form-elements/FormElementLocation.js +1 -1
  287. package/dist/form-elements/FormElementLocation.js.map +1 -1
  288. package/dist/form-elements/FormElementNumber.js +1 -1
  289. package/dist/form-elements/FormElementNumber.js.map +1 -1
  290. package/dist/form-elements/FormElementPointAddress.js +1 -1
  291. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  292. package/dist/form-elements/FormElementPointAddressV3.js +1 -1
  293. package/dist/form-elements/FormElementPointAddressV3.js.map +1 -1
  294. package/dist/form-elements/FormElementPointCadastralParcel.js +1 -1
  295. package/dist/form-elements/FormElementPointCadastralParcel.js.map +1 -1
  296. package/dist/form-elements/FormElementSummary.js +1 -1
  297. package/dist/form-elements/FormElementSummary.js.map +1 -1
  298. package/dist/form-elements/FormElementTime.js +1 -1
  299. package/dist/form-elements/FormElementTime.js.map +1 -1
  300. package/dist/hooks/attachments/useAttachment.d.ts +1 -1
  301. package/dist/hooks/attachments/useAttachment.js +1 -1
  302. package/dist/hooks/attachments/useAttachment.js.map +1 -1
  303. package/dist/hooks/attachments/useAttachments.d.ts +1 -1
  304. package/dist/hooks/attachments/useAttachments.js.map +1 -1
  305. package/dist/hooks/useAuth.js +1 -1
  306. package/dist/hooks/useAuth.js.map +1 -1
  307. package/dist/hooks/useConditionalLogic.js +1 -1
  308. package/dist/hooks/useConditionalLogic.js.map +1 -1
  309. package/dist/hooks/useDrafts.d.ts +1 -1
  310. package/dist/hooks/useDrafts.js +1 -1
  311. package/dist/hooks/useDrafts.js.map +1 -1
  312. package/dist/hooks/useDynamicOptionsLoaderState.d.ts +1 -1
  313. package/dist/hooks/useDynamicOptionsLoaderState.js +1 -1
  314. package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
  315. package/dist/hooks/useFormElementLookups.d.ts +1 -1
  316. package/dist/hooks/useFormElementLookups.js +1 -1
  317. package/dist/hooks/useFormElementLookups.js.map +1 -1
  318. package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -1
  319. package/dist/hooks/useFormSubmissionAutoSaveState.js +1 -1
  320. package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
  321. package/dist/hooks/useIsOffline.js +1 -1
  322. package/dist/hooks/useIsOffline.js.map +1 -1
  323. package/dist/hooks/useLogin.js +1 -1
  324. package/dist/hooks/useLogin.js.map +1 -1
  325. package/dist/hooks/useMfa.d.ts +1 -1
  326. package/dist/hooks/useMfa.js +1 -1
  327. package/dist/hooks/useMfa.js.map +1 -1
  328. package/dist/hooks/useOnUploadAttachment.d.ts +1 -1
  329. package/dist/hooks/useOnUploadAttachment.js +1 -1
  330. package/dist/hooks/useOnUploadAttachment.js.map +1 -1
  331. package/dist/hooks/usePendingSubmissions.d.ts +1 -1
  332. package/dist/hooks/usePendingSubmissions.js +1 -1
  333. package/dist/hooks/usePendingSubmissions.js.map +1 -1
  334. package/dist/hooks/useReplaceableText.js +1 -1
  335. package/dist/hooks/useReplaceableText.js.map +1 -1
  336. package/dist/hooks/useSignUp.js +1 -1
  337. package/dist/hooks/useSignUp.js.map +1 -1
  338. package/dist/index.d.ts +1 -0
  339. package/dist/index.js +2 -0
  340. package/dist/index.js.map +1 -1
  341. package/dist/services/attachments.d.ts +1 -1
  342. package/dist/services/attachments.js +1 -1
  343. package/dist/services/attachments.js.map +1 -1
  344. package/dist/services/blob-utils.js +1 -1
  345. package/dist/services/blob-utils.js.map +1 -1
  346. package/dist/services/checkIfAttachmentsExist.d.ts +1 -1
  347. package/dist/services/checkIfAttachmentsExist.js.map +1 -1
  348. package/dist/services/defaultCoordinates.js +1 -1
  349. package/dist/services/defaultCoordinates.js.map +1 -1
  350. package/dist/services/download-file.d.ts +1 -1
  351. package/dist/services/download-file.js +2 -2
  352. package/dist/services/download-file.js.map +1 -1
  353. package/dist/services/drawTimestampOnCanvas.js +1 -1
  354. package/dist/services/drawTimestampOnCanvas.js.map +1 -1
  355. package/dist/services/form-validation/validateSubmission.js +1 -1
  356. package/dist/services/form-validation/validateSubmission.js.map +1 -1
  357. package/dist/services/form-validation/validators.d.ts +1 -1
  358. package/dist/services/form-validation/validators.js.map +1 -1
  359. package/dist/services/generate-default-data.js +1 -1
  360. package/dist/services/generate-default-data.js.map +1 -1
  361. package/dist/services/injectableOptions.js +1 -1
  362. package/dist/services/injectableOptions.js.map +1 -1
  363. package/dist/styles.css +208 -204
  364. package/dist/types/attachments.d.ts +1 -1
  365. package/dist/types/attachments.js.map +1 -1
  366. package/dist/utils/sendGoogleAnalyticsEvent.js +1 -1
  367. package/dist/utils/sendGoogleAnalyticsEvent.js.map +1 -1
  368. package/package.json +42 -34
@@ -0,0 +1,425 @@
1
+ import { isOffline } from './offline-service';
2
+ import { getFormsKeyId, isLoggedIn } from './auth-service';
3
+ import { registerPendingQueueListener, getPendingQueueSubmissions, updatePendingQueueSubmission, cancelEditingPendingQueueSubmission, deletePendingQueueSubmission, editPendingQueueSubmission, registerPendingQueueAttachmentProgressListener, registerPendingQueueProgressListener, executePendingQueueProgressListeners, removePendingQueueSubmission, } from './services/pending-queue';
4
+ import replaceInjectablesWithSubmissionValues from './services/replaceInjectablesWithSubmissionValues';
5
+ import Sentry from './Sentry';
6
+ import prepareSubmissionData from './services/prepareSubmissionData';
7
+ import submitForm from './services/submit';
8
+ import { deleteAutoSaveData } from './auto-save-service';
9
+ import { downloadFormSubmission } from './services/api/submissions';
10
+ import { getSubmissionAttachmentDetails } from './attachments-service';
11
+ import getPostSubmissionAttachments from './services/api/post-submission-attachment-urls';
12
+ let _isProcessingPendingQueue = false;
13
+ /**
14
+ * Force processing the pending queue. This must be called to process the
15
+ * pending queue and is best used when the application comes back online.
16
+ *
17
+ * ### Example
18
+ *
19
+ * ```js
20
+ * await submissionService.processPendingQueue()
21
+ * ```
22
+ *
23
+ * @returns
24
+ */
25
+ async function processPendingQueue({ shouldRunExternalIdGeneration, shouldRunServerValidation, }) {
26
+ if (_isProcessingPendingQueue) {
27
+ return;
28
+ }
29
+ _isProcessingPendingQueue = true;
30
+ console.log('Checking pending queue for submissions.');
31
+ const pendingQueueSubmissions = await getPendingQueueSubmissions();
32
+ console.log(`Found ${pendingQueueSubmissions.length} submission(s) in the pending queue.`);
33
+ for (const pendingQueueSubmission of pendingQueueSubmissions) {
34
+ if (isOffline()) {
35
+ console.log('Application is offline, leaving submission in the pending queue:', pendingQueueSubmission);
36
+ continue;
37
+ }
38
+ if (pendingQueueSubmission.isEditing) {
39
+ console.log('submission is being edited, leaving submission in the pending queue:', pendingQueueSubmission);
40
+ continue;
41
+ }
42
+ if (pendingQueueSubmission.definition.isAuthenticated &&
43
+ !isLoggedIn() &&
44
+ !getFormsKeyId()) {
45
+ console.log('Authentication is required for this form but the user does not have a valid token, leaving submission in the pending queue:', pendingQueueSubmission);
46
+ continue;
47
+ }
48
+ try {
49
+ console.log('Attempting to process submission from pending queue:', pendingQueueSubmission);
50
+ pendingQueueSubmission.isSubmitting = true;
51
+ pendingQueueSubmission.error = undefined;
52
+ await updatePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, pendingQueueSubmission, 'SUBMIT_STARTED');
53
+ const preparedSubmission = await prepareSubmissionData(pendingQueueSubmission);
54
+ pendingQueueSubmission.submission = {
55
+ ...preparedSubmission,
56
+ };
57
+ const attachments = getSubmissionAttachmentDetails(pendingQueueSubmission.definition.elements, pendingQueueSubmission.submission);
58
+ const failedAttachments = attachments.filter((attachment) => attachment.value.type === 'ERROR');
59
+ if (failedAttachments.length) {
60
+ throw new Error(`Failed to upload ${failedAttachments.length} attachment${failedAttachments.length > 1 ? 's' : ''}.`);
61
+ }
62
+ await submitWithCompletionTimestamp({
63
+ isPendingQueueEnabled: true,
64
+ formSubmission: pendingQueueSubmission,
65
+ onProgress: (event) => {
66
+ executePendingQueueProgressListeners({
67
+ ...event,
68
+ pendingTimestamp: pendingQueueSubmission.pendingTimestamp,
69
+ });
70
+ },
71
+ shouldRunExternalIdGeneration,
72
+ shouldRunServerValidation,
73
+ paymentFormUrl: undefined,
74
+ paymentReceiptUrl: undefined,
75
+ completionTimestamp: pendingQueueSubmission.pendingTimestamp,
76
+ });
77
+ await removePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, 'SUBMIT_SUCCEEDED');
78
+ console.log('Successfully processed submission from the pending queue', pendingQueueSubmission);
79
+ }
80
+ catch (error) {
81
+ Sentry.captureException(error);
82
+ console.error('Error processing submission from the pending queue', error);
83
+ pendingQueueSubmission.isSubmitting = false;
84
+ if (error.message) {
85
+ pendingQueueSubmission.error = error.message;
86
+ }
87
+ else {
88
+ pendingQueueSubmission.error =
89
+ 'An unknown error has occurred, which has prevented your Form from submitting. Please try again, or contact your Administrator if the problem persists.';
90
+ }
91
+ await updatePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, pendingQueueSubmission, 'SUBMIT_FAILED');
92
+ }
93
+ }
94
+ console.log('Finished attempting to processing submissions in the pending queue.');
95
+ _isProcessingPendingQueue = false;
96
+ }
97
+ /**
98
+ * Submit a FormSubmission. Offline submissions will be added to a pending queue
99
+ * and be processed using the `processPendingQueue()` function. FormSubmissions
100
+ * with payment submission events will return the FormSubmissionResult with a
101
+ * `payment` property set, this should be used to redirect the user to the
102
+ * payment URL. Will also handle cleaning up auto save data (if the
103
+ * `autoSaveKey` property is passed), locally stored drafts and prefill data.
104
+ *
105
+ * ### Example
106
+ *
107
+ * ```js
108
+ * const formSubmission = {
109
+ * formsAppId: 1,
110
+ * submission: {
111
+ * form: 'data',
112
+ * goes: 'here',
113
+ * },
114
+ * definition: OneBlinkForm,
115
+ * captchaTokens: [],
116
+ * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',
117
+ * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',
118
+ * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',
119
+ * externalId: 'external-id-set-by-developer',
120
+ * }
121
+ *
122
+ * // Pass paymentReceiptUrl if submission may require a payment
123
+ * const paymentReceiptUrl = `${window.location.origin}/payment-receipt`
124
+ *
125
+ * // Pass schedulingBookingUrlConfiguration if submission utilise scheduling
126
+ * const schedulingBookingUrlConfiguration = {
127
+ * schedulingBookingUrl: 'https://my-website.com/booking',
128
+ * schedulingRescheduleUrl: 'https://my-website.com/reschedule',
129
+ * schedulingCancelUrl: 'https://my-website.com/cancel',
130
+ * }
131
+ * const submissionResult = await submissionService.submit({
132
+ * formSubmission,
133
+ * paymentReceiptUrl,
134
+ * schedulingBookingUrlConfiguration,
135
+ * })
136
+ *
137
+ * if (submissionResult.scheduling) {
138
+ * // Redirect user to booking form
139
+ * window.location.href = submissionResult.scheduling.bookingUrl
140
+ * return
141
+ * }
142
+ *
143
+ * if (submissionResult.payment) {
144
+ * // Redirect user to payment form
145
+ * window.location.href = submissionResult.payment.hostedFormUrl
146
+ * return
147
+ * }
148
+ *
149
+ * if (submissionResult.isOffline) {
150
+ * if (submissionResult.isInPendingQueue) {
151
+ * // Display message to user that the submission
152
+ * // has been added to the pending queue
153
+ * } else {
154
+ * // Display message to user that this submission can
155
+ * // not be processed while offline (most likely because it requires a payment)
156
+ * }
157
+ * return
158
+ * }
159
+ *
160
+ * // submissionResult.submissionId and submissionResult.submissionTimestamp
161
+ * // will be set if the submission was successful
162
+ * ```
163
+ *
164
+ * @param params
165
+ * @returns
166
+ */
167
+ async function submit(params) {
168
+ return await submitWithCompletionTimestamp({
169
+ ...params,
170
+ completionTimestamp: new Date().toISOString(),
171
+ });
172
+ }
173
+ async function submitWithCompletionTimestamp({ autoSaveKey, ...params }) {
174
+ const formSubmissionResult = await submitForm(params);
175
+ if (typeof autoSaveKey === 'string') {
176
+ try {
177
+ await deleteAutoSaveData(params.formSubmission.definition.id, autoSaveKey);
178
+ }
179
+ catch (error) {
180
+ console.warn('Error removing auto save data: ', error);
181
+ Sentry.captureException(error);
182
+ }
183
+ }
184
+ return formSubmissionResult;
185
+ }
186
+ async function closeWindow() {
187
+ // @ts-expect-error
188
+ if (window.cordova && window.cordova.plugins.exit) {
189
+ // @ts-expect-error
190
+ window.cordova.plugins.exit();
191
+ return;
192
+ }
193
+ window.close();
194
+ // If the browser has not closed after timeout,
195
+ // we throw an error to display to the user
196
+ return new Promise((resolve, reject) => {
197
+ setTimeout(() => {
198
+ console.log('Could not close as window was not opened using JavaScript');
199
+ reject(new Error('We were unable to close your browser, could you please close it manually for us?'));
200
+ }, 500);
201
+ });
202
+ }
203
+ /**
204
+ * Go back in the browser history or attempts to close the browser tab if there
205
+ * is no history.
206
+ *
207
+ * ### Example
208
+ *
209
+ * ```js
210
+ * try {
211
+ * await submissionService.goBackOrCloseWindow()
212
+ * } catch (error) {
213
+ * // Handle error while closing browser tab.
214
+ * // Display message to user to close it manually
215
+ * }
216
+ * ```
217
+ *
218
+ * @returns
219
+ */
220
+ async function goBackOrCloseWindow() {
221
+ if (window.history.length <= 1) {
222
+ return closeWindow();
223
+ }
224
+ else {
225
+ window.history.back();
226
+ }
227
+ }
228
+ /**
229
+ * Action to cancel completing a form, currently goes back in the browser
230
+ * history or attempts to close the browser tab if there is no history.
231
+ *
232
+ * ### Example
233
+ *
234
+ * ```js
235
+ * const options = {
236
+ * definition: OneBlinkForm,
237
+ * externalId: 'external-id-set-by-developer',
238
+ * }
239
+ * // Only used for relative URLs
240
+ * const pushRelativePath = (path) => {
241
+ * window.location.href = path
242
+ * }
243
+ * // Only used for aboslute URLS
244
+ * const replaceAbsolutePath = window.location.replace
245
+ *
246
+ * try {
247
+ * await submissionService.executeCancelAction(options, {
248
+ * onRedirectToRelativeUrl: pushRelativePath,
249
+ * onRedirectToAbsoluteUrl: replaceAbsolutePath,
250
+ * })
251
+ * } catch (error) {
252
+ * // Handle error while closing browser tab.
253
+ * // Display message to user to close it manually
254
+ * }
255
+ * ```
256
+ *
257
+ * @param options
258
+ * @param redirectConfig
259
+ */
260
+ async function executeCancelAction(formSubmissionResultOptions, { onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
261
+ const formSubmissionResult = {
262
+ ...formSubmissionResultOptions,
263
+ formsAppId: NaN,
264
+ formSubmissionDraftId: undefined,
265
+ jobId: undefined,
266
+ externalId: undefined,
267
+ preFillFormDataId: null,
268
+ recaptchas: [],
269
+ submission: {},
270
+ isInPendingQueue: false,
271
+ isOffline: false,
272
+ payment: null,
273
+ scheduling: null,
274
+ submissionId: null,
275
+ submissionTimestamp: null,
276
+ isUploadingAttachments: false,
277
+ };
278
+ let cancelAction = formSubmissionResult.definition.cancelAction;
279
+ let cancelRedirectUrl = formSubmissionResult.definition.cancelRedirectUrl;
280
+ if (formSubmissionResult.taskCompletion) {
281
+ cancelAction = 'URL';
282
+ cancelRedirectUrl = formSubmissionResult.taskCompletion.redirectUrl;
283
+ }
284
+ await executeAction(formSubmissionResult, {
285
+ action: cancelAction,
286
+ redirectUrl: cancelRedirectUrl,
287
+ onRedirectToRelativeUrl,
288
+ onRedirectToAbsoluteUrl,
289
+ });
290
+ }
291
+ /**
292
+ * Execute the post submission action for a form after a successful form
293
+ * submission.
294
+ *
295
+ * ### Example
296
+ *
297
+ * ```js
298
+ * const formSubmissionResult = {
299
+ * submissionId: '89c6e98e-f56f-45fc-84fe-c4fc62331d34',
300
+ * submissionTimestamp: '2020-07-29T01:03:26.573Z'
301
+ * formsAppId: 1,
302
+ * submission: {
303
+ * form: 'data',
304
+ * goes: 'here'
305
+ * },
306
+ * definition: OneBlinkForm,
307
+ * payment: {
308
+ * hostedFormUrl: 'https://payment.com/transaction'
309
+ * },
310
+ * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',
311
+ * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',
312
+ * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',
313
+ * externalId: 'external-id-set-by-developer',
314
+ * }
315
+ * // Only used for relative URLs
316
+ * const pushRelativePath = (path) => {
317
+ * window.location.href = path
318
+ * }
319
+ * // Only used for aboslute URLS
320
+ * const replaceAbsolutePath = window.location.replace
321
+ *
322
+ * try {
323
+ * await submissionService.executePostSubmissionAction(formSubmissionResult, {
324
+ * onRedirectToRelativeUrl: pushRelativePath,
325
+ * onRedirectToAbsoluteUrl: replaceAbsolutePath,
326
+ * })
327
+ * } catch (error) {
328
+ * // Handle error while closing browser tab.
329
+ * // Display message to user to close it manually
330
+ * }
331
+ * ```
332
+ *
333
+ * @param submissionResult
334
+ * @param redirectConfig
335
+ */
336
+ async function executePostSubmissionAction(submissionResult, { onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
337
+ console.log('Attempting to run post submission action');
338
+ let postSubmissionAction = submissionResult.definition.postSubmissionAction;
339
+ let redirectUrl = submissionResult.definition.redirectUrl;
340
+ if (submissionResult.scheduling) {
341
+ postSubmissionAction = 'URL';
342
+ redirectUrl = submissionResult.scheduling.bookingUrl;
343
+ }
344
+ else if (submissionResult.payment) {
345
+ postSubmissionAction = 'URL';
346
+ redirectUrl = submissionResult.payment.hostedFormUrl;
347
+ }
348
+ else if (submissionResult.taskCompletion) {
349
+ postSubmissionAction = 'URL';
350
+ redirectUrl = submissionResult.taskCompletion.redirectUrl;
351
+ }
352
+ await executeAction(submissionResult, {
353
+ action: postSubmissionAction,
354
+ redirectUrl,
355
+ onRedirectToRelativeUrl,
356
+ onRedirectToAbsoluteUrl,
357
+ });
358
+ }
359
+ async function executeAction(submissionResult, { action, redirectUrl, onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
360
+ switch (action) {
361
+ case 'CLOSE':
362
+ return closeWindow();
363
+ case 'FORMS_LIBRARY': {
364
+ if (window.location.pathname === '/') {
365
+ onRedirectToAbsoluteUrl(window.location.origin);
366
+ }
367
+ else {
368
+ onRedirectToRelativeUrl('/');
369
+ }
370
+ break;
371
+ }
372
+ case 'URL': {
373
+ const newUrl = replaceInjectablesWithSubmissionValues(redirectUrl || '/', submissionResult).text;
374
+ // Relative URLs can be navigated to internally
375
+ if (newUrl[0] === '/') {
376
+ onRedirectToRelativeUrl(newUrl);
377
+ return;
378
+ }
379
+ onRedirectToAbsoluteUrl(newUrl);
380
+ // If we are in cordova land, we will navigate
381
+ // back to the home screen after redirect
382
+ if (window.cordova) {
383
+ // Wait a couple of seconds to ensure the browser has
384
+ // been opened before navigating away from form.
385
+ setTimeout(() => {
386
+ onRedirectToRelativeUrl('/');
387
+ }, 2000);
388
+ }
389
+ break;
390
+ }
391
+ case 'BACK':
392
+ default: {
393
+ // if there's no post submission action for some reason, use prev. logic...
394
+ return goBackOrCloseWindow();
395
+ }
396
+ }
397
+ }
398
+ /**
399
+ * Retrieve submission data for a known formId and submissionId
400
+ *
401
+ * #### Example
402
+ *
403
+ * ```js
404
+ * const formId = 1
405
+ * const submissionId = 'fba95b9d-5a9c-463d-ab68-867f431e4120'
406
+ * const credentials = await formSubmissionService.getSubmissionData({
407
+ * formId,
408
+ * submissionId,
409
+ * })
410
+ * ```
411
+ *
412
+ * @param formId
413
+ * @param submissionId
414
+ * @param abortSignal
415
+ * @returns
416
+ */
417
+ async function getSubmissionData({ formId, submissionId, abortSignal, }) {
418
+ return await downloadFormSubmission({
419
+ formId,
420
+ submissionId,
421
+ abortSignal,
422
+ });
423
+ }
424
+ export { submit, executePostSubmissionAction, executeCancelAction, goBackOrCloseWindow, getPendingQueueSubmissions, deletePendingQueueSubmission, editPendingQueueSubmission, cancelEditingPendingQueueSubmission, registerPendingQueueListener, processPendingQueue, registerPendingQueueAttachmentProgressListener, registerPendingQueueProgressListener, getSubmissionData, getPostSubmissionAttachments, };
425
+ //# sourceMappingURL=submission-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-service.js","sourceRoot":"","sources":["../../src/apps/submission-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { isOffline } from './offline-service'\nimport { getFormsKeyId, isLoggedIn } from './auth-service'\nimport {\n registerPendingQueueListener,\n getPendingQueueSubmissions,\n updatePendingQueueSubmission,\n cancelEditingPendingQueueSubmission,\n deletePendingQueueSubmission,\n editPendingQueueSubmission,\n registerPendingQueueAttachmentProgressListener,\n registerPendingQueueProgressListener,\n executePendingQueueProgressListeners,\n removePendingQueueSubmission,\n PendingQueueListener,\n PendingQueueAction,\n} from './services/pending-queue'\nimport replaceInjectablesWithSubmissionValues from './services/replaceInjectablesWithSubmissionValues'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport Sentry from './Sentry'\nimport prepareSubmissionData from './services/prepareSubmissionData'\nimport submitForm, {\n SubmissionParams,\n ProgressListener,\n ProgressListenerEvent,\n} from './services/submit'\nimport {\n PendingFormSubmission,\n FormSubmission,\n FormSubmissionResult,\n BaseFormSubmission,\n NewDraftSubmission,\n NewFormSubmission,\n DraftSubmission,\n DraftSubmissionInput,\n} from './types/submissions'\nimport { deleteAutoSaveData } from './auto-save-service'\nimport { downloadFormSubmission } from './services/api/submissions'\nimport { getSubmissionAttachmentDetails } from './attachments-service'\nimport getPostSubmissionAttachments from './services/api/post-submission-attachment-urls'\n\nlet _isProcessingPendingQueue = false\n\n/**\n * Force processing the pending queue. This must be called to process the\n * pending queue and is best used when the application comes back online.\n *\n * ### Example\n *\n * ```js\n * await submissionService.processPendingQueue()\n * ```\n *\n * @returns\n */\nasync function processPendingQueue({\n shouldRunExternalIdGeneration,\n shouldRunServerValidation,\n}: {\n shouldRunExternalIdGeneration: boolean\n shouldRunServerValidation: boolean\n}): Promise<void> {\n if (_isProcessingPendingQueue) {\n return\n }\n _isProcessingPendingQueue = true\n\n console.log('Checking pending queue for submissions.')\n const pendingQueueSubmissions = await getPendingQueueSubmissions()\n\n console.log(\n `Found ${pendingQueueSubmissions.length} submission(s) in the pending queue.`,\n )\n for (const pendingQueueSubmission of pendingQueueSubmissions) {\n if (isOffline()) {\n console.log(\n 'Application is offline, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n if (pendingQueueSubmission.isEditing) {\n console.log(\n 'submission is being edited, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n if (\n pendingQueueSubmission.definition.isAuthenticated &&\n !isLoggedIn() &&\n !getFormsKeyId()\n ) {\n console.log(\n 'Authentication is required for this form but the user does not have a valid token, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n try {\n console.log(\n 'Attempting to process submission from pending queue:',\n pendingQueueSubmission,\n )\n\n pendingQueueSubmission.isSubmitting = true\n pendingQueueSubmission.error = undefined\n await updatePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n pendingQueueSubmission,\n 'SUBMIT_STARTED',\n )\n\n const preparedSubmission = await prepareSubmissionData(\n pendingQueueSubmission,\n )\n pendingQueueSubmission.submission = {\n ...preparedSubmission,\n }\n const attachments = getSubmissionAttachmentDetails(\n pendingQueueSubmission.definition.elements,\n pendingQueueSubmission.submission,\n )\n const failedAttachments = attachments.filter(\n (attachment) => attachment.value.type === 'ERROR',\n )\n if (failedAttachments.length) {\n throw new Error(\n `Failed to upload ${failedAttachments.length} attachment${\n failedAttachments.length > 1 ? 's' : ''\n }.`,\n )\n }\n await submitWithCompletionTimestamp({\n isPendingQueueEnabled: true,\n formSubmission: pendingQueueSubmission,\n onProgress: (event) => {\n executePendingQueueProgressListeners({\n ...event,\n pendingTimestamp: pendingQueueSubmission.pendingTimestamp,\n })\n },\n shouldRunExternalIdGeneration,\n shouldRunServerValidation,\n paymentFormUrl: undefined,\n paymentReceiptUrl: undefined,\n completionTimestamp: pendingQueueSubmission.pendingTimestamp,\n })\n\n await removePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n 'SUBMIT_SUCCEEDED',\n )\n\n console.log(\n 'Successfully processed submission from the pending queue',\n pendingQueueSubmission,\n )\n } catch (error) {\n Sentry.captureException(error)\n console.error('Error processing submission from the pending queue', error)\n pendingQueueSubmission.isSubmitting = false\n if ((error as Error).message) {\n pendingQueueSubmission.error = (error as Error).message\n } else {\n pendingQueueSubmission.error =\n 'An unknown error has occurred, which has prevented your Form from submitting. Please try again, or contact your Administrator if the problem persists.'\n }\n await updatePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n pendingQueueSubmission,\n 'SUBMIT_FAILED',\n )\n }\n }\n\n console.log(\n 'Finished attempting to processing submissions in the pending queue.',\n )\n _isProcessingPendingQueue = false\n}\n\n/**\n * Submit a FormSubmission. Offline submissions will be added to a pending queue\n * and be processed using the `processPendingQueue()` function. FormSubmissions\n * with payment submission events will return the FormSubmissionResult with a\n * `payment` property set, this should be used to redirect the user to the\n * payment URL. Will also handle cleaning up auto save data (if the\n * `autoSaveKey` property is passed), locally stored drafts and prefill data.\n *\n * ### Example\n *\n * ```js\n * const formSubmission = {\n * formsAppId: 1,\n * submission: {\n * form: 'data',\n * goes: 'here',\n * },\n * definition: OneBlinkForm,\n * captchaTokens: [],\n * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',\n * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',\n * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',\n * externalId: 'external-id-set-by-developer',\n * }\n *\n * // Pass paymentReceiptUrl if submission may require a payment\n * const paymentReceiptUrl = `${window.location.origin}/payment-receipt`\n *\n * // Pass schedulingBookingUrlConfiguration if submission utilise scheduling\n * const schedulingBookingUrlConfiguration = {\n * schedulingBookingUrl: 'https://my-website.com/booking',\n * schedulingRescheduleUrl: 'https://my-website.com/reschedule',\n * schedulingCancelUrl: 'https://my-website.com/cancel',\n * }\n * const submissionResult = await submissionService.submit({\n * formSubmission,\n * paymentReceiptUrl,\n * schedulingBookingUrlConfiguration,\n * })\n *\n * if (submissionResult.scheduling) {\n * // Redirect user to booking form\n * window.location.href = submissionResult.scheduling.bookingUrl\n * return\n * }\n *\n * if (submissionResult.payment) {\n * // Redirect user to payment form\n * window.location.href = submissionResult.payment.hostedFormUrl\n * return\n * }\n *\n * if (submissionResult.isOffline) {\n * if (submissionResult.isInPendingQueue) {\n * // Display message to user that the submission\n * // has been added to the pending queue\n * } else {\n * // Display message to user that this submission can\n * // not be processed while offline (most likely because it requires a payment)\n * }\n * return\n * }\n *\n * // submissionResult.submissionId and submissionResult.submissionTimestamp\n * // will be set if the submission was successful\n * ```\n *\n * @param params\n * @returns\n */\nasync function submit(\n params: SubmissionParams & {\n autoSaveKey?: string\n },\n): Promise<FormSubmissionResult> {\n return await submitWithCompletionTimestamp({\n ...params,\n completionTimestamp: new Date().toISOString(),\n })\n}\n\nasync function submitWithCompletionTimestamp({\n autoSaveKey,\n ...params\n}: SubmissionParams & {\n autoSaveKey?: string\n completionTimestamp: string\n}): Promise<FormSubmissionResult> {\n const formSubmissionResult = await submitForm(params)\n if (typeof autoSaveKey === 'string') {\n try {\n await deleteAutoSaveData(params.formSubmission.definition.id, autoSaveKey)\n } catch (error) {\n console.warn('Error removing auto save data: ', error)\n Sentry.captureException(error)\n }\n }\n return formSubmissionResult\n}\n\nasync function closeWindow(): Promise<void> {\n // @ts-expect-error\n if (window.cordova && window.cordova.plugins.exit) {\n // @ts-expect-error\n window.cordova.plugins.exit()\n return\n }\n\n window.close()\n\n // If the browser has not closed after timeout,\n // we throw an error to display to the user\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n console.log('Could not close as window was not opened using JavaScript')\n reject(\n new Error(\n 'We were unable to close your browser, could you please close it manually for us?',\n ),\n )\n }, 500)\n })\n}\n\n/**\n * Go back in the browser history or attempts to close the browser tab if there\n * is no history.\n *\n * ### Example\n *\n * ```js\n * try {\n * await submissionService.goBackOrCloseWindow()\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @returns\n */\nasync function goBackOrCloseWindow(): Promise<void> {\n if (window.history.length <= 1) {\n return closeWindow()\n } else {\n window.history.back()\n }\n}\n\n/**\n * Action to cancel completing a form, currently goes back in the browser\n * history or attempts to close the browser tab if there is no history.\n *\n * ### Example\n *\n * ```js\n * const options = {\n * definition: OneBlinkForm,\n * externalId: 'external-id-set-by-developer',\n * }\n * // Only used for relative URLs\n * const pushRelativePath = (path) => {\n * window.location.href = path\n * }\n * // Only used for aboslute URLS\n * const replaceAbsolutePath = window.location.replace\n *\n * try {\n * await submissionService.executeCancelAction(options, {\n * onRedirectToRelativeUrl: pushRelativePath,\n * onRedirectToAbsoluteUrl: replaceAbsolutePath,\n * })\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @param options\n * @param redirectConfig\n */\nasync function executeCancelAction(\n formSubmissionResultOptions: {\n definition: FormTypes.Form\n externalId: string | null\n taskCompletion?: FormSubmissionResult['taskCompletion']\n },\n {\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n const formSubmissionResult: FormSubmissionResult = {\n ...formSubmissionResultOptions,\n formsAppId: NaN,\n formSubmissionDraftId: undefined,\n jobId: undefined,\n externalId: undefined,\n preFillFormDataId: null,\n recaptchas: [],\n submission: {},\n isInPendingQueue: false,\n isOffline: false,\n payment: null,\n scheduling: null,\n submissionId: null,\n submissionTimestamp: null,\n isUploadingAttachments: false,\n }\n\n let cancelAction = formSubmissionResult.definition.cancelAction\n let cancelRedirectUrl = formSubmissionResult.definition.cancelRedirectUrl\n\n if (formSubmissionResult.taskCompletion) {\n cancelAction = 'URL'\n cancelRedirectUrl = formSubmissionResult.taskCompletion.redirectUrl\n }\n\n await executeAction(formSubmissionResult, {\n action: cancelAction,\n redirectUrl: cancelRedirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n })\n}\n\n/**\n * Execute the post submission action for a form after a successful form\n * submission.\n *\n * ### Example\n *\n * ```js\n * const formSubmissionResult = {\n * submissionId: '89c6e98e-f56f-45fc-84fe-c4fc62331d34',\n * submissionTimestamp: '2020-07-29T01:03:26.573Z'\n * formsAppId: 1,\n * submission: {\n * form: 'data',\n * goes: 'here'\n * },\n * definition: OneBlinkForm,\n * payment: {\n * hostedFormUrl: 'https://payment.com/transaction'\n * },\n * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',\n * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',\n * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',\n * externalId: 'external-id-set-by-developer',\n * }\n * // Only used for relative URLs\n * const pushRelativePath = (path) => {\n * window.location.href = path\n * }\n * // Only used for aboslute URLS\n * const replaceAbsolutePath = window.location.replace\n *\n * try {\n * await submissionService.executePostSubmissionAction(formSubmissionResult, {\n * onRedirectToRelativeUrl: pushRelativePath,\n * onRedirectToAbsoluteUrl: replaceAbsolutePath,\n * })\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @param submissionResult\n * @param redirectConfig\n */\nasync function executePostSubmissionAction(\n submissionResult: FormSubmissionResult,\n {\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n console.log('Attempting to run post submission action')\n let postSubmissionAction = submissionResult.definition.postSubmissionAction\n let redirectUrl = submissionResult.definition.redirectUrl\n\n if (submissionResult.scheduling) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.scheduling.bookingUrl\n } else if (submissionResult.payment) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.payment.hostedFormUrl\n } else if (submissionResult.taskCompletion) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.taskCompletion.redirectUrl\n }\n\n await executeAction(submissionResult, {\n action: postSubmissionAction,\n redirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n })\n}\n\nasync function executeAction(\n submissionResult: FormSubmissionResult,\n {\n action,\n redirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n action: FormTypes.FormPostSubmissionAction\n redirectUrl: string | undefined\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n switch (action) {\n case 'CLOSE':\n return closeWindow()\n case 'FORMS_LIBRARY': {\n if (window.location.pathname === '/') {\n onRedirectToAbsoluteUrl(window.location.origin)\n } else {\n onRedirectToRelativeUrl('/')\n }\n break\n }\n case 'URL': {\n const newUrl = replaceInjectablesWithSubmissionValues(\n redirectUrl || '/',\n submissionResult,\n ).text\n // Relative URLs can be navigated to internally\n if (newUrl[0] === '/') {\n onRedirectToRelativeUrl(newUrl)\n return\n }\n\n onRedirectToAbsoluteUrl(newUrl)\n\n // If we are in cordova land, we will navigate\n // back to the home screen after redirect\n if (window.cordova) {\n // Wait a couple of seconds to ensure the browser has\n // been opened before navigating away from form.\n setTimeout(() => {\n onRedirectToRelativeUrl('/')\n }, 2000)\n }\n break\n }\n case 'BACK':\n default: {\n // if there's no post submission action for some reason, use prev. logic...\n return goBackOrCloseWindow()\n }\n }\n}\n\n/**\n * Retrieve submission data for a known formId and submissionId\n *\n * #### Example\n *\n * ```js\n * const formId = 1\n * const submissionId = 'fba95b9d-5a9c-463d-ab68-867f431e4120'\n * const credentials = await formSubmissionService.getSubmissionData({\n * formId,\n * submissionId,\n * })\n * ```\n *\n * @param formId\n * @param submissionId\n * @param abortSignal\n * @returns\n */\nasync function getSubmissionData({\n formId,\n submissionId,\n abortSignal,\n}: {\n formId: number\n submissionId: string\n abortSignal?: AbortSignal\n}): Promise<SubmissionTypes.S3SubmissionData> {\n return await downloadFormSubmission({\n formId,\n submissionId,\n abortSignal,\n })\n}\n\nexport {\n submit,\n executePostSubmissionAction,\n executeCancelAction,\n goBackOrCloseWindow,\n getPendingQueueSubmissions,\n deletePendingQueueSubmission,\n editPendingQueueSubmission,\n cancelEditingPendingQueueSubmission,\n registerPendingQueueListener,\n processPendingQueue,\n BaseFormSubmission,\n NewDraftSubmission,\n NewFormSubmission,\n DraftSubmissionInput,\n DraftSubmission,\n FormSubmission,\n FormSubmissionResult,\n PendingFormSubmission,\n SubmissionParams,\n registerPendingQueueAttachmentProgressListener,\n registerPendingQueueProgressListener,\n ProgressListener,\n ProgressListenerEvent,\n PendingQueueListener,\n PendingQueueAction,\n getSubmissionData,\n getPostSubmissionAttachments,\n}\n"]}
@@ -0,0 +1,29 @@
1
+ interface OneBlinkAppsTenant {
2
+ awsRegion: string;
3
+ loginDomain: string;
4
+ apiOrigin: string;
5
+ vapidPublicKey: string;
6
+ intlFormats: {
7
+ number: Intl.NumberFormat;
8
+ currency: Intl.NumberFormat;
9
+ date: Intl.DateTimeFormat;
10
+ dateLong: Intl.DateTimeFormat;
11
+ time: Intl.DateTimeFormat;
12
+ olderIOSTime: Intl.DateTimeFormat;
13
+ };
14
+ name: string;
15
+ productShortName: string;
16
+ distanceUnit: string;
17
+ distanceUnitShortName: string;
18
+ }
19
+ declare class Tenants {
20
+ tenant: 'oneblink' | 'civicplus';
21
+ constructor();
22
+ get isTestEnvironment(): boolean;
23
+ get current(): OneBlinkAppsTenant;
24
+ get locale(): "en-AU" | "en-US";
25
+ useOneBlink(): void;
26
+ useCivicPlus(): void;
27
+ }
28
+ declare const _default: Tenants;
29
+ export default _default;
@@ -0,0 +1,127 @@
1
+ const getCurrency = (locale) => {
2
+ switch (locale) {
3
+ case 'en-US':
4
+ return 'USD';
5
+ case 'en-AU':
6
+ default:
7
+ return 'AUD';
8
+ }
9
+ };
10
+ const generateFormatters = (locale) => {
11
+ return {
12
+ number: new Intl.NumberFormat(locale, {
13
+ style: 'decimal',
14
+ maximumFractionDigits: 20,
15
+ }),
16
+ currency: new Intl.NumberFormat(locale, {
17
+ style: 'currency',
18
+ currency: getCurrency(locale),
19
+ }),
20
+ date: new Intl.DateTimeFormat(locale, {
21
+ year: 'numeric',
22
+ month: '2-digit',
23
+ day: '2-digit',
24
+ }),
25
+ dateLong: new Intl.DateTimeFormat(locale, {
26
+ dateStyle: 'full',
27
+ }),
28
+ time: new Intl.DateTimeFormat(locale, {
29
+ timeStyle: 'short',
30
+ }),
31
+ olderIOSTime: new Intl.DateTimeFormat(locale, {
32
+ hour: 'numeric',
33
+ minute: 'numeric',
34
+ second: 'numeric',
35
+ }),
36
+ };
37
+ };
38
+ const tenants = {
39
+ test: {
40
+ oneblink: {
41
+ awsRegion: 'ap-southeast-2',
42
+ loginDomain: 'login.test.oneblink.io',
43
+ apiOrigin: 'https://auth-api.test.blinkm.io',
44
+ vapidPublicKey: 'BE5wtYdaQW3z7DWc08rzNlOwPuituVWFRLW_lUMD78ZJatFOjio8fYDHaIpQCRyeKsJ5j4kLaFU374J4dM90iUc',
45
+ intlFormats: generateFormatters('en-AU'),
46
+ name: 'OneBlink',
47
+ productShortName: 'OneBlink LcS',
48
+ distanceUnit: 'meters',
49
+ distanceUnitShortName: 'm',
50
+ },
51
+ civicplus: {
52
+ awsRegion: 'us-east-2',
53
+ loginDomain: 'login.test.transform.civicplus.com',
54
+ apiOrigin: 'https://auth-api.test.transform.civicplus.com',
55
+ vapidPublicKey: 'BLg2Dn9sYj1a0I3AcS22Fg71uubdMLwoemG8zfnPOljgFKB-5MR3FIxc2Mtt0AzM3zk2QWl3YzEy6EEwIUmz19k',
56
+ intlFormats: generateFormatters('en-US'),
57
+ name: 'CivicPlus',
58
+ productShortName: 'CivicOptimize',
59
+ distanceUnit: 'feet',
60
+ distanceUnitShortName: 'ft',
61
+ },
62
+ },
63
+ prod: {
64
+ oneblink: {
65
+ awsRegion: 'ap-southeast-2',
66
+ loginDomain: 'login.oneblink.io',
67
+ apiOrigin: 'https://auth-api.blinkm.io',
68
+ vapidPublicKey: 'BADH0JnMngI0uFKUnbC79VGXy5d6WutccnEvVuFBMx--BrZtFAHGTgOBiABJXmE8_VHC92_jK5K-2qdP2kZeius',
69
+ intlFormats: generateFormatters('en-AU'),
70
+ name: 'OneBlink',
71
+ productShortName: 'OneBlink LcS',
72
+ distanceUnit: 'meters',
73
+ distanceUnitShortName: 'm',
74
+ },
75
+ civicplus: {
76
+ awsRegion: 'us-east-2',
77
+ loginDomain: 'login.transform.civicplus.com',
78
+ apiOrigin: 'https://auth-api.transform.civicplus.com',
79
+ vapidPublicKey: 'BLoDtCutrC7tEd75x89zBaIyz3Fk8AeWOcABasV3YO4Tei5UO8WjJVPFyilNLYxeseaiKlgoa0DOh1HoR59M_G4',
80
+ intlFormats: generateFormatters('en-US'),
81
+ name: 'CivicPlus',
82
+ productShortName: 'CivicOptimize',
83
+ distanceUnit: 'feet',
84
+ distanceUnitShortName: 'ft',
85
+ },
86
+ },
87
+ };
88
+ class Tenants {
89
+ constructor() {
90
+ this.tenant = 'oneblink';
91
+ }
92
+ get isTestEnvironment() {
93
+ // @ts-expect-error
94
+ return window.ONEBLINK_APPS_ENVIRONMENT === 'test';
95
+ }
96
+ get current() {
97
+ switch (this.tenant) {
98
+ case 'civicplus':
99
+ return this.isTestEnvironment
100
+ ? tenants.test.civicplus
101
+ : tenants.prod.civicplus;
102
+ case 'oneblink':
103
+ default:
104
+ return this.isTestEnvironment
105
+ ? tenants.test.oneblink
106
+ : tenants.prod.oneblink;
107
+ }
108
+ }
109
+ get locale() {
110
+ switch (this.tenant) {
111
+ case 'civicplus':
112
+ return 'en-US';
113
+ case 'oneblink':
114
+ default:
115
+ return 'en-AU';
116
+ }
117
+ }
118
+ useOneBlink() {
119
+ this.tenant = 'oneblink';
120
+ }
121
+ useCivicPlus() {
122
+ console.log('triggered');
123
+ this.tenant = 'civicplus';
124
+ }
125
+ }
126
+ export default new Tenants();
127
+ //# sourceMappingURL=tenants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../src/apps/tenants.ts"],"names":[],"mappings":"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","sourcesContent":["interface OneBlinkAppsTenant {\n awsRegion: string\n loginDomain: string\n apiOrigin: string\n vapidPublicKey: string\n intlFormats: {\n number: Intl.NumberFormat\n currency: Intl.NumberFormat\n date: Intl.DateTimeFormat\n dateLong: Intl.DateTimeFormat\n time: Intl.DateTimeFormat\n olderIOSTime: Intl.DateTimeFormat\n }\n name: string\n productShortName: string\n distanceUnit: string\n distanceUnitShortName: string\n}\ntype Locale = 'en-AU' | 'en-US'\n\nconst getCurrency = (locale: Locale) => {\n switch (locale) {\n case 'en-US':\n return 'USD'\n case 'en-AU':\n default:\n return 'AUD'\n }\n}\n\nconst generateFormatters = (locale: Locale) => {\n return {\n number: new Intl.NumberFormat(locale, {\n style: 'decimal',\n maximumFractionDigits: 20,\n }),\n currency: new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: getCurrency(locale),\n }),\n date: new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }),\n dateLong: new Intl.DateTimeFormat(locale, {\n dateStyle: 'full',\n }),\n time: new Intl.DateTimeFormat(locale, {\n timeStyle: 'short',\n }),\n olderIOSTime: new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n }),\n }\n}\n\nconst tenants = {\n test: {\n oneblink: {\n awsRegion: 'ap-southeast-2',\n loginDomain: 'login.test.oneblink.io',\n apiOrigin: 'https://auth-api.test.blinkm.io',\n vapidPublicKey:\n 'BE5wtYdaQW3z7DWc08rzNlOwPuituVWFRLW_lUMD78ZJatFOjio8fYDHaIpQCRyeKsJ5j4kLaFU374J4dM90iUc',\n intlFormats: generateFormatters('en-AU'),\n name: 'OneBlink',\n productShortName: 'OneBlink LcS',\n distanceUnit: 'meters',\n distanceUnitShortName: 'm',\n },\n civicplus: {\n awsRegion: 'us-east-2',\n loginDomain: 'login.test.transform.civicplus.com',\n apiOrigin: 'https://auth-api.test.transform.civicplus.com',\n vapidPublicKey:\n 'BLg2Dn9sYj1a0I3AcS22Fg71uubdMLwoemG8zfnPOljgFKB-5MR3FIxc2Mtt0AzM3zk2QWl3YzEy6EEwIUmz19k',\n intlFormats: generateFormatters('en-US'),\n name: 'CivicPlus',\n productShortName: 'CivicOptimize',\n distanceUnit: 'feet',\n distanceUnitShortName: 'ft',\n },\n },\n prod: {\n oneblink: {\n awsRegion: 'ap-southeast-2',\n loginDomain: 'login.oneblink.io',\n apiOrigin: 'https://auth-api.blinkm.io',\n vapidPublicKey:\n 'BADH0JnMngI0uFKUnbC79VGXy5d6WutccnEvVuFBMx--BrZtFAHGTgOBiABJXmE8_VHC92_jK5K-2qdP2kZeius',\n intlFormats: generateFormatters('en-AU'),\n name: 'OneBlink',\n productShortName: 'OneBlink LcS',\n distanceUnit: 'meters',\n distanceUnitShortName: 'm',\n },\n civicplus: {\n awsRegion: 'us-east-2',\n loginDomain: 'login.transform.civicplus.com',\n apiOrigin: 'https://auth-api.transform.civicplus.com',\n vapidPublicKey:\n 'BLoDtCutrC7tEd75x89zBaIyz3Fk8AeWOcABasV3YO4Tei5UO8WjJVPFyilNLYxeseaiKlgoa0DOh1HoR59M_G4',\n intlFormats: generateFormatters('en-US'),\n name: 'CivicPlus',\n productShortName: 'CivicOptimize',\n distanceUnit: 'feet',\n distanceUnitShortName: 'ft',\n },\n },\n}\n\nclass Tenants {\n tenant: 'oneblink' | 'civicplus'\n\n constructor() {\n this.tenant = 'oneblink'\n }\n\n get isTestEnvironment() {\n // @ts-expect-error\n return window.ONEBLINK_APPS_ENVIRONMENT === 'test'\n }\n\n get current(): OneBlinkAppsTenant {\n switch (this.tenant) {\n case 'civicplus':\n return this.isTestEnvironment\n ? tenants.test.civicplus\n : tenants.prod.civicplus\n case 'oneblink':\n default:\n return this.isTestEnvironment\n ? tenants.test.oneblink\n : tenants.prod.oneblink\n }\n }\n\n get locale() /* : string */ {\n switch (this.tenant) {\n case 'civicplus':\n return 'en-US'\n case 'oneblink':\n default:\n return 'en-AU'\n }\n }\n\n useOneBlink() {\n this.tenant = 'oneblink'\n }\n\n useCivicPlus() {\n console.log('triggered')\n this.tenant = 'civicplus'\n }\n}\n\nexport default new Tenants()\n"]}
@@ -0,0 +1,4 @@
1
+ /** The form element name for accessing its submission data */
2
+ export type FormElementKey = string;
3
+ /** The submission data model to be submitted */
4
+ export type FormSubmissionModel = Record<FormElementKey, unknown>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/apps/types/form.ts"],"names":[],"mappings":"","sourcesContent":["/** The form element name for accessing its submission data */\nexport type FormElementKey = string\n/** The submission data model to be submitted */\nexport type FormSubmissionModel = Record<FormElementKey, unknown>\n"]}