@oneblink/apps-react 1.2.4 → 1.2.5

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.
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import clsx from 'clsx';
2
3
  import LookupNotification from './LookupNotification';
3
4
  import FormElementBarcodeScanner from '../../form-elements/FormElementBarcodeScanner';
4
5
  import FormElementEmail from '../../form-elements/FormElementEmail';
@@ -50,7 +51,9 @@ function OneBlinkFormElements({ formId, elements, isEven, idPrefix, displayValid
50
51
  ((_b = formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name]) === null || _b === void 0 ? void 0 : _b.isHidden)) {
51
52
  return null;
52
53
  }
53
- return (React.createElement("div", { key: element.id, className: "ob-element cypress-element-container", "data-cypress-element-name": element.name, "data-ob-name": element.name },
54
+ return (React.createElement("div", { key: element.id, className: clsx('ob-element cypress-element-container', element.customCssClasses
55
+ ? element.customCssClasses.join(' ')
56
+ : ''), "data-cypress-element-name": element.name, "data-ob-name": element.name },
54
57
  React.createElement(FormElementSwitch, { formId: formId, element: element, value: model[element.name], displayValidationMessage: displayValidationMessages, isEven: isEven, id: `${idPrefix}${element.name}`, formElementConditionallyShown: formElementsConditionallyShown === null || formElementsConditionallyShown === void 0 ? void 0 : formElementsConditionallyShown[element.name], formElementValidation: formElementsValidation === null || formElementsValidation === void 0 ? void 0 : formElementsValidation[element.name], onChange: onChange, onLookup: onLookup })));
55
58
  })));
56
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OneBlinkFormElements.js","sourceRoot":"","sources":["../../../src/components/renderer/OneBlinkFormElements.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react'\n\nimport LookupNotification from './LookupNotification'\n\nimport FormElementBarcodeScanner from '../../form-elements/FormElementBarcodeScanner'\nimport FormElementEmail from '../../form-elements/FormElementEmail'\nimport FormElementABN from '../../form-elements/FormElementABN'\nimport FormElementBSB from '../../form-elements/FormElementBSB'\nimport FormElementText from '../../form-elements/FormElementText'\nimport FormElementTextarea from '../../form-elements/FormElementTextarea'\nimport FormElementNumber from '../../form-elements/FormElementNumber'\nimport FormElementHeading from '../../form-elements/FormElementHeading'\nimport FormElementHTML from '../../form-elements/FormElementHTML'\nimport FormElementTelephone from '../../form-elements/FormElementTelephone'\nimport FormElementSelect from '../../form-elements/FormElementSelect'\nimport FormElementDate from '../../form-elements/FormElementDate'\nimport FormElementImage from '../../form-elements/FormElementImage'\nimport FormElementDateTime from '../../form-elements/FormElementDateTime'\nimport FormElementTime from '../../form-elements/FormElementTime'\nimport FormElementCalculation from '../../form-elements/FormElementCalculation'\nimport FormElementRadio from '../../form-elements/FormElementRadio'\nimport FormElementAutocomplete from '../../form-elements/FormElementAutocomplete'\nimport FormElementRepeatableSet from '../../form-elements/FormElementRepeatableSet'\nimport FormElementSignature from '../../form-elements/FormElementSignature'\nimport FormElementCheckBoxes from '../../form-elements/FormElementCheckBoxes'\nimport FormElementFiles, {\n stringifyAttachments,\n} from '../../form-elements/FormElementFiles'\nimport FormElementForm from '../../form-elements/FormElementForm'\nimport FormElementSection from '../../form-elements/FormElementSection'\nimport FormElementCamera from '../../form-elements/FormElementCamera'\nimport FormElementSummary from '../../form-elements/FormElementSummary'\nimport FormElementCaptcha from '../../form-elements/FormElementCaptcha'\nimport FormElementLocation, {\n stringifyLocation,\n} from '../../form-elements/FormElementLocation'\nimport FormElementGeoscapeAddress from '../../form-elements/FormElementGeoscapeAddress'\nimport FormElementCompliance from '../../form-elements/FormElementCompliance'\nimport FormElementPointAddress from '../../form-elements/FormElementPointAddress'\nimport FormElementBoolean from '../../form-elements/FormElementBoolean'\nimport FormElementCivicaStreetName from '../../form-elements/FormElementCivicaStreetName'\nimport FormElementCivicaNameRecord from '../../form-elements/FormElementCivicaNameRecord'\nimport FormElementFreshdeskDependentField from '../../form-elements/FormElementFreshdeskDependentField'\n\nimport {\n CivicaTypes,\n FormTypes,\n GeoscapeTypes,\n MiscTypes,\n PointTypes,\n} from '@oneblink/types'\n\nimport { FormSubmissionModelContextProvider } from '../../hooks/useFormSubmissionModelContext'\nimport { FormElementBinaryStorageValue } from '../../types/attachments'\nimport {\n FormElementConditionallyShown,\n FormElementLookupHandler,\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormElementValidation,\n FormElementValueChangeHandler,\n FormSubmissionModel,\n} from '../../types/form'\n\nexport type Props<T extends FormTypes._NestedElementsElement> = {\n formId: number\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n formElementsValidation: FormElementsValidation | undefined\n displayValidationMessages: boolean\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n // Props passed by repeatable sets\n isEven?: boolean\n idPrefix: string\n model: FormSubmissionModel\n parentElement: T\n}\n\nfunction OneBlinkFormElements<T extends FormTypes._NestedElementsElement>({\n formId,\n elements,\n isEven,\n idPrefix,\n displayValidationMessages,\n formElementsValidation,\n formElementsConditionallyShown,\n onChange,\n onLookup,\n model,\n parentElement,\n}: Props<T>) {\n return (\n <FormSubmissionModelContextProvider\n elements={parentElement.elements}\n model={model}\n formElementsConditionallyShown={formElementsConditionallyShown}\n >\n {elements.map((element) => {\n if (element.type === 'section') {\n if (formElementsConditionallyShown?.[element.id]?.isHidden) {\n return null\n }\n\n return (\n <div\n key={element.id}\n className=\"ob-element cypress-element-container\"\n >\n <FormElementSection\n formId={formId}\n element={element}\n displayValidationMessages={displayValidationMessages}\n idPrefix={idPrefix}\n formElementsConditionallyShown={formElementsConditionallyShown}\n formElementsValidation={formElementsValidation}\n onChange={onChange}\n onLookup={onLookup}\n model={model}\n parentElement={parentElement}\n />\n </div>\n )\n }\n\n if (\n element.type === 'page' ||\n formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n return null\n }\n\n return (\n <div\n key={element.id}\n className=\"ob-element cypress-element-container\"\n data-cypress-element-name={element.name}\n data-ob-name={element.name}\n >\n <FormElementSwitch\n formId={formId}\n element={element}\n value={model[element.name]}\n displayValidationMessage={displayValidationMessages}\n isEven={isEven}\n id={`${idPrefix}${element.name}`}\n formElementConditionallyShown={\n formElementsConditionallyShown?.[element.name]\n }\n formElementValidation={formElementsValidation?.[element.name]}\n onChange={onChange}\n onLookup={onLookup}\n />\n </div>\n )\n })}\n </FormSubmissionModelContextProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormElements)\n\nconst FormElementSwitch = React.memo(function OneBlinkFormElement({\n formId,\n element,\n value,\n displayValidationMessage,\n formElementValidation,\n formElementConditionallyShown,\n isEven,\n id,\n onChange,\n onLookup,\n}: {\n formId: number\n element: FormTypes.FormElement\n value: unknown | undefined\n formElementValidation: FormElementValidation | undefined\n displayValidationMessage: boolean\n formElementConditionallyShown: FormElementConditionallyShown | undefined\n id: string\n isEven: boolean | undefined\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n}) {\n const conditionallyShownOptions =\n formElementConditionallyShown?.type === 'formElement'\n ? formElementConditionallyShown?.options\n : undefined\n const validationMessage =\n typeof formElementValidation === 'string'\n ? formElementValidation\n : undefined\n switch (element.type) {\n case 'heading': {\n return <FormElementHeading element={element} />\n }\n case 'html': {\n return <FormElementHTML element={element} />\n }\n case 'date': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDate\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDate\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'email': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementEmail\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementEmail\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'text': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementText\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementText\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'abn': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementABN\n id={id}\n element={element}\n value={value as MiscTypes.ABNRecord | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementABN\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'bsb': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBSB\n id={id}\n formId={formId}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBSB\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'barcodeScanner': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBarcodeScanner\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBarcodeScanner\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'textarea': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTextarea\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTextarea\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'number': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementNumber\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementNumber\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'telephone': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTelephone\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTelephone\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'autocomplete': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAutocomplete\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAutocomplete\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'select': {\n return (\n <LookupNotification\n autoLookupValue={!element.multi ? value : undefined}\n element={element}\n onLookup={onLookup}\n >\n <FormElementSelect\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSelect\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'radio': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementRadio\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRadio\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'draw': {\n return (\n <FormElementSignature\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSignature\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'calculation': {\n return (\n <FormElementCalculation\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCalculation\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'repeatableSet': {\n return (\n <FormElementRepeatableSet\n formId={formId}\n id={id}\n isEven={!isEven}\n element={element}\n value={value as Array<FormSubmissionModel> | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRepeatableSet\n >['onChange']\n }\n onLookup={onLookup}\n formElementConditionallyShown={formElementConditionallyShown}\n formElementValidation={formElementValidation}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'image': {\n return <FormElementImage element={element} />\n }\n case 'datetime': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDateTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDateTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'time': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'checkboxes': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementCheckBoxes\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCheckBoxes\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'files': {\n return (\n <LookupNotification\n element={element}\n onLookup={onLookup}\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyAttachments as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n >\n <FormElementFiles\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFiles\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'infoPage':\n case 'form': {\n return (\n <FormElementForm\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<typeof FormElementForm>['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n case 'camera': {\n return (\n <FormElementCamera\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCamera\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'summary': {\n return (\n <FormElementSummary\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSummary\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'captcha': {\n return (\n <FormElementCaptcha\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCaptcha\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'location': {\n return (\n <LookupNotification\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyLocation as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementLocation\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementLocation\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'geoscapeAddress': {\n const v = value as GeoscapeTypes.GeoscapeAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGeoscapeAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGeoscapeAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'compliance': {\n return (\n <LookupNotification\n autoLookupValue={\n value ? (value as { value: unknown }).value : undefined\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementCompliance\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCompliance\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n isEven={isEven}\n />\n </LookupNotification>\n )\n }\n case 'freshdeskDependentField': {\n return (\n <FormElementFreshdeskDependentField\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFreshdeskDependentField\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n case 'pointAddress': {\n const v = value as PointTypes.PointAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementPointAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementPointAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'boolean': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementBoolean\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBoolean\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'civicaStreetName': {\n const v = value as CivicaTypes.CivicaStreetName | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementCivicaStreetName\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaStreetName\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'civicaNameRecord': {\n return (\n <FormElementCivicaNameRecord\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaNameRecord\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n default: {\n console.warn('Invalid element', element)\n return null\n }\n }\n})\n"]}
1
+ {"version":3,"file":"OneBlinkFormElements.js","sourceRoot":"","sources":["../../../src/components/renderer/OneBlinkFormElements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,kBAAkB,MAAM,sBAAsB,CAAA;AAErD,OAAO,yBAAyB,MAAM,+CAA+C,CAAA;AACrF,OAAO,gBAAgB,MAAM,sCAAsC,CAAA;AACnE,OAAO,cAAc,MAAM,oCAAoC,CAAA;AAC/D,OAAO,cAAc,MAAM,oCAAoC,CAAA;AAC/D,OAAO,eAAe,MAAM,qCAAqC,CAAA;AACjE,OAAO,mBAAmB,MAAM,yCAAyC,CAAA;AACzE,OAAO,iBAAiB,MAAM,uCAAuC,CAAA;AACrE,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AACvE,OAAO,eAAe,MAAM,qCAAqC,CAAA;AACjE,OAAO,oBAAoB,MAAM,0CAA0C,CAAA;AAC3E,OAAO,iBAAiB,MAAM,uCAAuC,CAAA;AACrE,OAAO,eAAe,MAAM,qCAAqC,CAAA;AACjE,OAAO,gBAAgB,MAAM,sCAAsC,CAAA;AACnE,OAAO,mBAAmB,MAAM,yCAAyC,CAAA;AACzE,OAAO,eAAe,MAAM,qCAAqC,CAAA;AACjE,OAAO,sBAAsB,MAAM,4CAA4C,CAAA;AAC/E,OAAO,gBAAgB,MAAM,sCAAsC,CAAA;AACnE,OAAO,uBAAuB,MAAM,6CAA6C,CAAA;AACjF,OAAO,wBAAwB,MAAM,8CAA8C,CAAA;AACnF,OAAO,oBAAoB,MAAM,0CAA0C,CAAA;AAC3E,OAAO,qBAAqB,MAAM,2CAA2C,CAAA;AAC7E,OAAO,gBAAgB,EAAE,EACvB,oBAAoB,GACrB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,eAAe,MAAM,qCAAqC,CAAA;AACjE,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AACvE,OAAO,iBAAiB,MAAM,uCAAuC,CAAA;AACrE,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AACvE,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AACvE,OAAO,mBAAmB,EAAE,EAC1B,iBAAiB,GAClB,MAAM,yCAAyC,CAAA;AAChD,OAAO,0BAA0B,MAAM,gDAAgD,CAAA;AACvF,OAAO,qBAAqB,MAAM,2CAA2C,CAAA;AAC7E,OAAO,uBAAuB,MAAM,6CAA6C,CAAA;AACjF,OAAO,kBAAkB,MAAM,wCAAwC,CAAA;AACvE,OAAO,2BAA2B,MAAM,iDAAiD,CAAA;AACzF,OAAO,2BAA2B,MAAM,iDAAiD,CAAA;AACzF,OAAO,kCAAkC,MAAM,wDAAwD,CAAA;AAUvG,OAAO,EAAE,kCAAkC,EAAE,MAAM,2CAA2C,CAAA;AA2B9F,SAAS,oBAAoB,CAA6C,EACxE,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,aAAa,GACJ;IACT,OAAO,CACL,oBAAC,kCAAkC,IACjC,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAChC,KAAK,EAAE,KAAK,EACZ,8BAA8B,EAAE,8BAA8B,IAE7D,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;;QACxB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,IAAI,MAAA,8BAA8B,aAA9B,8BAA8B,uBAA9B,8BAA8B,CAAG,OAAO,CAAC,EAAE,CAAC,0CAAE,QAAQ,EAAE;gBAC1D,OAAO,IAAI,CAAA;aACZ;YAED,OAAO,CACL,6BACE,GAAG,EAAE,OAAO,CAAC,EAAE,EACf,SAAS,EAAC,sCAAsC;gBAEhD,oBAAC,kBAAkB,IACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,yBAAyB,EAAE,yBAAyB,EACpD,QAAQ,EAAE,QAAQ,EAClB,8BAA8B,EAAE,8BAA8B,EAC9D,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,GAC5B,CACE,CACP,CAAA;SACF;QAED,IACE,OAAO,CAAC,IAAI,KAAK,MAAM;aACvB,MAAA,8BAA8B,aAA9B,8BAA8B,uBAA9B,8BAA8B,CAAG,OAAO,CAAC,IAAI,CAAC,0CAAE,QAAQ,CAAA,EACxD;YACA,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,CACL,6BACE,GAAG,EAAE,OAAO,CAAC,EAAE,EACf,SAAS,EAAE,IAAI,CACb,sCAAsC,EACtC,OAAO,CAAC,gBAAgB;gBACtB,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpC,CAAC,CAAC,EAAE,CACP,+BAC0B,OAAO,CAAC,IAAI,kBACzB,OAAO,CAAC,IAAI;YAE1B,oBAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAC1B,wBAAwB,EAAE,yBAAyB,EACnD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,EAChC,6BAA6B,EAC3B,8BAA8B,aAA9B,8BAA8B,uBAA9B,8BAA8B,CAAG,OAAO,CAAC,IAAI,CAAC,EAEhD,qBAAqB,EAAE,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAG,OAAO,CAAC,IAAI,CAAC,EAC7D,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,CACE,CACP,CAAA;IACH,CAAC,CAAC,CACiC,CACtC,CAAA;AACH,CAAC;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE/C,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAChE,MAAM,EACN,OAAO,EACP,KAAK,EACL,wBAAwB,EACxB,qBAAqB,EACrB,6BAA6B,EAC7B,MAAM,EACN,EAAE,EACF,QAAQ,EACR,QAAQ,GAYT;IACC,MAAM,yBAAyB,GAC7B,CAAA,6BAA6B,aAA7B,6BAA6B,uBAA7B,6BAA6B,CAAE,IAAI,MAAK,aAAa;QACnD,CAAC,CAAC,6BAA6B,aAA7B,6BAA6B,uBAA7B,6BAA6B,CAAE,OAAO;QACxC,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,iBAAiB,GACrB,OAAO,qBAAqB,KAAK,QAAQ;QACvC,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,SAAS,CAAA;IACf,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,GAAI,CAAA;SAChD;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,oBAAC,eAAe,IAAC,OAAO,EAAE,OAAO,GAAI,CAAA;SAC7C;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,cAAc,IACb,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAwC,EAC/C,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,cAAc,IACb,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,gBAAgB,CAAC,CAAC;YACrB,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,yBAAyB,IACxB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,mBAAmB,IAClB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,iBAAiB,IAChB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,oBAAoB,IACnB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,uBAAuB,IACtB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,yBAAyB,GACpD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACnD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,iBAAiB,IAChB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,yBAAyB,GACpD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,yBAAyB,GACpD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,oBAAC,oBAAoB,IACnB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAsC,EAC7C,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACH,CAAA;SACF;QACD,KAAK,aAAa,CAAC,CAAC;YAClB,OAAO,CACL,oBAAC,sBAAsB,IACrB,OAAO,EAAE,OAAO,EAChB,QAAQ,EACN,QAEa,EAEf,KAAK,EAAE,KAAK,GACZ,CACH,CAAA;SACF;QACD,KAAK,eAAe,CAAC,CAAC;YACpB,OAAO,CACL,oBAAC,wBAAwB,IACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,CAAC,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAA+C,EACtD,QAAQ,EACN,QAEa,EAEf,QAAQ,EAAE,QAAQ,EAClB,6BAA6B,EAAE,6BAA6B,EAC5D,qBAAqB,EAAE,qBAAqB,EAC5C,wBAAwB,EAAE,wBAAwB,GAClD,CACH,CAAA;SACF;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,oBAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,GAAI,CAAA;SAC9C;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,mBAAmB,IAClB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,OAAO,CACL,oBAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACtD,oBAAC,qBAAqB,IACpB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,yBAAyB,GACpD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,CACL,oBAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,KAAK,EACtB,wBAAwB,EACtB,oBAE6B;gBAG/B,oBAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC;YACX,OAAO,CACL,oBAAC,eAAe,IACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAwC,EAC/C,QAAQ,EACN,QAAoE,EAEtE,QAAQ,EAAE,QAAQ,EAClB,yBAAyB,EAAE,wBAAwB,EACnD,qBAAqB,EAAE,qBAAqB,EAC5C,6BAA6B,EAAE,6BAA6B,GAC5D,CACH,CAAA;SACF;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,CACL,oBAAC,iBAAiB,IAChB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAsC,EAC7C,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACH,CAAA;SACF;QACD,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,CACL,oBAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EACN,QAEa,EAEf,KAAK,EAAE,KAAK,GACZ,CACH,CAAA;SACF;QACD,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,CACL,oBAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACH,CAAA;SACF;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,wBAAwB,EACtB,iBAE6B,EAE/B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,mBAAmB,IAClB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,iBAAiB,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,KAAkD,CAAA;YAC5D,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,0BAA0B,IACzB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,CAAC,EACR,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EACb,KAAK,CAAC,CAAC,CAAE,KAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAEzD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,qBAAqB,IACpB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,yBAAyB,EAAE,yBAAyB,EACpD,MAAM,EAAE,MAAM,GACd,CACiB,CACtB,CAAA;SACF;QACD,KAAK,yBAAyB,CAAC,CAAC;YAC9B,OAAO,CACL,oBAAC,kCAAkC,IACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAwC,EAC/C,QAAQ,EACN,QAEa,EAEf,QAAQ,EAAE,QAAQ,EAClB,yBAAyB,EAAE,wBAAwB,EACnD,qBAAqB,EAAE,qBAAqB,EAC5C,6BAA6B,EAAE,6BAA6B,GAC5D,CACH,CAAA;SACF;QACD,KAAK,cAAc,CAAC,CAAC;YACnB,MAAM,CAAC,GAAG,KAA4C,CAAA;YACtD,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,uBAAuB,IACtB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,CAAC,EACR,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,SAAS,CAAC,CAAC;YACd,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,kBAAkB,IACjB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,kBAAkB,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,KAAiD,CAAA;YAC3D,OAAO,CACL,oBAAC,kBAAkB,IACjB,eAAe,EAAE,KAAK,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ;gBAElB,oBAAC,2BAA2B,IAC1B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,CAAC,EACR,QAAQ,EACN,QAEa,EAEf,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,GAClD,CACiB,CACtB,CAAA;SACF;QACD,KAAK,kBAAkB,CAAC,CAAC;YACvB,OAAO,CACL,oBAAC,2BAA2B,IAC1B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAwC,EAC/C,QAAQ,EACN,QAEa,EAEf,QAAQ,EAAE,QAAQ,EAClB,yBAAyB,EAAE,wBAAwB,EACnD,qBAAqB,EAAE,qBAAqB,EAC5C,6BAA6B,EAAE,6BAA6B,GAC5D,CACH,CAAA;SACF;QACD,OAAO,CAAC,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;SACZ;KACF;AACH,CAAC,CAAC,CAAA","sourcesContent":["import * as React from 'react'\nimport clsx from 'clsx'\n\nimport LookupNotification from './LookupNotification'\n\nimport FormElementBarcodeScanner from '../../form-elements/FormElementBarcodeScanner'\nimport FormElementEmail from '../../form-elements/FormElementEmail'\nimport FormElementABN from '../../form-elements/FormElementABN'\nimport FormElementBSB from '../../form-elements/FormElementBSB'\nimport FormElementText from '../../form-elements/FormElementText'\nimport FormElementTextarea from '../../form-elements/FormElementTextarea'\nimport FormElementNumber from '../../form-elements/FormElementNumber'\nimport FormElementHeading from '../../form-elements/FormElementHeading'\nimport FormElementHTML from '../../form-elements/FormElementHTML'\nimport FormElementTelephone from '../../form-elements/FormElementTelephone'\nimport FormElementSelect from '../../form-elements/FormElementSelect'\nimport FormElementDate from '../../form-elements/FormElementDate'\nimport FormElementImage from '../../form-elements/FormElementImage'\nimport FormElementDateTime from '../../form-elements/FormElementDateTime'\nimport FormElementTime from '../../form-elements/FormElementTime'\nimport FormElementCalculation from '../../form-elements/FormElementCalculation'\nimport FormElementRadio from '../../form-elements/FormElementRadio'\nimport FormElementAutocomplete from '../../form-elements/FormElementAutocomplete'\nimport FormElementRepeatableSet from '../../form-elements/FormElementRepeatableSet'\nimport FormElementSignature from '../../form-elements/FormElementSignature'\nimport FormElementCheckBoxes from '../../form-elements/FormElementCheckBoxes'\nimport FormElementFiles, {\n stringifyAttachments,\n} from '../../form-elements/FormElementFiles'\nimport FormElementForm from '../../form-elements/FormElementForm'\nimport FormElementSection from '../../form-elements/FormElementSection'\nimport FormElementCamera from '../../form-elements/FormElementCamera'\nimport FormElementSummary from '../../form-elements/FormElementSummary'\nimport FormElementCaptcha from '../../form-elements/FormElementCaptcha'\nimport FormElementLocation, {\n stringifyLocation,\n} from '../../form-elements/FormElementLocation'\nimport FormElementGeoscapeAddress from '../../form-elements/FormElementGeoscapeAddress'\nimport FormElementCompliance from '../../form-elements/FormElementCompliance'\nimport FormElementPointAddress from '../../form-elements/FormElementPointAddress'\nimport FormElementBoolean from '../../form-elements/FormElementBoolean'\nimport FormElementCivicaStreetName from '../../form-elements/FormElementCivicaStreetName'\nimport FormElementCivicaNameRecord from '../../form-elements/FormElementCivicaNameRecord'\nimport FormElementFreshdeskDependentField from '../../form-elements/FormElementFreshdeskDependentField'\n\nimport {\n CivicaTypes,\n FormTypes,\n GeoscapeTypes,\n MiscTypes,\n PointTypes,\n} from '@oneblink/types'\n\nimport { FormSubmissionModelContextProvider } from '../../hooks/useFormSubmissionModelContext'\nimport { FormElementBinaryStorageValue } from '../../types/attachments'\nimport {\n FormElementConditionallyShown,\n FormElementLookupHandler,\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormElementValidation,\n FormElementValueChangeHandler,\n FormSubmissionModel,\n} from '../../types/form'\n\nexport type Props<T extends FormTypes._NestedElementsElement> = {\n formId: number\n elements: FormTypes.FormElement[]\n formElementsConditionallyShown: FormElementsConditionallyShown | undefined\n formElementsValidation: FormElementsValidation | undefined\n displayValidationMessages: boolean\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n // Props passed by repeatable sets\n isEven?: boolean\n idPrefix: string\n model: FormSubmissionModel\n parentElement: T\n}\n\nfunction OneBlinkFormElements<T extends FormTypes._NestedElementsElement>({\n formId,\n elements,\n isEven,\n idPrefix,\n displayValidationMessages,\n formElementsValidation,\n formElementsConditionallyShown,\n onChange,\n onLookup,\n model,\n parentElement,\n}: Props<T>) {\n return (\n <FormSubmissionModelContextProvider\n elements={parentElement.elements}\n model={model}\n formElementsConditionallyShown={formElementsConditionallyShown}\n >\n {elements.map((element) => {\n if (element.type === 'section') {\n if (formElementsConditionallyShown?.[element.id]?.isHidden) {\n return null\n }\n\n return (\n <div\n key={element.id}\n className=\"ob-element cypress-element-container\"\n >\n <FormElementSection\n formId={formId}\n element={element}\n displayValidationMessages={displayValidationMessages}\n idPrefix={idPrefix}\n formElementsConditionallyShown={formElementsConditionallyShown}\n formElementsValidation={formElementsValidation}\n onChange={onChange}\n onLookup={onLookup}\n model={model}\n parentElement={parentElement}\n />\n </div>\n )\n }\n\n if (\n element.type === 'page' ||\n formElementsConditionallyShown?.[element.name]?.isHidden\n ) {\n return null\n }\n\n return (\n <div\n key={element.id}\n className={clsx(\n 'ob-element cypress-element-container',\n element.customCssClasses\n ? element.customCssClasses.join(' ')\n : '',\n )}\n data-cypress-element-name={element.name}\n data-ob-name={element.name}\n >\n <FormElementSwitch\n formId={formId}\n element={element}\n value={model[element.name]}\n displayValidationMessage={displayValidationMessages}\n isEven={isEven}\n id={`${idPrefix}${element.name}`}\n formElementConditionallyShown={\n formElementsConditionallyShown?.[element.name]\n }\n formElementValidation={formElementsValidation?.[element.name]}\n onChange={onChange}\n onLookup={onLookup}\n />\n </div>\n )\n })}\n </FormSubmissionModelContextProvider>\n )\n}\n\nexport default React.memo(OneBlinkFormElements)\n\nconst FormElementSwitch = React.memo(function OneBlinkFormElement({\n formId,\n element,\n value,\n displayValidationMessage,\n formElementValidation,\n formElementConditionallyShown,\n isEven,\n id,\n onChange,\n onLookup,\n}: {\n formId: number\n element: FormTypes.FormElement\n value: unknown | undefined\n formElementValidation: FormElementValidation | undefined\n displayValidationMessage: boolean\n formElementConditionallyShown: FormElementConditionallyShown | undefined\n id: string\n isEven: boolean | undefined\n onChange: FormElementValueChangeHandler\n onLookup: FormElementLookupHandler\n}) {\n const conditionallyShownOptions =\n formElementConditionallyShown?.type === 'formElement'\n ? formElementConditionallyShown?.options\n : undefined\n const validationMessage =\n typeof formElementValidation === 'string'\n ? formElementValidation\n : undefined\n switch (element.type) {\n case 'heading': {\n return <FormElementHeading element={element} />\n }\n case 'html': {\n return <FormElementHTML element={element} />\n }\n case 'date': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDate\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDate\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'email': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementEmail\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementEmail\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'text': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementText\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementText\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'abn': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementABN\n id={id}\n element={element}\n value={value as MiscTypes.ABNRecord | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementABN\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'bsb': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBSB\n id={id}\n formId={formId}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBSB\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'barcodeScanner': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementBarcodeScanner\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBarcodeScanner\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'textarea': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTextarea\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTextarea\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'number': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementNumber\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementNumber\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'telephone': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTelephone\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTelephone\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'autocomplete': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementAutocomplete\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementAutocomplete\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'select': {\n return (\n <LookupNotification\n autoLookupValue={!element.multi ? value : undefined}\n element={element}\n onLookup={onLookup}\n >\n <FormElementSelect\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSelect\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'radio': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementRadio\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRadio\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'draw': {\n return (\n <FormElementSignature\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSignature\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'calculation': {\n return (\n <FormElementCalculation\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCalculation\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'repeatableSet': {\n return (\n <FormElementRepeatableSet\n formId={formId}\n id={id}\n isEven={!isEven}\n element={element}\n value={value as Array<FormSubmissionModel> | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementRepeatableSet\n >['onChange']\n }\n onLookup={onLookup}\n formElementConditionallyShown={formElementConditionallyShown}\n formElementValidation={formElementValidation}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'image': {\n return <FormElementImage element={element} />\n }\n case 'datetime': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementDateTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementDateTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'time': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementTime\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementTime\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'checkboxes': {\n return (\n <LookupNotification element={element} onLookup={onLookup}>\n <FormElementCheckBoxes\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCheckBoxes\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n />\n </LookupNotification>\n )\n }\n case 'files': {\n return (\n <LookupNotification\n element={element}\n onLookup={onLookup}\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyAttachments as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n >\n <FormElementFiles\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFiles\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'infoPage':\n case 'form': {\n return (\n <FormElementForm\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<typeof FormElementForm>['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n case 'camera': {\n return (\n <FormElementCamera\n id={id}\n element={element}\n value={value as FormElementBinaryStorageValue}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCamera\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'summary': {\n return (\n <FormElementSummary\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementSummary\n >['onChange']\n }\n value={value}\n />\n )\n }\n case 'captcha': {\n return (\n <FormElementCaptcha\n element={element}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCaptcha\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n )\n }\n case 'location': {\n return (\n <LookupNotification\n autoLookupValue={value}\n stringifyAutoLookupValue={\n stringifyLocation as React.ComponentProps<\n typeof LookupNotification\n >['stringifyAutoLookupValue']\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementLocation\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementLocation\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'geoscapeAddress': {\n const v = value as GeoscapeTypes.GeoscapeAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementGeoscapeAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementGeoscapeAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'compliance': {\n return (\n <LookupNotification\n autoLookupValue={\n value ? (value as { value: unknown }).value : undefined\n }\n element={element}\n onLookup={onLookup}\n >\n <FormElementCompliance\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCompliance\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n conditionallyShownOptions={conditionallyShownOptions}\n isEven={isEven}\n />\n </LookupNotification>\n )\n }\n case 'freshdeskDependentField': {\n return (\n <FormElementFreshdeskDependentField\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementFreshdeskDependentField\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n case 'pointAddress': {\n const v = value as PointTypes.PointAddress | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementPointAddress\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementPointAddress\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'boolean': {\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementBoolean\n id={id}\n element={element}\n value={value}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementBoolean\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'civicaStreetName': {\n const v = value as CivicaTypes.CivicaStreetName | undefined\n return (\n <LookupNotification\n autoLookupValue={value}\n element={element}\n onLookup={onLookup}\n >\n <FormElementCivicaStreetName\n id={id}\n formId={formId}\n element={element}\n value={v}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaStreetName\n >['onChange']\n }\n validationMessage={validationMessage}\n displayValidationMessage={displayValidationMessage}\n />\n </LookupNotification>\n )\n }\n case 'civicaNameRecord': {\n return (\n <FormElementCivicaNameRecord\n formId={formId}\n id={id}\n element={element}\n value={value as FormSubmissionModel | undefined}\n onChange={\n onChange as React.ComponentProps<\n typeof FormElementCivicaNameRecord\n >['onChange']\n }\n onLookup={onLookup}\n displayValidationMessages={displayValidationMessage}\n formElementValidation={formElementValidation}\n formElementConditionallyShown={formElementConditionallyShown}\n />\n )\n }\n default: {\n console.warn('Invalid element', element)\n return null\n }\n }\n})\n"]}
@@ -190,7 +190,7 @@ const clearValidationMessagesForHiddenElements = (formElementsValidation, formEl
190
190
  }
191
191
  }
192
192
  };
193
- const presence = (required, message) => required ? { message } : false;
193
+ const presence = ({ required, requiredMessage }, message) => (required ? { message: requiredMessage || message } : false);
194
194
  const escapeElementName = (elementName) => {
195
195
  const escapedName = elementName.replace(/\./g, '\\.');
196
196
  return escapedName;
@@ -215,26 +215,26 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
215
215
  case 'draw': {
216
216
  partialSchema[escapeElementName(formElement.name)] = {
217
217
  attachment: !checkIsUsingLegacyStorage(formElement),
218
- presence: presence(formElement.required, 'A signature is required'),
218
+ presence: presence(formElement, 'A signature is required'),
219
219
  };
220
220
  break;
221
221
  }
222
222
  case 'camera': {
223
223
  partialSchema[escapeElementName(formElement.name)] = {
224
224
  attachment: !checkIsUsingLegacyStorage(formElement),
225
- presence: presence(formElement.required, 'A photo is required'),
225
+ presence: presence(formElement, 'A photo is required'),
226
226
  };
227
227
  break;
228
228
  }
229
229
  case 'captcha': {
230
230
  partialSchema[escapeElementName(formElement.name)] = {
231
- presence: presence(true, 'Please complete the CAPTCHA successfully'),
231
+ presence: presence({ ...formElement, required: true }, 'Please complete the CAPTCHA successfully'),
232
232
  };
233
233
  break;
234
234
  }
235
235
  case 'location': {
236
236
  partialSchema[escapeElementName(formElement.name)] = {
237
- presence: presence(formElement.required, 'Please select a location'),
237
+ presence: presence(formElement, 'Please select a location'),
238
238
  lookups: {
239
239
  formElement,
240
240
  elementIdsWithLookupsExecuted,
@@ -244,7 +244,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
244
244
  }
245
245
  case 'compliance': {
246
246
  partialSchema[escapeElementName(formElement.name)] = {
247
- presence: presence(formElement.required, 'Required'),
247
+ presence: presence(formElement, 'Required'),
248
248
  lookups: {
249
249
  formElement,
250
250
  elementIdsWithLookupsExecuted,
@@ -262,7 +262,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
262
262
  case 'radio':
263
263
  case 'select': {
264
264
  partialSchema[escapeElementName(formElement.name)] = {
265
- presence: presence(formElement.required, 'Required'),
265
+ presence: presence(formElement, 'Required'),
266
266
  lookups: {
267
267
  formElement,
268
268
  elementIdsWithLookupsExecuted,
@@ -282,7 +282,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
282
282
  }
283
283
  case 'bsb': {
284
284
  partialSchema[escapeElementName(formElement.name)] = {
285
- presence: presence(formElement.required, 'Please enter a BSB number'),
285
+ presence: presence(formElement, 'Please enter a BSB number'),
286
286
  lookups: {
287
287
  formElement,
288
288
  elementIdsWithLookupsExecuted,
@@ -296,7 +296,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
296
296
  }
297
297
  case 'barcodeScanner': {
298
298
  partialSchema[escapeElementName(formElement.name)] = {
299
- presence: presence(formElement.required, 'Please scan a barcode or enter a value'),
299
+ presence: presence(formElement, 'Please scan a barcode or enter a value'),
300
300
  lookups: {
301
301
  formElement,
302
302
  elementIdsWithLookupsExecuted,
@@ -308,7 +308,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
308
308
  case 'text':
309
309
  case 'textarea': {
310
310
  partialSchema[escapeElementName(formElement.name)] = {
311
- presence: presence(formElement.required, 'Please enter a value'),
311
+ presence: presence(formElement, 'Please enter a value'),
312
312
  lookups: {
313
313
  formElement,
314
314
  elementIdsWithLookupsExecuted,
@@ -325,7 +325,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
325
325
  }
326
326
  case 'telephone': {
327
327
  partialSchema[escapeElementName(formElement.name)] = {
328
- presence: presence(formElement.required, 'Please enter a phone number'),
328
+ presence: presence(formElement, 'Please enter a phone number'),
329
329
  lookups: {
330
330
  formElement,
331
331
  elementIdsWithLookupsExecuted,
@@ -336,7 +336,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
336
336
  }
337
337
  case 'email': {
338
338
  partialSchema[escapeElementName(formElement.name)] = {
339
- presence: presence(formElement.required, 'Please enter an email address'),
339
+ presence: presence(formElement, 'Please enter an email address'),
340
340
  email: {
341
341
  message: 'Please enter a valid email for this field',
342
342
  },
@@ -350,7 +350,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
350
350
  }
351
351
  case 'time': {
352
352
  partialSchema[escapeElementName(formElement.name)] = {
353
- presence: presence(formElement.required, 'Please select a time'),
353
+ presence: presence(formElement, 'Please select a time'),
354
354
  lookups: {
355
355
  formElement,
356
356
  elementIdsWithLookupsExecuted,
@@ -360,7 +360,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
360
360
  }
361
361
  case 'date': {
362
362
  partialSchema[escapeElementName(formElement.name)] = {
363
- presence: presence(formElement.required, 'Please select a date'),
363
+ presence: presence(formElement, 'Please select a date'),
364
364
  date: {
365
365
  format: (v) => localisationService.formatDate(v),
366
366
  earliest: parseDateValue({
@@ -386,7 +386,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
386
386
  }
387
387
  case 'datetime': {
388
388
  partialSchema[escapeElementName(formElement.name)] = {
389
- presence: presence(formElement.required, 'Please select a date and time'),
389
+ presence: presence(formElement, 'Please select a date and time'),
390
390
  datetime: {
391
391
  format: (v) => localisationService.formatDatetime(v),
392
392
  earliest: parseDateValue({
@@ -420,7 +420,7 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
420
420
  }
421
421
  partialSchema[escapeElementName(formElement.name)] = {
422
422
  type: 'number',
423
- presence: presence(formElement.required, 'Please enter a number'),
423
+ presence: presence(formElement, 'Please enter a number'),
424
424
  numericality: {
425
425
  greaterThanOrEqualTo: formElement.minNumber,
426
426
  notGreaterThanOrEqualTo: minErrorMessage,
@@ -439,7 +439,11 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
439
439
  }
440
440
  case 'files': {
441
441
  partialSchema[escapeElementName(formElement.name)] = {
442
- presence: presence(!!formElement.minEntries, `Please upload at least ${formElement.minEntries || 1} file(s)`),
442
+ presence: formElement.minEntries
443
+ ? {
444
+ message: `Please upload at least ${formElement.minEntries} file${formElement.minEntries === 1 ? '' : 's'}`,
445
+ }
446
+ : false,
443
447
  length: {
444
448
  minimum: formElement.minEntries,
445
449
  maximum: formElement.maxEntries,
@@ -464,7 +468,11 @@ export function generateValidationSchema(elements, elementIdsWithLookupsExecuted
464
468
  partialSchema[escapeElementName(formElement.name)] = {
465
469
  entries: {
466
470
  setSchema: {
467
- presence: presence(!!formElement.minSetEntries, `Must have at least ${formElement.minSetEntries || 1} entry/entries`),
471
+ presence: formElement.minSetEntries
472
+ ? {
473
+ message: `Must have at least ${formElement.minSetEntries} ${formElement.minSetEntries === 1 ? 'entry' : 'entries'}`,
474
+ }
475
+ : false,
468
476
  length: {
469
477
  minimum: formElement.minSetEntries,
470
478
  maximum: formElement.maxSetEntries,
@@ -1 +1 @@
1
- {"version":3,"file":"form-validation.js","sourceRoot":"","sources":["../../src/services/form-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import validate from 'validate.js'\nimport { localisationService } from '@oneblink/apps'\nimport { FormTypes } from '@oneblink/types'\nimport { FormElementBinaryStorageValue } from '../types/attachments'\nimport { PossibleFileConfiguration } from '../form-elements/FormElementFiles'\nimport { Value as FormElementComplianceValue } from '../form-elements/FormElementCompliance'\nimport { checkIsUsingLegacyStorage } from './attachments'\nimport { parseDateValue } from './generate-default-data'\nimport generateCivicaNameRecordElements from './generateCivicaNameRecordElements'\nimport {\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormSubmissionModel,\n} from '../types/form'\nimport generateFreshdeskDependentFieldElements from './generateFreshdeskDependentFieldElements'\n\nexport const lookupValidationMessage = 'Lookup is required'\n// https://validatejs.org/#validators-datetime\n// Before using it we must add the parse and format functions\n// Here is a sample implementation using moment.js\nvalidate.extend(validate.validators.datetime, {\n // The value is guaranteed not to be null or undefined but otherwise it\n // could be anything.\n parse: function (value: string) {\n return Date.parse(value)\n },\n // Input is a unix timestamp\n format: function (\n value: string,\n options: { format: (date: Date) => string },\n ) {\n const dateValue = new Date(value)\n return options.format(dateValue)\n },\n})\n\nvalidate.validators.entries = function (\n value: unknown,\n {\n setSchema,\n entrySchema,\n }: { setSchema: ValidateJSSchema; entrySchema: ValidateJSSchema },\n) {\n const entries = Array.isArray(value) ? value : []\n\n const entryErrors = entries.reduce((errorsByIndex, entry, index) => {\n const entryValidation = validateSingleMessageError(entry, entrySchema)\n if (entryValidation) {\n errorsByIndex[index] = entryValidation\n }\n return errorsByIndex\n }, {})\n\n const setErrorMessages = validate.single(value, setSchema)\n\n if (!setErrorMessages && validate.isEmpty(entryErrors)) {\n return\n }\n\n return {\n type: 'repeatableSet',\n set: setErrorMessages && setErrorMessages[0],\n entries: entryErrors,\n }\n}\n\nvalidate.validators.nestedElements = function (\n value: FormSubmissionModel | undefined,\n schema: ValidateJSSchema,\n) {\n const errors = validateSingleMessageError(value || {}, schema)\n if (!errors) {\n return\n }\n return {\n type: 'formElements',\n formElements: errors,\n }\n}\n\nfunction getInvalidAttachment(value: FormElementBinaryStorageValue) {\n if (\n value &&\n typeof value === 'object' &&\n value.type &&\n value.type === 'ERROR'\n ) {\n return value\n }\n}\nfunction validateAttachments(\n value: FormElementBinaryStorageValue[] | undefined,\n) {\n const invalidAttachmentNames = value?.reduce(\n (invalidAttachmentNames: string[], att) => {\n const attachmentName = getInvalidAttachment(att)?.fileName\n if (attachmentName) {\n invalidAttachmentNames.push(attachmentName)\n }\n return invalidAttachmentNames\n },\n [],\n )\n if (invalidAttachmentNames?.length) {\n return `${invalidAttachmentNames.join(', ')} could not be uploaded.`\n }\n}\nvalidate.validators.attachment = function (\n value: FormElementBinaryStorageValue,\n) {\n return getInvalidAttachment(value)?.errorMessage\n}\nvalidate.validators.attachments = function (\n value:\n | FormElementBinaryStorageValue[]\n | FormElementComplianceValue\n | undefined,\n) {\n if (Array.isArray(value)) {\n return validateAttachments(value)\n }\n return validateAttachments(\n value?.files as FormElementBinaryStorageValue[] | undefined,\n )\n}\n\n// Extend validator for lookups\nvalidate.validators.lookups = function (\n value: unknown,\n {\n elementIdsWithLookupsExecuted,\n formElement,\n }: {\n formElement: FormTypes.LookupFormElement & FormTypes.FormElementRequired\n elementIdsWithLookupsExecuted: string[]\n },\n) {\n if (!formElement.isDataLookup && !formElement.isElementLookup) {\n return\n }\n\n // Lookups must only be executed on required form elements\n if (formElement && !formElement.required) {\n return\n }\n\n if (elementIdsWithLookupsExecuted.includes(formElement.id)) {\n return\n }\n\n return lookupValidationMessage\n}\n\nvalidate.validators.numberRegex = function (value: unknown, format: unknown) {\n if (!format) {\n return\n }\n if (typeof value === 'number' && !Number.isNaN(value)) {\n value = value.toString()\n }\n const errorMessages = validate.single(value, { format })\n return errorMessages && errorMessages[0]\n}\n\nvalidate.validators.isTrue = function (value: unknown, message?: string) {\n if (!value) {\n return message || 'Must be set to true'\n }\n}\n\nvalidate.validators.needsExtension = function (\n value: PossibleFileConfiguration[] | undefined,\n formElement: FormTypes.FilesElement,\n) {\n const isValid =\n !Array.isArray(value) ||\n value.every((file) => {\n return checkFileNameExtensionIsValid(formElement, file.fileName)\n })\n if (!isValid) return 'All files must have extensions'\n}\n\nfunction getCustomRegexFormatConfig<DefaultValue>(\n formElement: FormTypes.FormElementWithInput<DefaultValue>,\n) {\n return formElement.regexPattern\n ? {\n pattern: formElement.regexPattern,\n flags: formElement.regexFlags,\n message: formElement.regexMessage,\n }\n : undefined\n}\n\ntype ValidateJSSchema = Record<string, unknown>\n\nexport function validateSubmission(\n schema: ValidateJSSchema,\n submission: FormSubmissionModel,\n formElementsConditionallyShown: FormElementsConditionallyShown,\n): FormElementsValidation | undefined {\n const formElementsValidation = validateSingleMessageError(submission, schema)\n if (formElementsValidation) {\n clearValidationMessagesForHiddenElements(\n formElementsValidation,\n formElementsConditionallyShown,\n )\n if (!validate.isEmpty(formElementsValidation)) {\n return formElementsValidation\n }\n }\n}\n\nconst clearValidationMessagesForHiddenElements = (\n formElementsValidation?: FormElementsValidation,\n formElementsConditionallyShown?: FormElementsConditionallyShown,\n) => {\n // If there is no validation to check, there are no invalid elements\n // If there is no conditionally shown elements, all invalid elements should display validation messages,\n if (!formElementsValidation || !formElementsConditionallyShown) {\n return\n }\n\n for (const key in formElementsValidation) {\n const formElementValidation = formElementsValidation[key]\n if (!formElementValidation) {\n continue\n }\n\n const formElementConditionallyShown = formElementsConditionallyShown[key]\n\n // If the validation is for an element that is being hidden,\n // we can remove the validation message and move to the next validation\n if (formElementConditionallyShown?.isHidden) {\n delete formElementsValidation[key]\n continue\n }\n\n // If the validation is for a single element (not nested elements),\n // we will always show the validation message\n if (typeof formElementValidation === 'string') {\n continue\n }\n\n // Here we will check to see if the nested elements that are\n // invalid are being shown, if not, remove validation messages\n switch (formElementValidation.type) {\n case 'repeatableSet': {\n for (const index in formElementValidation.entries) {\n clearValidationMessagesForHiddenElements(\n formElementValidation.entries[index],\n formElementConditionallyShown &&\n formElementConditionallyShown.type === 'repeatableSet'\n ? formElementConditionallyShown.entries[index]\n : undefined,\n )\n if (validate.isEmpty(formElementValidation.entries[index])) {\n delete formElementValidation.entries[index]\n }\n }\n // Remove the validation if all entries are valid and the set is also valid\n if (\n validate.isEmpty(formElementValidation.entries) &&\n !formElementValidation.set\n ) {\n delete formElementsValidation[key]\n }\n break\n }\n case 'formElements': {\n clearValidationMessagesForHiddenElements(\n formElementValidation.formElements,\n formElementConditionallyShown?.type === 'formElements'\n ? formElementConditionallyShown?.formElements\n : undefined,\n )\n if (validate.isEmpty(formElementValidation.formElements)) {\n delete formElementsValidation[key]\n }\n break\n }\n }\n }\n}\n\nconst presence = (required: boolean, message: string) =>\n required ? { message } : false\n\nconst escapeElementName = (elementName: string) => {\n const escapedName = elementName.replace(/\\./g, '\\\\.')\n return escapedName\n}\n\nexport function generateValidationSchema(\n elements: FormTypes.FormElement[],\n elementIdsWithLookupsExecuted: string[],\n): ValidateJSSchema {\n return elements.reduce<ValidateJSSchema>((partialSchema, formElement) => {\n switch (formElement.type) {\n case 'summary':\n case 'calculation':\n case 'image':\n case 'html':\n case 'infoPage':\n case 'heading': {\n break\n }\n case 'section':\n case 'page': {\n const nestedSchema = generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n )\n Object.assign(partialSchema, nestedSchema)\n break\n }\n case 'draw': {\n partialSchema[escapeElementName(formElement.name)] = {\n attachment: !checkIsUsingLegacyStorage(formElement),\n presence: presence(formElement.required, 'A signature is required'),\n }\n break\n }\n case 'camera': {\n partialSchema[escapeElementName(formElement.name)] = {\n attachment: !checkIsUsingLegacyStorage(formElement),\n presence: presence(formElement.required, 'A photo is required'),\n }\n break\n }\n case 'captcha': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(true, 'Please complete the CAPTCHA successfully'),\n }\n break\n }\n case 'location': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Please select a location'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'compliance': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Required'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n attachments: !checkIsUsingLegacyStorage(formElement),\n }\n break\n }\n case 'abn':\n case 'geoscapeAddress':\n case 'pointAddress':\n case 'civicaStreetName':\n case 'autocomplete':\n case 'checkboxes':\n case 'radio':\n case 'select': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Required'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'boolean': {\n partialSchema[escapeElementName(formElement.name)] = {\n isTrue: formElement.required && 'Required',\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'bsb': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Please enter a BSB number'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: {\n pattern: /\\d{3}-\\d{3}/,\n message: 'Please enter a valid BSB number',\n },\n }\n break\n }\n case 'barcodeScanner': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n formElement.required,\n 'Please scan a barcode or enter a value',\n ),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'text':\n case 'textarea': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Please enter a value'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n length: {\n minimum: formElement.minLength,\n tooShort:\n 'Please enter a value with at least %{count} character(s)',\n maximum: formElement.maxLength,\n tooLong: 'Please enter a value with %{count} character(s) or less',\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'telephone': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n formElement.required,\n 'Please enter a phone number',\n ),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'email': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n formElement.required,\n 'Please enter an email address',\n ),\n email: {\n message: 'Please enter a valid email for this field',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'time': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Please select a time'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'date': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement.required, 'Please select a date'),\n date: {\n format: (v: Date) => localisationService.formatDate(v),\n earliest: parseDateValue({\n dateOnly: true,\n daysOffset: formElement.fromDateDaysOffset,\n value: formElement.fromDate,\n }),\n latest: parseDateValue({\n dateOnly: true,\n daysOffset: formElement.toDateDaysOffset,\n value: formElement.toDate,\n }),\n notValid: 'Please select a valid date',\n tooEarly: 'Date cannot be before %{date}',\n tooLate: 'Date cannot be after %{date}',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'datetime': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n formElement.required,\n 'Please select a date and time',\n ),\n datetime: {\n format: (v: Date) => localisationService.formatDatetime(v),\n earliest: parseDateValue({\n dateOnly: false,\n daysOffset: formElement.fromDateDaysOffset,\n value: formElement.fromDate,\n }),\n latest: parseDateValue({\n dateOnly: false,\n daysOffset: formElement.toDateDaysOffset,\n value: formElement.toDate,\n }),\n notValid: 'Please select a valid date and time',\n tooEarly: 'Date and time cannot be before %{date}',\n tooLate: 'Date and time cannot be after %{date}',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'number': {\n let minErrorMessage =\n 'Please enter a number greater than or equal to %{count}'\n let maxErrorMessage =\n 'Please enter a number less than or equal to %{count}'\n if (\n typeof formElement.minNumber === 'number' &&\n typeof formElement.maxNumber === 'number'\n ) {\n minErrorMessage =\n maxErrorMessage = `Please enter a number between ${formElement.minNumber} and ${formElement.maxNumber}`\n }\n\n partialSchema[escapeElementName(formElement.name)] = {\n type: 'number',\n presence: presence(formElement.required, 'Please enter a number'),\n numericality: {\n greaterThanOrEqualTo: formElement.minNumber,\n notGreaterThanOrEqualTo: minErrorMessage,\n lessThanOrEqualTo: formElement.maxNumber,\n notLessThanOrEqualTo: maxErrorMessage,\n onlyInteger: formElement.isInteger,\n notInteger: 'Please enter a whole number',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n numberRegex: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'files': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n !!formElement.minEntries,\n `Please upload at least ${formElement.minEntries || 1} file(s)`,\n ),\n length: {\n minimum: formElement.minEntries,\n maximum: formElement.maxEntries,\n tooLong: 'Cannot upload more than %{count} file(s)',\n tooShort: 'Please upload at least %{count} file(s)',\n },\n type: {\n type: (files: PossibleFileConfiguration[] | undefined) => {\n return (\n !Array.isArray(files) ||\n files.every((file) => {\n return checkFileNameIsValid(formElement, file.fileName)\n })\n )\n },\n message: `Only the following file types are accepted: ${(\n formElement.restrictedFileTypes || []\n ).join(', ')}`,\n },\n needsExtension: formElement,\n attachments: !checkIsUsingLegacyStorage(formElement),\n }\n break\n }\n case 'repeatableSet': {\n partialSchema[escapeElementName(formElement.name)] = {\n entries: {\n setSchema: {\n presence: presence(\n !!formElement.minSetEntries,\n `Must have at least ${\n formElement.minSetEntries || 1\n } entry/entries`,\n ),\n length: {\n minimum: formElement.minSetEntries,\n maximum: formElement.maxSetEntries,\n tooLong: 'Cannot have more than %{count} entry/entries',\n tooShort: 'Must have at least %{count} entry/entries',\n },\n },\n entrySchema: generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n ),\n },\n }\n break\n }\n case 'civicaNameRecord': {\n const nestedElements = generateCivicaNameRecordElements(formElement, [])\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n nestedElements,\n elementIdsWithLookupsExecuted,\n ),\n }\n break\n }\n case 'form': {\n if (formElement.elements) {\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n ),\n }\n }\n break\n }\n case 'freshdeskDependentField': {\n const nestedElements = generateFreshdeskDependentFieldElements(\n formElement,\n undefined,\n )\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n nestedElements,\n elementIdsWithLookupsExecuted,\n ),\n }\n break\n }\n default: {\n console.info('Unsupported form element with validation', formElement)\n }\n }\n return partialSchema\n }, {})\n}\n\nconst validateSingleMessageError = (\n submission: FormSubmissionModel,\n schema: ValidateJSSchema,\n): FormElementsValidation | undefined => {\n const errorsAsArray = validate(submission, schema, {\n format: 'grouped',\n fullMessages: false,\n })\n if (!errorsAsArray || validate.isEmpty(errorsAsArray)) {\n return\n }\n\n const errors = Object.keys(errorsAsArray || {}).reduce(\n (messagesByFormElementName: FormElementsValidation, key) => {\n const validationMessage = errorsAsArray[key][0]\n if (validationMessage) {\n messagesByFormElementName[key.replace(/\\\\./g, '.')] = validationMessage\n }\n return messagesByFormElementName\n },\n {},\n )\n if (validate.isEmpty(errors)) {\n return\n }\n\n return errors\n}\n\nexport function checkFileNameIsValid(\n formElement: FormTypes.FilesElement,\n fileName: string,\n) {\n const extension = fileName.split('.').pop()\n return (\n !formElement.restrictedFileTypes ||\n formElement.restrictedFileTypes.some(\n (fileType) => fileType.toLowerCase() === extension?.toLowerCase(),\n )\n )\n}\n\nexport function checkFileNameExtensionIsValid(\n formElement: FormTypes.FilesElement,\n fileName: string,\n) {\n return (\n formElement.allowExtensionlessAttachments || fileName.split('.').length >= 2\n )\n}\n\nexport function checkSectionValidity(\n element: FormTypes.PageElement | FormTypes.SectionElement,\n formElementsValidation: FormElementsValidation | undefined,\n): boolean {\n // If everything is valid, no need to check elements\n if (!formElementsValidation) {\n return false\n }\n\n // If there is no elements on the page that are invalid, we will treat as valid\n return element.elements.some((formElement) => {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n return checkSectionValidity(formElement, formElementsValidation)\n }\n default: {\n return formElementsValidation[formElement.name]\n }\n }\n })\n}\n"]}
1
+ {"version":3,"file":"form-validation.js","sourceRoot":"","sources":["../../src/services/form-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import validate from 'validate.js'\nimport { localisationService } from '@oneblink/apps'\nimport { FormTypes } from '@oneblink/types'\nimport { FormElementBinaryStorageValue } from '../types/attachments'\nimport { PossibleFileConfiguration } from '../form-elements/FormElementFiles'\nimport { Value as FormElementComplianceValue } from '../form-elements/FormElementCompliance'\nimport { checkIsUsingLegacyStorage } from './attachments'\nimport { parseDateValue } from './generate-default-data'\nimport generateCivicaNameRecordElements from './generateCivicaNameRecordElements'\nimport {\n FormElementsConditionallyShown,\n FormElementsValidation,\n FormSubmissionModel,\n} from '../types/form'\nimport generateFreshdeskDependentFieldElements from './generateFreshdeskDependentFieldElements'\n\nexport const lookupValidationMessage = 'Lookup is required'\n// https://validatejs.org/#validators-datetime\n// Before using it we must add the parse and format functions\n// Here is a sample implementation using moment.js\nvalidate.extend(validate.validators.datetime, {\n // The value is guaranteed not to be null or undefined but otherwise it\n // could be anything.\n parse: function (value: string) {\n return Date.parse(value)\n },\n // Input is a unix timestamp\n format: function (\n value: string,\n options: { format: (date: Date) => string },\n ) {\n const dateValue = new Date(value)\n return options.format(dateValue)\n },\n})\n\nvalidate.validators.entries = function (\n value: unknown,\n {\n setSchema,\n entrySchema,\n }: { setSchema: ValidateJSSchema; entrySchema: ValidateJSSchema },\n) {\n const entries = Array.isArray(value) ? value : []\n\n const entryErrors = entries.reduce((errorsByIndex, entry, index) => {\n const entryValidation = validateSingleMessageError(entry, entrySchema)\n if (entryValidation) {\n errorsByIndex[index] = entryValidation\n }\n return errorsByIndex\n }, {})\n\n const setErrorMessages = validate.single(value, setSchema)\n\n if (!setErrorMessages && validate.isEmpty(entryErrors)) {\n return\n }\n\n return {\n type: 'repeatableSet',\n set: setErrorMessages && setErrorMessages[0],\n entries: entryErrors,\n }\n}\n\nvalidate.validators.nestedElements = function (\n value: FormSubmissionModel | undefined,\n schema: ValidateJSSchema,\n) {\n const errors = validateSingleMessageError(value || {}, schema)\n if (!errors) {\n return\n }\n return {\n type: 'formElements',\n formElements: errors,\n }\n}\n\nfunction getInvalidAttachment(value: FormElementBinaryStorageValue) {\n if (\n value &&\n typeof value === 'object' &&\n value.type &&\n value.type === 'ERROR'\n ) {\n return value\n }\n}\nfunction validateAttachments(\n value: FormElementBinaryStorageValue[] | undefined,\n) {\n const invalidAttachmentNames = value?.reduce(\n (invalidAttachmentNames: string[], att) => {\n const attachmentName = getInvalidAttachment(att)?.fileName\n if (attachmentName) {\n invalidAttachmentNames.push(attachmentName)\n }\n return invalidAttachmentNames\n },\n [],\n )\n if (invalidAttachmentNames?.length) {\n return `${invalidAttachmentNames.join(', ')} could not be uploaded.`\n }\n}\nvalidate.validators.attachment = function (\n value: FormElementBinaryStorageValue,\n) {\n return getInvalidAttachment(value)?.errorMessage\n}\nvalidate.validators.attachments = function (\n value:\n | FormElementBinaryStorageValue[]\n | FormElementComplianceValue\n | undefined,\n) {\n if (Array.isArray(value)) {\n return validateAttachments(value)\n }\n return validateAttachments(\n value?.files as FormElementBinaryStorageValue[] | undefined,\n )\n}\n\n// Extend validator for lookups\nvalidate.validators.lookups = function (\n value: unknown,\n {\n elementIdsWithLookupsExecuted,\n formElement,\n }: {\n formElement: FormTypes.LookupFormElement & FormTypes.FormElementRequired\n elementIdsWithLookupsExecuted: string[]\n },\n) {\n if (!formElement.isDataLookup && !formElement.isElementLookup) {\n return\n }\n\n // Lookups must only be executed on required form elements\n if (formElement && !formElement.required) {\n return\n }\n\n if (elementIdsWithLookupsExecuted.includes(formElement.id)) {\n return\n }\n\n return lookupValidationMessage\n}\n\nvalidate.validators.numberRegex = function (value: unknown, format: unknown) {\n if (!format) {\n return\n }\n if (typeof value === 'number' && !Number.isNaN(value)) {\n value = value.toString()\n }\n const errorMessages = validate.single(value, { format })\n return errorMessages && errorMessages[0]\n}\n\nvalidate.validators.isTrue = function (value: unknown, message?: string) {\n if (!value) {\n return message || 'Must be set to true'\n }\n}\n\nvalidate.validators.needsExtension = function (\n value: PossibleFileConfiguration[] | undefined,\n formElement: FormTypes.FilesElement,\n) {\n const isValid =\n !Array.isArray(value) ||\n value.every((file) => {\n return checkFileNameExtensionIsValid(formElement, file.fileName)\n })\n if (!isValid) return 'All files must have extensions'\n}\n\nfunction getCustomRegexFormatConfig<DefaultValue>(\n formElement: FormTypes.FormElementWithInput<DefaultValue>,\n) {\n return formElement.regexPattern\n ? {\n pattern: formElement.regexPattern,\n flags: formElement.regexFlags,\n message: formElement.regexMessage,\n }\n : undefined\n}\n\ntype ValidateJSSchema = Record<string, unknown>\n\nexport function validateSubmission(\n schema: ValidateJSSchema,\n submission: FormSubmissionModel,\n formElementsConditionallyShown: FormElementsConditionallyShown,\n): FormElementsValidation | undefined {\n const formElementsValidation = validateSingleMessageError(submission, schema)\n if (formElementsValidation) {\n clearValidationMessagesForHiddenElements(\n formElementsValidation,\n formElementsConditionallyShown,\n )\n if (!validate.isEmpty(formElementsValidation)) {\n return formElementsValidation\n }\n }\n}\n\nconst clearValidationMessagesForHiddenElements = (\n formElementsValidation?: FormElementsValidation,\n formElementsConditionallyShown?: FormElementsConditionallyShown,\n) => {\n // If there is no validation to check, there are no invalid elements\n // If there is no conditionally shown elements, all invalid elements should display validation messages,\n if (!formElementsValidation || !formElementsConditionallyShown) {\n return\n }\n\n for (const key in formElementsValidation) {\n const formElementValidation = formElementsValidation[key]\n if (!formElementValidation) {\n continue\n }\n\n const formElementConditionallyShown = formElementsConditionallyShown[key]\n\n // If the validation is for an element that is being hidden,\n // we can remove the validation message and move to the next validation\n if (formElementConditionallyShown?.isHidden) {\n delete formElementsValidation[key]\n continue\n }\n\n // If the validation is for a single element (not nested elements),\n // we will always show the validation message\n if (typeof formElementValidation === 'string') {\n continue\n }\n\n // Here we will check to see if the nested elements that are\n // invalid are being shown, if not, remove validation messages\n switch (formElementValidation.type) {\n case 'repeatableSet': {\n for (const index in formElementValidation.entries) {\n clearValidationMessagesForHiddenElements(\n formElementValidation.entries[index],\n formElementConditionallyShown &&\n formElementConditionallyShown.type === 'repeatableSet'\n ? formElementConditionallyShown.entries[index]\n : undefined,\n )\n if (validate.isEmpty(formElementValidation.entries[index])) {\n delete formElementValidation.entries[index]\n }\n }\n // Remove the validation if all entries are valid and the set is also valid\n if (\n validate.isEmpty(formElementValidation.entries) &&\n !formElementValidation.set\n ) {\n delete formElementsValidation[key]\n }\n break\n }\n case 'formElements': {\n clearValidationMessagesForHiddenElements(\n formElementValidation.formElements,\n formElementConditionallyShown?.type === 'formElements'\n ? formElementConditionallyShown?.formElements\n : undefined,\n )\n if (validate.isEmpty(formElementValidation.formElements)) {\n delete formElementsValidation[key]\n }\n break\n }\n }\n }\n}\n\nconst presence = (\n { required, requiredMessage }: FormTypes.FormElementRequired,\n message: string,\n) => (required ? { message: requiredMessage || message } : false)\n\nconst escapeElementName = (elementName: string) => {\n const escapedName = elementName.replace(/\\./g, '\\\\.')\n return escapedName\n}\n\nexport function generateValidationSchema(\n elements: FormTypes.FormElement[],\n elementIdsWithLookupsExecuted: string[],\n): ValidateJSSchema {\n return elements.reduce<ValidateJSSchema>((partialSchema, formElement) => {\n switch (formElement.type) {\n case 'summary':\n case 'calculation':\n case 'image':\n case 'html':\n case 'infoPage':\n case 'heading': {\n break\n }\n case 'section':\n case 'page': {\n const nestedSchema = generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n )\n Object.assign(partialSchema, nestedSchema)\n break\n }\n case 'draw': {\n partialSchema[escapeElementName(formElement.name)] = {\n attachment: !checkIsUsingLegacyStorage(formElement),\n presence: presence(formElement, 'A signature is required'),\n }\n break\n }\n case 'camera': {\n partialSchema[escapeElementName(formElement.name)] = {\n attachment: !checkIsUsingLegacyStorage(formElement),\n presence: presence(formElement, 'A photo is required'),\n }\n break\n }\n case 'captcha': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n { ...formElement, required: true },\n 'Please complete the CAPTCHA successfully',\n ),\n }\n break\n }\n case 'location': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please select a location'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'compliance': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Required'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n attachments: !checkIsUsingLegacyStorage(formElement),\n }\n break\n }\n case 'abn':\n case 'geoscapeAddress':\n case 'pointAddress':\n case 'civicaStreetName':\n case 'autocomplete':\n case 'checkboxes':\n case 'radio':\n case 'select': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Required'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'boolean': {\n partialSchema[escapeElementName(formElement.name)] = {\n isTrue: formElement.required && 'Required',\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'bsb': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please enter a BSB number'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: {\n pattern: /\\d{3}-\\d{3}/,\n message: 'Please enter a valid BSB number',\n },\n }\n break\n }\n case 'barcodeScanner': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(\n formElement,\n 'Please scan a barcode or enter a value',\n ),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'text':\n case 'textarea': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please enter a value'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n length: {\n minimum: formElement.minLength,\n tooShort:\n 'Please enter a value with at least %{count} character(s)',\n maximum: formElement.maxLength,\n tooLong: 'Please enter a value with %{count} character(s) or less',\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'telephone': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please enter a phone number'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'email': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please enter an email address'),\n email: {\n message: 'Please enter a valid email for this field',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n format: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'time': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please select a time'),\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'date': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please select a date'),\n date: {\n format: (v: Date) => localisationService.formatDate(v),\n earliest: parseDateValue({\n dateOnly: true,\n daysOffset: formElement.fromDateDaysOffset,\n value: formElement.fromDate,\n }),\n latest: parseDateValue({\n dateOnly: true,\n daysOffset: formElement.toDateDaysOffset,\n value: formElement.toDate,\n }),\n notValid: 'Please select a valid date',\n tooEarly: 'Date cannot be before %{date}',\n tooLate: 'Date cannot be after %{date}',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'datetime': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: presence(formElement, 'Please select a date and time'),\n datetime: {\n format: (v: Date) => localisationService.formatDatetime(v),\n earliest: parseDateValue({\n dateOnly: false,\n daysOffset: formElement.fromDateDaysOffset,\n value: formElement.fromDate,\n }),\n latest: parseDateValue({\n dateOnly: false,\n daysOffset: formElement.toDateDaysOffset,\n value: formElement.toDate,\n }),\n notValid: 'Please select a valid date and time',\n tooEarly: 'Date and time cannot be before %{date}',\n tooLate: 'Date and time cannot be after %{date}',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n }\n break\n }\n case 'number': {\n let minErrorMessage =\n 'Please enter a number greater than or equal to %{count}'\n let maxErrorMessage =\n 'Please enter a number less than or equal to %{count}'\n if (\n typeof formElement.minNumber === 'number' &&\n typeof formElement.maxNumber === 'number'\n ) {\n minErrorMessage =\n maxErrorMessage = `Please enter a number between ${formElement.minNumber} and ${formElement.maxNumber}`\n }\n\n partialSchema[escapeElementName(formElement.name)] = {\n type: 'number',\n presence: presence(formElement, 'Please enter a number'),\n numericality: {\n greaterThanOrEqualTo: formElement.minNumber,\n notGreaterThanOrEqualTo: minErrorMessage,\n lessThanOrEqualTo: formElement.maxNumber,\n notLessThanOrEqualTo: maxErrorMessage,\n onlyInteger: formElement.isInteger,\n notInteger: 'Please enter a whole number',\n },\n lookups: {\n formElement,\n elementIdsWithLookupsExecuted,\n },\n numberRegex: getCustomRegexFormatConfig(formElement),\n }\n break\n }\n case 'files': {\n partialSchema[escapeElementName(formElement.name)] = {\n presence: formElement.minEntries\n ? {\n message: `Please upload at least ${\n formElement.minEntries\n } file${formElement.minEntries === 1 ? '' : 's'}`,\n }\n : false,\n length: {\n minimum: formElement.minEntries,\n maximum: formElement.maxEntries,\n tooLong: 'Cannot upload more than %{count} file(s)',\n tooShort: 'Please upload at least %{count} file(s)',\n },\n type: {\n type: (files: PossibleFileConfiguration[] | undefined) => {\n return (\n !Array.isArray(files) ||\n files.every((file) => {\n return checkFileNameIsValid(formElement, file.fileName)\n })\n )\n },\n message: `Only the following file types are accepted: ${(\n formElement.restrictedFileTypes || []\n ).join(', ')}`,\n },\n needsExtension: formElement,\n attachments: !checkIsUsingLegacyStorage(formElement),\n }\n break\n }\n case 'repeatableSet': {\n partialSchema[escapeElementName(formElement.name)] = {\n entries: {\n setSchema: {\n presence: formElement.minSetEntries\n ? {\n message: `Must have at least ${formElement.minSetEntries} ${\n formElement.minSetEntries === 1 ? 'entry' : 'entries'\n }`,\n }\n : false,\n length: {\n minimum: formElement.minSetEntries,\n maximum: formElement.maxSetEntries,\n tooLong: 'Cannot have more than %{count} entry/entries',\n tooShort: 'Must have at least %{count} entry/entries',\n },\n },\n entrySchema: generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n ),\n },\n }\n break\n }\n case 'civicaNameRecord': {\n const nestedElements = generateCivicaNameRecordElements(formElement, [])\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n nestedElements,\n elementIdsWithLookupsExecuted,\n ),\n }\n break\n }\n case 'form': {\n if (formElement.elements) {\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n formElement.elements,\n elementIdsWithLookupsExecuted,\n ),\n }\n }\n break\n }\n case 'freshdeskDependentField': {\n const nestedElements = generateFreshdeskDependentFieldElements(\n formElement,\n undefined,\n )\n partialSchema[escapeElementName(formElement.name)] = {\n nestedElements: generateValidationSchema(\n nestedElements,\n elementIdsWithLookupsExecuted,\n ),\n }\n break\n }\n default: {\n console.info('Unsupported form element with validation', formElement)\n }\n }\n return partialSchema\n }, {})\n}\n\nconst validateSingleMessageError = (\n submission: FormSubmissionModel,\n schema: ValidateJSSchema,\n): FormElementsValidation | undefined => {\n const errorsAsArray = validate(submission, schema, {\n format: 'grouped',\n fullMessages: false,\n })\n if (!errorsAsArray || validate.isEmpty(errorsAsArray)) {\n return\n }\n\n const errors = Object.keys(errorsAsArray || {}).reduce(\n (messagesByFormElementName: FormElementsValidation, key) => {\n const validationMessage = errorsAsArray[key][0]\n if (validationMessage) {\n messagesByFormElementName[key.replace(/\\\\./g, '.')] = validationMessage\n }\n return messagesByFormElementName\n },\n {},\n )\n if (validate.isEmpty(errors)) {\n return\n }\n\n return errors\n}\n\nexport function checkFileNameIsValid(\n formElement: FormTypes.FilesElement,\n fileName: string,\n) {\n const extension = fileName.split('.').pop()\n return (\n !formElement.restrictedFileTypes ||\n formElement.restrictedFileTypes.some(\n (fileType) => fileType.toLowerCase() === extension?.toLowerCase(),\n )\n )\n}\n\nexport function checkFileNameExtensionIsValid(\n formElement: FormTypes.FilesElement,\n fileName: string,\n) {\n return (\n formElement.allowExtensionlessAttachments || fileName.split('.').length >= 2\n )\n}\n\nexport function checkSectionValidity(\n element: FormTypes.PageElement | FormTypes.SectionElement,\n formElementsValidation: FormElementsValidation | undefined,\n): boolean {\n // If everything is valid, no need to check elements\n if (!formElementsValidation) {\n return false\n }\n\n // If there is no elements on the page that are invalid, we will treat as valid\n return element.elements.some((formElement) => {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n return checkSectionValidity(formElement, formElementsValidation)\n }\n default: {\n return formElementsValidation[formElement.name]\n }\n }\n })\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oneblink/apps-react",
3
3
  "description": "Helper functions for OneBlink apps in ReactJS.",
4
- "version": "1.2.4",
4
+ "version": "1.2.5",
5
5
  "author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
6
6
  "bugs": {
7
7
  "url": "https://github.com/oneblink/apps-react/issues"