@oneblink/apps-react 8.12.0-beta.1 → 8.12.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ImageCropper/CropModal.d.ts +2 -2
- package/dist/components/ImageCropper/CropModal.js +6 -6
- package/dist/components/ImageCropper/CropModal.js.map +1 -1
- package/dist/components/ImageCropper/index.d.ts +6 -7
- package/dist/components/ImageCropper/index.js +101 -51
- package/dist/components/ImageCropper/index.js.map +1 -1
- package/dist/components/ImageCropper/resource-components.d.ts +1 -8
- package/dist/components/ImageCropper/resource-components.js +8 -23
- package/dist/components/ImageCropper/resource-components.js.map +1 -1
- package/dist/form-elements/FormElementCamera.js +2 -2
- package/dist/form-elements/FormElementCamera.js.map +1 -1
- package/dist/form-elements/FormElementFile.js +2 -2
- package/dist/form-elements/FormElementFile.js.map +1 -1
- package/dist/hooks/useFormElementOptions.js +2 -2
- package/dist/hooks/useFormElementOptions.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/form-validation/validateSubmission.js +3 -1
- package/dist/services/form-validation/validateSubmission.js.map +1 -1
- package/dist/services/form-validation/validators.js +2 -2
- package/dist/services/form-validation/validators.js.map +1 -1
- package/dist/services/injectableOptions.d.ts +2 -4
- package/dist/services/injectableOptions.js +10 -5
- package/dist/services/injectableOptions.js.map +1 -1
- package/dist/styles/camera.scss +25 -0
- package/dist/styles/modal.scss +2 -1
- package/dist/styles.css +255 -1
- package/dist/styles.scss +0 -3
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectableOptions.js","sourceRoot":"","sources":["../../src/services/injectableOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { submissionService, typeCastService } from '@oneblink/sdk-core'\nimport { localisationService } from '@oneblink/apps'\nimport { v4 as uuidv4 } from 'uuid'\nimport { MiscTypes } from '@oneblink/types'\nimport { TaskContext } from '../hooks/useTaskContext'\ntype Option = Pick<FormTypes.ChoiceElementOption, 'value' | 'label'>\n\nfunction processInjectableDynamicOption({\n option: resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n contextElements,\n contextSubmission,\n ...params\n}: {\n option: Option\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n contextElements?: FormTypes.FormElement[]\n contextSubmission?: {\n [name: string]: unknown\n }\n}): Map<string, Option> {\n return submissionService.processInjectablesInCustomResource<Option>({\n resource,\n submission: rootSubmission,\n formElements: [...rootFormElements, ...(contextElements || [])],\n replaceRootInjectables(option, submission, formElements) {\n // Replace root level form element values\n const replaceableParams: Parameters<\n typeof localisationService.replaceInjectablesWithElementValues\n >[1] = {\n ...params,\n submission: { ...submission, ...contextSubmission },\n formElements,\n task: params.taskContext.task,\n taskGroup: params.taskContext.taskGroup,\n taskGroupInstance: params.taskContext.taskGroupInstance,\n excludeNestedElements: true,\n }\n const {\n text: label,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInLabel,\n } = localisationService.replaceInjectablesWithElementValues(\n option.label,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInLabel) {\n return\n }\n\n const {\n text: value,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInValue,\n } = localisationService.replaceInjectablesWithElementValues(\n option.value,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInValue) {\n return\n }\n\n return [\n label + ' ' + value,\n value,\n {\n value,\n label,\n },\n ]\n },\n prepareNestedInjectables(option, prepare) {\n return {\n value: prepare(option.value),\n label: prepare(option.label),\n }\n },\n })\n}\n\nexport default function processInjectableOption({\n option,\n submission,\n formElements,\n contextElements,\n contextSubmission,\n taskContext,\n userProfile,\n}: {\n option: FormTypes.ChoiceElementOption\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n contextElements?: FormTypes.FormElement[]\n contextSubmission?: {\n [name: string]: unknown\n }\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.ChoiceElementOption[] {\n const options = processInjectableDynamicOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n contextElements,\n contextSubmission,\n })\n\n const generatedOptions: FormTypes.ChoiceElementOption[] = []\n\n options.forEach(({ label, value }) => {\n generatedOptions.push({\n ...option,\n id: options.size === 1 ? option.id : uuidv4(),\n label,\n value,\n })\n })\n\n return generatedOptions\n}\n\nfunction injectOptionsAcrossEntriesElements({\n contextElements,\n elements,\n entries,\n taskContext,\n userProfile,\n}: {\n contextElements: FormTypes.FormElement[]\n elements: FormTypes.FormElement[]\n entries: SubmissionTypes.S3SubmissionData['submission'][]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n return elements.map<FormTypes.FormElement>((e) => {\n switch (e.type) {\n case 'page':\n case 'section': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // info elements on other pages/sections will need the parent definition\n contextElements,\n elements: e.elements,\n entries,\n taskContext,\n userProfile,\n }),\n }\n }\n case 'form': {\n if (Array.isArray(e.elements)) {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // sub-forms do not have context of parent elements\n contextElements: e.elements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n if (entry[e.name]) {\n memo.push(\n entry[\n e.name\n ] as SubmissionTypes.S3SubmissionData['submission'],\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n } else {\n return e\n }\n }\n case 'repeatableSet': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // repeatable set entries may only know about elements within entry\n contextElements,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n const nestedEntries = entry[e.name]\n if (Array.isArray(nestedEntries)) {\n memo.push(\n ...(nestedEntries as SubmissionTypes.S3SubmissionData['submission'][]),\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n }\n default: {\n const optionsElement = typeCastService.formElements.toOptionsElement(e)\n if (optionsElement) {\n return {\n ...optionsElement,\n options: entries.reduce<FormTypes.ChoiceElementOption[]>(\n (newOptions, submission) => {\n optionsElement.options?.forEach((o) => {\n const injected = processInjectableOption({\n option: o,\n submission,\n formElements: elements,\n contextElements,\n taskContext,\n userProfile,\n })\n\n newOptions.push(\n ...injected.filter((generatedOption) => {\n return !newOptions.some(\n (addedOption) =>\n addedOption.value === generatedOption.value,\n )\n }),\n )\n })\n return newOptions\n },\n [],\n ),\n }\n }\n return e\n }\n }\n })\n}\n\nexport function injectOptionsAcrossAllElements({\n submission,\n ...params\n}: {\n elements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n submission: SubmissionTypes.S3SubmissionData['submission']\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n // We iterate over entries as an array of submission objects because\n // child elements of a repeatable set that have injected options\n // need to include all of the injected options from the same elements\n // in sibling entries within the set. Otherwise we will not have the\n // labels for each available option to display the submission.\n return injectOptionsAcrossEntriesElements({\n ...params,\n entries: [submission],\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"injectableOptions.js","sourceRoot":"","sources":["../../src/services/injectableOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAKnC,SAAS,8BAA8B,CAAC,EACtC,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,gBAAgB,EAC9B,eAAe,EACf,iBAAiB,EACjB,GAAG,MAAM,EASV;IACC,OAAO,iBAAiB,CAAC,kCAAkC,CAAS;QAClE,QAAQ;QACR,UAAU,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,iBAAiB,EAAE;QACvD,YAAY,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC;QACvD,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY;YACrD,yCAAyC;YACzC,MAAM,iBAAiB,GAEhB;gBACL,GAAG,MAAM;gBACT,UAAU;gBACV,YAAY;gBACZ,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;gBAC7B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS;gBACvC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB;gBACvD,qBAAqB,EAAE,IAAI;aAC5B,CAAA;YACD,MAAM,EACJ,IAAI,EAAE,KAAK,EACX,yBAAyB,EAAE,gCAAgC,GAC5D,GAAG,mBAAmB,CAAC,mCAAmC,CACzD,MAAM,CAAC,KAAK,EACZ,iBAAiB,CAClB,CAAA;YACD,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACtC,OAAM;YACR,CAAC;YAED,MAAM,EACJ,IAAI,EAAE,KAAK,EACX,yBAAyB,EAAE,gCAAgC,GAC5D,GAAG,mBAAmB,CAAC,mCAAmC,CACzD,MAAM,CAAC,KAAK,EACZ,iBAAiB,CAClB,CAAA;YACD,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACtC,OAAM;YACR,CAAC;YAED,OAAO;gBACL,KAAK,GAAG,GAAG,GAAG,KAAK;gBACnB,KAAK;gBACL;oBACE,KAAK;oBACL,KAAK;iBACN;aACF,CAAA;QACH,CAAC;QACD,wBAAwB,CAAC,MAAM,EAAE,OAAO;YACtC,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7B,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,MAAM,EACN,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,GASZ;IACC,MAAM,OAAO,GAAG,8BAA8B,CAAC;QAC7C,MAAM;QACN,UAAU;QACV,YAAY;QACZ,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,eAAe;KAChB,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAoC,EAAE,CAAA;IAE5D,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,gBAAgB,CAAC,IAAI,CAAC;YACpB,GAAG,MAAM;YACT,EAAE,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;YAC7C,KAAK;YACL,KAAK;SACN,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,SAAS,kCAAkC,CAAC,EAC1C,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,GAQZ;IACC,OAAO,QAAQ,CAAC,GAAG,CAAwB,CAAC,CAAC,EAAE,EAAE;QAC/C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO;oBACL,GAAG,CAAC;oBACJ,QAAQ,EAAE,kCAAkC,CAAC;wBAC3C,wEAAwE;wBACxE,eAAe;wBACf,iBAAiB;wBACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,OAAO;wBACP,WAAW;wBACX,WAAW;qBACZ,CAAC;iBACH,CAAA;YACH,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,OAAO;wBACL,GAAG,CAAC;wBACJ,QAAQ,EAAE,kCAAkC,CAAC;4BAC3C,mDAAmD;4BACnD,eAAe,EAAE,CAAC,CAAC,QAAQ;4BAC3B,iBAAiB;4BACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,OAAO,EAAE,OAAO,CAAC,MAAM,CAErB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gCAChB,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oCAClB,IAAI,CAAC,IAAI,CACP,KAAK,CACH,CAAC,CAAC,IAAI,CAC2C,CACpD,CAAA;gCACH,CAAC;gCACD,OAAO,IAAI,CAAA;4BACb,CAAC,EAAE,EAAE,CAAC;4BACN,WAAW;4BACX,WAAW;yBACZ,CAAC;qBACH,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,CAAA;gBACV,CAAC;YACH,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,OAAO;oBACL,GAAG,CAAC;oBACJ,QAAQ,EAAE,kCAAkC,CAAC;wBAC3C,mEAAmE;wBACnE,eAAe;wBACf,iBAAiB;wBACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,OAAO,EAAE,OAAO,CAAC,MAAM,CAErB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;4BAChB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;4BACnC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gCACjC,IAAI,CAAC,IAAI,CACP,GAAI,aAAkE,CACvE,CAAA;4BACH,CAAC;4BACD,OAAO,IAAI,CAAA;wBACb,CAAC,EAAE,EAAE,CAAC;wBACN,WAAW;wBACX,WAAW;qBACZ,CAAC;iBACH,CAAA;YACH,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,cAAc,GAAG,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;gBACvE,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO;wBACL,GAAG,cAAc;wBACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CACrB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE;;4BACzB,MAAA,cAAc,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gCACpC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;oCACvC,MAAM,EAAE,CAAC;oCACT,UAAU;oCACV,iBAAiB;oCACjB,YAAY,EAAE,QAAQ;oCACtB,eAAe;oCACf,WAAW;oCACX,WAAW;iCACZ,CAAC,CAAA;gCAEF,UAAU,CAAC,IAAI,CACb,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE;oCACrC,OAAO,CAAC,UAAU,CAAC,IAAI,CACrB,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAC9C,CAAA;gCACH,CAAC,CAAC,CACH,CAAA;4BACH,CAAC,CAAC,CAAA;4BACF,OAAO,UAAU,CAAA;wBACnB,CAAC,EACD,EAAE,CACH;qBACF,CAAA;gBACH,CAAC;gBACD,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,EAC7C,UAAU,EACV,GAAG,MAAM,EAOV;IACC,oEAAoE;IACpE,gEAAgE;IAChE,qEAAqE;IACrE,oEAAoE;IACpE,8DAA8D;IAC9D,OAAO,kCAAkC,CAAC;QACxC,GAAG,MAAM;QACT,iBAAiB,EAAE,UAAU;QAC7B,OAAO,EAAE,CAAC,UAAU,CAAC;KACtB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport { submissionService, typeCastService } from '@oneblink/sdk-core'\nimport { localisationService } from '@oneblink/apps'\nimport { v4 as uuidv4 } from 'uuid'\nimport { MiscTypes } from '@oneblink/types'\nimport { TaskContext } from '../hooks/useTaskContext'\ntype Option = Pick<FormTypes.ChoiceElementOption, 'value' | 'label'>\n\nfunction processInjectableDynamicOption({\n option: resource,\n submission: rootSubmission,\n formElements: rootFormElements,\n contextElements,\n contextSubmission,\n ...params\n}: {\n option: Option\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n contextSubmission?: SubmissionTypes.S3SubmissionData['submission']\n}): Map<string, Option> {\n return submissionService.processInjectablesInCustomResource<Option>({\n resource,\n submission: { ...rootSubmission, ...contextSubmission },\n formElements: [...rootFormElements, ...contextElements],\n replaceRootInjectables(option, submission, formElements) {\n // Replace root level form element values\n const replaceableParams: Parameters<\n typeof localisationService.replaceInjectablesWithElementValues\n >[1] = {\n ...params,\n submission,\n formElements,\n task: params.taskContext.task,\n taskGroup: params.taskContext.taskGroup,\n taskGroupInstance: params.taskContext.taskGroupInstance,\n excludeNestedElements: true,\n }\n const {\n text: label,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInLabel,\n } = localisationService.replaceInjectablesWithElementValues(\n option.label,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInLabel) {\n return\n }\n\n const {\n text: value,\n hadAllInjectablesReplaced: hadAllInjectablesReplacedInValue,\n } = localisationService.replaceInjectablesWithElementValues(\n option.value,\n replaceableParams,\n )\n if (!hadAllInjectablesReplacedInValue) {\n return\n }\n\n return [\n label + ' ' + value,\n value,\n {\n value,\n label,\n },\n ]\n },\n prepareNestedInjectables(option, prepare) {\n return {\n value: prepare(option.value),\n label: prepare(option.label),\n }\n },\n })\n}\n\nexport default function processInjectableOption({\n option,\n submission,\n formElements,\n contextElements,\n contextSubmission,\n taskContext,\n userProfile,\n}: {\n option: FormTypes.ChoiceElementOption\n submission: SubmissionTypes.S3SubmissionData['submission']\n formElements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n contextSubmission: SubmissionTypes.S3SubmissionData['submission']\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.ChoiceElementOption[] {\n const options = processInjectableDynamicOption({\n option,\n submission,\n formElements,\n taskContext,\n userProfile,\n contextSubmission,\n contextElements,\n })\n\n const generatedOptions: FormTypes.ChoiceElementOption[] = []\n\n options.forEach(({ label, value }) => {\n generatedOptions.push({\n ...option,\n id: options.size === 1 ? option.id : uuidv4(),\n label,\n value,\n })\n })\n return generatedOptions\n}\n\nfunction injectOptionsAcrossEntriesElements({\n contextElements,\n contextSubmission,\n elements,\n entries,\n taskContext,\n userProfile,\n}: {\n contextElements: FormTypes.FormElement[]\n contextSubmission: SubmissionTypes.S3SubmissionData['submission']\n elements: FormTypes.FormElement[]\n entries: SubmissionTypes.S3SubmissionData['submission'][]\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n return elements.map<FormTypes.FormElement>((e) => {\n switch (e.type) {\n case 'page':\n case 'section': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // info elements on other pages/sections will need the parent definition\n contextElements,\n contextSubmission,\n elements: e.elements,\n entries,\n taskContext,\n userProfile,\n }),\n }\n }\n case 'form': {\n if (Array.isArray(e.elements)) {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // sub-forms do not have context of parent elements\n contextElements: e.elements,\n contextSubmission,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n if (entry[e.name]) {\n memo.push(\n entry[\n e.name\n ] as SubmissionTypes.S3SubmissionData['submission'],\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n } else {\n return e\n }\n }\n case 'repeatableSet': {\n return {\n ...e,\n elements: injectOptionsAcrossEntriesElements({\n // repeatable set entries may only know about elements within entry\n contextElements,\n contextSubmission,\n elements: e.elements,\n entries: entries.reduce<\n SubmissionTypes.S3SubmissionData['submission'][]\n >((memo, entry) => {\n const nestedEntries = entry[e.name]\n if (Array.isArray(nestedEntries)) {\n memo.push(\n ...(nestedEntries as SubmissionTypes.S3SubmissionData['submission'][]),\n )\n }\n return memo\n }, []),\n taskContext,\n userProfile,\n }),\n }\n }\n default: {\n const optionsElement = typeCastService.formElements.toOptionsElement(e)\n if (optionsElement) {\n return {\n ...optionsElement,\n options: entries.reduce<FormTypes.ChoiceElementOption[]>(\n (newOptions, submission) => {\n optionsElement.options?.forEach((o) => {\n const injected = processInjectableOption({\n option: o,\n submission,\n contextSubmission,\n formElements: elements,\n contextElements,\n taskContext,\n userProfile,\n })\n\n newOptions.push(\n ...injected.filter((generatedOption) => {\n return !newOptions.some(\n (addedOption) =>\n addedOption.value === generatedOption.value,\n )\n }),\n )\n })\n return newOptions\n },\n [],\n ),\n }\n }\n return e\n }\n }\n })\n}\n\nexport function injectOptionsAcrossAllElements({\n submission,\n ...params\n}: {\n elements: FormTypes.FormElement[]\n contextElements: FormTypes.FormElement[]\n submission: SubmissionTypes.S3SubmissionData['submission']\n taskContext: TaskContext\n userProfile: MiscTypes.UserProfile | undefined\n}): FormTypes.FormElement[] {\n // We iterate over entries as an array of submission objects because\n // child elements of a repeatable set that have injected options\n // need to include all of the injected options from the same elements\n // in sibling entries within the set. Otherwise we will not have the\n // labels for each available option to display the submission.\n return injectOptionsAcrossEntriesElements({\n ...params,\n contextSubmission: submission,\n entries: [submission],\n })\n}\n"]}
|
package/dist/styles/camera.scss
CHANGED
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
justify-content: center;
|
|
42
42
|
background: $white;
|
|
43
43
|
padding: $size-4;
|
|
44
|
+
min-height: 0%;
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
.ob-annotation__content {
|
|
@@ -108,8 +109,32 @@
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
.ob-cropper__container {
|
|
112
|
+
//
|
|
113
|
+
// Third Party
|
|
114
|
+
//
|
|
115
|
+
--rc-drag-handle-size: 12px;
|
|
116
|
+
--rc-drag-handle-mobile-size: 24px;
|
|
117
|
+
--rc-drag-handle-bg-colour: rgba(0, 0, 0, 0.2);
|
|
118
|
+
--rc-drag-bar-size: 6px; // The invisible grip size of the crop selection edges
|
|
119
|
+
--rc-border-color: rgba(255, 255, 255, 0.7);
|
|
120
|
+
--rc-focus-color: #0088ff;
|
|
121
|
+
@import 'react-image-crop/src/ReactCrop.scss';
|
|
122
|
+
|
|
111
123
|
width: 100%;
|
|
112
124
|
height: 100%;
|
|
113
125
|
display: flex;
|
|
114
126
|
flex-direction: column;
|
|
127
|
+
|
|
128
|
+
.ob-cropper__cropper-full-height {
|
|
129
|
+
height: 100%;
|
|
130
|
+
}
|
|
131
|
+
.ob-cropper__cropper {
|
|
132
|
+
.ReactCrop__child-wrapper {
|
|
133
|
+
height: 100%;
|
|
134
|
+
|
|
135
|
+
.ob-cropper__image {
|
|
136
|
+
max-height: 100%;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
115
140
|
}
|
package/dist/styles/modal.scss
CHANGED
package/dist/styles.css
CHANGED
|
@@ -7916,7 +7916,7 @@ button on-loading {
|
|
|
7916
7916
|
}
|
|
7917
7917
|
|
|
7918
7918
|
.modal {
|
|
7919
|
-
z-index:
|
|
7919
|
+
z-index: 400;
|
|
7920
7920
|
}
|
|
7921
7921
|
@media only screen and (max-width: 769px) {
|
|
7922
7922
|
.modal {
|
|
@@ -8148,6 +8148,7 @@ button on-loading {
|
|
|
8148
8148
|
justify-content: center;
|
|
8149
8149
|
background: hsl(0, 0%, 100%);
|
|
8150
8150
|
padding: 1.5rem;
|
|
8151
|
+
min-height: 0%;
|
|
8151
8152
|
}
|
|
8152
8153
|
|
|
8153
8154
|
.ob-annotation__content {
|
|
@@ -8203,11 +8204,264 @@ button on-loading {
|
|
|
8203
8204
|
}
|
|
8204
8205
|
|
|
8205
8206
|
.ob-cropper__container {
|
|
8207
|
+
--rc-drag-handle-size: 12px;
|
|
8208
|
+
--rc-drag-handle-mobile-size: 24px;
|
|
8209
|
+
--rc-drag-handle-bg-colour: rgba(0, 0, 0, 0.2);
|
|
8210
|
+
--rc-drag-bar-size: 6px;
|
|
8211
|
+
--rc-border-color: rgba(255, 255, 255, 0.7);
|
|
8212
|
+
--rc-focus-color: #0088ff;
|
|
8206
8213
|
width: 100%;
|
|
8207
8214
|
height: 100%;
|
|
8208
8215
|
display: flex;
|
|
8209
8216
|
flex-direction: column;
|
|
8210
8217
|
}
|
|
8218
|
+
@keyframes marching-ants {
|
|
8219
|
+
0% {
|
|
8220
|
+
background-position: 0 0, 0 100%, 0 0, 100% 0;
|
|
8221
|
+
}
|
|
8222
|
+
100% {
|
|
8223
|
+
background-position: 20px 0, -20px 100%, 0 -20px, 100% 20px;
|
|
8224
|
+
}
|
|
8225
|
+
}
|
|
8226
|
+
.ob-cropper__container :root {
|
|
8227
|
+
--rc-drag-handle-size: 12px;
|
|
8228
|
+
--rc-drag-handle-mobile-size: 24px;
|
|
8229
|
+
--rc-drag-handle-bg-colour: rgba(0, 0, 0, 0.2);
|
|
8230
|
+
--rc-drag-bar-size: 6px;
|
|
8231
|
+
--rc-border-color: rgba(255, 255, 255, 0.7);
|
|
8232
|
+
--rc-focus-color: #0088ff;
|
|
8233
|
+
}
|
|
8234
|
+
.ob-cropper__container .ReactCrop {
|
|
8235
|
+
position: relative;
|
|
8236
|
+
display: inline-block;
|
|
8237
|
+
cursor: crosshair;
|
|
8238
|
+
max-width: 100%;
|
|
8239
|
+
}
|
|
8240
|
+
.ob-cropper__container .ReactCrop *, .ob-cropper__container .ReactCrop *::before, .ob-cropper__container .ReactCrop *::after {
|
|
8241
|
+
box-sizing: border-box;
|
|
8242
|
+
}
|
|
8243
|
+
.ob-cropper__container .ReactCrop--disabled, .ob-cropper__container .ReactCrop--locked {
|
|
8244
|
+
cursor: inherit;
|
|
8245
|
+
}
|
|
8246
|
+
.ob-cropper__container .ReactCrop__child-wrapper {
|
|
8247
|
+
overflow: hidden;
|
|
8248
|
+
max-height: inherit;
|
|
8249
|
+
}
|
|
8250
|
+
.ob-cropper__container .ReactCrop__child-wrapper > img, .ob-cropper__container .ReactCrop__child-wrapper > video {
|
|
8251
|
+
display: block;
|
|
8252
|
+
max-width: 100%;
|
|
8253
|
+
max-height: inherit;
|
|
8254
|
+
}
|
|
8255
|
+
.ob-cropper__container .ReactCrop:not(.ob-cropper__container .ReactCrop--disabled) .ob-cropper__container .ReactCrop__child-wrapper > img, .ob-cropper__container .ReactCrop:not(.ob-cropper__container .ReactCrop--disabled) .ob-cropper__container .ReactCrop__child-wrapper > video {
|
|
8256
|
+
touch-action: none;
|
|
8257
|
+
}
|
|
8258
|
+
.ob-cropper__container .ReactCrop:not(.ob-cropper__container .ReactCrop--disabled) .ob-cropper__container .ReactCrop__crop-selection {
|
|
8259
|
+
touch-action: none;
|
|
8260
|
+
}
|
|
8261
|
+
.ob-cropper__container .ReactCrop__crop-mask {
|
|
8262
|
+
position: absolute;
|
|
8263
|
+
top: 0;
|
|
8264
|
+
right: 0;
|
|
8265
|
+
bottom: 0;
|
|
8266
|
+
left: 0;
|
|
8267
|
+
pointer-events: none;
|
|
8268
|
+
width: calc(100% + 0.5px);
|
|
8269
|
+
height: calc(100% + 0.5px);
|
|
8270
|
+
}
|
|
8271
|
+
.ob-cropper__container .ReactCrop__crop-selection {
|
|
8272
|
+
position: absolute;
|
|
8273
|
+
top: 0;
|
|
8274
|
+
left: 0;
|
|
8275
|
+
transform: translate3d(0, 0, 0);
|
|
8276
|
+
cursor: move;
|
|
8277
|
+
}
|
|
8278
|
+
.ReactCrop--disabled .ob-cropper__container .ReactCrop__crop-selection {
|
|
8279
|
+
cursor: inherit;
|
|
8280
|
+
}
|
|
8281
|
+
.ReactCrop--circular-crop .ob-cropper__container .ReactCrop__crop-selection {
|
|
8282
|
+
border-radius: 50%;
|
|
8283
|
+
}
|
|
8284
|
+
.ReactCrop--circular-crop .ob-cropper__container .ReactCrop__crop-selection::after {
|
|
8285
|
+
pointer-events: none;
|
|
8286
|
+
content: "";
|
|
8287
|
+
position: absolute;
|
|
8288
|
+
top: -1px;
|
|
8289
|
+
right: -1px;
|
|
8290
|
+
bottom: -1px;
|
|
8291
|
+
left: -1px;
|
|
8292
|
+
border: 1px solid var(--rc-border-color);
|
|
8293
|
+
opacity: 0.3;
|
|
8294
|
+
}
|
|
8295
|
+
.ReactCrop--no-animate .ob-cropper__container .ReactCrop__crop-selection {
|
|
8296
|
+
outline: 1px dashed white;
|
|
8297
|
+
}
|
|
8298
|
+
.ob-cropper__container .ReactCrop__crop-selection:not(.ReactCrop--no-animate .ob-cropper__container .ReactCrop__crop-selection) {
|
|
8299
|
+
animation: marching-ants 1s;
|
|
8300
|
+
background-image: linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(to bottom, #fff 50%, #444 50%), linear-gradient(to bottom, #fff 50%, #444 50%);
|
|
8301
|
+
background-size: 10px 1px, 10px 1px, 1px 10px, 1px 10px;
|
|
8302
|
+
background-position: 0 0, 0 100%, 0 0, 100% 0;
|
|
8303
|
+
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
8304
|
+
color: #fff;
|
|
8305
|
+
animation-play-state: running;
|
|
8306
|
+
animation-timing-function: linear;
|
|
8307
|
+
animation-iteration-count: infinite;
|
|
8308
|
+
}
|
|
8309
|
+
.ob-cropper__container .ReactCrop__crop-selection:focus {
|
|
8310
|
+
outline: 2px solid var(--rc-focus-color);
|
|
8311
|
+
outline-offset: -1px;
|
|
8312
|
+
}
|
|
8313
|
+
.ob-cropper__container .ReactCrop--invisible-crop .ob-cropper__container .ReactCrop__crop-mask, .ob-cropper__container .ReactCrop--invisible-crop .ob-cropper__container .ReactCrop__crop-selection {
|
|
8314
|
+
display: none;
|
|
8315
|
+
}
|
|
8316
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-vt::before, .ob-cropper__container .ReactCrop__rule-of-thirds-vt::after, .ob-cropper__container .ReactCrop__rule-of-thirds-hz::before, .ob-cropper__container .ReactCrop__rule-of-thirds-hz::after {
|
|
8317
|
+
content: "";
|
|
8318
|
+
display: block;
|
|
8319
|
+
position: absolute;
|
|
8320
|
+
background-color: rgba(255, 255, 255, 0.4);
|
|
8321
|
+
}
|
|
8322
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-vt::before, .ob-cropper__container .ReactCrop__rule-of-thirds-vt::after {
|
|
8323
|
+
width: 1px;
|
|
8324
|
+
height: 100%;
|
|
8325
|
+
}
|
|
8326
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-vt::before {
|
|
8327
|
+
left: 33.3333%;
|
|
8328
|
+
left: 33.3333333333%;
|
|
8329
|
+
}
|
|
8330
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-vt::after {
|
|
8331
|
+
left: 66.6666%;
|
|
8332
|
+
left: 66.6666666667%;
|
|
8333
|
+
}
|
|
8334
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-hz::before, .ob-cropper__container .ReactCrop__rule-of-thirds-hz::after {
|
|
8335
|
+
width: 100%;
|
|
8336
|
+
height: 1px;
|
|
8337
|
+
}
|
|
8338
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-hz::before {
|
|
8339
|
+
top: 33.3333%;
|
|
8340
|
+
top: 33.3333333333%;
|
|
8341
|
+
}
|
|
8342
|
+
.ob-cropper__container .ReactCrop__rule-of-thirds-hz::after {
|
|
8343
|
+
top: 66.6666%;
|
|
8344
|
+
top: 66.6666666667%;
|
|
8345
|
+
}
|
|
8346
|
+
.ob-cropper__container .ReactCrop__drag-handle {
|
|
8347
|
+
position: absolute;
|
|
8348
|
+
width: var(--rc-drag-handle-size);
|
|
8349
|
+
height: var(--rc-drag-handle-size);
|
|
8350
|
+
background-color: var(--rc-drag-handle-bg-colour);
|
|
8351
|
+
border: 1px solid var(--rc-border-color);
|
|
8352
|
+
}
|
|
8353
|
+
.ob-cropper__container .ReactCrop__drag-handle:focus {
|
|
8354
|
+
background: var(--rc-focus-color);
|
|
8355
|
+
}
|
|
8356
|
+
.ob-cropper__container .ReactCrop .ord-nw {
|
|
8357
|
+
top: 0;
|
|
8358
|
+
left: 0;
|
|
8359
|
+
transform: translate(-50%, -50%);
|
|
8360
|
+
cursor: nw-resize;
|
|
8361
|
+
}
|
|
8362
|
+
.ob-cropper__container .ReactCrop .ord-n {
|
|
8363
|
+
top: 0;
|
|
8364
|
+
left: 50%;
|
|
8365
|
+
transform: translate(-50%, -50%);
|
|
8366
|
+
cursor: n-resize;
|
|
8367
|
+
}
|
|
8368
|
+
.ob-cropper__container .ReactCrop .ord-ne {
|
|
8369
|
+
top: 0;
|
|
8370
|
+
right: 0;
|
|
8371
|
+
transform: translate(50%, -50%);
|
|
8372
|
+
cursor: ne-resize;
|
|
8373
|
+
}
|
|
8374
|
+
.ob-cropper__container .ReactCrop .ord-e {
|
|
8375
|
+
top: 50%;
|
|
8376
|
+
right: 0;
|
|
8377
|
+
transform: translate(50%, -50%);
|
|
8378
|
+
cursor: e-resize;
|
|
8379
|
+
}
|
|
8380
|
+
.ob-cropper__container .ReactCrop .ord-se {
|
|
8381
|
+
bottom: 0;
|
|
8382
|
+
right: 0;
|
|
8383
|
+
transform: translate(50%, 50%);
|
|
8384
|
+
cursor: se-resize;
|
|
8385
|
+
}
|
|
8386
|
+
.ob-cropper__container .ReactCrop .ord-s {
|
|
8387
|
+
bottom: 0;
|
|
8388
|
+
left: 50%;
|
|
8389
|
+
transform: translate(-50%, 50%);
|
|
8390
|
+
cursor: s-resize;
|
|
8391
|
+
}
|
|
8392
|
+
.ob-cropper__container .ReactCrop .ord-sw {
|
|
8393
|
+
bottom: 0;
|
|
8394
|
+
left: 0;
|
|
8395
|
+
transform: translate(-50%, 50%);
|
|
8396
|
+
cursor: sw-resize;
|
|
8397
|
+
}
|
|
8398
|
+
.ob-cropper__container .ReactCrop .ord-w {
|
|
8399
|
+
top: 50%;
|
|
8400
|
+
left: 0;
|
|
8401
|
+
transform: translate(-50%, -50%);
|
|
8402
|
+
cursor: w-resize;
|
|
8403
|
+
}
|
|
8404
|
+
.ob-cropper__container .ReactCrop__disabled .ob-cropper__container .ReactCrop__drag-handle {
|
|
8405
|
+
cursor: inherit;
|
|
8406
|
+
}
|
|
8407
|
+
.ob-cropper__container .ReactCrop__drag-bar {
|
|
8408
|
+
position: absolute;
|
|
8409
|
+
}
|
|
8410
|
+
.ob-cropper__container .ReactCrop__drag-bar.ord-n {
|
|
8411
|
+
top: 0;
|
|
8412
|
+
left: 0;
|
|
8413
|
+
width: 100%;
|
|
8414
|
+
height: var(--rc-drag-bar-size);
|
|
8415
|
+
transform: translateY(-50%);
|
|
8416
|
+
}
|
|
8417
|
+
.ob-cropper__container .ReactCrop__drag-bar.ord-e {
|
|
8418
|
+
right: 0;
|
|
8419
|
+
top: 0;
|
|
8420
|
+
width: var(--rc-drag-bar-size);
|
|
8421
|
+
height: 100%;
|
|
8422
|
+
transform: translateX(50%);
|
|
8423
|
+
}
|
|
8424
|
+
.ob-cropper__container .ReactCrop__drag-bar.ord-s {
|
|
8425
|
+
bottom: 0;
|
|
8426
|
+
left: 0;
|
|
8427
|
+
width: 100%;
|
|
8428
|
+
height: var(--rc-drag-bar-size);
|
|
8429
|
+
transform: translateY(50%);
|
|
8430
|
+
}
|
|
8431
|
+
.ob-cropper__container .ReactCrop__drag-bar.ord-w {
|
|
8432
|
+
top: 0;
|
|
8433
|
+
left: 0;
|
|
8434
|
+
width: var(--rc-drag-bar-size);
|
|
8435
|
+
height: 100%;
|
|
8436
|
+
transform: translateX(-50%);
|
|
8437
|
+
}
|
|
8438
|
+
.ob-cropper__container .ReactCrop--new-crop .ob-cropper__container .ReactCrop__drag-bar, .ob-cropper__container .ReactCrop--new-crop .ob-cropper__container .ReactCrop__drag-handle, .ob-cropper__container .ReactCrop--fixed-aspect .ob-cropper__container .ReactCrop__drag-bar {
|
|
8439
|
+
display: none;
|
|
8440
|
+
}
|
|
8441
|
+
.ob-cropper__container .ReactCrop--fixed-aspect .ob-cropper__container .ReactCrop__drag-handle.ord-n, .ob-cropper__container .ReactCrop--fixed-aspect .ob-cropper__container .ReactCrop__drag-handle.ord-e, .ob-cropper__container .ReactCrop--fixed-aspect .ob-cropper__container .ReactCrop__drag-handle.ord-s, .ob-cropper__container .ReactCrop--fixed-aspect .ob-cropper__container .ReactCrop__drag-handle.ord-w {
|
|
8442
|
+
display: none;
|
|
8443
|
+
}
|
|
8444
|
+
@media (pointer: coarse) {
|
|
8445
|
+
.ob-cropper__container .ReactCrop .ord-n,
|
|
8446
|
+
.ob-cropper__container .ReactCrop .ord-e,
|
|
8447
|
+
.ob-cropper__container .ReactCrop .ord-s,
|
|
8448
|
+
.ob-cropper__container .ReactCrop .ord-w {
|
|
8449
|
+
display: none;
|
|
8450
|
+
}
|
|
8451
|
+
.ob-cropper__container .ReactCrop__drag-handle {
|
|
8452
|
+
width: var(--rc-drag-handle-mobile-size);
|
|
8453
|
+
height: var(--rc-drag-handle-mobile-size);
|
|
8454
|
+
}
|
|
8455
|
+
}
|
|
8456
|
+
.ob-cropper__container .ob-cropper__cropper-full-height {
|
|
8457
|
+
height: 100%;
|
|
8458
|
+
}
|
|
8459
|
+
.ob-cropper__container .ob-cropper__cropper .ReactCrop__child-wrapper {
|
|
8460
|
+
height: 100%;
|
|
8461
|
+
}
|
|
8462
|
+
.ob-cropper__container .ob-cropper__cropper .ReactCrop__child-wrapper .ob-cropper__image {
|
|
8463
|
+
max-height: 100%;
|
|
8464
|
+
}
|
|
8211
8465
|
|
|
8212
8466
|
.ob-quill-content > * {
|
|
8213
8467
|
cursor: text;
|
package/dist/styles.scss
CHANGED
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": "8.12.0-beta.
|
|
4
|
+
"version": "8.12.0-beta.10",
|
|
5
5
|
"author": "OneBlink <developers@oneblink.io> (https://oneblink.io)",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/oneblink/apps-react/issues"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@emotion/react": "^11.11.3",
|
|
12
12
|
"@emotion/styled": "^11.11.0",
|
|
13
13
|
"@nylas/react": "^1.3.1",
|
|
14
|
-
"@oneblink/sdk-core": "^8.
|
|
14
|
+
"@oneblink/sdk-core": "^8.9.0-beta.2",
|
|
15
15
|
"@react-google-maps/api": "2.19.2",
|
|
16
16
|
"blueimp-load-image": "^5.16.0",
|
|
17
17
|
"bulma": "^0.9.4",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"morph-expressions": "^1.1.1",
|
|
33
33
|
"qrcode.react": "^4.1.0",
|
|
34
34
|
"query-string": "^8.1.0",
|
|
35
|
-
"react-easy-crop": "^5.5.0",
|
|
36
35
|
"react-google-recaptcha": "^3.1.0",
|
|
36
|
+
"react-image-crop": "^11.0.10",
|
|
37
37
|
"react-input-mask": "^2.0.4",
|
|
38
38
|
"react-signature-canvas": "^1.0.6",
|
|
39
39
|
"react-table": "^7.8.0",
|