@oneblink/apps-react 6.8.0 → 6.9.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 (164) hide show
  1. package/dist/OneBlinkAutoSaveForm.js.map +1 -1
  2. package/dist/OneBlinkForm.d.ts +25 -35
  3. package/dist/OneBlinkFormBase.d.ts +6 -1
  4. package/dist/OneBlinkFormBase.js +8 -12
  5. package/dist/OneBlinkFormBase.js.map +1 -1
  6. package/dist/OneBlinkReadOnlyForm.js +0 -1
  7. package/dist/OneBlinkReadOnlyForm.js.map +1 -1
  8. package/dist/PaymentReceipt.js.map +1 -1
  9. package/dist/components/ArcGISWebMap.js.map +1 -1
  10. package/dist/components/CustomAccordion.d.ts +12 -13
  11. package/dist/components/ErrorSnackbar.js.map +1 -1
  12. package/dist/components/MaterialIcon.d.ts +4 -2
  13. package/dist/components/MaterialIcon.js +7 -3
  14. package/dist/components/MaterialIcon.js.map +1 -1
  15. package/dist/components/ValidationErrorsCard.d.ts +11 -0
  16. package/dist/components/ValidationErrorsCard.js +185 -0
  17. package/dist/components/ValidationErrorsCard.js.map +1 -0
  18. package/dist/components/ValidationErrorsCard_framer.d.ts +10 -0
  19. package/dist/components/ValidationErrorsCard_framer.js +218 -0
  20. package/dist/components/ValidationErrorsCard_framer.js.map +1 -0
  21. package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
  22. package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
  23. package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
  24. package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
  25. package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
  26. package/dist/components/formStore/table/ActionedByTableCell.js.map +1 -1
  27. package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
  28. package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
  29. package/dist/components/formStore/table/TableCellCopyButton.js.map +1 -1
  30. package/dist/components/formStore/table/generateColumns.d.ts +3 -10
  31. package/dist/components/formStore/table/generateColumns.js.map +1 -1
  32. package/dist/components/formStore/table/useFormStoreTable.d.ts +4 -4
  33. package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
  34. package/dist/components/formStore/useFormStoreTableContext.d.ts +4 -4
  35. package/dist/components/formStore/useFormStoreTableContext.js.map +1 -1
  36. package/dist/components/payments/PaymentForm.js.map +1 -1
  37. package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
  38. package/dist/components/renderer/AnnotationModal.js.map +1 -1
  39. package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
  40. package/dist/components/renderer/FormElementOptions.js.map +1 -1
  41. package/dist/components/renderer/LookupButton.js.map +1 -1
  42. package/dist/components/renderer/LookupNotification.js.map +1 -1
  43. package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
  44. package/dist/components/renderer/OneBlinkFormElements.js +3 -1
  45. package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
  46. package/dist/components/renderer/PageFormElements.js.map +1 -1
  47. package/dist/components/renderer/ReverseGeocode.js.map +1 -1
  48. package/dist/components/renderer/ToggleAllCheckbox.js.map +1 -1
  49. package/dist/components/renderer/attachments/AttachmentStatus.d.ts +7 -7
  50. package/dist/components/renderer/attachments/AttachmentStatus.js +4 -4
  51. package/dist/components/renderer/attachments/AttachmentStatus.js.map +1 -1
  52. package/dist/components/renderer/attachments/DropdownMenu.d.ts +1 -0
  53. package/dist/components/renderer/attachments/DropdownMenu.js +10 -1
  54. package/dist/components/renderer/attachments/DropdownMenu.js.map +1 -1
  55. package/dist/components/renderer/attachments/FileCard.d.ts +5 -4
  56. package/dist/components/renderer/attachments/FileCard.js +5 -4
  57. package/dist/components/renderer/attachments/FileCard.js.map +1 -1
  58. package/dist/components/renderer/attachments/FileCardContent.d.ts +3 -2
  59. package/dist/components/renderer/attachments/FileCardContent.js +3 -3
  60. package/dist/components/renderer/attachments/FileCardContent.js.map +1 -1
  61. package/dist/form-elements/FormElementABN.js.map +1 -1
  62. package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
  63. package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
  64. package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
  65. package/dist/form-elements/FormElementBSB.js.map +1 -1
  66. package/dist/form-elements/FormElementBarcodeScanner.js.map +1 -1
  67. package/dist/form-elements/FormElementCalculation.js.map +1 -1
  68. package/dist/form-elements/FormElementCamera.js +13 -13
  69. package/dist/form-elements/FormElementCamera.js.map +1 -1
  70. package/dist/form-elements/FormElementCaptcha.js.map +1 -1
  71. package/dist/form-elements/FormElementCheckBoxes.js.map +1 -1
  72. package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
  73. package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
  74. package/dist/form-elements/FormElementCompliance.js.map +1 -1
  75. package/dist/form-elements/FormElementDate.js.map +1 -1
  76. package/dist/form-elements/FormElementDateTime.js.map +1 -1
  77. package/dist/form-elements/FormElementFile.js +1 -1
  78. package/dist/form-elements/FormElementFile.js.map +1 -1
  79. package/dist/form-elements/FormElementFiles.js.map +1 -1
  80. package/dist/form-elements/FormElementForm.js +3 -1
  81. package/dist/form-elements/FormElementForm.js.map +1 -1
  82. package/dist/form-elements/FormElementFreshdeskDependentField.js.map +1 -1
  83. package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
  84. package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
  85. package/dist/form-elements/FormElementHeading.js.map +1 -1
  86. package/dist/form-elements/FormElementLocation.js.map +1 -1
  87. package/dist/form-elements/FormElementNumber.js.map +1 -1
  88. package/dist/form-elements/FormElementPointAddress.js.map +1 -1
  89. package/dist/form-elements/FormElementRadio.js.map +1 -1
  90. package/dist/form-elements/FormElementRepeatableSet.js +3 -1
  91. package/dist/form-elements/FormElementRepeatableSet.js.map +1 -1
  92. package/dist/form-elements/FormElementSection.js.map +1 -1
  93. package/dist/form-elements/FormElementSelect.js.map +1 -1
  94. package/dist/form-elements/FormElementSignature.js +7 -7
  95. package/dist/form-elements/FormElementSignature.js.map +1 -1
  96. package/dist/form-elements/FormElementSummary.js.map +1 -1
  97. package/dist/form-elements/FormElementTime.js.map +1 -1
  98. package/dist/hooks/attachments/useAttachment.d.ts +4 -3
  99. package/dist/hooks/attachments/useAttachment.js +32 -45
  100. package/dist/hooks/attachments/useAttachment.js.map +1 -1
  101. package/dist/hooks/attachments/useAttachments.d.ts +1 -1
  102. package/dist/hooks/attachments/useAttachments.js.map +1 -1
  103. package/dist/hooks/useCaptcha.d.ts +0 -1
  104. package/dist/hooks/useClickOutsideElement.js.map +1 -1
  105. package/dist/hooks/useConditionalLogic.js.map +1 -1
  106. package/dist/hooks/useDrafts.js.map +1 -1
  107. package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
  108. package/dist/hooks/useFlatpickr.js.map +1 -1
  109. package/dist/hooks/useFormDefinition.js.map +1 -1
  110. package/dist/hooks/useFormElementLookups.js.map +1 -1
  111. package/dist/hooks/useFormElementOptions.js.map +1 -1
  112. package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -3
  113. package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
  114. package/dist/hooks/useFormSubmissionModelContext.js.map +1 -1
  115. package/dist/hooks/useFormSubmissionState.d.ts +2 -2
  116. package/dist/hooks/useFormValidation.d.ts +1 -1
  117. package/dist/hooks/useFormValidation.js.map +1 -1
  118. package/dist/hooks/useInfiniteScrollDataLoad.js.map +1 -1
  119. package/dist/hooks/useIsOffline.d.ts +1 -1
  120. package/dist/hooks/useLoadDataState.js.map +1 -1
  121. package/dist/hooks/useLogin.js.map +1 -1
  122. package/dist/hooks/useLookupNotification.js.map +1 -1
  123. package/dist/hooks/useLookups.d.ts +1 -1
  124. package/dist/hooks/useLookups.js.map +1 -1
  125. package/dist/hooks/useOneBlinkFormContainer.d.ts +0 -1
  126. package/dist/hooks/usePages.js.map +1 -1
  127. package/dist/hooks/usePendingSubmissions.js.map +1 -1
  128. package/dist/hooks/useReCAPTCHAProps.js.map +1 -1
  129. package/dist/hooks/useSignUp.js.map +1 -1
  130. package/dist/hooks/useSubmissionIdIsValid.js.map +1 -1
  131. package/dist/hooks/useToggleComplianceChildren.js.map +1 -1
  132. package/dist/hooks/useValidationClass.js.map +1 -1
  133. package/dist/services/attachments.js.map +1 -1
  134. package/dist/services/blob-utils.js.map +1 -1
  135. package/dist/services/checkBsbsAreInvalid.js.map +1 -1
  136. package/dist/services/checkIfAttachmentsExist.js.map +1 -1
  137. package/dist/services/checkIfBsbsAreValidating.js.map +1 -1
  138. package/dist/services/cleanFormSubmissionModel.js.map +1 -1
  139. package/dist/services/download-file.js.map +1 -1
  140. package/dist/services/drawTimestampOnCanvas.js.map +1 -1
  141. package/dist/services/form-validation.js.map +1 -1
  142. package/dist/services/generate-default-data.js.map +1 -1
  143. package/dist/services/generateCivicaNameRecordElements.js.map +1 -1
  144. package/dist/services/generateFreshdeskDependentFieldElements.js.map +1 -1
  145. package/dist/services/geolocation.js +1 -1
  146. package/dist/services/geolocation.js.map +1 -1
  147. package/dist/services/getDateRangeConfiguration.js.map +1 -1
  148. package/dist/services/getRepeatableSetEntriesConfiguration.js.map +1 -1
  149. package/dist/services/injectableOptions.js.map +1 -1
  150. package/dist/services/scrolling-service.js.map +1 -1
  151. package/dist/styles/ob-html.scss +3 -0
  152. package/dist/styles/section.scss +4 -0
  153. package/dist/styles/validation-errors-card.scss +180 -0
  154. package/dist/styles.css +179 -0
  155. package/dist/styles.scss +1 -0
  156. package/dist/types/form.d.ts +0 -1
  157. package/dist/utils/elementDOMIds.d.ts +13 -0
  158. package/dist/utils/elementDOMIds.js +24 -0
  159. package/dist/utils/elementDOMIds.js.map +1 -0
  160. package/dist/utils/merge-executed-lookups.js.map +1 -1
  161. package/dist/utils/scrollToElement.d.ts +6 -0
  162. package/dist/utils/scrollToElement.js +65 -0
  163. package/dist/utils/scrollToElement.js.map +1 -0
  164. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"generate-default-data.js","sourceRoot":"","sources":["../../src/services/generate-default-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,gCAAgC,MAAM,oCAAoC,CAAA;AAEjF,SAAS,eAAe,CACtB,KAAc;IAEd,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5C,wDAAwD;QACxD,IACE,MAAM,CAAC,IAAI,YAAY,IAAI;YAC3B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC/B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACnC,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,EACrC;YACA,OAAO,MAAuC,CAAA;SAC/C;QAED,wDAAwD;QACxD,IACE,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACnC,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACtC,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS;YACrC,oBAAoB,CAClB,MAAM,CAAC,EAAE,EACT,CAAC,EAAE,EAAE,EAAE,CACL,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;gBAC7B,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ;gBAC1B,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,CAChC,EACD;YACA,OAAO,MAAkD,CAAA;SAC1D;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,OAA2C,EAC3C,KAAc;IAEd,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5C,IACE,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;YACnC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAC/B;YACA,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3C,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;SAC5D;QAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,OAA2C,EAC3C,KAAc;IAEd,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CACxB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAClC,IAAI,IAAI,EAAE;gBACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACjB;YACD,OAAO,KAAK,CAAA;QACd,CAAC,EACD,EAAE,CACH,CAAA;QACD,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;KACF;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,UAAU,EACV,KAAK,GAKN;IACC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAM;KACP;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC9E,IAAI,CAAC,IAAI,EAAE;QACT,OAAM;KACP;IAED,IAAI,QAAQ,EAAE;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,cAAc,CAClD,mBAAmB,CAAC,SAAS,EAAE,EAC/B;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;SACf,CACF;aACE,aAAa,CAAC,IAAI,CAAC;aACnB,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,IAAI;YACP,CAAC,IAAI,CAAC,EAAE,KAAK;SACd,CAAC,EACF;YACE,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,EAAE;SACR,CACF,CAAA;QACH,uIAAuI;QACvI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAC/D,OAAO,GAAG,SAAS,IAAI,KAAK,IAAI,GAAG,EAAE,CAAA;KACtC;SAAM;QACL,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;KAC1B;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;QACxC,OAAO,KAAK,CAAA;KACb;IACD,OAAM;AACR,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9C,OAAO,KAAK,CAAA;KACb;IACD,OAAM;AACR,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAA;KACtD;IACD,OAAM;AACR,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,QAA2D;IAE3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;QAC/C,OAAO,QAAQ,CAAC,KAAgC,CAAC,CAAA;KAClD;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAiC,EACjC,KAAc;IAEd,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5C,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjB,QAAQ,OAAO,CAAC,IAAI,EAAE;gBACpB,KAAK,SAAS,CAAC;gBACf,KAAK,MAAM,CAAC,CAAC;oBACX,MAAM,YAAY,GAAG,wBAAwB,CAC3C,OAAO,CAAC,QAAQ,EAChB,KAAK,CACN,CAAA;oBACD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;oBAClC,MAAK;iBACN;gBACD,OAAO,CAAC,CAAC;oBACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CACpC,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CACrB,CAAA;iBACF;aACF;YAED,OAAO,KAAK,CAAA;QACd,CAAC,EACD,MAAM,CACP,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,OAA8B,EAC9B,KAAc;IAEd,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,iEAAiE;QACjE,oEAAoE;QACpE,mEAAmE;QACnE,8DAA8D;QAC9D,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC,CAAC;YACX,IAAI,CAAC,KAAK,EAAE;gBACV,MAAK;aACN;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBACpC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBACrC,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;aACnD;iBAAM;gBACL,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;aAC9B;SACF;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;SAClC;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC5C,IAAI,aAAa,EAAE;oBACjB,OAAO;wBACL,KAAK,EAAE,aAAa;wBACpB,KAAK;wBACL,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;qBACzC,CAAA;iBACF;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,cAAc,CAAC;gBACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM;gBACjC,UAAU,EAAE,SAAS;gBACrB,KAAK;aACN,CAAC,CAAA;SACH;QACD,KAAK,KAAK,CAAC,CAAC;YACV,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,aAAa,CAAC,EAAE;gBAC9B,OAAO,IAAI,CAAA;aACZ;YACD,OAAM;SACP;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,gBAAgB,CAAC;QACtB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;SAC/B;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAA;aACpC;iBAAM;gBACL,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;aAC/B;SACF;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAA;SACpC;QACD,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;SAC/B;QACD,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;SAClD;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;oBACtD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACtB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;qBAClE;oBACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;wBACzC,OAAO,IAAI,CAAA;qBACZ;gBACH,CAAC,CAAC,CAAA;gBACF,IAAI,CAAC,MAAM,EAAE;oBACX,OAAM;iBACP;gBACD,OAAO,MAAM,CAAA;YACf,CAAC,CAAC,CAAA;SACH;QACD,KAAK,cAAc,CAAC;QACpB,KAAK,iBAAiB,CAAC,CAAC;YACtB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;oBACtC,OAAO,MAAM,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,eAAe,CAAC,CAAC;YACpB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACrC,OAAO,MAAM,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,yBAAyB,CAAC,CAAC;YAC9B,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,IACE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACjC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;oBACpC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAC7B;oBACA,OAAO,MAAM,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,kBAAkB,CAAC,CAAC;YACvB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,IACE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;oBACnC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EACnC;oBACA,OAAO,MAAM,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,kBAAkB,CAAC,CAAC;YACvB,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,IACE,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACzC,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,EACxC;oBACA,OAAO,MAAM,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,wBAAwB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;SAC/D;QACD,KAAK,eAAe,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;oBACjC,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;oBAC3D,IAAI,KAAK,EAAE;wBACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBACpB;oBACD,OAAO,OAAO,CAAA;gBAChB,CAAC,EAAE,EAAE,CAAC,CAAA;aACP;YACD,MAAK;SACN;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBACpD,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE;oBACrD,OAAO;wBACL,QAAQ;wBACR,SAAS;wBACT,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;qBACpC,CAAA;iBACF;YACH,CAAC,CAAC,CAAA;SACH;QACD,KAAK,qBAAqB,CAAC,CAAC;YAC1B,OAAO,oBAAoB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC5C,OAAO,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,EAAE;oBAClE,IAAI,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;wBACjD,OAAO,MAAM,CAAA;qBACd;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;SACH;QACD,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC,CAAC;YACd,OAAM;SACP;QACD,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAA;SACnE;KACF;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,QAAiC,EACjC,WAA2D;IAE3D,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACR,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YAC7C,OAAO,CAAC,CAAA;SACT;QAED,QAAQ,EAAE,CAAC,IAAI,EAAE;YACf,KAAK,YAAY,CAAC;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB,KAAK,OAAO,CAAC;YACb,KAAK,YAAY,CAAC,CAAC;gBACjB,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAA;gBACrC,IAAI,EAAE,EAAE;oBACN,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;wBACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;4BACX,KAAK,EAAE,EAAE;yBACV,CAAA;qBACF;yBAAM;wBACL,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;qBAChB;iBACF;gBACD,MAAK;aACN;YACD,KAAK,QAAQ,CAAC,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC,YAAY,KAAK,QAAQ,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;iBAC7B;qBAAM,IAAI,EAAE,CAAC,QAAQ,EAAE;oBACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAA;iBAC1B;qBAAM;oBACL,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;iBACvB;gBACD,MAAK;aACN;YACD,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC,CAAC;gBACX,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;oBAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;iBACtD;gBACD,MAAK;aACN;YACD,KAAK,kBAAkB,CAAC,CAAC;gBACvB,MAAM,cAAc,GAAG,gCAAgC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC/D,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,cAAc,EAAE;oBAC/C,GAAG,EAAE,CAAC,YAAY;iBACnB,CAAC,CAAA;gBACF,MAAK;aACN;YACD,KAAK,MAAM,CAAC,CAAC;gBACX,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;oBAC9B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;iBAClD;gBACD,MAAK;aACN;YACD,KAAK,eAAe,CAAC,CAAC;gBACpB,IACE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;oBAC1B,OAAO,EAAE,CAAC,aAAa,KAAK,QAAQ,EACpC;oBACA,MAAM,aAAa,GAAG,EAAE,CAAC,aAAa,CAAA;oBACtC,uCAAuC;oBACvC,MAAM,OAAO,GAAG,EAAE,CAAA;oBAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE,EAAE;wBAClD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;wBAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBACpB;oBACD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;iBACrB;gBACD,MAAK;aACN;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC;gBACX,IAAI,EAAE,CAAC,YAAY,EAAE;oBACnB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;wBAC1B,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM;wBAC5B,UAAU,EAAE,EAAE,CAAC,sBAAsB;wBACrC,KAAK,EAAE,EAAE,CAAC,YAAY;qBACvB,CAAC,CAAA;iBACH;gBACD,MAAK;aACN;YACD,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC,CAAC;gBACZ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAA;gBAClD,MAAK;aACN;YACD,KAAK,yBAAyB,CAAC;YAC/B,KAAK,iBAAiB,CAAC;YACvB,KAAK,cAAc,CAAC;YACpB,KAAK,eAAe,CAAC;YACrB,KAAK,kBAAkB,CAAC;YACxB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,gBAAgB,CAAC;YACtB,KAAK,OAAO,CAAC;YACb,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU,CAAC;YAChB,KAAK,qBAAqB,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,YAAY,EAAE;oBACnB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;iBAC7B;gBACD,MAAK;aACN;YACD,KAAK,SAAS,CAAC,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,IAAI,KAAK,CAAA;gBACrC,MAAK;aACN;YACD,KAAK,SAAS,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,UAAU,CAAC;YAChB,KAAK,aAAa,CAAC;YACnB,KAAK,SAAS,CAAC;YACf,KAAK,cAAc;gBACjB,MAAK;YACP,OAAO,CAAC,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,CAAC,CAAA;aACpE;SACF;QAED,OAAO,CAAC,CAAA;IACV,CAAC,EACD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAC/B,CAAA;AACH,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAoC,EAAE,EAAE;IACtE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QACpB,OAAM;KACP;IACD,4BAA4B;IAC5B,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW,KAAK,iBAAiB,EAAE;QACxE,OAAO,EAAE,CAAC,YAAY,CAAA;KACvB;IACD,wCAAwC;SACnC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE;QACvE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE;YAC5D,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,YAAsB,EAAE,QAAQ,EAAE,EAAE;gBACjE,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CACnC,CAAA;gBACD,IAAI,MAAM,EAAE;oBACV,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;iBAChC;gBACD,OAAO,YAAY,CAAA;YACrB,CAAC,EAAE,EAAE,CAAC,CAAA;SACP;KACF;SAAM;QACL,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,CAC1C,CAAA;QACD,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAA;SACpB;KACF;IACD,OAAM;AACR,CAAC,CAAA","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { attachmentsService, localisationService } from '@oneblink/apps'\nimport { prepareNewAttachment } from './attachments'\nimport { dataUriToBlobSync } from './blob-utils'\nimport generateCivicaNameRecordElements from './generateCivicaNameRecordElements'\n\nfunction parseAttachment(\n value: unknown,\n): attachmentsService.Attachment | undefined {\n return parseUnknownAsRecord(value, (record) => {\n // Check for attachments that have not been uploaded yet\n if (\n record.data instanceof Blob &&\n typeof record.type === 'string' &&\n typeof record._id === 'string' &&\n typeof record.fileName === 'string' &&\n typeof record.isPrivate === 'boolean'\n ) {\n return record as attachmentsService.Attachment\n }\n\n // Check for attachments that have been uploaded already\n if (\n typeof record.id === 'string' &&\n typeof record.fileName === 'string' &&\n typeof record.url === 'string' &&\n typeof record.contentType === 'string' &&\n typeof record.isPrivate === 'boolean' &&\n parseUnknownAsRecord(\n record.s3,\n (s3) =>\n typeof s3.bucket === 'string' &&\n typeof s3.key === 'string' &&\n typeof s3.region === 'string',\n )\n ) {\n return record as SubmissionTypes.FormSubmissionAttachment\n }\n })\n}\n\nfunction parseFile(\n element: FormTypes.FormElementBinaryStorage,\n value: unknown,\n): attachmentsService.Attachment | undefined {\n return parseUnknownAsRecord(value, (record) => {\n if (\n record.type === undefined &&\n typeof record.fileName === 'string' &&\n typeof record.data === 'string'\n ) {\n const blob = dataUriToBlobSync(record.data)\n return prepareNewAttachment(blob, record.fileName, element)\n }\n\n return parseAttachment(record)\n })\n}\n\nfunction parseFiles(\n element: FormTypes.FormElementBinaryStorage,\n value: unknown,\n): Array<attachmentsService.Attachment> | undefined {\n if (Array.isArray(value)) {\n const files = value.reduce<Array<attachmentsService.Attachment>>(\n (files, v) => {\n const file = parseFile(element, v)\n if (file) {\n files.push(file)\n }\n return files\n },\n [],\n )\n if (files.length) {\n return files\n }\n }\n}\n\nexport function parseDateValue({\n dateOnly,\n daysOffset,\n value,\n}: {\n dateOnly: boolean\n daysOffset: number | undefined\n value: unknown\n}): string | undefined {\n if (typeof value !== 'string') {\n return\n }\n\n const date = localisationService.generateDate({ daysOffset, value, dateOnly })\n if (!date) {\n return\n }\n\n if (dateOnly) {\n const { year, month, day } = new Intl.DateTimeFormat(\n localisationService.getLocale(),\n {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\n )\n .formatToParts(date)\n .reduce(\n (memo, { type, value }) => ({\n ...memo,\n [type]: value,\n }),\n {\n year: '',\n month: '',\n day: '',\n },\n )\n // This is a workaround for an iOS 15 bug where the year was being returned as 2 digits: https://bugs.webkit.org/show_bug.cgi?id=230827\n const fixedYear = year.length === 2 ? date.getFullYear() : year\n return `${fixedYear}-${month}-${day}`\n } else {\n return date.toISOString()\n }\n}\n\nfunction parseStringValue(value: unknown) {\n if (typeof value === 'string' && !!value) {\n return value\n }\n return\n}\n\nfunction parseNumberValue(value: unknown) {\n if (typeof value === 'number' && !isNaN(value)) {\n return value\n }\n return\n}\n\nfunction parseStringArrayValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.filter((val) => typeof val === 'string')\n }\n return\n}\n\nfunction parseUnknownAsRecord<T>(\n value: unknown,\n validate: (value: Record<string, unknown>) => T | undefined,\n): T | undefined {\n if (typeof value === 'object' && value !== null) {\n return validate(value as Record<string, unknown>)\n }\n}\n\nfunction parseFormSubmissionModel(\n elements: FormTypes.FormElement[],\n value: unknown,\n): SubmissionTypes.S3SubmissionData['submission'] | undefined {\n return parseUnknownAsRecord(value, (record) => {\n return elements.reduce<SubmissionTypes.S3SubmissionData['submission']>(\n (model, element) => {\n switch (element.type) {\n case 'section':\n case 'page': {\n const partialModel = parseFormSubmissionModel(\n element.elements,\n model,\n )\n Object.assign(model, partialModel)\n break\n }\n default: {\n model[element.name] = parsePreFillData(\n element,\n record[element.name],\n )\n }\n }\n\n return model\n },\n record,\n )\n })\n}\n\nfunction parsePreFillData(\n element: FormTypes.FormElement,\n value: unknown,\n): unknown {\n switch (element.type) {\n // If a form element is pre-filled with the \"legacy\" storage type\n // format (base64), the data should be uploaded to S3 and set in the\n // submission data. This is to cater for instances of pre-fill data\n // being created before the \"legacy\" storage type was removed.\n case 'camera':\n case 'draw': {\n if (!value) {\n break\n } else if (typeof value === 'string') {\n const blob = dataUriToBlobSync(value)\n return prepareNewAttachment(blob, 'file', element)\n } else {\n return parseAttachment(value)\n }\n }\n case 'files': {\n return parseFiles(element, value)\n }\n case 'compliance': {\n return parseUnknownAsRecord(value, (record) => {\n const selectedValue = parseStringValue(record.value)\n const notes = parseStringValue(record.notes)\n if (selectedValue) {\n return {\n value: selectedValue,\n notes,\n files: parseFiles(element, record.files),\n }\n }\n })\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return parseDateValue({\n dateOnly: element.type === 'date',\n daysOffset: undefined,\n value,\n })\n }\n case 'bsb': {\n const text = parseStringValue(value)\n if (text?.match(/\\d{3}-\\d{3}/)) {\n return text\n }\n return\n }\n case 'text':\n case 'barcodeScanner':\n case 'email':\n case 'telephone':\n case 'textarea':\n case 'radio':\n case 'autocomplete': {\n return parseStringValue(value)\n }\n case 'select': {\n if (element.multi) {\n return parseStringArrayValue(value)\n } else {\n return parseStringValue(value)\n }\n }\n case 'checkboxes': {\n return parseStringArrayValue(value)\n }\n case 'calculation':\n case 'number': {\n return parseNumberValue(value)\n }\n case 'boolean': {\n return typeof value === 'boolean' ? value : false\n }\n case 'abn': {\n return parseUnknownAsRecord(value, (record) => {\n const hasABN = parseUnknownAsRecord(record.ABN, (ABN) => {\n if (Array.isArray(ABN)) {\n return ABN.some((abn) => !!parseStringValue(abn.identifierValue))\n }\n if (parseStringValue(ABN.identifierValue)) {\n return true\n }\n })\n if (!hasABN) {\n return\n }\n return record\n })\n }\n case 'pointAddress':\n case 'geoscapeAddress': {\n return parseUnknownAsRecord(value, (record) => {\n if (parseStringValue(record.addressId)) {\n return record\n }\n })\n }\n case 'googleAddress': {\n return parseUnknownAsRecord(value, (record) => {\n if (parseStringValue(record.place_id)) {\n return record\n }\n })\n }\n case 'freshdeskDependentField': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.category) &&\n parseStringValue(record.subCategory) &&\n parseStringValue(record.item)\n ) {\n return record\n }\n })\n }\n case 'civicaNameRecord': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.title) &&\n parseStringValue(record.familyName) &&\n Array.isArray(record.streetAddress)\n ) {\n return record\n }\n })\n }\n case 'civicaStreetName': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.formattedAccount) &&\n parseStringValue(record.formattedStreet)\n ) {\n return record\n }\n })\n }\n case 'form': {\n return parseFormSubmissionModel(element.elements || [], value)\n }\n case 'repeatableSet': {\n if (Array.isArray(element.elements) && Array.isArray(value)) {\n return value.reduce((entries, v) => {\n const entry = parseFormSubmissionModel(element.elements, v)\n if (entry) {\n entries.push(entry)\n }\n return entries\n }, [])\n }\n break\n }\n case 'location': {\n return parseUnknownAsRecord(value, (record) => {\n const latitude = parseNumberValue(record.latitude)\n const longitude = parseNumberValue(record.longitude)\n if (latitude !== undefined && longitude !== undefined) {\n return {\n latitude,\n longitude,\n zoom: parseNumberValue(record.zoom),\n }\n }\n })\n }\n case 'apiNSWLiquorLicence': {\n return parseUnknownAsRecord(value, (record) => {\n return parseUnknownAsRecord(record.licenceDetail, (licenceDetail) => {\n if (parseStringValue(licenceDetail.licenceNumber)) {\n return record\n }\n })\n })\n }\n case 'image':\n case 'html':\n case 'summary':\n case 'captcha':\n case 'heading':\n case 'infoPage':\n case 'page':\n case 'section': {\n return\n }\n default: {\n console.warn('Invalid element type used in prefill data', element)\n }\n }\n}\n\nexport default function generateDefaultData(\n elements: FormTypes.FormElement[],\n preFillData: SubmissionTypes.S3SubmissionData['submission'],\n): SubmissionTypes.S3SubmissionData['submission'] {\n return elements.reduce<SubmissionTypes.S3SubmissionData['submission']>(\n (m, el) => {\n if (el.type !== 'page' && el.type !== 'section' && el.name in m) {\n m[el.name] = parsePreFillData(el, m[el.name])\n return m\n }\n\n switch (el.type) {\n case 'checkboxes':\n case 'select':\n case 'autocomplete':\n case 'radio':\n case 'compliance': {\n const dv = getOptionsDefaultValue(el)\n if (dv) {\n if (el.type === 'compliance' && typeof dv === 'string') {\n m[el.name] = {\n value: dv,\n }\n } else {\n m[el.name] = dv\n }\n }\n break\n }\n case 'number': {\n if (typeof el.defaultValue === 'number') {\n m[el.name] = el.defaultValue\n } else if (el.isSlider) {\n m[el.name] = el.minNumber\n } else {\n m[el.name] = undefined\n }\n break\n }\n case 'section':\n case 'page': {\n if (Array.isArray(el.elements)) {\n Object.assign(m, generateDefaultData(el.elements, m))\n }\n break\n }\n case 'civicaNameRecord': {\n const nestedElements = generateCivicaNameRecordElements(el, [])\n m[el.name] = generateDefaultData(nestedElements, {\n ...el.defaultValue,\n })\n break\n }\n case 'form': {\n if (Array.isArray(el.elements)) {\n m[el.name] = generateDefaultData(el.elements, {})\n }\n break\n }\n case 'repeatableSet': {\n if (\n Array.isArray(el.elements) &&\n typeof el.minSetEntries === 'number'\n ) {\n const minSetEntries = el.minSetEntries\n // add min number of entries by default\n const entries = []\n for (let index = 0; index < minSetEntries; index++) {\n const entry = generateDefaultData(el.elements, {})\n entries.push(entry)\n }\n m[el.name] = entries\n }\n break\n }\n case 'date':\n case 'datetime':\n case 'time': {\n if (el.defaultValue) {\n m[el.name] = parseDateValue({\n dateOnly: el.type === 'date',\n daysOffset: el.defaultValueDaysOffset,\n value: el.defaultValue,\n })\n }\n break\n }\n case 'camera':\n case 'draw':\n case 'files': {\n m[el.name] = parsePreFillData(el, el.defaultValue)\n break\n }\n case 'freshdeskDependentField':\n case 'geoscapeAddress':\n case 'pointAddress':\n case 'googleAddress':\n case 'civicaStreetName':\n case 'abn':\n case 'bsb':\n case 'text':\n case 'barcodeScanner':\n case 'email':\n case 'telephone':\n case 'textarea':\n case 'location':\n case 'apiNSWLiquorLicence': {\n if (el.defaultValue) {\n m[el.name] = el.defaultValue\n }\n break\n }\n case 'boolean': {\n m[el.name] = el.defaultValue || false\n break\n }\n case 'captcha':\n case 'heading':\n case 'html':\n case 'image':\n case 'infoPage':\n case 'calculation':\n case 'summary':\n case 'arcGISWebMap':\n break\n default: {\n console.warn('Default value is not supported for element type', el)\n }\n }\n\n return m\n },\n Object.assign({}, preFillData),\n )\n}\n\nconst getOptionsDefaultValue = (el: FormTypes.FormElementWithOptions) => {\n if (!el.defaultValue) {\n return\n }\n // Cater for dynamic options\n if (el.optionsType === 'DYNAMIC' || el.optionsType === 'FRESHDESK_FIELD') {\n return el.defaultValue\n }\n // Cater for multi-select and checkboxes\n else if ((el.type === 'select' && el.multi) || el.type === 'checkboxes') {\n if (Array.isArray(el.defaultValue) && el.defaultValue.length) {\n return el.defaultValue.reduce((optionValues: string[], optionId) => {\n const option = (el.options || []).find(\n (option) => option.id === optionId,\n )\n if (option) {\n optionValues.push(option.value)\n }\n return optionValues\n }, [])\n }\n } else {\n const option = (el.options || []).find(\n (option) => option.id === el.defaultValue,\n )\n if (option) {\n return option.value\n }\n }\n return\n}\n"]}
1
+ {"version":3,"file":"generate-default-data.js","sourceRoot":"","sources":["../../src/services/generate-default-data.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { attachmentsService, localisationService } from '@oneblink/apps'\nimport { prepareNewAttachment } from './attachments'\nimport { dataUriToBlobSync } from './blob-utils'\nimport generateCivicaNameRecordElements from './generateCivicaNameRecordElements'\n\nfunction parseAttachment(\n value: unknown,\n): attachmentsService.Attachment | undefined {\n return parseUnknownAsRecord(value, (record) => {\n // Check for attachments that have not been uploaded yet\n if (\n record.data instanceof Blob &&\n typeof record.type === 'string' &&\n typeof record._id === 'string' &&\n typeof record.fileName === 'string' &&\n typeof record.isPrivate === 'boolean'\n ) {\n return record as attachmentsService.Attachment\n }\n\n // Check for attachments that have been uploaded already\n if (\n typeof record.id === 'string' &&\n typeof record.fileName === 'string' &&\n typeof record.url === 'string' &&\n typeof record.contentType === 'string' &&\n typeof record.isPrivate === 'boolean' &&\n parseUnknownAsRecord(\n record.s3,\n (s3) =>\n typeof s3.bucket === 'string' &&\n typeof s3.key === 'string' &&\n typeof s3.region === 'string',\n )\n ) {\n return record as SubmissionTypes.FormSubmissionAttachment\n }\n })\n}\n\nfunction parseFile(\n element: FormTypes.FormElementBinaryStorage,\n value: unknown,\n): attachmentsService.Attachment | undefined {\n return parseUnknownAsRecord(value, (record) => {\n if (\n record.type === undefined &&\n typeof record.fileName === 'string' &&\n typeof record.data === 'string'\n ) {\n const blob = dataUriToBlobSync(record.data)\n return prepareNewAttachment(blob, record.fileName, element)\n }\n\n return parseAttachment(record)\n })\n}\n\nfunction parseFiles(\n element: FormTypes.FormElementBinaryStorage,\n value: unknown,\n): Array<attachmentsService.Attachment> | undefined {\n if (Array.isArray(value)) {\n const files = value.reduce<Array<attachmentsService.Attachment>>(\n (files, v) => {\n const file = parseFile(element, v)\n if (file) {\n files.push(file)\n }\n return files\n },\n [],\n )\n if (files.length) {\n return files\n }\n }\n}\n\nexport function parseDateValue({\n dateOnly,\n daysOffset,\n value,\n}: {\n dateOnly: boolean\n daysOffset: number | undefined\n value: unknown\n}): string | undefined {\n if (typeof value !== 'string') {\n return\n }\n\n const date = localisationService.generateDate({ daysOffset, value, dateOnly })\n if (!date) {\n return\n }\n\n if (dateOnly) {\n const { year, month, day } = new Intl.DateTimeFormat(\n localisationService.getLocale(),\n {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\n )\n .formatToParts(date)\n .reduce(\n (memo, { type, value }) => ({\n ...memo,\n [type]: value,\n }),\n {\n year: '',\n month: '',\n day: '',\n },\n )\n // This is a workaround for an iOS 15 bug where the year was being returned as 2 digits: https://bugs.webkit.org/show_bug.cgi?id=230827\n const fixedYear = year.length === 2 ? date.getFullYear() : year\n return `${fixedYear}-${month}-${day}`\n } else {\n return date.toISOString()\n }\n}\n\nfunction parseStringValue(value: unknown) {\n if (typeof value === 'string' && !!value) {\n return value\n }\n return\n}\n\nfunction parseNumberValue(value: unknown) {\n if (typeof value === 'number' && !isNaN(value)) {\n return value\n }\n return\n}\n\nfunction parseStringArrayValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.filter((val) => typeof val === 'string')\n }\n return\n}\n\nfunction parseUnknownAsRecord<T>(\n value: unknown,\n validate: (value: Record<string, unknown>) => T | undefined,\n): T | undefined {\n if (typeof value === 'object' && value !== null) {\n return validate(value as Record<string, unknown>)\n }\n}\n\nfunction parseFormSubmissionModel(\n elements: FormTypes.FormElement[],\n value: unknown,\n): SubmissionTypes.S3SubmissionData['submission'] | undefined {\n return parseUnknownAsRecord(value, (record) => {\n return elements.reduce<SubmissionTypes.S3SubmissionData['submission']>(\n (model, element) => {\n switch (element.type) {\n case 'section':\n case 'page': {\n const partialModel = parseFormSubmissionModel(\n element.elements,\n model,\n )\n Object.assign(model, partialModel)\n break\n }\n default: {\n model[element.name] = parsePreFillData(\n element,\n record[element.name],\n )\n }\n }\n\n return model\n },\n record,\n )\n })\n}\n\nfunction parsePreFillData(\n element: FormTypes.FormElement,\n value: unknown,\n): unknown {\n switch (element.type) {\n // If a form element is pre-filled with the \"legacy\" storage type\n // format (base64), the data should be uploaded to S3 and set in the\n // submission data. This is to cater for instances of pre-fill data\n // being created before the \"legacy\" storage type was removed.\n case 'camera':\n case 'draw': {\n if (!value) {\n break\n } else if (typeof value === 'string') {\n const blob = dataUriToBlobSync(value)\n return prepareNewAttachment(blob, 'file', element)\n } else {\n return parseAttachment(value)\n }\n }\n case 'files': {\n return parseFiles(element, value)\n }\n case 'compliance': {\n return parseUnknownAsRecord(value, (record) => {\n const selectedValue = parseStringValue(record.value)\n const notes = parseStringValue(record.notes)\n if (selectedValue) {\n return {\n value: selectedValue,\n notes,\n files: parseFiles(element, record.files),\n }\n }\n })\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return parseDateValue({\n dateOnly: element.type === 'date',\n daysOffset: undefined,\n value,\n })\n }\n case 'bsb': {\n const text = parseStringValue(value)\n if (text?.match(/\\d{3}-\\d{3}/)) {\n return text\n }\n return\n }\n case 'text':\n case 'barcodeScanner':\n case 'email':\n case 'telephone':\n case 'textarea':\n case 'radio':\n case 'autocomplete': {\n return parseStringValue(value)\n }\n case 'select': {\n if (element.multi) {\n return parseStringArrayValue(value)\n } else {\n return parseStringValue(value)\n }\n }\n case 'checkboxes': {\n return parseStringArrayValue(value)\n }\n case 'calculation':\n case 'number': {\n return parseNumberValue(value)\n }\n case 'boolean': {\n return typeof value === 'boolean' ? value : false\n }\n case 'abn': {\n return parseUnknownAsRecord(value, (record) => {\n const hasABN = parseUnknownAsRecord(record.ABN, (ABN) => {\n if (Array.isArray(ABN)) {\n return ABN.some((abn) => !!parseStringValue(abn.identifierValue))\n }\n if (parseStringValue(ABN.identifierValue)) {\n return true\n }\n })\n if (!hasABN) {\n return\n }\n return record\n })\n }\n case 'pointAddress':\n case 'geoscapeAddress': {\n return parseUnknownAsRecord(value, (record) => {\n if (parseStringValue(record.addressId)) {\n return record\n }\n })\n }\n case 'googleAddress': {\n return parseUnknownAsRecord(value, (record) => {\n if (parseStringValue(record.place_id)) {\n return record\n }\n })\n }\n case 'freshdeskDependentField': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.category) &&\n parseStringValue(record.subCategory) &&\n parseStringValue(record.item)\n ) {\n return record\n }\n })\n }\n case 'civicaNameRecord': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.title) &&\n parseStringValue(record.familyName) &&\n Array.isArray(record.streetAddress)\n ) {\n return record\n }\n })\n }\n case 'civicaStreetName': {\n return parseUnknownAsRecord(value, (record) => {\n if (\n parseStringValue(record.formattedAccount) &&\n parseStringValue(record.formattedStreet)\n ) {\n return record\n }\n })\n }\n case 'form': {\n return parseFormSubmissionModel(element.elements || [], value)\n }\n case 'repeatableSet': {\n if (Array.isArray(element.elements) && Array.isArray(value)) {\n return value.reduce((entries, v) => {\n const entry = parseFormSubmissionModel(element.elements, v)\n if (entry) {\n entries.push(entry)\n }\n return entries\n }, [])\n }\n break\n }\n case 'location': {\n return parseUnknownAsRecord(value, (record) => {\n const latitude = parseNumberValue(record.latitude)\n const longitude = parseNumberValue(record.longitude)\n if (latitude !== undefined && longitude !== undefined) {\n return {\n latitude,\n longitude,\n zoom: parseNumberValue(record.zoom),\n }\n }\n })\n }\n case 'apiNSWLiquorLicence': {\n return parseUnknownAsRecord(value, (record) => {\n return parseUnknownAsRecord(record.licenceDetail, (licenceDetail) => {\n if (parseStringValue(licenceDetail.licenceNumber)) {\n return record\n }\n })\n })\n }\n case 'image':\n case 'html':\n case 'summary':\n case 'captcha':\n case 'heading':\n case 'infoPage':\n case 'page':\n case 'section': {\n return\n }\n default: {\n console.warn('Invalid element type used in prefill data', element)\n }\n }\n}\n\nexport default function generateDefaultData(\n elements: FormTypes.FormElement[],\n preFillData: SubmissionTypes.S3SubmissionData['submission'],\n): SubmissionTypes.S3SubmissionData['submission'] {\n return elements.reduce<SubmissionTypes.S3SubmissionData['submission']>(\n (m, el) => {\n if (el.type !== 'page' && el.type !== 'section' && el.name in m) {\n m[el.name] = parsePreFillData(el, m[el.name])\n return m\n }\n\n switch (el.type) {\n case 'checkboxes':\n case 'select':\n case 'autocomplete':\n case 'radio':\n case 'compliance': {\n const dv = getOptionsDefaultValue(el)\n if (dv) {\n if (el.type === 'compliance' && typeof dv === 'string') {\n m[el.name] = {\n value: dv,\n }\n } else {\n m[el.name] = dv\n }\n }\n break\n }\n case 'number': {\n if (typeof el.defaultValue === 'number') {\n m[el.name] = el.defaultValue\n } else if (el.isSlider) {\n m[el.name] = el.minNumber\n } else {\n m[el.name] = undefined\n }\n break\n }\n case 'section':\n case 'page': {\n if (Array.isArray(el.elements)) {\n Object.assign(m, generateDefaultData(el.elements, m))\n }\n break\n }\n case 'civicaNameRecord': {\n const nestedElements = generateCivicaNameRecordElements(el, [])\n m[el.name] = generateDefaultData(nestedElements, {\n ...el.defaultValue,\n })\n break\n }\n case 'form': {\n if (Array.isArray(el.elements)) {\n m[el.name] = generateDefaultData(el.elements, {})\n }\n break\n }\n case 'repeatableSet': {\n if (\n Array.isArray(el.elements) &&\n typeof el.minSetEntries === 'number'\n ) {\n const minSetEntries = el.minSetEntries\n // add min number of entries by default\n const entries = []\n for (let index = 0; index < minSetEntries; index++) {\n const entry = generateDefaultData(el.elements, {})\n entries.push(entry)\n }\n m[el.name] = entries\n }\n break\n }\n case 'date':\n case 'datetime':\n case 'time': {\n if (el.defaultValue) {\n m[el.name] = parseDateValue({\n dateOnly: el.type === 'date',\n daysOffset: el.defaultValueDaysOffset,\n value: el.defaultValue,\n })\n }\n break\n }\n case 'camera':\n case 'draw':\n case 'files': {\n m[el.name] = parsePreFillData(el, el.defaultValue)\n break\n }\n case 'freshdeskDependentField':\n case 'geoscapeAddress':\n case 'pointAddress':\n case 'googleAddress':\n case 'civicaStreetName':\n case 'abn':\n case 'bsb':\n case 'text':\n case 'barcodeScanner':\n case 'email':\n case 'telephone':\n case 'textarea':\n case 'location':\n case 'apiNSWLiquorLicence': {\n if (el.defaultValue) {\n m[el.name] = el.defaultValue\n }\n break\n }\n case 'boolean': {\n m[el.name] = el.defaultValue || false\n break\n }\n case 'captcha':\n case 'heading':\n case 'html':\n case 'image':\n case 'infoPage':\n case 'calculation':\n case 'summary':\n case 'arcGISWebMap':\n break\n default: {\n console.warn('Default value is not supported for element type', el)\n }\n }\n\n return m\n },\n Object.assign({}, preFillData),\n )\n}\n\nconst getOptionsDefaultValue = (el: FormTypes.FormElementWithOptions) => {\n if (!el.defaultValue) {\n return\n }\n // Cater for dynamic options\n if (el.optionsType === 'DYNAMIC' || el.optionsType === 'FRESHDESK_FIELD') {\n return el.defaultValue\n }\n // Cater for multi-select and checkboxes\n else if ((el.type === 'select' && el.multi) || el.type === 'checkboxes') {\n if (Array.isArray(el.defaultValue) && el.defaultValue.length) {\n return el.defaultValue.reduce((optionValues: string[], optionId) => {\n const option = (el.options || []).find(\n (option) => option.id === optionId,\n )\n if (option) {\n optionValues.push(option.value)\n }\n return optionValues\n }, [])\n }\n } else {\n const option = (el.options || []).find(\n (option) => option.id === el.defaultValue,\n )\n if (option) {\n return option.value\n }\n }\n return\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"generateCivicaNameRecordElements.js","sourceRoot":"","sources":["../../src/services/generateCivicaNameRecordElements.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n conditionallyShow: false,\n requiresAllConditionallyShowPredicates: false,\n isDataLookup: false,\n isElementLookup: false,\n})\n\nfunction generateCivicaNameRecordAddressElements(\n element: FormTypes.CivicaNameRecordElement,\n): FormTypes.FormElement[] {\n if (element.useGeoscapeAddressing) {\n return [\n {\n ...createFormElement(),\n type: 'geoscapeAddress',\n name: 'address1',\n label: element.address1Label || 'Address',\n required: element.required,\n readOnly: element.readOnly,\n },\n ]\n }\n return [\n {\n ...createFormElement(),\n type: 'text',\n name: 'address1',\n label: element.address1Label || 'Address 1',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'address2',\n label: element.address2Label || 'Address 2',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'postcode',\n label: element.postcodeLabel || 'Postcode',\n required: element.required,\n readOnly: element.readOnly,\n },\n ]\n}\n\nexport default function generateCivicaNameRecordElements(\n element: FormTypes.CivicaNameRecordElement,\n titleCodeOptions?: FormTypes.ChoiceElementOption[],\n): FormTypes.FormElement[] {\n const elementsWithHidden: Array<\n FormTypes.FormElement & { civicaIsHidden?: boolean }\n > = [\n {\n ...createFormElement(),\n type: titleCodeOptions ? 'select' : 'text',\n name: 'title',\n label: element.titleLabel || 'Title',\n required: element.required,\n readOnly: element.readOnly,\n optionsType: 'CUSTOM',\n options: titleCodeOptions || [],\n multi: false,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'givenName1',\n label: element.givenName1Label || 'Given Name 1',\n required: !!element.givenName1IsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.givenName1IsHidden,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'familyName',\n label: element.familyNameLabel || 'Family Name',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'email',\n name: 'emailAddress',\n label: element.emailAddressLabel || 'Email Address',\n required: !!element.emailAddressIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.emailAddressIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'homePhone',\n label: element.homePhoneLabel || 'Home Phone',\n required: !!element.homePhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.homePhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'businessPhone',\n label: element.businessPhoneLabel || 'Business Phone',\n required: !!element.businessPhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.businessPhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'mobilePhone',\n label: element.mobilePhoneLabel || 'Mobile Phone',\n required: !!element.mobilePhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.mobilePhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'faxPhone',\n label: element.faxPhoneLabel || 'Fax Phone',\n required: !!element.faxPhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.faxPhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'repeatableSet',\n name: 'streetAddress',\n label: element.streetAddressesLabel || 'Street Addresses',\n minSetEntries: element.required ? 1 : undefined,\n readOnly: element.readOnly,\n elements: generateCivicaNameRecordAddressElements(element),\n },\n ]\n return elementsWithHidden\n .filter((ele) => !ele.civicaIsHidden)\n .map((ele) => {\n delete ele.civicaIsHidden\n return ele\n })\n}\n"]}
1
+ {"version":3,"file":"generateCivicaNameRecordElements.js","sourceRoot":"","sources":["../../src/services/generateCivicaNameRecordElements.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n conditionallyShow: false,\n requiresAllConditionallyShowPredicates: false,\n isDataLookup: false,\n isElementLookup: false,\n})\n\nfunction generateCivicaNameRecordAddressElements(\n element: FormTypes.CivicaNameRecordElement,\n): FormTypes.FormElement[] {\n if (element.useGeoscapeAddressing) {\n return [\n {\n ...createFormElement(),\n type: 'geoscapeAddress',\n name: 'address1',\n label: element.address1Label || 'Address',\n required: element.required,\n readOnly: element.readOnly,\n },\n ]\n }\n return [\n {\n ...createFormElement(),\n type: 'text',\n name: 'address1',\n label: element.address1Label || 'Address 1',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'address2',\n label: element.address2Label || 'Address 2',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'postcode',\n label: element.postcodeLabel || 'Postcode',\n required: element.required,\n readOnly: element.readOnly,\n },\n ]\n}\n\nexport default function generateCivicaNameRecordElements(\n element: FormTypes.CivicaNameRecordElement,\n titleCodeOptions?: FormTypes.ChoiceElementOption[],\n): FormTypes.FormElement[] {\n const elementsWithHidden: Array<\n FormTypes.FormElement & { civicaIsHidden?: boolean }\n > = [\n {\n ...createFormElement(),\n type: titleCodeOptions ? 'select' : 'text',\n name: 'title',\n label: element.titleLabel || 'Title',\n required: element.required,\n readOnly: element.readOnly,\n optionsType: 'CUSTOM',\n options: titleCodeOptions || [],\n multi: false,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'givenName1',\n label: element.givenName1Label || 'Given Name 1',\n required: !!element.givenName1IsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.givenName1IsHidden,\n },\n {\n ...createFormElement(),\n type: 'text',\n name: 'familyName',\n label: element.familyNameLabel || 'Family Name',\n required: element.required,\n readOnly: element.readOnly,\n },\n {\n ...createFormElement(),\n type: 'email',\n name: 'emailAddress',\n label: element.emailAddressLabel || 'Email Address',\n required: !!element.emailAddressIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.emailAddressIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'homePhone',\n label: element.homePhoneLabel || 'Home Phone',\n required: !!element.homePhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.homePhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'businessPhone',\n label: element.businessPhoneLabel || 'Business Phone',\n required: !!element.businessPhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.businessPhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'mobilePhone',\n label: element.mobilePhoneLabel || 'Mobile Phone',\n required: !!element.mobilePhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.mobilePhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'telephone',\n name: 'faxPhone',\n label: element.faxPhoneLabel || 'Fax Phone',\n required: !!element.faxPhoneIsRequired,\n readOnly: element.readOnly,\n civicaIsHidden: element.faxPhoneIsHidden,\n },\n {\n ...createFormElement(),\n type: 'repeatableSet',\n name: 'streetAddress',\n label: element.streetAddressesLabel || 'Street Addresses',\n minSetEntries: element.required ? 1 : undefined,\n readOnly: element.readOnly,\n elements: generateCivicaNameRecordAddressElements(element),\n },\n ]\n return elementsWithHidden\n .filter((ele) => !ele.civicaIsHidden)\n .map((ele) => {\n delete ele.civicaIsHidden\n return ele\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"generateFreshdeskDependentFieldElements.js","sourceRoot":"","sources":["../../src/services/generateFreshdeskDependentFieldElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AAGjC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/B,EAAE,EAAE,IAAI,EAAE;IACV,IAAI,EAAE,QAAiB;IACvB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,iBAA0B;IACvC,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,KAAK;IACf,sCAAsC,EAAE,KAAK;CAC9C,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAC9B,aAA0D,EAC1D,WAA+B;IAE/B,MAAM,oBAAoB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAC9C,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,CACrD,CAAA;IACD,IAAI,aAAa,EAAE;QACjB,IAAI,oBAAoB,EAAE;YACxB,OAAO,oBAAoB,CAAC,OAA0C,CAAA;SACvE;aAAM;YACL,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;gBAChB,GAAG,IAAI;gBACP,GAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAqC;aAC/D,EACD,EAAE,CACH,CAAA;SACF;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,uCAAuC,CAC7D,OAAiD;;IAEjD,MAAM,eAAe,GAA4B;QAC/C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,QAAQ;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,WAAW,EAAE,iBAAiB;KAC/B,CAAA;IACD,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,CAAA;IAEtC,MAAM,kBAAkB,GAA4B;QAClD,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,gBAAgB;QAC/B,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,WAAW;QAC/C,OAAO,EAAE,EAAE;KACZ,CAAA;IACD,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAErC,MAAM,WAAW,GAA4B;QAC3C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;QACxB,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,IAAI;QACxC,OAAO,EAAE,EAAE;KACZ,CAAA;IACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAE9B,OAAO,YAAY,CAAA;AACrB,CAAC","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n type: 'select' as const,\n multi: false,\n optionsType: 'FRESHDESK_FIELD' as const,\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n})\n\nexport function getNestedOptions(\n parentOptions: FormTypes.ChoiceElementOption[] | undefined,\n parentValue: string | undefined,\n): FormTypes.ChoiceElementOption[] | undefined {\n const selectedParentOption = parentOptions?.find(\n (parentOption) => parentOption.value === parentValue,\n )\n if (parentOptions) {\n if (selectedParentOption) {\n return selectedParentOption.options as FormTypes.ChoiceElementOption[]\n } else {\n return parentOptions.reduce<FormTypes.ChoiceElementOption[]>(\n (memo, option) => [\n ...memo,\n ...((option.options || []) as FormTypes.ChoiceElementOption[]),\n ],\n [],\n )\n }\n }\n return undefined\n}\n\nexport default function generateFreshdeskDependentFieldElements(\n element: FormTypes.FreshdeskDependentFieldElement,\n): FormTypes.SelectElement[] {\n const categoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'category',\n required: element.required,\n readOnly: element.readOnly,\n label: element.label,\n hint: element.hint,\n defaultValue: element.defaultValue?.category,\n options: element.options,\n freshdeskFieldName: element.freshdeskFieldName,\n optionsType: 'FRESHDESK_FIELD',\n }\n const formElements = [categoryElement]\n\n const subCategoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'subCategory',\n required: element.required,\n readOnly: element.readOnly,\n label: element.subCategoryLabel,\n hint: element.subCategoryHint,\n defaultValue: element.defaultValue?.subCategory,\n options: [],\n }\n formElements.push(subCategoryElement)\n\n const itemElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'item',\n required: element.required,\n readOnly: element.readOnly,\n label: element.itemLabel,\n hint: element.itemHint,\n defaultValue: element.defaultValue?.item,\n options: [],\n }\n formElements.push(itemElement)\n\n return formElements\n}\n"]}
1
+ {"version":3,"file":"generateFreshdeskDependentFieldElements.js","sourceRoot":"","sources":["../../src/services/generateFreshdeskDependentFieldElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AAGjC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/B,EAAE,EAAE,IAAI,EAAE;IACV,IAAI,EAAE,QAAiB;IACvB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,iBAA0B;IACvC,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,KAAK;IACf,sCAAsC,EAAE,KAAK;CAC9C,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAC9B,aAA0D,EAC1D,WAA+B;IAE/B,MAAM,oBAAoB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAC9C,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,CACrD,CAAA;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,oBAAoB,CAAC,OAA0C,CAAA;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;gBAChB,GAAG,IAAI;gBACP,GAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAqC;aAC/D,EACD,EAAE,CACH,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,uCAAuC,CAC7D,OAAiD;;IAEjD,MAAM,eAAe,GAA4B;QAC/C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,QAAQ;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,WAAW,EAAE,iBAAiB;KAC/B,CAAA;IACD,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,CAAA;IAEtC,MAAM,kBAAkB,GAA4B;QAClD,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,gBAAgB;QAC/B,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,WAAW;QAC/C,OAAO,EAAE,EAAE;KACZ,CAAA;IACD,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAErC,MAAM,WAAW,GAA4B;QAC3C,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,SAAS;QACxB,IAAI,EAAE,OAAO,CAAC,QAAQ;QACtB,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,0CAAE,IAAI;QACxC,OAAO,EAAE,EAAE;KACZ,CAAA;IACD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAE9B,OAAO,YAAY,CAAA;AACrB,CAAC","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { FormTypes } from '@oneblink/types'\n\nconst createFormElement = () => ({\n id: uuid(),\n type: 'select' as const,\n multi: false,\n optionsType: 'FRESHDESK_FIELD' as const,\n conditionallyShow: false,\n isDataLookup: false,\n isElementLookup: false,\n required: false,\n requiresAllConditionallyShowPredicates: false,\n})\n\nexport function getNestedOptions(\n parentOptions: FormTypes.ChoiceElementOption[] | undefined,\n parentValue: string | undefined,\n): FormTypes.ChoiceElementOption[] | undefined {\n const selectedParentOption = parentOptions?.find(\n (parentOption) => parentOption.value === parentValue,\n )\n if (parentOptions) {\n if (selectedParentOption) {\n return selectedParentOption.options as FormTypes.ChoiceElementOption[]\n } else {\n return parentOptions.reduce<FormTypes.ChoiceElementOption[]>(\n (memo, option) => [\n ...memo,\n ...((option.options || []) as FormTypes.ChoiceElementOption[]),\n ],\n [],\n )\n }\n }\n return undefined\n}\n\nexport default function generateFreshdeskDependentFieldElements(\n element: FormTypes.FreshdeskDependentFieldElement,\n): FormTypes.SelectElement[] {\n const categoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'category',\n required: element.required,\n readOnly: element.readOnly,\n label: element.label,\n hint: element.hint,\n defaultValue: element.defaultValue?.category,\n options: element.options,\n freshdeskFieldName: element.freshdeskFieldName,\n optionsType: 'FRESHDESK_FIELD',\n }\n const formElements = [categoryElement]\n\n const subCategoryElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'subCategory',\n required: element.required,\n readOnly: element.readOnly,\n label: element.subCategoryLabel,\n hint: element.subCategoryHint,\n defaultValue: element.defaultValue?.subCategory,\n options: [],\n }\n formElements.push(subCategoryElement)\n\n const itemElement: FormTypes.SelectElement = {\n ...createFormElement(),\n name: 'item',\n required: element.required,\n readOnly: element.readOnly,\n label: element.itemLabel,\n hint: element.itemHint,\n defaultValue: element.defaultValue?.item,\n options: [],\n }\n formElements.push(itemElement)\n\n return formElements\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  const DEFAULT_POSITION_OPTIONS = {
2
2
  enableHighAccuracy: true,
3
- maximumAge: 0,
3
+ maximumAge: 0, // fresh results each time
4
4
  timeout: 10 * 1000, // take no longer than 10 seconds
5
5
  };
6
6
  function clonePosition(position) {
@@ -1 +1 @@
1
- {"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../src/services/geolocation.ts"],"names":[],"mappings":"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","sourcesContent":["type PositionLike = Omit<Partial<GeolocationPosition>, 'coords'> & {\n coords: Partial<GeolocationCoordinates>\n}\n\ntype PositionOptionsLike = Partial<PositionOptions>\n\ntype GeolocationDriver = {\n getCurrentPosition: (\n success: (position: PositionLike) => void,\n error: (error: GeolocationPositionError | Error) => void,\n options: PositionOptions,\n ) => void\n isAvailable: () => boolean\n}\n\nconst DEFAULT_POSITION_OPTIONS: PositionOptions = {\n enableHighAccuracy: true,\n maximumAge: 0, // fresh results each time\n timeout: 10 * 1000, // take no longer than 10 seconds\n}\n\nfunction clonePosition(position: PositionLike): PositionLike {\n position = position || {}\n const coords = position.coords || {}\n if (typeof position !== 'object' || typeof coords !== 'object') {\n throw new TypeError('cannot clone non-Position object')\n }\n return {\n coords: {\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n },\n timestamp: position.timestamp || Date.now(),\n }\n}\n\nfunction mergePositionOptions(options?: PositionOptionsLike): PositionOptions {\n options = options || {}\n if (typeof options !== 'object') {\n return DEFAULT_POSITION_OPTIONS\n }\n\n return {\n enableHighAccuracy:\n typeof options.enableHighAccuracy === 'boolean'\n ? options.enableHighAccuracy\n : DEFAULT_POSITION_OPTIONS.enableHighAccuracy,\n\n maximumAge:\n typeof options.maximumAge === 'number' && !isNaN(options.maximumAge)\n ? options.maximumAge\n : DEFAULT_POSITION_OPTIONS.maximumAge,\n\n timeout:\n typeof options.timeout === 'number' && !isNaN(options.timeout)\n ? options.timeout\n : DEFAULT_POSITION_OPTIONS.timeout,\n }\n}\n\nconst DRIVERS_PREFERENCE = ['W3C']\n\nconst DRIVERS: { [id: string]: GeolocationDriver } = {\n W3C: {\n isAvailable: function (): boolean {\n return !!(\n typeof navigator !== 'undefined' &&\n navigator.geolocation &&\n typeof navigator.geolocation.getCurrentPosition === 'function'\n )\n },\n\n getCurrentPosition: function (\n onSuccess: (position: PositionLike) => void,\n onError: (error: GeolocationPositionError) => void,\n options: PositionOptions,\n ): void {\n navigator.geolocation.getCurrentPosition(\n function (position) {\n onSuccess(clonePosition(position))\n },\n onError,\n options,\n )\n },\n },\n}\n\nfunction detectDriver(): GeolocationDriver | false {\n const availableDriver = DRIVERS_PREFERENCE.map(function (name) {\n return DRIVERS[name]\n }).find(function (driver) {\n return driver.isAvailable()\n })\n return availableDriver || false\n}\n\nexport function getCurrentPosition(\n options?: PositionOptionsLike,\n): Promise<PositionLike> {\n return new Promise(function (resolve, reject) {\n const driver = detectDriver()\n if (!driver) {\n return reject(new Error('GeoLocation not supported'))\n }\n driver.getCurrentPosition(\n function (position) {\n resolve(position)\n },\n function (err) {\n reject(err)\n },\n mergePositionOptions(options),\n )\n })\n}\n"]}
1
+ {"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../src/services/geolocation.ts"],"names":[],"mappings":"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","sourcesContent":["type PositionLike = Omit<Partial<GeolocationPosition>, 'coords'> & {\n coords: Partial<GeolocationCoordinates>\n}\n\ntype PositionOptionsLike = Partial<PositionOptions>\n\ntype GeolocationDriver = {\n getCurrentPosition: (\n success: (position: PositionLike) => void,\n error: (error: GeolocationPositionError | Error) => void,\n options: PositionOptions,\n ) => void\n isAvailable: () => boolean\n}\n\nconst DEFAULT_POSITION_OPTIONS: PositionOptions = {\n enableHighAccuracy: true,\n maximumAge: 0, // fresh results each time\n timeout: 10 * 1000, // take no longer than 10 seconds\n}\n\nfunction clonePosition(position: PositionLike): PositionLike {\n position = position || {}\n const coords = position.coords || {}\n if (typeof position !== 'object' || typeof coords !== 'object') {\n throw new TypeError('cannot clone non-Position object')\n }\n return {\n coords: {\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n },\n timestamp: position.timestamp || Date.now(),\n }\n}\n\nfunction mergePositionOptions(options?: PositionOptionsLike): PositionOptions {\n options = options || {}\n if (typeof options !== 'object') {\n return DEFAULT_POSITION_OPTIONS\n }\n\n return {\n enableHighAccuracy:\n typeof options.enableHighAccuracy === 'boolean'\n ? options.enableHighAccuracy\n : DEFAULT_POSITION_OPTIONS.enableHighAccuracy,\n\n maximumAge:\n typeof options.maximumAge === 'number' && !isNaN(options.maximumAge)\n ? options.maximumAge\n : DEFAULT_POSITION_OPTIONS.maximumAge,\n\n timeout:\n typeof options.timeout === 'number' && !isNaN(options.timeout)\n ? options.timeout\n : DEFAULT_POSITION_OPTIONS.timeout,\n }\n}\n\nconst DRIVERS_PREFERENCE = ['W3C']\n\nconst DRIVERS: { [id: string]: GeolocationDriver } = {\n W3C: {\n isAvailable: function (): boolean {\n return !!(\n typeof navigator !== 'undefined' &&\n navigator.geolocation &&\n typeof navigator.geolocation.getCurrentPosition === 'function'\n )\n },\n\n getCurrentPosition: function (\n onSuccess: (position: PositionLike) => void,\n onError: (error: GeolocationPositionError) => void,\n options: PositionOptions,\n ): void {\n navigator.geolocation.getCurrentPosition(\n function (position) {\n onSuccess(clonePosition(position))\n },\n onError,\n options,\n )\n },\n },\n}\n\nfunction detectDriver(): GeolocationDriver | false {\n const availableDriver = DRIVERS_PREFERENCE.map(function (name) {\n return DRIVERS[name]\n }).find(function (driver) {\n return driver.isAvailable()\n })\n return availableDriver || false\n}\n\nexport function getCurrentPosition(\n options?: PositionOptionsLike,\n): Promise<PositionLike> {\n return new Promise(function (resolve, reject) {\n const driver = detectDriver()\n if (!driver) {\n return reject(new Error('GeoLocation not supported'))\n }\n driver.getCurrentPosition(\n function (position) {\n resolve(position)\n },\n function (err) {\n reject(err)\n },\n mergePositionOptions(options),\n )\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getDateRangeConfiguration.js","sourceRoot":"","sources":["../../src/services/getDateRangeConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAStD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAiC,EAC3E,QAAiC,EACjC,mBAAmE;IAEnE,IAAI,sBAAsB,EAAE;QAC1B,MAAM,aAAa,GAAG,iBAAiB,CAAC,uBAAuB,CAC7D,sBAAsB,EACtB,QAAQ,EACR,mBAAmB,CACpB,CAAA;QACD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACrC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;SACnC;KACF;IACD,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACxD,CAAC","sourcesContent":["import { submissionService } from '@oneblink/sdk-core'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\n\nexport type DateRangeConfigurationOptions = {\n referenceFormElementId: string | undefined\n date: string | undefined\n daysOffset: number | undefined\n}\n\nexport default function getDateRangeConfiguration(\n { referenceFormElementId, date, daysOffset }: DateRangeConfigurationOptions,\n elements: FormTypes.FormElement[],\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission'],\n): [string | undefined, number | undefined] {\n if (referenceFormElementId) {\n const referenceDate = submissionService.getRootElementValueById(\n referenceFormElementId,\n elements,\n formSubmissionModel,\n )\n if (typeof referenceDate === 'string') {\n return [referenceDate, daysOffset]\n }\n }\n return [date, date === 'NOW' ? daysOffset : undefined]\n}\n"]}
1
+ {"version":3,"file":"getDateRangeConfiguration.js","sourceRoot":"","sources":["../../src/services/getDateRangeConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAStD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAiC,EAC3E,QAAiC,EACjC,mBAAmE;IAEnE,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,iBAAiB,CAAC,uBAAuB,CAC7D,sBAAsB,EACtB,QAAQ,EACR,mBAAmB,CACpB,CAAA;QACD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AACxD,CAAC","sourcesContent":["import { submissionService } from '@oneblink/sdk-core'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\n\nexport type DateRangeConfigurationOptions = {\n referenceFormElementId: string | undefined\n date: string | undefined\n daysOffset: number | undefined\n}\n\nexport default function getDateRangeConfiguration(\n { referenceFormElementId, date, daysOffset }: DateRangeConfigurationOptions,\n elements: FormTypes.FormElement[],\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission'],\n): [string | undefined, number | undefined] {\n if (referenceFormElementId) {\n const referenceDate = submissionService.getRootElementValueById(\n referenceFormElementId,\n elements,\n formSubmissionModel,\n )\n if (typeof referenceDate === 'string') {\n return [referenceDate, daysOffset]\n }\n }\n return [date, date === 'NOW' ? daysOffset : undefined]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getRepeatableSetEntriesConfiguration.js","sourceRoot":"","sources":["../../src/services/getRepeatableSetEntriesConfiguration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,UAAiD,EACjD,QAAiC,EACjC,mBAAmE;IAEnE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAChD,MAAM,KAAK,GAAG,iBAAiB,CAAC,uBAAuB,CACrD,UAAU,CAAC,SAAS,EACpB,QAAQ,EACR,mBAAmB,CACpB,CAAA;QACD,IAAI,KAAK,EAAE;YACT,OAAO,KAAe,CAAA;SACvB;KACF;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,UAAU,CAAA;KAClB;IACD,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { RepeatableSetElement } from '@oneblink/types/typescript/forms'\nimport { submissionService } from '@oneblink/sdk-core'\n\nexport default function getRepeatableSetEntriesConfiguration(\n setEntries: RepeatableSetElement['minSetEntries'],\n elements: FormTypes.FormElement[],\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission'],\n) {\n if (setEntries && typeof setEntries === 'object') {\n const value = submissionService.getRootElementValueById(\n setEntries.elementId,\n elements,\n formSubmissionModel,\n )\n if (value) {\n return value as number\n }\n }\n if (typeof setEntries === 'number') {\n return setEntries\n }\n return undefined\n}\n"]}
1
+ {"version":3,"file":"getRepeatableSetEntriesConfiguration.js","sourceRoot":"","sources":["../../src/services/getRepeatableSetEntriesConfiguration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,UAAiD,EACjD,QAAiC,EACjC,mBAAmE;IAEnE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,uBAAuB,CACrD,UAAU,CAAC,SAAS,EACpB,QAAQ,EACR,mBAAmB,CACpB,CAAA;QACD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAe,CAAA;QACxB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { RepeatableSetElement } from '@oneblink/types/typescript/forms'\nimport { submissionService } from '@oneblink/sdk-core'\n\nexport default function getRepeatableSetEntriesConfiguration(\n setEntries: RepeatableSetElement['minSetEntries'],\n elements: FormTypes.FormElement[],\n formSubmissionModel: SubmissionTypes.S3SubmissionData['submission'],\n) {\n if (setEntries && typeof setEntries === 'object') {\n const value = submissionService.getRootElementValueById(\n setEntries.elementId,\n elements,\n formSubmissionModel,\n )\n if (value) {\n return value as number\n }\n }\n if (typeof setEntries === 'number') {\n return setEntries\n }\n return undefined\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"injectableOptions.js","sourceRoot":"","sources":["../../src/services/injectableOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { submissionService, typeCastService } from '@oneblink/sdk-core'\nimport { localisationService } from '@oneblink/apps'\nimport { v4 as uuidv4 } from 'uuid'\nimport { MiscTypes } from '@oneblink/types'\nimport { TaskContext } from '../hooks/useTaskContext'\n\ntype Option = Pick<FormTypes.ChoiceElementOption, 'value' | 'label'>\n\nfunction processInjectableDynamicOption({\n option: resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n ...params\n}: {\n option: Option\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): Map<string, Option> {\n return submissionService.processInjectablesInCustomResource<Option>({\n resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n replaceRootInjectables(option, submission, formElements) {\n // Replace root level form element values\n const replaceableParams: Parameters<\n typeof localisationService.replaceInjectablesWithElementValues\n >[1] = {\n ...params,\n submission,\n formElements,\n task: params.taskContext.task,\n taskGroup: params.taskContext.taskGroup,\n taskGroupInstance: params.taskContext.taskGroupInstance,\n excludeNestedElements: true,\n }\n const {\n text: label,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInLabel,\n } = localisationService.replaceInjectablesWithElementValues(\n option.label,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInLabel) {\n return\n }\n\n const {\n text: value,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInValue,\n } = localisationService.replaceInjectablesWithElementValues(\n option.value,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInValue) {\n return\n }\n\n return [\n label + ' ' + value,\n value,\n {\n value,\n label,\n },\n ]\n },\n prepareNestedInjectables(option, prepare) {\n return {\n value: prepare(option.value),\n label: prepare(option.label),\n }\n },\n })\n}\n\nexport default function processInjectableOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n}: {\n option: FormTypes.ChoiceElementOption\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.ChoiceElementOption[] {\n const options = processInjectableDynamicOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n })\n\n const generatedOptions: FormTypes.ChoiceElementOption[] = []\n\n options.forEach(({ label, value }) => {\n generatedOptions.push({\n ...option,\n id: options.size === 1 ? option.id : uuidv4(),\n label,\n value,\n })\n })\n\n return generatedOptions\n}\n\nfunction injectOptionsAcrossEntriesElements({\n contextElements,\n elements,\n entries,\n taskContext,\n userProfile,\n}: {\n contextElements: FormTypes.FormElement[]\n elements: FormTypes.FormElement[]\n entries: SubmissionTypes.S3SubmissionData['submission'][]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n return elements.map<FormTypes.FormElement>((e) => {\n switch (e.type) {\n case 'page':\n case 'section': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // info elements on other pages/sections will need the parent definition\n contextElements,\n elements: e.elements,\n entries,\n taskContext,\n userProfile,\n }),\n }\n }\n case 'form': {\n if (Array.isArray(e.elements)) {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // sub-forms do not have context of parent elements\n contextElements: e.elements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n if (entry[e.name]) {\n memo.push(\n entry[\n e.name\n ] as SubmissionTypes.S3SubmissionData['submission'],\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n } else {\n return e\n }\n }\n case 'repeatableSet': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // repeatable set entries may only know about elements within entry\n contextElements: e.elements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n const nestedEntries = entry[e.name]\n if (Array.isArray(nestedEntries)) {\n memo.push(\n ...(nestedEntries as SubmissionTypes.S3SubmissionData['submission'][]),\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n }\n default: {\n const optionsElement = typeCastService.formElements.toOptionsElement(e)\n if (optionsElement) {\n return {\n ...optionsElement,\n options: entries.reduce<FormTypes.ChoiceElementOption[]>(\n (newOptions, submission) => {\n optionsElement.options?.forEach((o) => {\n const injected = processInjectableOption({\n option: o,\n submission,\n formElements: contextElements,\n taskContext,\n userProfile,\n })\n\n newOptions.push(\n ...injected.filter((generatedOption) => {\n return !newOptions.some(\n (addedOption) =>\n addedOption.value === generatedOption.value,\n )\n }),\n )\n })\n return newOptions\n },\n [],\n ),\n }\n }\n return e\n }\n }\n })\n}\n\nexport function injectOptionsAcrossAllElements({\n submission,\n ...params\n}: {\n elements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n submission: SubmissionTypes.S3SubmissionData['submission']\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n // We iterate over entries as an array of submission objects because\n // child elements of a repeatable set that have injected options\n // need to include all of the injected options from the same elements\n // in sibling entries within the set. Otherwise we will not have the\n // labels for each available option to display the submission.\n return injectOptionsAcrossEntriesElements({\n ...params,\n entries: [submission],\n })\n}\n"]}
1
+ {"version":3,"file":"injectableOptions.js","sourceRoot":"","sources":["../../src/services/injectableOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { submissionService, typeCastService } from '@oneblink/sdk-core'\nimport { localisationService } from '@oneblink/apps'\nimport { v4 as uuidv4 } from 'uuid'\nimport { MiscTypes } from '@oneblink/types'\nimport { TaskContext } from '../hooks/useTaskContext'\n\ntype Option = Pick<FormTypes.ChoiceElementOption, 'value' | 'label'>\n\nfunction processInjectableDynamicOption({\n option: resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n ...params\n}: {\n option: Option\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): Map<string, Option> {\n return submissionService.processInjectablesInCustomResource<Option>({\n resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n replaceRootInjectables(option, submission, formElements) {\n // Replace root level form element values\n const replaceableParams: Parameters<\n typeof localisationService.replaceInjectablesWithElementValues\n >[1] = {\n ...params,\n submission,\n formElements,\n task: params.taskContext.task,\n taskGroup: params.taskContext.taskGroup,\n taskGroupInstance: params.taskContext.taskGroupInstance,\n excludeNestedElements: true,\n }\n const {\n text: label,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInLabel,\n } = localisationService.replaceInjectablesWithElementValues(\n option.label,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInLabel) {\n return\n }\n\n const {\n text: value,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInValue,\n } = localisationService.replaceInjectablesWithElementValues(\n option.value,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInValue) {\n return\n }\n\n return [\n label + ' ' + value,\n value,\n {\n value,\n label,\n },\n ]\n },\n prepareNestedInjectables(option, prepare) {\n return {\n value: prepare(option.value),\n label: prepare(option.label),\n }\n },\n })\n}\n\nexport default function processInjectableOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n}: {\n option: FormTypes.ChoiceElementOption\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.ChoiceElementOption[] {\n const options = processInjectableDynamicOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n })\n\n const generatedOptions: FormTypes.ChoiceElementOption[] = []\n\n options.forEach(({ label, value }) => {\n generatedOptions.push({\n ...option,\n id: options.size === 1 ? option.id : uuidv4(),\n label,\n value,\n })\n })\n\n return generatedOptions\n}\n\nfunction injectOptionsAcrossEntriesElements({\n contextElements,\n elements,\n entries,\n taskContext,\n userProfile,\n}: {\n contextElements: FormTypes.FormElement[]\n elements: FormTypes.FormElement[]\n entries: SubmissionTypes.S3SubmissionData['submission'][]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n return elements.map<FormTypes.FormElement>((e) => {\n switch (e.type) {\n case 'page':\n case 'section': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // info elements on other pages/sections will need the parent definition\n contextElements,\n elements: e.elements,\n entries,\n taskContext,\n userProfile,\n }),\n }\n }\n case 'form': {\n if (Array.isArray(e.elements)) {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // sub-forms do not have context of parent elements\n contextElements: e.elements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n if (entry[e.name]) {\n memo.push(\n entry[\n e.name\n ] as SubmissionTypes.S3SubmissionData['submission'],\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n } else {\n return e\n }\n }\n case 'repeatableSet': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // repeatable set entries may only know about elements within entry\n contextElements: e.elements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n const nestedEntries = entry[e.name]\n if (Array.isArray(nestedEntries)) {\n memo.push(\n ...(nestedEntries as SubmissionTypes.S3SubmissionData['submission'][]),\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n }\n default: {\n const optionsElement = typeCastService.formElements.toOptionsElement(e)\n if (optionsElement) {\n return {\n ...optionsElement,\n options: entries.reduce<FormTypes.ChoiceElementOption[]>(\n (newOptions, submission) => {\n optionsElement.options?.forEach((o) => {\n const injected = processInjectableOption({\n option: o,\n submission,\n formElements: contextElements,\n taskContext,\n userProfile,\n })\n\n newOptions.push(\n ...injected.filter((generatedOption) => {\n return !newOptions.some(\n (addedOption) =>\n addedOption.value === generatedOption.value,\n )\n }),\n )\n })\n return newOptions\n },\n [],\n ),\n }\n }\n return e\n }\n }\n })\n}\n\nexport function injectOptionsAcrossAllElements({\n submission,\n ...params\n}: {\n elements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n submission: SubmissionTypes.S3SubmissionData['submission']\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n // We iterate over entries as an array of submission objects because\n // child elements of a repeatable set that have injected options\n // need to include all of the injected options from the same elements\n // in sibling entries within the set. Otherwise we will not have the\n // labels for each available option to display the submission.\n return injectOptionsAcrossEntriesElements({\n ...params,\n entries: [submission],\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scrolling-service.js","sourceRoot":"","sources":["../../src/services/scrolling-service.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,iBAAiB,CAAA;AACvC,IAAI,UAAU,GAAG,KAAK,CAAA;AAEtB,8DAA8D;AAC9D,SAAS,yBAAyB,CAAC,OAAY,EAAE,SAAiB;IAChE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE;QACpC,OAAO,KAAK,CAAA;KACb;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,CAAa;IACnC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QACjD,CAAC,CAAC,cAAc,EAAE,CAAA;KACnB;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,UAAU,EAAE;QACd,OAAM;KACP;IACD,UAAU,GAAG,IAAI,CAAA;IAEjB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACrD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,UAAU,EAAE;QACf,OAAM;KACP;IACD,UAAU,GAAG,KAAK,CAAA;IAElB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACxD,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC;AAED,eAAe;IACb,gBAAgB;IAChB,eAAe;CAChB,CAAA","sourcesContent":["const overflowClass = 'overflow-hidden'\nlet isDisabled = false\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction elementOrAncestorHasClass(element: any, className: string): boolean {\n if (!element || element === document) {\n return false\n }\n\n if (element.className.indexOf(className) >= 0) {\n return true\n }\n\n return elementOrAncestorHasClass(element.parentNode, className)\n}\n\nfunction preventDefault(e: TouchEvent) {\n if (!elementOrAncestorHasClass(e.target, 'modal')) {\n e.preventDefault()\n }\n}\n\nfunction disableScrolling(): void {\n if (isDisabled) {\n return\n }\n isDisabled = true\n\n // @ts-expect-error ???\n document.body.parentNode.classList.add(overflowClass)\n document.body.addEventListener('touchmove', preventDefault, false)\n}\n\nfunction enableScrolling(): void {\n if (!isDisabled) {\n return\n }\n isDisabled = false\n\n // @ts-expect-error ???\n document.body.parentNode.classList.remove(overflowClass)\n document.body.removeEventListener('touchmove', preventDefault, false)\n}\n\nexport default {\n disableScrolling,\n enableScrolling,\n}\n"]}
1
+ {"version":3,"file":"scrolling-service.js","sourceRoot":"","sources":["../../src/services/scrolling-service.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,iBAAiB,CAAA;AACvC,IAAI,UAAU,GAAG,KAAK,CAAA;AAEtB,8DAA8D;AAC9D,SAAS,yBAAyB,CAAC,OAAY,EAAE,SAAiB;IAChE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,CAAa;IACnC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAClD,CAAC,CAAC,cAAc,EAAE,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,UAAU,EAAE,CAAC;QACf,OAAM;IACR,CAAC;IACD,UAAU,GAAG,IAAI,CAAA;IAEjB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACrD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAM;IACR,CAAC;IACD,UAAU,GAAG,KAAK,CAAA;IAElB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACxD,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC;AAED,eAAe;IACb,gBAAgB;IAChB,eAAe;CAChB,CAAA","sourcesContent":["const overflowClass = 'overflow-hidden'\nlet isDisabled = false\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction elementOrAncestorHasClass(element: any, className: string): boolean {\n if (!element || element === document) {\n return false\n }\n\n if (element.className.indexOf(className) >= 0) {\n return true\n }\n\n return elementOrAncestorHasClass(element.parentNode, className)\n}\n\nfunction preventDefault(e: TouchEvent) {\n if (!elementOrAncestorHasClass(e.target, 'modal')) {\n e.preventDefault()\n }\n}\n\nfunction disableScrolling(): void {\n if (isDisabled) {\n return\n }\n isDisabled = true\n\n // @ts-expect-error ???\n document.body.parentNode.classList.add(overflowClass)\n document.body.addEventListener('touchmove', preventDefault, false)\n}\n\nfunction enableScrolling(): void {\n if (!isDisabled) {\n return\n }\n isDisabled = false\n\n // @ts-expect-error ???\n document.body.parentNode.classList.remove(overflowClass)\n document.body.removeEventListener('touchmove', preventDefault, false)\n}\n\nexport default {\n disableScrolling,\n enableScrolling,\n}\n"]}
@@ -358,3 +358,6 @@
358
358
  position: absolute;
359
359
  right: 15px;
360
360
  }
361
+ .ql-editor strong {
362
+ color: inherit;
363
+ }
@@ -71,3 +71,7 @@
71
71
  bottom: 0px;
72
72
  transform: translate(-50%, 50%);
73
73
  }
74
+
75
+ .ob-section__collapsed {
76
+ display: none;
77
+ }
@@ -0,0 +1,180 @@
1
+ $validation-errors-border-radius: 8px;
2
+
3
+ .ob-validation-notification-wrapper {
4
+ position: fixed;
5
+ bottom: $size-6;
6
+ right: $size-6;
7
+ z-index: 30;
8
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
9
+ transition-duration: 300ms;
10
+ }
11
+
12
+ .ob-validation-color-transition {
13
+ transition-property: color;
14
+ transition-duration: inherit;
15
+ transition-timing-function: inherit;
16
+ }
17
+
18
+ .ob-validation-notification-card {
19
+ transition-property: transform, background-color;
20
+ transition-duration: inherit;
21
+ transition-timing-function: inherit;
22
+ border-radius: $validation-errors-border-radius;
23
+ max-height: 350px;
24
+ overflow-y: auto;
25
+ border-color: $danger;
26
+ border-width: 2px;
27
+ border-style: solid;
28
+ animation: pulse-animation 1.5s infinite;
29
+ @keyframes pulse-animation {
30
+ 0% {
31
+ box-shadow: 0 0 0 0px rgba(255, 0, 0, 0.4);
32
+ }
33
+ 100% {
34
+ box-shadow: 0 0 0 $size-6 rgba(255, 0, 0, 0);
35
+ }
36
+ }
37
+ }
38
+
39
+ // Card
40
+ .ob-validation-notification-card.is-expanded {
41
+ background-color: $white;
42
+ color: $black;
43
+ }
44
+
45
+ .ob-validation-notification-card.is-contracted {
46
+ background-color: $danger;
47
+ color: $white;
48
+ }
49
+
50
+ // Card Content
51
+ .ob-validation-notification-card-content {
52
+ transition-property: padding;
53
+ transition-duration: inherit;
54
+ transition-timing-function: inherit;
55
+ padding: $size-6;
56
+ padding-bottom: $size-4;
57
+ }
58
+ .is-contracted .ob-validation-notification-card-content {
59
+ padding-top: $size-8;
60
+ padding-bottom: $size-8;
61
+ }
62
+
63
+ // Card Content Header
64
+ .ob-validation-notification-card-header-wrapper {
65
+ display: flex;
66
+ width: 100%;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ }
70
+
71
+ .ob-validation-notification-card-header-title-wrapper {
72
+ display: flex;
73
+ align-items: center;
74
+ }
75
+
76
+ .ob-validation-notification-card-header-title-text {
77
+ font-weight: $weight-semibold;
78
+ }
79
+
80
+ .ob-validation-notification-card-header-title-icon {
81
+ margin-right: $size-8;
82
+ font-size: 22px;
83
+ }
84
+
85
+ // Card collapse
86
+ .ob-validation-notification-card-collapse-wrapper {
87
+ transition-property: width, opacity;
88
+ transition-duration: inherit;
89
+ transition-timing-function: inherit;
90
+ white-space: nowrap;
91
+ overflow-x: hidden;
92
+ }
93
+
94
+ .ob-validation-notification-wrapper .MuiCollapse-root {
95
+ transition-property: height;
96
+ transition-duration: inherit;
97
+ transition-timing-function: inherit;
98
+ }
99
+
100
+ .is-contracted .ob-validation-notification-card-collapse-wrapper {
101
+ // Allows for a perfectly smooth transition when the text size is unaltered by the browser.
102
+ width: 196px;
103
+ opacity: 0;
104
+ }
105
+ .is-expanded .ob-validation-notification-card-collapse-wrapper {
106
+ width: 300px;
107
+ opacity: 1;
108
+ }
109
+
110
+ // List
111
+ .ob-validation-notification-card-page-label {
112
+ font-weight: $weight-semibold;
113
+ font-size: 0.875rem;
114
+ }
115
+ .ob-validation-notification-card-page-label.is-not-first {
116
+ margin-top: $size-8;
117
+ }
118
+ .ob-validation-notification-card-list {
119
+ margin-top: $size-8;
120
+ border-radius: $validation-errors-border-radius;
121
+ }
122
+
123
+ // Items
124
+ .ob-validation-notification-card-item {
125
+ display: flex;
126
+ justify-content: space-between;
127
+ align-items: center;
128
+ padding: $size-8;
129
+ }
130
+ .ob-validation-notification-card-item.is-first {
131
+ border-top-left-radius: $validation-errors-border-radius;
132
+ border-top-right-radius: $validation-errors-border-radius;
133
+ }
134
+ .ob-validation-notification-card-item.is-last {
135
+ border-bottom-left-radius: $validation-errors-border-radius;
136
+ border-bottom-right-radius: $validation-errors-border-radius;
137
+ }
138
+
139
+ .ob-validation-notification-card-item-text {
140
+ white-space: nowrap;
141
+ overflow: hidden;
142
+ font-size: 0.875rem;
143
+ }
144
+
145
+ .ob-validation-notification-card-item-text-error-message {
146
+ overflow: hidden;
147
+ text-overflow: ellipsis;
148
+ }
149
+
150
+ .ob-validation-notification-card-item-icon {
151
+ margin-left: $size-8;
152
+ }
153
+
154
+ // Below desktop
155
+ @media only screen and (max-width: $desktop) {
156
+ .ob-bottom-navigation__content {
157
+ .ob-validation-notification-wrapper {
158
+ margin-bottom: 4rem;
159
+ }
160
+ }
161
+ }
162
+
163
+ // Mobile size
164
+ @media only screen and (max-width: $tablet) {
165
+ .ob-validation-notification-wrapper {
166
+ left: $size-6;
167
+ }
168
+
169
+ .is-contracted .ob-validation-notification-card-collapse-wrapper {
170
+ width: 100%;
171
+ }
172
+ .is-expanded .ob-validation-notification-card-collapse-wrapper {
173
+ width: 100%;
174
+ }
175
+ .section .ob-list.ob-validation-notification-card-list {
176
+ margin-right: unset;
177
+ margin-left: unset;
178
+ width: unset;
179
+ }
180
+ }