@aehrc/smart-forms-renderer 0.1.0
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/api/populate.d.ts +8 -0
- package/dist/components/Alert.styles.d.ts +12 -0
- package/dist/components/BackToTopButton/BackToTopButton.d.ts +7 -0
- package/dist/components/Box.styles.d.ts +28 -0
- package/dist/components/FormComponents/BooleanItem/BooleanField.d.ts +8 -0
- package/dist/components/FormComponents/BooleanItem/BooleanItem.d.ts +9 -0
- package/dist/components/FormComponents/DateItem/DateField.d.ts +12 -0
- package/dist/components/FormComponents/DateItem/DateItem.d.ts +9 -0
- package/dist/components/FormComponents/DateTimeItem/DateTimeField.d.ts +12 -0
- package/dist/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +9 -0
- package/dist/components/FormComponents/DecimalItem/DecimalField.d.ts +15 -0
- package/dist/components/FormComponents/DecimalItem/DecimalItem.d.ts +9 -0
- package/dist/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +6 -0
- package/dist/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +9 -0
- package/dist/components/FormComponents/DisplayItem/DisplayItem.d.ts +7 -0
- package/dist/components/FormComponents/GridGroup/GridGroup.d.ts +10 -0
- package/dist/components/FormComponents/GridGroup/GridRow.d.ts +11 -0
- package/dist/components/FormComponents/GridGroup/GridTable.d.ts +11 -0
- package/dist/components/FormComponents/GroupItem/GroupHeading.d.ts +9 -0
- package/dist/components/FormComponents/GroupItem/GroupItem.d.ts +15 -0
- package/dist/components/FormComponents/GroupItem/GroupItem.styles.d.ts +11 -0
- package/dist/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +10 -0
- package/dist/components/FormComponents/GroupItem/NextTabButton.d.ts +7 -0
- package/dist/components/FormComponents/GroupItem/NextTabButtonWrapper.d.ts +8 -0
- package/dist/components/FormComponents/IntegerItem/IntegerField.d.ts +15 -0
- package/dist/components/FormComponents/IntegerItem/IntegerItem.d.ts +9 -0
- package/dist/components/FormComponents/Item.styles.d.ts +6 -0
- package/dist/components/FormComponents/ItemParts/ContextDisplayItem.d.ts +7 -0
- package/dist/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +6 -0
- package/dist/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +10 -0
- package/dist/components/FormComponents/ItemParts/ItemLabelText.d.ts +7 -0
- package/dist/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +7 -0
- package/dist/components/FormComponents/ItemParts/QItemCheckboxSingle.d.ts +10 -0
- package/dist/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.d.ts +10 -0
- package/dist/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.d.ts +10 -0
- package/dist/components/FormComponents/Lists.styles.d.ts +11 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoice.d.ts +9 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.d.ts +9 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.d.ts +11 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.d.ts +11 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.d.ts +11 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.d.ts +11 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.d.ts +8 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.d.ts +9 -0
- package/dist/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.d.ts +9 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoice.d.ts +9 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.d.ts +9 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.d.ts +11 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.d.ts +11 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.d.ts +9 -0
- package/dist/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.d.ts +9 -0
- package/dist/components/FormComponents/RepeatGroup/AddItemButton.d.ts +8 -0
- package/dist/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +9 -0
- package/dist/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +10 -0
- package/dist/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +13 -0
- package/dist/components/FormComponents/RepeatItem/AddItemButton.d.ts +8 -0
- package/dist/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +9 -0
- package/dist/components/FormComponents/RepeatItem/RepeatField.d.ts +12 -0
- package/dist/components/FormComponents/RepeatItem/RepeatItem.d.ts +9 -0
- package/dist/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +22 -0
- package/dist/components/FormComponents/SingleItem/SingleItem.d.ts +9 -0
- package/dist/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +9 -0
- package/dist/components/FormComponents/StringItem/StringField.d.ts +15 -0
- package/dist/components/FormComponents/StringItem/StringItem.d.ts +9 -0
- package/dist/components/FormComponents/Tables/DeleteRowButton.d.ts +9 -0
- package/dist/components/FormComponents/Tables/QItemGroupTable.d.ts +10 -0
- package/dist/components/FormComponents/Tables/QItemGroupTableRow.d.ts +10 -0
- package/dist/components/FormComponents/Tables/Table.styles.d.ts +10 -0
- package/dist/components/FormComponents/TextItem/TextField.d.ts +14 -0
- package/dist/components/FormComponents/TextItem/TextItem.d.ts +9 -0
- package/dist/components/FormComponents/Textfield.styles.d.ts +5 -0
- package/dist/components/FormComponents/TimeItem/TimeField.d.ts +12 -0
- package/dist/components/FormComponents/TimeItem/TimeItem.d.ts +9 -0
- package/dist/components/FormComponents/Typography.styles.d.ts +6 -0
- package/dist/components/FormComponents/UrlItem/UrlField.d.ts +14 -0
- package/dist/components/FormComponents/UrlItem/UrlItem.d.ts +9 -0
- package/dist/components/FormRenderer/FormBodyCollapsible.d.ts +9 -0
- package/dist/components/FormRenderer/FormBodySingleCollapsible.d.ts +12 -0
- package/dist/components/FormRenderer/FormBodySingleCollapsibleWrapper.d.ts +12 -0
- package/dist/components/FormRenderer/FormBodyTabbed.d.ts +9 -0
- package/dist/components/FormRenderer/FormRenderer.d.ts +3 -0
- package/dist/components/FormRenderer/FormTitle.d.ts +7 -0
- package/dist/components/FormRenderer/FormTopLevelItem.d.ts +9 -0
- package/dist/components/FormRenderer/SmartFormsRenderer.d.ts +9 -0
- package/dist/components/FormRenderer/index.d.ts +1 -0
- package/dist/components/Iconify/Iconify.d.ts +10 -0
- package/dist/components/Lists.styles.d.ts +11 -0
- package/dist/components/Tabs/CompleteTabButton.d.ts +7 -0
- package/dist/components/Tabs/FormBodySingleTab.d.ts +10 -0
- package/dist/components/Tabs/FormBodyTabList.d.ts +10 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/hooks/useBackToTop.d.ts +2 -0
- package/dist/hooks/useDebounce.d.ts +2 -0
- package/dist/hooks/useDecimalCalculatedExpression.d.ts +14 -0
- package/dist/hooks/useHidden.d.ts +3 -0
- package/dist/hooks/useInitialiseGroupTable.d.ts +4 -0
- package/dist/hooks/useInitialiseRenderer.d.ts +3 -0
- package/dist/hooks/useInitialiseRepeatAnswers.d.ts +4 -0
- package/dist/hooks/useInitialiseRepeatGroups.d.ts +4 -0
- package/dist/hooks/useIntegerCalculatedExpression.d.ts +13 -0
- package/dist/hooks/useQueryClient.d.ts +3 -0
- package/dist/hooks/useRenderingExtensions.d.ts +13 -0
- package/dist/hooks/useResponsive.d.ts +2 -0
- package/dist/hooks/useStringCalculatedExpression.d.ts +12 -0
- package/dist/hooks/useTerminologyServerQuery.d.ts +11 -0
- package/dist/hooks/useValidationError.d.ts +3 -0
- package/dist/hooks/useValueSetCodings.d.ts +6 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +10481 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +10526 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/answerExpression.interface.d.ts +5 -0
- package/dist/interfaces/calculatedExpression.interface.d.ts +4 -0
- package/dist/interfaces/choice.enum.d.ts +20 -0
- package/dist/interfaces/enableWhen.interface.d.ts +15 -0
- package/dist/interfaces/groupTable.interface.d.ts +5 -0
- package/dist/interfaces/populate.interface.d.ts +41 -0
- package/dist/interfaces/questionnaireStore.interface.d.ts +18 -0
- package/dist/interfaces/regex.interface.d.ts +4 -0
- package/dist/interfaces/renderProps.interface.d.ts +13 -0
- package/dist/interfaces/repeatGroup.interface.d.ts +9 -0
- package/dist/interfaces/repeatItem.interface.d.ts +5 -0
- package/dist/interfaces/tab.interface.d.ts +6 -0
- package/dist/interfaces/valueSet.interface.d.ts +5 -0
- package/dist/interfaces/variables.interface.d.ts +9 -0
- package/dist/setup-jest.d.ts +1 -0
- package/dist/stores/useConfigStore.d.ts +18 -0
- package/dist/stores/useQuestionnaireResponseStore.d.ts +14 -0
- package/dist/stores/useQuestionnaireStore.d.ts +34 -0
- package/dist/stories/FormRendererWrapper.stories.d.ts +11 -0
- package/dist/stories/SmartFormsRenderer.stories.d.ts +14 -0
- package/dist/utils/calculatedExpression.d.ts +14 -0
- package/dist/utils/choice.d.ts +44 -0
- package/dist/utils/debounce.d.ts +2 -0
- package/dist/utils/emptyResource.d.ts +3 -0
- package/dist/utils/enableWhen.d.ts +47 -0
- package/dist/utils/enableWhenExpression.d.ts +13 -0
- package/dist/utils/fhirpath.d.ts +19 -0
- package/dist/utils/initialiseForm.d.ts +20 -0
- package/dist/utils/itemControl.d.ts +108 -0
- package/dist/utils/mapItem.d.ts +18 -0
- package/dist/utils/openChoice.d.ts +22 -0
- package/dist/utils/parseInputs.d.ts +4 -0
- package/dist/utils/populate.d.ts +16 -0
- package/dist/utils/populateCallback.d.ts +6 -0
- package/dist/utils/populateContexts.d.ts +13 -0
- package/dist/utils/populateInputParams.d.ts +8 -0
- package/dist/utils/qItem.d.ts +32 -0
- package/dist/utils/qrItem.d.ts +42 -0
- package/dist/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +2 -0
- package/dist/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +3 -0
- package/dist/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +13 -0
- package/dist/utils/questionnaireStoreUtils/extractLaunchContext.d.ts +3 -0
- package/dist/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +34 -0
- package/dist/utils/questionnaireStoreUtils/extractTabs.d.ts +3 -0
- package/dist/utils/questionnaireStoreUtils/extractVariables.d.ts +15 -0
- package/dist/utils/questionnaireStoreUtils/resolveValueSets.d.ts +7 -0
- package/dist/utils/tabs.d.ts +75 -0
- package/dist/utils/valueSet.d.ts +21 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/qrItem.ts","../../../node_modules/tslib/tslib.es6.mjs","../src/utils/enableWhen.ts","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/lodash/_stackHas.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/_stackSet.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/lodash/_arraySome.js","../../../node_modules/lodash/_cacheHas.js","../../../node_modules/lodash/_equalArrays.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/lodash/_mapToArray.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/lodash/_equalByTag.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_nativeKeys.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/keys.js","../../../node_modules/lodash/_getAllKeys.js","../../../node_modules/lodash/_equalObjects.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/lodash/_baseIsEqualDeep.js","../../../node_modules/lodash/_baseIsEqual.js","../../../node_modules/lodash/isEqual.js","../src/utils/emptyResource.ts","../src/utils/enableWhenExpression.ts","../src/utils/itemControl.ts","../src/interfaces/choice.enum.ts","../src/utils/choice.ts","../src/utils/openChoice.ts","../src/utils/qItem.ts","../src/utils/mapItem.ts","../src/utils/calculatedExpression.ts","../src/utils/fhirpath.ts","../src/utils/populateContexts.ts","../src/utils/questionnaireStoreUtils/extractLaunchContext.ts","../src/utils/questionnaireStoreUtils/extractVariables.ts","../src/utils/tabs.ts","../src/utils/questionnaireStoreUtils/extractTabs.ts","../src/utils/valueSet.ts","../src/utils/questionnaireStoreUtils/extractContainedValueSets.ts","../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts","../src/utils/questionnaireStoreUtils/resolveValueSets.ts","../src/utils/questionnaireStoreUtils/addAdditionalVariables.ts","../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts","../src/utils/initialiseForm.ts","../src/stores/useQuestionnaireStore.ts","../src/stores/useQuestionnaireResponseStore.ts","../src/hooks/useInitialiseRenderer.ts","../src/hooks/useQueryClient.ts","../src/components/Box.styles.ts","../src/hooks/useHidden.ts","../src/components/FormComponents/Typography.styles.ts","../src/components/FormComponents/Item.styles.ts","../src/components/FormComponents/ItemParts/ItemLabelText.tsx","../src/components/FormComponents/ItemParts/ContextDisplayItem.tsx","../src/components/FormComponents/GroupItem/GroupHeading.tsx","../src/components/FormComponents/GroupItem/GroupItem.styles.ts","../src/components/Iconify/Iconify.tsx","../src/components/FormComponents/GroupItem/NextTabButton.tsx","../src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.tsx","../src/hooks/useRenderingExtensions.ts","../src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts","../src/components/FormComponents/DisplayItem/DisplayInstructions.tsx","../src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.tsx","../src/components/FormComponents/ItemParts/QItemCheckboxSingle.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.tsx","../src/components/FormComponents/Textfield.styles.ts","../src/hooks/useDebounce.ts","../src/hooks/useTerminologyServerQuery.ts","../src/utils/debounce.ts","../src/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.tsx","../src/stores/useConfigStore.ts","../src/hooks/useValueSetCodings.ts","../src/components/Alert.styles.ts","../src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.tsx","../src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.tsx","../src/components/FormComponents/QItemChoice/QItemChoice.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.tsx","../src/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.tsx","../src/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.tsx","../src/components/FormComponents/QItemOpenChoice/QItemOpenChoice.tsx","../src/hooks/useValidationError.ts","../src/components/FormComponents/ItemParts/FadingCheckIcon.tsx","../src/components/FormComponents/StringItem/StringField.tsx","../src/components/FormComponents/ItemParts/ItemFieldGrid.tsx","../src/hooks/useStringCalculatedExpression.ts","../src/components/FormComponents/StringItem/StringItem.tsx","../src/components/FormComponents/BooleanItem/BooleanField.tsx","../src/components/FormComponents/BooleanItem/BooleanItem.tsx","../src/components/FormComponents/TimeItem/TimeField.tsx","../src/components/FormComponents/TimeItem/TimeItem.tsx","../src/components/FormComponents/DateTimeItem/DateTimeField.tsx","../src/components/FormComponents/DateTimeItem/DateTimeItem.tsx","../src/components/FormComponents/DateItem/DateField.tsx","../src/components/FormComponents/DateItem/DateItem.tsx","../src/components/FormComponents/TextItem/TextField.tsx","../src/components/FormComponents/TextItem/TextItem.tsx","../src/components/FormComponents/DisplayItem/DisplayItem.tsx","../src/components/FormComponents/IntegerItem/IntegerField.tsx","../src/hooks/useIntegerCalculatedExpression.ts","../src/utils/parseInputs.ts","../src/components/FormComponents/IntegerItem/IntegerItem.tsx","../src/components/FormComponents/DecimalItem/DecimalField.tsx","../src/hooks/useDecimalCalculatedExpression.ts","../src/components/FormComponents/DecimalItem/DecimalItem.tsx","../src/components/FormComponents/UrlItem/UrlField.tsx","../src/components/FormComponents/UrlItem/UrlItem.tsx","../src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx","../src/components/FormComponents/SingleItem/SingleItem.tsx","../src/components/FormComponents/Tables/Table.styles.tsx","../src/components/FormComponents/Tables/QItemGroupTableRow.tsx","../src/hooks/useInitialiseGroupTable.ts","../src/components/FormComponents/Tables/DeleteRowButton.tsx","../src/components/FormComponents/Tables/QItemGroupTable.tsx","../src/hooks/useInitialiseRepeatGroups.ts","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/react-transition-group/esm/utils/ChildMapping.js","../../../node_modules/react-transition-group/esm/TransitionGroup.js","../src/components/FormComponents/RepeatItem/RepeatItem.styles.tsx","../src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx","../src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx","../src/components/FormComponents/RepeatGroup/AddItemButton.tsx","../src/components/FormComponents/RepeatGroup/RepeatGroup.tsx","../src/components/FormComponents/RepeatItem/AddItemButton.tsx","../src/components/FormComponents/RepeatItem/DeleteItemButton.tsx","../src/components/FormComponents/RepeatItem/RepeatField.tsx","../src/hooks/useInitialiseRepeatAnswers.ts","../src/components/FormComponents/RepeatItem/RepeatItem.tsx","../src/components/FormComponents/GridGroup/GridRow.tsx","../src/components/FormComponents/GridGroup/GridTable.tsx","../src/components/FormComponents/GridGroup/GridGroup.tsx","../src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx","../src/components/FormComponents/GroupItem/GroupItem.tsx","../src/components/Lists.styles.ts","../src/components/Tabs/FormBodySingleTab.tsx","../src/components/Tabs/FormBodyTabList.tsx","../src/components/FormRenderer/FormBodyTabbed.tsx","../src/components/FormRenderer/FormBodySingleCollapsible.tsx","../src/components/FormRenderer/FormBodySingleCollapsibleWrapper.tsx","../src/components/FormRenderer/FormBodyCollapsible.tsx","../src/hooks/useResponsive.ts","../src/components/FormRenderer/FormTopLevelItem.tsx","../src/components/FormRenderer/FormRenderer.tsx","../src/components/FormRenderer/SmartFormsRenderer.tsx"],"sourcesContent":["/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Questionnaire,\n QuestionnaireItem,\n QuestionnaireResponse,\n QuestionnaireResponseItem\n} from 'fhir/r4';\n\nimport type { QrRepeatGroup } from '../interfaces/repeatGroup.interface';\n\n/**\n * Create a questionnaireResponse from a given questionnaire form item\n * A questionnaire form item is the first item of a questionnaire\n *\n * @author Sean Fong\n */\nexport function createQuestionnaireResponse(questionnaire: Questionnaire): QuestionnaireResponse {\n const questionnaireResponse: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n status: 'in-progress'\n };\n const firstTopLevelItem = questionnaire?.item?.[0];\n\n if (firstTopLevelItem) {\n questionnaireResponse.item = [\n {\n linkId: firstTopLevelItem.linkId,\n text: firstTopLevelItem.text,\n item: []\n }\n ];\n }\n\n if (questionnaire.id) {\n questionnaireResponse.questionnaire = `Questionnaire/${questionnaire.id}`;\n }\n\n return questionnaireResponse;\n}\n\n/**\n * Remove items with no answers from a given questionnaireResponse\n * Also remove any starting or trailing whitespace from valueStrings\n * Generated questionnaireResponse only has items with answers\n *\n * @author Sean Fong\n */\nexport function removeNoAnswerQrItem(\n qrItem: QuestionnaireResponseItem\n): QuestionnaireResponseItem | undefined {\n const items = qrItem.item;\n if (items && items.length > 0) {\n const itemsCleaned: QuestionnaireResponseItem[] = [];\n\n // only get items with answers\n items.forEach((item) => {\n const QrItemCleaned = removeNoAnswerQrItem(item);\n if (QrItemCleaned) {\n itemsCleaned.push(QrItemCleaned);\n }\n });\n\n return itemsCleaned.length > 0 ? { ...qrItem, item: itemsCleaned } : undefined;\n }\n\n // remove starting or trailing whitespace\n if (qrItem['answer'] && qrItem['answer'][0]['valueString']) {\n qrItem['answer'][0]['valueString'] = qrItem['answer'][0]['valueString'].trim();\n }\n\n // check answer when qrItem is a single question\n return qrItem['answer'] ? qrItem : undefined;\n}\n\n/**\n * Create an empty group qrItem from a given group qItem\n *\n * @author Sean Fong\n */\nexport function createQrGroup(qItem: QuestionnaireItem): QuestionnaireResponseItem {\n return {\n linkId: qItem.linkId,\n text: qItem.text,\n item: []\n };\n}\n\n/**\n * Create an empty qrItem from a given qItem\n *\n * @author Sean Fong\n */\nexport function createEmptyQrItem(qItem: QuestionnaireItem): QuestionnaireResponseItem {\n return {\n linkId: qItem.linkId,\n text: qItem.text\n };\n}\n\n/**\n * Create an empty qrItem from a given qItem with its display unit\n *\n * @author Sean Fong\n */\nexport function createEmptyQrItemWithUnit(\n qItem: QuestionnaireItem,\n unit: string\n): QuestionnaireResponseItem {\n return {\n linkId: qItem.linkId,\n text: unit !== '' ? `${qItem.text} (${unit})` : qItem.text\n };\n}\n\n/**\n * Updates the QuestionnaireResponseItem group by adding/removing a new/modified child QuestionnaireResponseItem into/from a qrGroup\n * Takes either a single newQrItem or an array of newQrItems\n *\n * @author Sean Fong\n */\nexport function updateQrGroup(\n newQrItem: QuestionnaireResponseItem | null,\n newQrRepeatGroup: QrRepeatGroup | null,\n qrGroup: QuestionnaireResponseItem,\n qItemsIndexMap: Record<string, number>\n): void {\n if (qrGroup['item']) {\n // Get actual sequence indexes of qrItems present within a qrGroup\n // e.g. qrGroup has 4 fields but only the 2nd and 3rd field have values - resulting array is [1, 2]\n const qrItemsRealIndexArr = qrGroup.item.map((qrItem) => qItemsIndexMap[qrItem.linkId]);\n\n if (newQrItem && newQrItem.linkId in qItemsIndexMap) {\n if (qrGroup.item.length === 0) {\n qrGroup.item.push(newQrItem);\n } else {\n // Get actual sequence index of qrItem within qrGroup\n const newQrItemIndex = qItemsIndexMap[newQrItem.linkId];\n\n for (let i = 0; i < qrItemsRealIndexArr.length; i++) {\n // Add qrItem at the end of qrGroup if it is larger than the other indexes\n if (newQrItemIndex > qrItemsRealIndexArr[i]) {\n if (i === qrItemsRealIndexArr.length - 1) {\n qrGroup.item.push(newQrItem);\n }\n continue;\n }\n\n // Replace or delete qrItem at its supposed position if its index is already present within qrGroup\n if (newQrItemIndex === qrItemsRealIndexArr[i]) {\n if (newQrItem.item?.length || newQrItem.answer?.length) {\n // newQrItem has answer value\n qrGroup.item[i] = newQrItem;\n } else {\n // newQrItem has no answer value\n qrGroup.item.splice(i, 1);\n }\n break;\n }\n\n // Add qrItem at its supposed position if its index is not present within qrGroup\n if (newQrItemIndex < qrItemsRealIndexArr[i]) {\n qrGroup.item.splice(i, 0, newQrItem);\n break;\n }\n }\n }\n } else if (newQrRepeatGroup && newQrRepeatGroup.linkId in qItemsIndexMap) {\n const newQrItems = newQrRepeatGroup.qrItems;\n if (qrGroup.item.length === 0) {\n qrGroup.item.push(...newQrItems);\n } else {\n // Get actual sequence index of qrItems within qrGroup\n const newQrItemIndex = qItemsIndexMap[newQrRepeatGroup.linkId];\n\n for (let i = 0; i < qrItemsRealIndexArr.length; i++) {\n // Add qrItem at the end of qrGroup if it is larger than the other indexes\n if (newQrItemIndex > qrItemsRealIndexArr[i]) {\n if (i === qrItemsRealIndexArr.length - 1) {\n qrGroup.item.push(...newQrItems);\n }\n continue;\n }\n\n // Replace or delete qrItem at its supposed position if its index is already present within qrGroup\n if (newQrItemIndex === qrItemsRealIndexArr[i]) {\n // Get number of repeatGroupItems that has the same linkId present in qrGroup\n let repeatGroupItemCount = 0;\n while (newQrItemIndex === qrItemsRealIndexArr[i + repeatGroupItemCount]) {\n repeatGroupItemCount++;\n }\n\n // Replace each repeat group qrItem with their new counterparts\n if (newQrItems.length === repeatGroupItemCount) {\n for (let j = 0; j < newQrItems.length; j++) {\n qrGroup.item[i + j] = newQrItems[j];\n }\n break;\n } else if (newQrItems.length > repeatGroupItemCount) {\n // Replace each repeat group qrItem with their new counterparts,\n // followed by adding an extra newQrItem behind the newly replaced qrItems\n for (let j = 0, k = repeatGroupItemCount; j < newQrItems.length; j++, k--) {\n if (k > 0) {\n qrGroup.item[i + j] = newQrItems[j];\n } else {\n qrGroup.item.splice(i + j, 0, newQrItems[j]);\n }\n }\n break;\n } else if (newQrItems.length < repeatGroupItemCount) {\n // Replace each repeat group qrItem with their new counterparts (except the last one),\n // followed by deleting the last newQrItem which wasn't replaced\n for (let j = 0; j < repeatGroupItemCount; j++) {\n if (j <= newQrItems.length - 1) {\n qrGroup.item[i + j] = newQrItems[j];\n } else {\n qrGroup.item.splice(i + j, 1);\n }\n }\n break;\n }\n }\n\n // Add qrItem at its supposed position if its index is not present within qrGroup\n if (newQrItemIndex < qrItemsRealIndexArr[i]) {\n for (let j = 0; j < newQrItems.length; j++) {\n qrGroup.item.splice(i + j, 0, newQrItems[j]);\n }\n break;\n }\n }\n }\n }\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Quantity,\n QuestionnaireItemEnableWhen,\n QuestionnaireResponse,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport cloneDeep from 'lodash.clonedeep';\nimport type { EnableWhenItemProperties, EnableWhenItems } from '../interfaces/enableWhen.interface';\n\n/**\n * Create a linkedQuestionsMap that contains linked items of enableWhen items\n * mapped to an array containing all its respective enableWhen items' linkIds\n * returns a key-value pair of <linkedItemId, [enableWhenItem1LinkId, enableWhenItem2LinkId, enableWhenItem3LinkId]>\n *\n * @author Sean Fong\n */\nexport function createEnableWhenLinkedQuestions(enableWhenItems: EnableWhenItems) {\n const linkedQuestionsMap: Record<string, string[]> = {};\n\n for (const linkId in enableWhenItems) {\n enableWhenItems[linkId].linked.forEach((linkedItem) => {\n const linkQId = linkedItem.enableWhen.question;\n if (!linkedQuestionsMap[linkQId]) {\n linkedQuestionsMap[linkQId] = [];\n }\n\n if (!linkedQuestionsMap[linkQId].includes(linkId)) {\n linkedQuestionsMap[linkQId].push(linkId);\n }\n });\n }\n return linkedQuestionsMap;\n}\n\n/**\n * Performs switching for non-group enableWhenItems based on their item types.\n *\n * @author Sean Fong\n */\nexport function isEnabledAnswerTypeSwitcher(\n enableWhen: QuestionnaireItemEnableWhen,\n answer: QuestionnaireResponseItemAnswer\n): boolean {\n if (enableWhen['answerBoolean'] !== undefined && enableWhen.operator === 'exists') {\n return answerOperatorSwitcher(enableWhen.answerBoolean, answer, enableWhen.operator);\n } else if (enableWhen['answerBoolean'] !== undefined && answer.valueBoolean !== undefined) {\n return answerOperatorSwitcher(\n enableWhen.answerBoolean,\n answer.valueBoolean,\n enableWhen.operator\n );\n } else if (enableWhen['answerDecimal'] && answer.valueDecimal) {\n return answerOperatorSwitcher(\n enableWhen.answerDecimal,\n answer.valueDecimal,\n enableWhen.operator\n );\n } else if (enableWhen['answerInteger'] !== undefined && answer.valueInteger !== undefined) {\n return answerOperatorSwitcher(\n enableWhen.answerInteger,\n answer.valueInteger,\n enableWhen.operator\n );\n } else if (enableWhen['answerDate'] && answer.valueDate) {\n return answerOperatorSwitcher(enableWhen.answerDate, answer.valueDate, enableWhen.operator);\n } else if (enableWhen['answerDateTime'] && answer.valueDateTime) {\n return answerOperatorSwitcher(\n enableWhen.answerDateTime,\n answer.valueDateTime,\n enableWhen.operator\n );\n } else if (enableWhen['answerTime'] && answer.valueTime) {\n return answerOperatorSwitcher(enableWhen.answerTime, answer.valueTime, enableWhen.operator);\n } else if (enableWhen['answerString'] && answer.valueString) {\n return answerOperatorSwitcher(enableWhen.answerString, answer.valueString, enableWhen.operator);\n } else if (enableWhen['answerCoding']?.code && answer.valueCoding?.code) {\n return answerOperatorSwitcher(\n enableWhen.answerCoding.code,\n answer.valueCoding.code,\n enableWhen.operator\n );\n } else if (enableWhen['answerQuantity'] && answer.valueQuantity) {\n return answerOperatorSwitcher(\n enableWhen.answerQuantity,\n answer.valueQuantity,\n enableWhen.operator\n );\n }\n return false;\n}\n\n/**\n * Performs switching for value and expected comparisons based on given operator\n *\n * @author Sean Fong\n */\nfunction answerOperatorSwitcher(\n expected: boolean | string | number | Quantity,\n value: boolean | string | number | Quantity | QuestionnaireResponseItemAnswer,\n operator: QuestionnaireItemEnableWhen['operator']\n): boolean {\n // FIXME runs even when the linked textbox is not changed\n switch (operator) {\n case 'exists':\n // check if value is an object and contains any answerValues\n return typeof value === 'object' && Object.keys(value).length !== 0;\n case '=':\n return value === expected;\n case '!=':\n return value !== expected;\n case '<':\n return value < expected;\n case '<=':\n return value <= expected;\n case '>':\n return value > expected;\n case '>=':\n return value >= expected;\n default:\n return false;\n }\n}\n\n/**\n * Read initial answer values in questionnaireResponse\n * return a map of initial values with key-value pair <linkedItemId, initial value>\n *\n * @author Sean Fong\n */\nexport function readInitialAnswers(\n questionnaireResponse: QuestionnaireResponse,\n linkedQuestionsMap: Record<string, string[]>\n): Record<string, QuestionnaireResponseItemAnswer[]> {\n if (!questionnaireResponse.item) return {};\n\n const initialValuesMap: Record<string, QuestionnaireResponseItemAnswer[]> = {};\n questionnaireResponse.item.forEach((item) => {\n readQuestionnaireResponseItemRecursive(item, initialValuesMap, linkedQuestionsMap);\n });\n return initialValuesMap;\n}\n\n/**\n * Read initial answer values of each qrItem recursively\n *\n * @author Sean Fong\n */\nfunction readQuestionnaireResponseItemRecursive(\n item: QuestionnaireResponseItem,\n initialValues: Record<string, QuestionnaireResponseItemAnswer[]>,\n linkedQuestionsMap: Record<string, string[]>\n) {\n const items = item.item;\n if (items && items.length > 0) {\n // iterate through items of item recursively\n items.forEach((item) => {\n readQuestionnaireResponseItemRecursive(item, initialValues, linkedQuestionsMap);\n });\n return;\n }\n\n // Read initial answer value of single qrItem\n if (linkedQuestionsMap[item.linkId] && item.answer) {\n initialValues[item.linkId] = item.answer;\n }\n\n return;\n}\n\n/**\n * Set initial answer values into enableWhenItems' answer attributes\n * Update enabled status of each enableWhenItem simultaneously\n *\n * @author Sean Fong\n */\nexport function setInitialAnswers(\n initialAnswers: Record<string, QuestionnaireResponseItemAnswer[]>,\n items: EnableWhenItems,\n linkedQuestionsMap: Record<string, string[]>\n): EnableWhenItems {\n let updatedItems = cloneDeep(items);\n\n if (initialAnswers) {\n for (const linkId in initialAnswers) {\n const linkedQuestions = linkedQuestionsMap[linkId];\n const newAnswer = initialAnswers[linkId];\n\n updatedItems = updateItemAnswer(updatedItems, linkedQuestions, linkId, newAnswer);\n }\n }\n return updatedItems;\n}\n\n/**\n * Update answer of the target linkId in every related enableWhenItem's linked items\n * Then update the enabled status of every related enableWhenItem\n *\n * @author Sean Fong\n */\nexport function updateItemAnswer(\n items: EnableWhenItems,\n linkedQuestions: string[],\n linkId: string,\n newAnswer: QuestionnaireResponseItemAnswer[]\n): EnableWhenItems {\n linkedQuestions.forEach((question) => {\n // Update modified linked answer\n items[question].linked.forEach((linkedItem) => {\n if (linkedItem.enableWhen.question === linkId) {\n linkedItem.answer = newAnswer ?? undefined;\n }\n });\n\n // Update enabled status of modified enableWhenItem\n items[question].isEnabled = checkItemIsEnabled(items[question]);\n });\n return items;\n}\n\n/**\n * Check if an enableWhenItem is enabled based on the answer of its linked items\n *\n * @author Sean Fong\n */\nexport function checkItemIsEnabled(enableWhenItemProperties: EnableWhenItemProperties): boolean {\n const checkedIsEnabledItems: boolean[] = [];\n\n enableWhenItemProperties.linked.forEach((linkedItem) => {\n if (linkedItem.answer && linkedItem.answer.length > 0) {\n linkedItem.answer.forEach((answer) => {\n checkedIsEnabledItems.push(isEnabledAnswerTypeSwitcher(linkedItem.enableWhen, answer));\n });\n }\n });\n\n if (checkedIsEnabledItems.length === 0) return false;\n\n return enableWhenItemProperties.enableBehavior === 'any'\n ? checkedIsEnabledItems.some((isEnabled) => isEnabled)\n : checkedIsEnabledItems.every((isEnabled) => isEnabled);\n}\n\nexport function assignPopulatedAnswersToEnableWhen(\n items: EnableWhenItems,\n questionnaireResponse: QuestionnaireResponse\n): { initialisedItems: EnableWhenItems; linkedQuestions: Record<string, string[]> } {\n const linkedQuestions = createEnableWhenLinkedQuestions(items);\n const initialAnswers = readInitialAnswers(questionnaireResponse, linkedQuestions);\n items = initialiseBooleanFalses(items);\n\n const initialisedItems =\n Object.keys(initialAnswers).length > 0\n ? setInitialAnswers(initialAnswers, items, linkedQuestions)\n : items;\n\n return { initialisedItems, linkedQuestions };\n}\n\nfunction initialiseBooleanFalses(items: EnableWhenItems): EnableWhenItems {\n for (const linkId in items) {\n const checkedIsEnabledItems: boolean[] = [];\n const enableWhenItemProperties = items[linkId];\n\n for (const linkedItem of enableWhenItemProperties.linked) {\n if (linkedItem.enableWhen.answerBoolean === true && linkedItem.enableWhen.operator === '!=') {\n checkedIsEnabledItems.push(true);\n continue;\n }\n\n if (linkedItem.enableWhen.answerBoolean === false && linkedItem.enableWhen.operator === '=') {\n checkedIsEnabledItems.push(true);\n continue;\n }\n\n checkedIsEnabledItems.push(false);\n }\n\n enableWhenItemProperties.isEnabled =\n enableWhenItemProperties.enableBehavior === 'any'\n ? checkedIsEnabledItems.some((isEnabled) => isEnabled)\n : checkedIsEnabledItems.every((isEnabled) => isEnabled);\n }\n\n return items;\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';\n\nexport const emptyQuestionnaire: Questionnaire = {\n resourceType: 'Questionnaire',\n status: 'draft'\n};\n\nexport const emptyResponse: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n status: 'in-progress'\n};\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { EnableWhenExpression } from '../interfaces/enableWhen.interface';\nimport type { Expression, QuestionnaireResponse } from 'fhir/r4';\nimport { createFhirPathContext } from './fhirpath';\nimport fhirpath from 'fhirpath';\nimport fhirpath_r4_model from 'fhirpath/fhir-context/r4';\nimport _isEqual from 'lodash/isEqual';\nimport { emptyResponse } from './emptyResource';\nimport cloneDeep from 'lodash.clonedeep';\n\ninterface EvaluateInitialEnableWhenExpressionsParams {\n initialResponse: QuestionnaireResponse;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n variablesFhirPath: Record<string, Expression[]>;\n}\n\nexport function evaluateInitialEnableWhenExpressions(\n params: EvaluateInitialEnableWhenExpressionsParams\n): Record<string, EnableWhenExpression> {\n const { initialResponse, enableWhenExpressions, variablesFhirPath } = params;\n\n // Return early if initialResponse is empty\n if (_isEqual(initialResponse, cloneDeep(emptyResponse))) {\n return enableWhenExpressions;\n }\n\n const initialExpressions: Record<string, EnableWhenExpression> = { ...enableWhenExpressions };\n\n if (Object.keys(initialExpressions).length > 0) {\n const fhirPathContext: Record<string, any> = createFhirPathContext(\n initialResponse,\n variablesFhirPath\n );\n\n for (const linkId in initialExpressions) {\n try {\n const result = fhirpath.evaluate(\n initialResponse,\n enableWhenExpressions[linkId].expression,\n fhirPathContext,\n fhirpath_r4_model\n );\n\n if (result.length > 0) {\n initialExpressions[linkId].isEnabled = result[0];\n }\n\n // handle intersect edge case - evualate() returns empty array if result is false\n if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {\n initialExpressions[linkId].isEnabled = false;\n }\n } catch (e) {\n console.warn(\n e.message,\n `LinkId: ${linkId}\\nExpression: ${enableWhenExpressions[linkId].expression}`\n );\n }\n }\n }\n return initialExpressions;\n}\n\nexport function evaluateEnableWhenExpressions(\n fhirPathContext: Record<string, any>,\n enableWhenExpressions: Record<string, EnableWhenExpression>\n): {\n enableWhenExpsIsUpdated: boolean;\n updatedEnableWhenExpressions: Record<string, EnableWhenExpression>;\n} {\n const updatedEnableWhenExpressions: Record<string, EnableWhenExpression> = {\n ...enableWhenExpressions\n };\n\n let isUpdated = false;\n for (const linkId in updatedEnableWhenExpressions) {\n try {\n const result = fhirpath.evaluate(\n '',\n enableWhenExpressions[linkId].expression,\n fhirPathContext,\n fhirpath_r4_model\n );\n\n if (result.length > 0) {\n if (enableWhenExpressions[linkId].isEnabled !== result[0]) {\n isUpdated = true;\n updatedEnableWhenExpressions[linkId].isEnabled = result[0];\n }\n }\n\n // handle intersect edge case - evualate() returns empty array if result is false\n if (enableWhenExpressions[linkId].expression.includes('intersect') && result.length === 0) {\n updatedEnableWhenExpressions[linkId].isEnabled = false;\n }\n } catch (e) {\n console.warn(\n e.message,\n `LinkId: ${linkId}\\nExpression: ${enableWhenExpressions[linkId].expression}`\n );\n }\n }\n\n return {\n enableWhenExpsIsUpdated: isUpdated,\n updatedEnableWhenExpressions: updatedEnableWhenExpressions\n };\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Coding,\n Expression,\n Extension,\n QuestionnaireItem,\n QuestionnaireResponse\n} from 'fhir/r4';\nimport type { RegexValidation } from '../interfaces/regex.interface';\n\n/**\n * Check if the extension has an itemControl code equal to the given itemControlCode\n *\n * @author Sean Fong\n */\nexport function isSpecificItemControl(qItem: QuestionnaireItem, itemControlCode: string): boolean {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl'\n );\n if (itemControl) {\n const code = itemControl.valueCodeableConcept?.coding?.find(\n (coding: Coding) => coding.code === itemControlCode\n );\n if (code) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Check if the extension has an displayCategory code equal to the given displayCategory\n *\n * @author Sean Fong\n */\nexport function isSpecificDisplayCategory(\n qItem: QuestionnaireItem,\n itemControlCode: string\n): boolean {\n const displayCategory = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory'\n );\n if (displayCategory) {\n const code = displayCategory.valueCodeableConcept?.coding?.find(\n (coding: Coding) => coding.code === itemControlCode\n );\n if (code) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Check if the extension has url for items that use shortText\n *\n * @author Sean Fong\n */\nexport function getShortText(qItem: QuestionnaireItem): string | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-shortText'\n );\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString;\n }\n }\n return null;\n}\n\n/**\n * Check if the extension has url for hidden questions\n *\n * @author Sean Fong\n */\nexport function hasHiddenExtension(qItem: QuestionnaireItem): boolean {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-hidden'\n );\n\n if (itemControl) {\n if (itemControl.valueBoolean) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Check if an answerExpression extension is present\n *\n * @author Sean Fong\n */\nexport function getAnswerExpression(qItem: QuestionnaireItem): Expression | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-answerExpression' &&\n extension.valueExpression?.language === 'text/fhirpath'\n );\n if (itemControl) {\n if (itemControl.valueExpression) {\n return itemControl.valueExpression;\n }\n }\n return null;\n}\n\n/**\n * Check if the extension has url for items that use open label\n *\n * @author Sean Fong\n */\nexport function getOpenLabelText(qItem: QuestionnaireItem): string | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-openLabel'\n );\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString;\n }\n }\n return null;\n}\n\n/**\n * Check if the decimal value has a quantity precision for the decimal value\n *\n * @author Sean Fong\n */\nexport function getDecimalPrecision(qItem: QuestionnaireItem): number | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/quantity-precision'\n );\n if (itemControl) {\n if (itemControl.valueInteger) {\n return itemControl.valueInteger;\n }\n }\n return null;\n}\n\n/**\n * Check if the extension has a url for xhtml rendering\n *\n * @author Sean Fong\n */\nexport function getXHtmlString(qItem: QuestionnaireItem): string | null {\n let xHtmlString = null;\n if (qItem.extension) {\n xHtmlString = getXHtmlStringFromExtension(qItem.extension);\n if (xHtmlString) {\n return xHtmlString;\n }\n }\n\n if (qItem._text?.extension) {\n xHtmlString = getXHtmlStringFromExtension(qItem._text?.extension);\n if (xHtmlString) {\n return xHtmlString;\n }\n }\n\n return null;\n}\n\nexport function getXHtmlStringFromExtension(extensions: Extension[]): string | null {\n const itemControl = extensions?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-xhtml'\n );\n\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString;\n }\n }\n\n return null;\n}\n\n/**\n * Check if the item label (text) has a valueMarkdown extension\n *\n * @author Sean Fong\n */\nexport function getMarkdownString(qItem: QuestionnaireItem): string | null {\n const itemControl = qItem._text?.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-markdown'\n );\n\n if (itemControl) {\n if (itemControl.valueMarkdown) {\n return itemControl.valueMarkdown;\n }\n }\n return null;\n}\n\n/**\n * Get questionnaire name from questionnaireResponse\n * If questionnaireResponse does not have a name, fallback to questionnaireResponse questionnaireId\n *\n * @author Sean Fong\n */\nexport function getQuestionnaireNameFromResponse(\n questionnaireResponse: QuestionnaireResponse\n): string {\n const itemControl = questionnaireResponse._questionnaire?.extension?.find(\n (extension: Extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/display'\n );\n\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString.charAt(0).toUpperCase() + itemControl.valueString.slice(1);\n }\n }\n\n return questionnaireResponse.id ?? 'Unnamed Response';\n}\n\n/**\n * Get text display prompt for items with itemControlCode prompt and has a prompt childItem\n *\n * @author Sean Fong\n */\nexport function getTextDisplayPrompt(qItem: QuestionnaireItem): string {\n if (qItem.item) {\n for (const childItem of qItem.item) {\n if (childItem.type === 'display' && isSpecificItemControl(childItem, 'prompt')) {\n const promptText = `${childItem.text}`;\n return promptText[0].toUpperCase() + promptText.substring(1);\n }\n }\n }\n return '';\n}\n\n/**\n * Check if item is readonly\n *\n * @author Sean Fong\n */\nexport function getReadOnly(qItem: QuestionnaireItem): boolean {\n return !!qItem.readOnly;\n}\n\n/**\n * Get decimal text display unit for items with itemControlCode unit and has a unit childItem\n *\n * @author Sean Fong\n */\nexport function getTextDisplayUnit(qItem: QuestionnaireItem): string {\n if (qItem.item) {\n for (const childItem of qItem.item) {\n if (childItem.type === 'display' && isSpecificItemControl(childItem, 'unit')) {\n return `${childItem.text}`;\n }\n }\n }\n return '';\n}\n\n/**\n * Get text display instructions for items with itemControlCode instructions and has an instructions childItem\n *\n * @author Sean Fong\n */\nexport function getTextDisplayInstructions(qItem: QuestionnaireItem): string {\n if (qItem.item) {\n for (const childItem of qItem.item) {\n if (childItem.type === 'display' && isSpecificDisplayCategory(childItem, 'instructions')) {\n return `${childItem.text}`;\n }\n }\n }\n return '';\n}\n\n/**\n * Get entry format if its extension is present\n * i.e. DD-MM-YYYY for dates, HH:MM for times etc.\n *\n * @author Sean Fong\n */\nexport function getEntryFormat(qItem: QuestionnaireItem): string {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/entryFormat'\n );\n\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString;\n }\n }\n return '';\n}\n\n/**\n * Get entry format if its extension is present\n * i.e. DD-MM-YYYY for dates, HH:MM for times etc.\n *\n * @author Sean Fong\n */\nexport function getRegexValidation(qItem: QuestionnaireItem): RegexValidation | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/regex'\n );\n\n // Get regex expression from extension\n if (itemControl) {\n const extensionString = itemControl.valueString;\n if (extensionString) {\n let regexString;\n if (extensionString.includes('matches(')) {\n regexString = extensionString.substring(\n extensionString.indexOf(\"matches('\") + \"matches('\".length,\n extensionString.lastIndexOf(\"')\")\n );\n } else {\n regexString = extensionString;\n }\n\n return { expression: new RegExp(regexString), feedback: null };\n }\n }\n\n // Get regex expression from item types if regex extensions not present\n if (qItem.type === 'url') {\n return { expression: new RegExp(/^\\S*$/), feedback: 'URLs should not contain any whitespaces' };\n }\n\n return null;\n}\n\n/**\n * Get maximum length of characters allowed if present\n *\n * @author Sean Fong\n */\nexport function getMaxLength(qItem: QuestionnaireItem): number | null {\n return qItem.maxLength ?? null;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum QItemChoiceControl {\n Radio = 'radio',\n Select = 'select',\n Autocomplete = 'autocomplete',\n Checkbox = 'check-box'\n}\n\nexport enum QItemOpenChoiceControl {\n Select = 'select',\n Autocomplete = 'autocomplete',\n Checkbox = 'check-box',\n Radio = 'radio'\n}\n\nexport enum QItemChoiceOrientation {\n Horizontal = 'horizontal',\n Vertical = 'vertical'\n}\n\nexport enum CheckBoxOptionType {\n AnswerOption = 'answerOption',\n AnswerValueSet = 'answerValueSet'\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Coding,\n Extension,\n QuestionnaireItem,\n QuestionnaireItemAnswerOption,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport { QItemChoiceControl, QItemChoiceOrientation } from '../interfaces/choice.enum';\nimport { isSpecificItemControl } from './itemControl';\n\n/**\n * Get choice control type based on certain criteria in choice items\n *\n * @author Sean Fong\n */\nexport function getChoiceControlType(qItem: QuestionnaireItem) {\n const dropdownOptionsCount = 5;\n if (isSpecificItemControl(qItem, 'autocomplete')) {\n return QItemChoiceControl.Autocomplete;\n }\n\n if (isSpecificItemControl(qItem, 'check-box')) {\n return QItemChoiceControl.Checkbox;\n }\n\n if (isSpecificItemControl(qItem, 'radio-button')) {\n return QItemChoiceControl.Radio;\n }\n\n if (isSpecificItemControl(qItem, 'drop-down')) {\n return QItemChoiceControl.Select;\n }\n\n if (qItem.answerOption) {\n return qItem.answerOption.length > 0 && qItem.answerOption.length < dropdownOptionsCount\n ? QItemChoiceControl.Radio\n : QItemChoiceControl.Select;\n } else {\n return QItemChoiceControl.Select;\n }\n}\n\n/**\n * Find and return corresponding answerOption based on selected answer in form\n *\n * @author Sean Fong\n */\nexport function findInAnswerOptions(\n answerOptions: QuestionnaireItemAnswerOption[],\n selected: string\n): QuestionnaireResponseItemAnswer | undefined {\n for (const option of answerOptions) {\n if (option['valueCoding']) {\n if (selected === option.valueCoding.code) {\n return option;\n }\n } else if (option['valueString']) {\n if (selected === option.valueString) {\n return option;\n }\n } else if (option['valueInteger']) {\n if (selected === option.valueInteger.toString()) {\n return option;\n }\n }\n }\n}\n\n/**\n * Find and return corresponding coding from AnswerValyeSet based on selected answer in form\n *\n * @author Sean Fong\n */\nexport function findInAnswerValueSetCodings(\n codings: Coding[],\n selected: string\n): QuestionnaireResponseItemAnswer | undefined {\n for (const coding of codings) {\n if (selected === coding.code) {\n return coding;\n }\n }\n}\n\n/**\n * Find and return string value from selected answer\n *\n * @author Sean Fong\n */\nexport function getQrChoiceValue(\n qrChoice: QuestionnaireResponseItem,\n returnNull?: boolean\n): string | null {\n if (qrChoice['answer']) {\n const answer = qrChoice['answer'][0];\n if (answer['valueCoding']) {\n return answer.valueCoding.code ? answer.valueCoding.code : '';\n } else if (answer['valueString'] !== undefined) {\n return answer.valueString;\n } else if (answer['valueInteger']) {\n return answer.valueInteger.toString();\n }\n }\n return returnNull ? null : '';\n}\n\n/**\n * Update choice checkbox group answers based on checkbox changes\n *\n * @author Sean Fong\n */\nexport function updateQrCheckboxAnswers(\n changedValue: string,\n answers: QuestionnaireResponseItemAnswer[],\n answerOptions: QuestionnaireItemAnswerOption[],\n qrChoiceCheckbox: QuestionnaireResponseItem,\n isMultiSelection: boolean\n): QuestionnaireResponseItem | null {\n // search for answer item of changedValue from list of answer options\n const newAnswer = findInAnswerOptions(answerOptions, changedValue);\n if (!newAnswer) return null;\n\n if (isMultiSelection && answers.length > 0) {\n // check and filter if new answer exists in existing qrAnswers\n const updatedAnswers = answers.filter(\n (answer) => JSON.stringify(answer) !== JSON.stringify(newAnswer)\n );\n\n // new answer is not present in existing answers, so we add it to the array\n if (updatedAnswers.length === answers.length) {\n updatedAnswers.push(newAnswer);\n }\n\n return { ...qrChoiceCheckbox, answer: updatedAnswers };\n } else {\n return answers.some((answer) => JSON.stringify(answer) === JSON.stringify(newAnswer))\n ? { ...qrChoiceCheckbox, answer: [] }\n : { ...qrChoiceCheckbox, answer: [newAnswer] };\n }\n}\n\n/**\n * Get choice orientation from its itemControl\n *\n * @author Sean Fong\n */\nexport function getChoiceOrientation(qItem: QuestionnaireItem): QItemChoiceOrientation {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-choiceOrientation'\n );\n if (itemControl) {\n const code = itemControl.valueCode;\n if (code) {\n if (code === 'horizontal') {\n return QItemChoiceOrientation.Horizontal;\n } else if (code === 'vertical') {\n return QItemChoiceOrientation.Vertical;\n }\n }\n }\n return QItemChoiceOrientation.Vertical;\n}\n\n/**\n * Converts an array of codings to an array of valueCodings which can use the QuestionnaireItemAnswerOption type\n *\n * @author Sean Fong\n */\nexport function mapCodingsToOptions(codings: Coding[]): QuestionnaireItemAnswerOption[] {\n return codings.map((coding) => {\n return {\n valueCoding: coding\n };\n });\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Coding,\n QuestionnaireItem,\n QuestionnaireItemAnswerOption,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport { CheckBoxOptionType, QItemOpenChoiceControl } from '../interfaces/choice.enum';\nimport { isSpecificItemControl } from './itemControl';\nimport { findInAnswerOptions, findInAnswerValueSetCodings } from './choice';\n\n/**\n * Update open-choice checkbox group answers based on checkbox changes\n *\n * @author Sean Fong\n */\nexport function updateQrOpenChoiceCheckboxAnswers(\n changedOptionAnswer: string | null,\n changedOpenLabelAnswer: string | null,\n answers: QuestionnaireResponseItemAnswer[],\n answerOptions: QuestionnaireItemAnswerOption[] | Coding[],\n qrChoiceCheckbox: QuestionnaireResponseItem,\n checkboxOptionType: CheckBoxOptionType,\n isMultiSelection: boolean\n): QuestionnaireResponseItem | null {\n if (changedOptionAnswer) {\n const newAnswer =\n checkboxOptionType === CheckBoxOptionType.AnswerOption\n ? findInAnswerOptions(answerOptions, changedOptionAnswer)\n : findInAnswerValueSetCodings(answerOptions, changedOptionAnswer);\n if (!newAnswer) return null;\n\n if (isMultiSelection && answers.length > 0) {\n // check if new answer exists in existing answers\n const newAnswerInAnswers =\n checkboxOptionType === CheckBoxOptionType.AnswerOption\n ? findInAnswerOptions(answers, changedOptionAnswer)\n : findInAnswerValueSetCodings(answers, changedOptionAnswer);\n\n if (newAnswerInAnswers) {\n // remove new answer from qrAnswers\n const newAnswers = [...answers].filter(\n (answer) => JSON.stringify(answer) !== JSON.stringify(newAnswerInAnswers)\n );\n return { ...qrChoiceCheckbox, answer: newAnswers };\n } else {\n // add new answer to qrAnswers\n return { ...qrChoiceCheckbox, answer: [...answers, newAnswer] };\n }\n } else {\n return answers.some((answer) => JSON.stringify(answer) === JSON.stringify(newAnswer))\n ? { ...qrChoiceCheckbox, answer: [] }\n : { ...qrChoiceCheckbox, answer: [newAnswer] };\n }\n } else if (changedOpenLabelAnswer !== null) {\n const newOpenLabelAnswer = { valueString: changedOpenLabelAnswer };\n const oldOpenLabelAnswer: QuestionnaireResponseItemAnswer | null = getOldOpenLabelAnswer(\n answers,\n answerOptions\n );\n\n if (answers.length === 0) {\n if (changedOpenLabelAnswer === '') {\n return { linkId: qrChoiceCheckbox.linkId, text: qrChoiceCheckbox.text };\n } else {\n return { ...qrChoiceCheckbox, answer: [newOpenLabelAnswer] };\n }\n }\n\n if (isMultiSelection) {\n if (!oldOpenLabelAnswer) {\n // append newOpenLabel if oldOpenLabel doesnt exist\n return {\n ...qrChoiceCheckbox,\n answer: [...answers, newOpenLabelAnswer]\n };\n } else {\n // An oldOpenLabel already exists\n // Remove oldOpenLabel from answers\n const answersWithoutOpenLabel = [...answers].filter(\n (answer) => JSON.stringify(answer) !== JSON.stringify(oldOpenLabelAnswer)\n );\n\n if (\n JSON.stringify(newOpenLabelAnswer) === JSON.stringify(oldOpenLabelAnswer) ||\n changedOpenLabelAnswer === ''\n ) {\n // User unchecks openLabel checkbox or clears field\n if (answersWithoutOpenLabel.length > 0) {\n return { ...qrChoiceCheckbox, answer: answersWithoutOpenLabel };\n } else {\n return { linkId: qrChoiceCheckbox.linkId, text: qrChoiceCheckbox.text };\n }\n } else {\n // User changes openLabel value\n return {\n ...qrChoiceCheckbox,\n answer: [...answersWithoutOpenLabel, newOpenLabelAnswer]\n };\n }\n }\n } else {\n if (!oldOpenLabelAnswer || newOpenLabelAnswer !== oldOpenLabelAnswer) {\n // set newOpenLabel as sole answer if oldOpenLabel doesnt exist OR if user changed openLabel value\n return { ...qrChoiceCheckbox, answer: [newOpenLabelAnswer] };\n } else {\n // User unchecks openLabel checkbox\n return { ...qrChoiceCheckbox, answer: [] };\n }\n }\n } else {\n // Default condition which will not happen\n return { ...qrChoiceCheckbox };\n }\n}\n\nexport function getOldOpenLabelAnswer(\n answers: QuestionnaireResponseItemAnswer[],\n options: QuestionnaireItemAnswerOption[]\n): QuestionnaireResponseItemAnswer | null {\n const openLabelAnswers = answers.filter((answer) => options.indexOf(answer) === -1);\n return openLabelAnswers.length > 0 ? openLabelAnswers[0] : null;\n}\n\n/**\n * Get openChoice control type from qItem\n * defaults to select if no control code is provided\n *\n * @author Sean Fong\n */\nexport function getOpenChoiceControlType(qItem: QuestionnaireItem) {\n if (isSpecificItemControl(qItem, 'autocomplete')) {\n return QItemOpenChoiceControl.Autocomplete;\n } else if (isSpecificItemControl(qItem, 'check-box')) {\n return QItemOpenChoiceControl.Checkbox;\n } else if (isSpecificItemControl(qItem, 'radio-button')) {\n return QItemOpenChoiceControl.Radio;\n } else {\n return QItemOpenChoiceControl.Select;\n }\n}\n\n/**\n * Get string label from given answerOption\n *\n * @author Sean Fong\n */\nexport function getAnswerOptionLabel(option: QuestionnaireItemAnswerOption | string): string {\n if (typeof option === 'string') {\n return option;\n }\n\n if (option['valueCoding']) {\n return `${option.valueCoding.display}`;\n } else if (option['valueString']) {\n return option.valueString;\n } else if (option['valueInteger']) {\n return option.valueInteger.toString();\n } else {\n return '';\n }\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Extension, Questionnaire, QuestionnaireItem } from 'fhir/r4';\nimport { hasHiddenExtension } from './itemControl';\nimport { getChoiceControlType } from './choice';\nimport { QItemChoiceControl, QItemOpenChoiceControl } from '../interfaces/choice.enum';\nimport { getOpenChoiceControlType } from './openChoice';\nimport type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';\n\ninterface isHiddenParams {\n questionnaireItem: QuestionnaireItem;\n enableWhenIsActivated: boolean;\n enableWhenItems: EnableWhenItems;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n}\n\n/**\n * Test the given QItem on a series of checks to verify if the item should be displayed\n * Check if qItem has hidden attribute\n * Check if qItem fufilled its enableWhen criteria\n *\n * @author Sean Fong\n */\nexport function isHidden(params: isHiddenParams): boolean {\n const { questionnaireItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } =\n params;\n if (hasHiddenExtension(questionnaireItem)) {\n return true;\n }\n\n return isHiddenByEnableWhens({\n linkId: questionnaireItem.linkId,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n}\n\ninterface isHiddenByEnableWhensParams {\n linkId: string;\n enableWhenIsActivated: boolean;\n enableWhenItems: EnableWhenItems;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n}\n\nexport function isHiddenByEnableWhens(params: isHiddenByEnableWhensParams): boolean {\n const { linkId, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;\n\n if (enableWhenIsActivated) {\n if (enableWhenItems[linkId]) {\n return !enableWhenItems[linkId].isEnabled;\n }\n\n if (enableWhenExpressions[linkId]) {\n return !enableWhenExpressions[linkId].isEnabled;\n }\n }\n\n return false;\n}\n\n/**\n * Check if qItem is a repeat item AND if it isn't a checkbox item\n * Note: repeat checkbox items are rendered as multi-select checkbox instead of being rendered as a traditional repeat item\n *\n * @author Sean Fong\n */\nexport function isRepeatItemAndNotCheckbox(qItem: QuestionnaireItem): boolean {\n const isCheckbox =\n getChoiceControlType(qItem) === QItemChoiceControl.Checkbox ||\n getOpenChoiceControlType(qItem) === QItemOpenChoiceControl.Checkbox;\n\n return !!qItem['repeats'] && !isCheckbox;\n}\n\nexport function getXHtmlStringFromQuestionnaire(questionnaire: Questionnaire): string | null {\n const itemControl = questionnaire._title?.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-xhtml'\n );\n\n if (itemControl) {\n if (itemControl.valueString) {\n return itemControl.valueString;\n }\n }\n return null;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { isRepeatItemAndNotCheckbox } from './qItem';\n\n/**\n * Generate an array of QuestionnaireResponseItems corresponding to its QuestionnaireItem indexes an array.\n * QuestionnaireItems without a corresponding QuestionnaireResponseItem is set as undefined.\n * i.e. QItems = [QItem0, QItem1, QItem2]. Only QItem0 and QItem2 have QrItems\n * Generated array: [QrItem0, undefined, QrItem2]\n *\n * @author Sean Fong\n */\nexport function getQrItemsIndex(\n qItems: QuestionnaireItem[],\n qrItems: QuestionnaireResponseItem[],\n qItemsIndexMap: Record<string, number>\n): (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] {\n // Generate a <linkId, QrItem OR QrItems> dictionary\n const qrItemsCollected: Record<string, QuestionnaireResponseItem | QuestionnaireResponseItem[]> =\n {};\n for (const qrItem of qrItems) {\n const linkId = qrItem.linkId;\n\n // If item already exists, it has multiple qrItems and is therefore a repeat group\n if (qrItemsCollected[linkId]) {\n let storedValue = qrItemsCollected[linkId];\n\n // Create an array out of initial stored value if it is not an array initially\n if (!Array.isArray(storedValue)) {\n storedValue = [storedValue];\n }\n\n // Push new qrItem into array\n storedValue.push(qrItem);\n qrItemsCollected[linkId] = storedValue;\n } else {\n const qItemIndex = qItemsIndexMap[linkId];\n\n // Assign either a qrItem array or a single qrItem based on whether it is a repeatGroup or not\n const isRepeatGroup =\n isRepeatItemAndNotCheckbox(qItems[qItemIndex]) && qItems[qItemIndex].type === 'group';\n\n qrItemsCollected[linkId] = isRepeatGroup ? [qrItem] : qrItem;\n }\n }\n\n // Generate an array of QuestionnaireResponseItems corresponding to its QuestionnaireItem indexes in sequence\n // Qitems with no answers has a default value of undefined\n return qItems.reduce(\n (mapping: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[], qItem, i) => {\n const qrItemOrItems = qrItemsCollected[qItem.linkId];\n // If qItem is a repeat group, default its value to an array instead of undefined\n if (isRepeatItemAndNotCheckbox(qItem) && qItem.type === 'group') {\n mapping[i] = qrItemOrItems ? qrItemsCollected[qItem.linkId] : [];\n } else {\n mapping[i] = qrItemsCollected[qItem.linkId];\n }\n return mapping;\n },\n []\n );\n}\n\n/**\n * Generate a dictionary of QuestionnaireItems linkIds mapped to their respective array indexes <linkId, QItemIndex>\n * i.e. { ee2589d5: 0, f9aaa187: 1, 88cab112: 2 }\n * where ee2589d5, f9aaa187 and 88cab112 are linkIds of QItem0, QItem1 and QItem2 respectively\n *\n * @author Sean Fong\n */\nexport function mapQItemsIndex(qGroup: QuestionnaireItem): Record<string, number> {\n if (!qGroup.item) {\n return {};\n }\n\n // generate a <linkId, QItemIndex> dictionary\n return qGroup.item.reduce((mapping: Record<string, number>, item, i) => {\n mapping[item.linkId] = i;\n return mapping;\n }, {});\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';\nimport fhirpath from 'fhirpath';\nimport fhirpath_r4_model from 'fhirpath/fhir-context/r4';\nimport type {\n Expression,\n Questionnaire,\n QuestionnaireItem,\n QuestionnaireResponse,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport _isEqual from 'lodash/isEqual';\nimport { emptyResponse } from './emptyResource';\nimport { createFhirPathContext } from './fhirpath';\nimport { getQrItemsIndex, mapQItemsIndex } from './mapItem';\nimport { updateQrGroup } from './qrItem';\nimport cloneDeep from 'lodash.clonedeep';\n\ninterface EvaluateInitialCalculatedExpressionsParams {\n initialResponse: QuestionnaireResponse;\n calculatedExpressions: Record<string, CalculatedExpression>;\n variablesFhirPath: Record<string, Expression[]>;\n}\n\nexport function evaluateInitialCalculatedExpressions(\n params: EvaluateInitialCalculatedExpressionsParams\n): Record<string, CalculatedExpression> {\n const { initialResponse, calculatedExpressions, variablesFhirPath } = params;\n\n // Return early if initialResponse is empty\n if (_isEqual(initialResponse, cloneDeep(emptyResponse))) {\n return calculatedExpressions;\n }\n\n const initialExpressions: Record<string, CalculatedExpression> = { ...calculatedExpressions };\n\n if (Object.keys(initialExpressions).length > 0) {\n const fhirPathContext: Record<string, any> = createFhirPathContext(\n initialResponse,\n variablesFhirPath\n );\n\n for (const linkId in initialExpressions) {\n try {\n const result = fhirpath.evaluate(\n initialResponse,\n calculatedExpressions[linkId].expression,\n fhirPathContext,\n fhirpath_r4_model\n );\n\n if (calculatedExpressions[linkId].value !== result[0]) {\n initialExpressions[linkId].value = result[0];\n }\n } catch (e) {\n console.warn(\n e.message,\n `LinkId: ${linkId}\\nExpression: ${calculatedExpressions[linkId].expression}`\n );\n }\n }\n }\n return initialExpressions;\n}\n\nexport function evaluateCalculatedExpressions(\n fhirPathContext: Record<string, any>,\n calculatedExpressions: Record<string, CalculatedExpression>\n): {\n calculatedExpsIsUpdated: boolean;\n updatedCalculatedExpressions: Record<string, CalculatedExpression>;\n} {\n const updatedCalculatedExpressions: Record<string, CalculatedExpression> = {\n ...calculatedExpressions\n };\n\n let isUpdated = false;\n for (const linkId in calculatedExpressions) {\n try {\n const result = fhirpath.evaluate(\n '',\n calculatedExpressions[linkId].expression,\n fhirPathContext,\n fhirpath_r4_model\n );\n\n if (result.length > 0) {\n if (calculatedExpressions[linkId].value !== result[0]) {\n isUpdated = true;\n updatedCalculatedExpressions[linkId].value = result[0];\n }\n }\n } catch (e) {\n console.warn(\n e.message,\n `LinkId: ${linkId}\\nExpression: ${calculatedExpressions[linkId].expression}`\n );\n }\n }\n\n return {\n calculatedExpsIsUpdated: isUpdated,\n updatedCalculatedExpressions: updatedCalculatedExpressions\n };\n}\n\nexport function initialiseCalculatedExpressionValues(\n questionnaire: Questionnaire,\n populatedResponse: QuestionnaireResponse,\n calculatedExpressions: Record<string, CalculatedExpression>\n): QuestionnaireResponse {\n const calculatedExpressionsWithValues = Object.keys(calculatedExpressions)\n .filter((key) => calculatedExpressions[key].value !== undefined)\n .reduce(\n (mapping: Record<string, CalculatedExpression>, key: string) => (\n (mapping[key] = calculatedExpressions[key]), mapping\n ),\n {}\n );\n\n if (\n !questionnaire.item ||\n questionnaire.item.length === 0 ||\n !populatedResponse.item ||\n populatedResponse.item.length === 0\n ) {\n return populatedResponse;\n }\n\n const topLevelQrItems: QuestionnaireResponseItem[] = [];\n for (const [index, topLevelQItem] of questionnaire.item.entries()) {\n const populatedTopLevelQrItem = populatedResponse.item[index] ?? {\n linkId: topLevelQItem.linkId,\n text: topLevelQItem.text,\n item: []\n };\n\n const updatedTopLevelQRItem = initialiseItemCalculatedExpressionValueRecursive(\n topLevelQItem,\n populatedTopLevelQrItem,\n calculatedExpressionsWithValues\n );\n\n if (Array.isArray(updatedTopLevelQRItem)) {\n if (updatedTopLevelQRItem.length > 0) {\n topLevelQrItems.push(...updatedTopLevelQRItem);\n }\n continue;\n }\n\n if (updatedTopLevelQRItem) {\n topLevelQrItems.push(updatedTopLevelQRItem);\n }\n }\n\n return { ...populatedResponse, item: topLevelQrItems };\n}\n\nfunction initialiseItemCalculatedExpressionValueRecursive(\n qItem: QuestionnaireItem,\n qrItem: QuestionnaireResponseItem | undefined,\n calculatedExpressions: Record<string, CalculatedExpression>\n): QuestionnaireResponseItem[] | QuestionnaireResponseItem | null {\n const childQItems = qItem.item;\n if (childQItems && childQItems.length > 0) {\n // iterate through items of item recursively\n const childQrItems = qrItem?.item ?? [];\n // const updatedChildQrItems: QuestionnaireResponseItem[] = [];\n\n // FIXME Not implemented for repeat groups\n if (qItem.type === 'group' && qItem.repeats) {\n return qrItem ?? null;\n }\n\n const indexMap = mapQItemsIndex(qItem);\n const qrItemsByIndex = getQrItemsIndex(childQItems, childQrItems, indexMap);\n\n // Otherwise loop through qItem as usual\n for (const [index, childQItem] of childQItems.entries()) {\n const childQrItem = qrItemsByIndex[index];\n\n // FIXME Not implemented for repeat groups\n if (Array.isArray(childQrItem)) {\n continue;\n }\n\n const newQrItem = initialiseItemCalculatedExpressionValueRecursive(\n childQItem,\n childQrItem,\n calculatedExpressions\n );\n\n // FIXME Not implemented for repeat groups\n if (Array.isArray(newQrItem)) {\n continue;\n }\n\n if (newQrItem) {\n updateQrGroup(\n newQrItem,\n null,\n qrItem ?? { linkId: qItem.linkId, text: qItem.text, item: [] },\n indexMap\n );\n }\n }\n\n return constructGroupItem(qItem, qrItem, calculatedExpressions);\n }\n\n return constructSingleItem(qItem, calculatedExpressions);\n}\n\nfunction constructGroupItem(\n qItem: QuestionnaireItem,\n qrItem: QuestionnaireResponseItem | undefined,\n calculatedExpressions: Record<string, CalculatedExpression>\n): QuestionnaireResponseItem | null {\n const itemCalculatedExpression = calculatedExpressions[qItem.linkId];\n let calculatedExpressionAnswer: QuestionnaireResponseItemAnswer | undefined;\n if (itemCalculatedExpression && itemCalculatedExpression.value) {\n calculatedExpressionAnswer = parseValueToAnswer(qItem, itemCalculatedExpression.value);\n }\n\n // If group item has an existing answer, do not overwrite it with calculated expression value\n if (qrItem?.answer && qrItem?.answer.length > 0) {\n return qrItem ?? null;\n }\n\n if (!calculatedExpressionAnswer) {\n return qrItem ?? null;\n }\n\n if (qrItem) {\n return {\n ...qrItem,\n answer: [calculatedExpressionAnswer]\n };\n }\n\n return {\n linkId: qItem.linkId,\n text: qItem.text,\n answer: [calculatedExpressionAnswer]\n };\n}\n\nfunction constructSingleItem(\n qItem: QuestionnaireItem,\n calculatedExpressions: Record<string, CalculatedExpression>\n): QuestionnaireResponseItem | null {\n const itemCalculatedExpression = calculatedExpressions[qItem.linkId];\n let calculatedExpressionAnswer: QuestionnaireResponseItemAnswer | undefined;\n if (itemCalculatedExpression && itemCalculatedExpression.value) {\n calculatedExpressionAnswer = parseValueToAnswer(qItem, itemCalculatedExpression.value);\n }\n\n if (!calculatedExpressionAnswer) {\n return null;\n }\n\n return {\n linkId: qItem.linkId,\n text: qItem.text,\n answer: [calculatedExpressionAnswer]\n };\n}\n\nfunction parseValueToAnswer(\n qItem: QuestionnaireItem,\n value: string | number\n): QuestionnaireResponseItemAnswer {\n if (typeof value === 'number') {\n if (qItem.type === 'integer') {\n return { valueInteger: value };\n }\n\n return { valueDecimal: value };\n }\n\n return { valueString: value };\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fhirpath from 'fhirpath';\nimport fhirpath_r4_model from 'fhirpath/fhir-context/r4';\nimport type { Expression, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';\nimport type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';\nimport type { EnableWhenExpression } from '../interfaces/enableWhen.interface';\nimport { evaluateEnableWhenExpressions } from './enableWhenExpression';\nimport { evaluateCalculatedExpressions } from './calculatedExpression';\n\ninterface EvaluateUpdatedExpressionsParams {\n updatedResponse: QuestionnaireResponse;\n calculatedExpressions: Record<string, CalculatedExpression>;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n variablesFhirPath: Record<string, Expression[]>;\n}\n\nexport function evaluateUpdatedExpressions(params: EvaluateUpdatedExpressionsParams): {\n isUpdated: boolean;\n updatedEnableWhenExpressions: Record<string, EnableWhenExpression>;\n updatedCalculatedExpressions: Record<string, CalculatedExpression>;\n} {\n const { updatedResponse, enableWhenExpressions, calculatedExpressions, variablesFhirPath } =\n params;\n\n const hasExpressionToBeUpdated =\n Object.keys(enableWhenExpressions).length > 0 || Object.keys(calculatedExpressions).length > 0;\n if (hasExpressionToBeUpdated && updatedResponse.item) {\n const fhirPathContext: Record<string, any> = createFhirPathContext(\n updatedResponse,\n variablesFhirPath\n );\n\n // Update enableWhenExpressions\n const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } = evaluateEnableWhenExpressions(\n fhirPathContext,\n enableWhenExpressions\n );\n\n // Update calculatedExpressions\n const { calculatedExpsIsUpdated, updatedCalculatedExpressions } = evaluateCalculatedExpressions(\n fhirPathContext,\n calculatedExpressions\n );\n\n const isUpdated = enableWhenExpsIsUpdated || calculatedExpsIsUpdated;\n\n return { isUpdated, updatedEnableWhenExpressions, updatedCalculatedExpressions };\n }\n\n return {\n isUpdated: false,\n updatedEnableWhenExpressions: enableWhenExpressions,\n updatedCalculatedExpressions: calculatedExpressions\n };\n}\n\nexport function createFhirPathContext(\n questionnaireResponse: QuestionnaireResponse,\n variablesFhirPath: Record<string, Expression[]>\n): Record<string, any> {\n const fhirPathContext: Record<string, any> = { resource: questionnaireResponse };\n\n if (!questionnaireResponse.item || questionnaireResponse.item.length === 0) {\n return fhirPathContext;\n }\n\n evaluateResourceLevelFhirPath(questionnaireResponse, variablesFhirPath, fhirPathContext);\n\n for (const topLevelItem of questionnaireResponse.item) {\n evaluateFhirPathRecursive(topLevelItem, variablesFhirPath, fhirPathContext);\n }\n\n return fhirPathContext;\n}\n\nexport function evaluateFhirPathRecursive(\n item: QuestionnaireResponseItem,\n variablesFhirPath: Record<string, Expression[]>,\n fhirPathContext: Record<string, any>\n) {\n const items = item.item;\n if (items && items.length > 0) {\n // iterate through items of item recursively\n for (const childItem of items) {\n evaluateFhirPathRecursive(childItem, variablesFhirPath, fhirPathContext);\n }\n }\n\n evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext);\n}\n\nexport function evaluateItemFhirPath(\n item: QuestionnaireResponseItem,\n variablesFhirPath: Record<string, Expression[]>,\n fhirPathContext: Record<string, any>\n) {\n const variablesOfItem = variablesFhirPath[item.linkId];\n if (!variablesOfItem || variablesOfItem.length === 0) {\n return;\n }\n\n variablesOfItem.forEach((variable) => {\n if (variable.expression) {\n try {\n fhirPathContext[`${variable.name}`] = fhirpath.evaluate(\n item,\n {\n base: 'QuestionnaireResponse.item',\n expression: variable.expression\n },\n fhirPathContext,\n fhirpath_r4_model\n );\n } catch (e) {\n console.warn(e.message, `LinkId: ${item.linkId}\\nExpression: ${variable.expression}`);\n }\n }\n });\n}\n\nexport function evaluateResourceLevelFhirPath(\n resource: QuestionnaireResponse,\n variablesFhirPath: Record<string, Expression[]>,\n fhirPathContext: Record<string, any>\n) {\n const questionnaireLevelVariables = variablesFhirPath['QuestionnaireLevel'];\n if (!questionnaireLevelVariables || questionnaireLevelVariables.length === 0) {\n return;\n }\n\n questionnaireLevelVariables.forEach((variable) => {\n if (variable.expression) {\n try {\n fhirPathContext[`${variable.name}`] = fhirpath.evaluate(\n resource,\n {\n base: 'QuestionnaireResponse',\n expression: variable.expression\n },\n fhirPathContext,\n fhirpath_r4_model\n );\n } catch (e) {\n console.warn(e.message, `Questionnaire-level\\nExpression: ${variable.expression}`);\n }\n }\n });\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Extension, Questionnaire } from 'fhir/r4';\nimport type {\n LaunchContext,\n QuestionnaireLevelXFhirQueryVariable,\n SourceQuery\n} from '../interfaces/populate.interface';\n\nexport function getLaunchContexts(questionnaire: Questionnaire): LaunchContext[] {\n if (questionnaire.extension && questionnaire.extension.length > 0) {\n return questionnaire.extension.filter((extension) =>\n isLaunchContext(extension)\n ) as LaunchContext[];\n }\n\n return [];\n}\n\nexport function isLaunchContext(extension: Extension): extension is LaunchContext {\n const hasLaunchContextName =\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&\n !!extension.extension?.find(\n (ext) =>\n ext.url === 'name' &&\n (ext.valueId ||\n (ext.valueCoding &&\n (ext.valueCoding.code === 'patient' ||\n ext.valueCoding.code === 'encounter' ||\n ext.valueCoding.code === 'location' ||\n ext.valueCoding.code === 'user' ||\n ext.valueCoding.code === 'study' ||\n ext.valueCoding.code === 'sourceQueries')))\n );\n\n const hasLaunchContextType = !!extension.extension?.find(\n (ext) =>\n ext.url === 'type' &&\n ext.valueCode &&\n (ext.valueCode === 'Patient' ||\n ext.valueCode === 'Practitioner' ||\n ext.valueCode === 'Encounter')\n );\n\n return (\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&\n hasLaunchContextName &&\n hasLaunchContextType\n );\n}\n\n// get source query references\nexport function getSourceQueries(questionnaire: Questionnaire): SourceQuery[] {\n if (questionnaire.extension && questionnaire.extension.length > 0) {\n return questionnaire.extension.filter((extension) => isSourceQuery(extension)) as SourceQuery[];\n }\n\n return [];\n}\n\nexport function isSourceQuery(extension: Extension): extension is SourceQuery {\n return (\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-sourceQueries' &&\n !!extension.valueReference\n );\n}\n\n/**\n * Filter x-fhir-query variables from questionnaire's extensions needed for population\n *\n * @author Sean Fong\n */\nexport function getQuestionnaireLevelXFhirQueryVariables(\n questionnaire: Questionnaire\n): QuestionnaireLevelXFhirQueryVariable[] {\n if (questionnaire.extension && questionnaire.extension.length > 0) {\n return questionnaire.extension.filter((extension) =>\n isXFhirQueryVariable(extension)\n ) as QuestionnaireLevelXFhirQueryVariable[];\n }\n\n return [];\n}\n\nexport function isXFhirQueryVariable(\n extension: Extension\n): extension is QuestionnaireLevelXFhirQueryVariable {\n return (\n extension.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&\n !!extension.valueExpression?.name &&\n extension.valueExpression?.language === 'application/x-fhir-query' &&\n !!extension.valueExpression?.expression\n );\n}\n","import type { Questionnaire } from 'fhir/r4';\nimport type { LaunchContext } from '../../interfaces/populate.interface';\nimport { isLaunchContext } from '../populateContexts';\n\nexport function extractLaunchContexts(questionnaire: Questionnaire): Record<string, LaunchContext> {\n if (!questionnaire.extension || questionnaire.extension.length === 0) {\n return {};\n }\n\n const launchContexts: Record<string, LaunchContext> = {};\n for (const ext of questionnaire.extension) {\n if (isLaunchContext(ext)) {\n const launchContextName = ext.extension[0].valueId ?? ext.extension[0].valueCoding?.code;\n if (launchContextName) {\n launchContexts[launchContextName] = ext;\n }\n }\n }\n\n return launchContexts;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Expression, Extension, Questionnaire } from 'fhir/r4';\nimport type { Variables } from '../../interfaces/variables.interface';\n\nexport function extractQuestionnaireLevelVariables(questionnaire: Questionnaire): Variables {\n const variables: Variables = { fhirPathVariables: {}, xFhirQueryVariables: {} };\n\n variables.fhirPathVariables['QuestionnaireLevel'] = [];\n\n if (!questionnaire.extension || questionnaire.extension.length === 0) {\n return variables;\n }\n\n variables.fhirPathVariables['QuestionnaireLevel'] = getFhirPathVariables(questionnaire.extension);\n\n for (const exp of getXFhirQueryVariables(questionnaire.extension)) {\n if (exp.name) {\n variables.xFhirQueryVariables[exp.name] = {\n valueExpression: exp\n };\n }\n }\n\n return variables;\n}\n\n/**\n * Get fhirpath variables from an array of extensions\n *\n * @author Sean Fong\n */\nexport function getFhirPathVariables(extensions: Extension[]): Expression[] {\n return (\n extensions\n .filter(\n (extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&\n extension.valueExpression?.language === 'text/fhirpath'\n )\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map((extension) => extension.valueExpression!)\n );\n}\n\n/**\n * Get x-fhir-query variables from an array of extensions\n *\n * @author Sean Fong\n */\nexport function getXFhirQueryVariables(extensions: Extension[]): Expression[] {\n return (\n extensions\n .filter(\n (extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&\n extension.valueExpression?.language === 'application/x-fhir-query'\n )\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map((extension) => extension.valueExpression!)\n );\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Tabs } from '../interfaces/tab.interface';\nimport type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';\nimport type { Coding, QuestionnaireItem } from 'fhir/r4';\nimport { hasHiddenExtension, isSpecificItemControl } from './itemControl';\nimport { isHiddenByEnableWhens } from './qItem';\n\nexport function getFirstVisibleTab(\n tabs: Tabs,\n enableWhenItems: EnableWhenItems,\n enableWhenExpressions: Record<string, EnableWhenExpression>\n) {\n return Object.entries(tabs)\n .sort(([, tabA], [, tabB]) => tabA.tabIndex - tabB.tabIndex)\n .findIndex(([tabLinkId, tab]) => {\n if (tab.isHidden) {\n return false;\n }\n\n if (enableWhenItems[tabLinkId]) {\n return enableWhenItems[tabLinkId].isEnabled;\n }\n\n if (enableWhenExpressions[tabLinkId]) {\n return enableWhenExpressions[tabLinkId].isEnabled;\n }\n\n return true;\n });\n}\n/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Checks if any of the items in a qItem array is a tabbed item\n * Returns true if there is at least one tabbed item\n *\n * @author Sean Fong\n */\nexport function containsTabs(topLevelQItem: QuestionnaireItem): boolean {\n if (!topLevelQItem.item) {\n return false;\n }\n\n const tabs = getTabbedItems(topLevelQItem.item);\n return tabs.length > 0;\n}\n\n/**\n * Checks if a top-level QItem is a tab container\n * All items within a tab container are tabbed items\n *\n * @author Sean Fong\n */\nexport function isTabContainer(topLevelQItem: QuestionnaireItem): boolean {\n return isSpecificItemControl(topLevelQItem, 'tab-container');\n}\n\n/**\n * Get tabbed items from a qItem array\n *\n * @author Sean Fong\n */\nexport function getTabbedItems(items: QuestionnaireItem[]): QuestionnaireItem[] {\n return items.filter((i: QuestionnaireItem) => isTab(i));\n}\n\n/**\n * Check if a qItem is a tabbed item\n *\n * @author Sean Fong\n */\nexport function isTab(item: QuestionnaireItem) {\n const itemControl = item.extension?.find(\n (e) => e.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl'\n );\n\n if (itemControl) {\n const tabCoding = itemControl.valueCodeableConcept?.coding?.find(\n (c: Coding) => c.code === 'tab'\n );\n if (tabCoding) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Create a <linkId, {isComplete: boolean}> key-value pair for all tabbed items in a qItem array\n *\n * @author Sean Fong\n */\nexport function constructTabsWithProperties(\n qItems: QuestionnaireItem[] | undefined,\n hasTabContainer: boolean\n): Tabs {\n if (!qItems) return {};\n\n const qItemTabs = hasTabContainer ? qItems : qItems.filter(isTab);\n\n const tabs: Tabs = {};\n for (const [i, qItem] of qItemTabs.entries()) {\n tabs[qItem.linkId] = {\n tabIndex: i,\n isComplete: false,\n isHidden: hasHiddenExtension(qItem)\n };\n }\n return tabs;\n}\n\ninterface constructTabsWithVisibilityParams {\n tabs: Tabs;\n enableWhenIsActivated: boolean;\n enableWhenItems: EnableWhenItems;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n}\n\nexport function constructTabsWithVisibility(\n params: constructTabsWithVisibilityParams\n): { linkId: string; isVisible: boolean }[] {\n const { tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;\n\n return Object.entries(tabs).map(([linkId]) => {\n const isVisible = !isHiddenByEnableWhens({\n linkId,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n\n return {\n linkId,\n isVisible\n };\n });\n}\n\ninterface getNextVisibleTabIndexParams {\n tabs: Tabs;\n currentTabIndex: number;\n enableWhenIsActivated: boolean;\n enableWhenItems: EnableWhenItems;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n}\n/**\n * Get index of next visible tab\n *\n * @author Sean Fong\n */\nexport function getNextVisibleTabIndex(params: getNextVisibleTabIndexParams): number {\n const { tabs, currentTabIndex, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } =\n params;\n\n const tabsWithVisibility = constructTabsWithVisibility({\n tabs,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n\n let nextTabIndex = currentTabIndex + 1;\n const nextTabIndexIsVisible = false;\n while (!nextTabIndexIsVisible) {\n if (tabsWithVisibility[nextTabIndex].isVisible) {\n return nextTabIndex;\n }\n nextTabIndex++;\n }\n\n return nextTabIndex;\n}\n/**\n *\n * Get index of first visible tab\n *\n * @author Sean Fong\n */\nexport function getFirstVisibleTabIndex(\n tabs: Tabs,\n enableWhenIsActivated: boolean,\n enableWhenItems: EnableWhenItems,\n enableWhenExpressions: Record<string, EnableWhenExpression>\n): number | undefined {\n const tabsWithVisibility = constructTabsWithVisibility({\n tabs,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n return tabsWithVisibility.findIndex((tab) => tab.isVisible);\n}\n\n/**\n *\n * Find number of visible tabs\n *\n * @author Sean Fong\n */\nexport function findNumOfVisibleTabs(\n tabs: Tabs,\n enableWhenIsActivated: boolean,\n enableWhenItems: EnableWhenItems,\n enableWhenExpressions: Record<string, EnableWhenExpression>\n): number {\n const tabsWithVisibility = constructTabsWithVisibility({\n tabs,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n return tabsWithVisibility.filter((tab) => tab.isVisible).length;\n}\n\nexport function getContextDisplays(item: QuestionnaireItem): QuestionnaireItem[] {\n if (!item.item || item.item.length === 0) {\n return [];\n }\n\n return item.item.filter(\n (childItem) =>\n isSpecificItemControl(childItem, 'context-display') && childItem.type === 'display'\n );\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { constructTabsWithProperties, isTabContainer } from '../tabs';\nimport type { Questionnaire } from 'fhir/r4';\nimport type { Tabs } from '../../interfaces/tab.interface';\n\nexport function extractTabs(questionnaire: Questionnaire): Tabs {\n if (!questionnaire.item || questionnaire.item.length === 0) {\n return {};\n }\n\n let totalTabs = {};\n for (const topLevelItem of questionnaire.item) {\n const items = topLevelItem.item;\n const topLevelItemIsTabContainer = isTabContainer(topLevelItem);\n\n const tabs = constructTabsWithProperties(items, topLevelItemIsTabContainer);\n totalTabs = { ...totalTabs, ...tabs };\n }\n\n return totalTabs;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Coding,\n Encounter,\n Expression,\n Extension,\n FhirResource,\n Patient,\n Practitioner,\n QuestionnaireItem,\n ValueSet\n} from 'fhir/r4';\nimport * as FHIR from 'fhirclient';\nimport type { FhirResourceString } from '../interfaces/populate.interface';\nimport type { ValueSetPromise } from '../interfaces/valueSet.interface';\nimport type { VariableXFhirQuery } from '../interfaces/variables.interface';\n\nconst VALID_VALUE_SET_URL_REGEX =\n /https?:\\/\\/(www\\.)?[-\\w@:%.+~#=]{2,256}\\.[a-z]{2,4}\\b([-@\\w:%+.~#?&/=]*ValueSet[-@\\w:%+.~#?&/=]*)/;\n\nconst VALID_FHIRPATH_VARIABLE_REGEX = /%(.*?)\\./;\nconst ONTOSERVER_ENDPOINT = 'https://r4.ontoserver.csiro.au/fhir/';\n\nexport function getTerminologyServerUrl(qItem: QuestionnaireItem): string | undefined {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url === 'http://hl7.org/fhir/StructureDefinition/terminology-server'\n );\n if (itemControl) {\n return itemControl.valueUrl;\n }\n return undefined;\n}\n\nexport function getValueSetPromise(url: string, terminologyServer?: string): Promise<ValueSet> {\n let valueSetUrl = url;\n\n if (url.includes('ValueSet/$expand?url=')) {\n const splitUrl = url.split('ValueSet/$expand?url=');\n terminologyServer = splitUrl[0];\n valueSetUrl = splitUrl[1];\n }\n\n valueSetUrl = valueSetUrl.replace('|', '&version=');\n\n return FHIR.client({ serverUrl: terminologyServer ?? ONTOSERVER_ENDPOINT }).request({\n url: 'ValueSet/$expand?url=' + valueSetUrl\n });\n}\n\nexport async function resolvePromises(\n valueSetPromises: Record<string, ValueSetPromise>\n): Promise<Record<string, ValueSetPromise>> {\n const newValueSetPromises: Record<string, ValueSetPromise> = {};\n\n const valueSetPromiseKeys = Object.keys(valueSetPromises);\n const valueSetPromiseValues = Object.values(valueSetPromises);\n const promises = valueSetPromiseValues.map((valueSetPromise) => valueSetPromise.promise);\n\n const settledPromises = await Promise.allSettled(promises);\n\n for (const [i, settledPromise] of settledPromises.entries()) {\n // Only add valueSet if the promise was fulfilled\n if (settledPromise.status === 'fulfilled') {\n const valueSet = settledPromise.value;\n const key = valueSetPromiseKeys[i];\n const valueSetPromise = valueSetPromiseValues[i];\n\n if (key && valueSetPromise) {\n valueSetPromise.valueSet = valueSet;\n newValueSetPromises[key] = valueSetPromise;\n }\n }\n }\n return newValueSetPromises;\n}\n\n/**\n * Sets an array of codings with the values from a valueSet\n *\n * @author Sean Fong\n */\nexport function getValueSetCodings(valueSet: ValueSet): Coding[] {\n return valueSet.expansion?.contains?.map((coding) => coding) ?? [];\n}\n\n/**\n * Evaluate valueSets in answerExpression with fhirpath\n *\n * @author Sean Fong\n */\nexport function evaluateAnswerExpressionValueSet(\n answerExpression: Expression,\n itemLevelVariables: Expression[],\n preprocessedCodings: Record<string, Coding[]>\n): Coding[] {\n const expression = answerExpression.expression;\n if (!expression) return [];\n\n const match = expression.match(VALID_FHIRPATH_VARIABLE_REGEX);\n const variableName = match?.[1];\n if (!variableName) return [];\n\n const matchedVariable = itemLevelVariables?.find((variable) => variable.name === variableName);\n if (!matchedVariable) return [];\n\n const valueSetExpression = matchedVariable.expression;\n if (!valueSetExpression) return [];\n\n if (!VALID_VALUE_SET_URL_REGEX.test(valueSetExpression)) return [];\n\n return preprocessedCodings[valueSetExpression] ?? [];\n}\n\nexport function createValueSetToXFhirQueryVariableNameMap(\n variables: Record<string, VariableXFhirQuery>\n): Record<string, string> {\n const valueSetToNameMap: Record<string, string> = {};\n for (const [name, variable] of Object.entries(variables)) {\n const expressionStr = variable.valueExpression.expression;\n if (expressionStr && VALID_VALUE_SET_URL_REGEX.test(expressionStr)) {\n valueSetToNameMap[expressionStr] = name;\n }\n }\n return valueSetToNameMap;\n}\n\nexport function getResourceFromLaunchContext(\n resourceType: FhirResourceString,\n patient: Patient | null,\n user: Practitioner | null,\n encounter: Encounter | null\n): FhirResource | null {\n switch (resourceType) {\n case 'Patient':\n return patient;\n case 'Practitioner':\n return user;\n case 'Encounter':\n return encounter;\n }\n return null;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ValueSetPromise } from '../../interfaces/valueSet.interface';\nimport { getValueSetCodings, getValueSetPromise } from '../valueSet';\nimport type { Coding, Questionnaire, ValueSet } from 'fhir/r4';\n\nexport function extractContainedValueSets(questionnaire: Questionnaire): {\n processedValueSetCodings: Record<string, Coding[]>;\n processedValueSetUrls: Record<string, string>;\n valueSetPromises: Record<string, ValueSetPromise>;\n} {\n if (!questionnaire.contained || questionnaire.contained.length === 0) {\n return { processedValueSetCodings: {}, processedValueSetUrls: {}, valueSetPromises: {} };\n }\n\n // Process contained ValueSets\n const processedValueSetCodings: Record<string, Coding[]> = {};\n const processedValueSetUrls: Record<string, string> = {};\n const valueSetPromises: Record<string, ValueSetPromise> = {};\n for (const entry of questionnaire.contained) {\n if (entry.resourceType !== 'ValueSet' || !entry.id) {\n continue;\n }\n\n if (entry.expansion) {\n // Store contained valueSet codings\n processedValueSetCodings[entry.id] = getValueSetCodings(entry);\n continue;\n }\n\n // Add unexpanded contained ValueSets to valueSetPromiseMap\n const valueSetUrl = getValueSetUrlFromContained(entry);\n if (valueSetUrl) {\n valueSetPromises[entry.id] = {\n promise: getValueSetPromise(valueSetUrl)\n };\n continue;\n }\n\n if (entry.url) {\n processedValueSetUrls[entry.id] = entry.url;\n }\n }\n\n return { processedValueSetCodings, processedValueSetUrls, valueSetPromises };\n}\n\n/**\n * Sets an array of codings with the values from a valueSet\n *\n * @author Sean Fong\n */\nexport function getValueSetUrlFromContained(valueSet: ValueSet): string {\n const urls = valueSet.compose?.include?.map((include) =>\n include.valueSet?.[0] ? include.valueSet[0] : ''\n );\n\n return urls && urls.length > 0 ? urls[0] : '';\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Expression, Extension, Questionnaire, QuestionnaireItem } from 'fhir/r4';\nimport type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';\nimport type {\n EnableWhenExpression,\n EnableWhenItemProperties,\n EnableWhenLinkedItem\n} from '../../interfaces/enableWhen.interface';\nimport type { AnswerExpression } from '../../interfaces/answerExpression.interface';\nimport type { ValueSetPromise } from '../../interfaces/valueSet.interface';\nimport { getAnswerExpression } from '../itemControl';\nimport { getTerminologyServerUrl, getValueSetPromise } from '../valueSet';\nimport type { Variables } from '../../interfaces/variables.interface';\nimport { getFhirPathVariables, getXFhirQueryVariables } from './extractVariables';\n\ninterface ReturnParamsRecursive {\n variables: Variables;\n enableWhenItems: Record<string, EnableWhenItemProperties>;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n calculatedExpressions: Record<string, CalculatedExpression>;\n answerExpressions: Record<string, AnswerExpression>;\n valueSetPromises: Record<string, ValueSetPromise>;\n}\n\nexport function extractOtherExtensions(\n questionnaire: Questionnaire,\n variables: Variables,\n valueSetPromises: Record<string, ValueSetPromise>\n): ReturnParamsRecursive {\n const enableWhenItems: Record<string, EnableWhenItemProperties> = {};\n const enableWhenExpressions: Record<string, EnableWhenExpression> = {};\n const calculatedExpressions: Record<string, CalculatedExpression> = {};\n const answerExpressions: Record<string, AnswerExpression> = {};\n\n if (!questionnaire.item || questionnaire.item.length === 0) {\n return {\n variables: variables,\n enableWhenItems: {},\n enableWhenExpressions: {},\n calculatedExpressions: {},\n answerExpressions: {},\n valueSetPromises: valueSetPromises\n };\n }\n\n for (const topLevelItem of questionnaire.item) {\n extractExtensionsFromItemRecursive({\n item: topLevelItem,\n variables,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n answerExpressions,\n valueSetPromises\n });\n }\n\n return {\n variables,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n answerExpressions,\n valueSetPromises\n };\n}\n\ninterface extractExtensionsFromItemRecursiveParams {\n item: QuestionnaireItem;\n variables: Variables;\n enableWhenItems: Record<string, EnableWhenItemProperties>;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n calculatedExpressions: Record<string, CalculatedExpression>;\n answerExpressions: Record<string, AnswerExpression>;\n valueSetPromises: Record<string, ValueSetPromise>;\n}\n\nfunction extractExtensionsFromItemRecursive(\n params: extractExtensionsFromItemRecursiveParams\n): ReturnParamsRecursive {\n const {\n item,\n variables,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n answerExpressions,\n valueSetPromises\n } = params;\n\n const items = item.item;\n if (items && items.length > 0) {\n // iterate through items of item recursively\n for (const childItem of items) {\n extractExtensionsFromItemRecursive({\n ...params,\n item: childItem\n });\n }\n }\n\n // Read enable when items, enablehen/calculated/answer expressions, valueSets and variables from qItem\n const enableWhenItemProperties = getEnableWhenItemProperties(item);\n if (enableWhenItemProperties) {\n enableWhenItems[item.linkId] = enableWhenItemProperties;\n }\n\n const enableWhenExpression = getEnableWhenExpression(item);\n if (enableWhenExpression) {\n enableWhenExpressions[item.linkId] = {\n expression: `${enableWhenExpression.expression}`\n };\n }\n\n const calculatedExpression = getCalculatedExpression(item);\n if (calculatedExpression) {\n calculatedExpressions[item.linkId] = {\n expression: `${calculatedExpression.expression}`\n };\n }\n\n const answerExpression = getAnswerExpression(item);\n if (answerExpression) {\n answerExpressions[item.linkId] = {\n expression: `${answerExpression.expression}`\n };\n }\n\n const valueSetUrl = item.answerValueSet;\n if (valueSetUrl) {\n if (!valueSetPromises[valueSetUrl] && !valueSetUrl.startsWith('#')) {\n const terminologyServerUrl = getTerminologyServerUrl(item);\n valueSetPromises[valueSetUrl] = {\n promise: getValueSetPromise(valueSetUrl, terminologyServerUrl)\n };\n }\n }\n\n if (item.extension) {\n variables.fhirPathVariables[item.linkId] = getFhirPathVariables(item.extension);\n\n for (const expression of getXFhirQueryVariables(item.extension)) {\n if (expression.name) {\n variables.xFhirQueryVariables[expression.name] = {\n valueExpression: expression\n };\n }\n }\n }\n\n return {\n variables,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n answerExpressions,\n valueSetPromises\n };\n}\n\n/**\n * Get enableWhen items' linked items and enableBehaviour attribute and save them in an EnableWhenItemProperties object\n *\n * @author Sean Fong\n */\nexport function getEnableWhenItemProperties(\n qItem: QuestionnaireItem\n): EnableWhenItemProperties | null {\n const enableWhen = qItem.enableWhen;\n if (enableWhen) {\n const enableWhenItemProperties: EnableWhenItemProperties = { linked: [], isEnabled: false };\n enableWhenItemProperties.linked = enableWhen.map((linkedItem): EnableWhenLinkedItem => {\n return { enableWhen: linkedItem };\n });\n\n if (qItem.enableBehavior) {\n enableWhenItemProperties.enableBehavior = qItem.enableBehavior;\n }\n\n return enableWhenItemProperties;\n }\n return null;\n}\n\n/**\n * Check if an enableWhenExpression extension is present\n *\n * @author Sean Fong\n */\nexport function getEnableWhenExpression(qItem: QuestionnaireItem): Expression | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression' &&\n extension.valueExpression?.language === 'text/fhirpath'\n );\n if (itemControl) {\n if (itemControl.valueExpression) {\n return itemControl.valueExpression;\n }\n }\n return null;\n}\n\n/**\n * Check if an calculatedExpression extension is present\n *\n * @author Sean Fong\n */\nexport function getCalculatedExpression(qItem: QuestionnaireItem): Expression | null {\n const itemControl = qItem.extension?.find(\n (extension: Extension) =>\n extension.url ===\n 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression' &&\n extension.valueExpression?.language === 'text/fhirpath'\n );\n if (itemControl) {\n if (itemControl.valueExpression) {\n return itemControl.valueExpression;\n }\n }\n return null;\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Coding } from 'fhir/r4';\nimport {\n createValueSetToXFhirQueryVariableNameMap,\n getValueSetCodings,\n getValueSetPromise,\n resolvePromises\n} from '../valueSet';\nimport type { Variables } from '../../interfaces/variables.interface';\nimport type { ValueSetPromise } from '../../interfaces/valueSet.interface';\n\nexport async function resolveValueSets(\n variables: Variables,\n valueSetPromises: Record<string, ValueSetPromise>,\n processedValueSetCodings: Record<string, Coding[]>\n): Promise<{ variables: Variables; processedValueSetCodings: Record<string, Coding[]> }> {\n // Create a <valueSetUrl, XFhirQueryVariableName> map\n const valueSetToXFhirQueryVariableNameMap: Record<string, string> =\n createValueSetToXFhirQueryVariableNameMap(variables.xFhirQueryVariables);\n\n if (Object.keys(valueSetToXFhirQueryVariableNameMap).length > 0) {\n for (const valueSetUrl in valueSetToXFhirQueryVariableNameMap) {\n valueSetPromises[valueSetUrl] = {\n promise: getValueSetPromise(valueSetUrl)\n };\n }\n }\n\n // Resolve promises and store valueSet codings in preprocessedValueSetCodings AND XFhirQueryVariables\n const resolvedPromises = await resolvePromises(valueSetPromises);\n\n for (const valueSetUrl in resolvedPromises) {\n const valueSet = resolvedPromises[valueSetUrl].valueSet;\n\n if (valueSet) {\n if (valueSetToXFhirQueryVariableNameMap[valueSetUrl]) {\n // valueSetUrl is in x-fhir-query variables, save to variable\n const variableName = valueSetToXFhirQueryVariableNameMap[valueSetUrl];\n const variable = variables.xFhirQueryVariables[variableName];\n variables.xFhirQueryVariables[variableName] = {\n ...variable,\n result: resolvedPromises[valueSetUrl].valueSet\n };\n } else {\n // valueSetUrl is in x-fhir-query variables, save to preprocessedValueSetCodings\n processedValueSetCodings[valueSetUrl] = getValueSetCodings(valueSet);\n }\n }\n }\n\n return { variables, processedValueSetCodings };\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Extension } from 'fhir/r4';\nimport type { Variables } from '../../interfaces/variables.interface';\n\nexport function addAdditionalVariables(\n existingVariables: Variables,\n additionalVariables: Record<string, object>\n) {\n for (const key in additionalVariables) {\n const variable = additionalVariables[key];\n\n if (variable && isVariable(variable)) {\n if (\n variable.valueExpression &&\n variable.valueExpression.language &&\n variable.valueExpression.name\n ) {\n const expression = variable.valueExpression;\n const language = expression.language;\n const name = expression.name;\n\n if (language === 'text/fhirpath') {\n existingVariables.fhirPathVariables['QuestionnaireLevel'].push(variable.valueExpression);\n } else if (language === 'application/x-fhir-query') {\n existingVariables.xFhirQueryVariables[name] = {\n valueExpression: expression\n };\n }\n }\n }\n }\n\n return existingVariables;\n}\n\nfunction isVariable(variable: object): variable is Extension {\n const v = variable as Extension;\n return (\n (v.url === 'http://hl7.org/fhir/StructureDefinition/variable' &&\n v.valueExpression?.language === 'text/fhirpath') ||\n v.valueExpression?.language === 'application/x-fhir-query'\n );\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Questionnaire } from 'fhir/r4';\nimport type { Tabs } from '../../interfaces/tab.interface';\nimport type { LaunchContext } from '../../interfaces/populate.interface';\nimport type { QuestionnaireModel } from '../../interfaces/questionnaireStore.interface';\nimport { extractLaunchContexts } from './extractLaunchContext';\nimport { extractQuestionnaireLevelVariables } from './extractVariables';\nimport { extractTabs } from './extractTabs';\nimport { extractContainedValueSets } from './extractContainedValueSets';\nimport { extractOtherExtensions } from './extractOtherExtensions';\nimport type { Variables } from '../../interfaces/variables.interface';\nimport { resolveValueSets } from './resolveValueSets';\nimport { addAdditionalVariables } from './addAdditionalVariables';\n\nexport async function createQuestionnaireModel(\n questionnaire: Questionnaire,\n additionalVariables: Record<string, object>\n): Promise<QuestionnaireModel> {\n if (!questionnaire.item) {\n return createEmptyModel();\n }\n\n const tabs: Tabs = extractTabs(questionnaire);\n\n const launchContexts: Record<string, LaunchContext> = extractLaunchContexts(questionnaire);\n\n let variables: Variables = extractQuestionnaireLevelVariables(questionnaire);\n variables = addAdditionalVariables(variables, additionalVariables);\n\n const extractContainedValueSetsResult = extractContainedValueSets(questionnaire);\n let valueSetPromises = extractContainedValueSetsResult.valueSetPromises;\n let processedValueSetCodings = extractContainedValueSetsResult.processedValueSetCodings;\n const processedValueSetUrls = extractContainedValueSetsResult.processedValueSetUrls;\n\n const extractOtherExtensionsResult = extractOtherExtensions(\n questionnaire,\n variables,\n valueSetPromises\n );\n\n const { enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions } =\n extractOtherExtensionsResult;\n variables = extractOtherExtensionsResult.variables;\n valueSetPromises = extractOtherExtensionsResult.valueSetPromises;\n\n const resolveValueSetsResult = await resolveValueSets(\n variables,\n valueSetPromises,\n processedValueSetCodings\n );\n\n variables = resolveValueSetsResult.variables;\n processedValueSetCodings = resolveValueSetsResult.processedValueSetCodings;\n\n return {\n tabs,\n variables,\n launchContexts,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n answerExpressions,\n processedValueSetCodings,\n processedValueSetUrls\n };\n}\n\nfunction createEmptyModel(): QuestionnaireModel {\n return {\n tabs: {},\n variables: { fhirPathVariables: {}, xFhirQueryVariables: {} },\n launchContexts: {},\n calculatedExpressions: {},\n enableWhenExpressions: {},\n answerExpressions: {},\n enableWhenItems: {},\n processedValueSetCodings: {},\n processedValueSetUrls: {}\n };\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { evaluateInitialEnableWhenExpressions } from './enableWhenExpression';\nimport { getFirstVisibleTab } from './tabs';\nimport type { Expression, QuestionnaireResponse } from 'fhir/r4';\nimport type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';\nimport type { Tabs } from '../interfaces/tab.interface';\nimport { assignPopulatedAnswersToEnableWhen } from './enableWhen';\nimport type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';\nimport { evaluateInitialCalculatedExpressions } from './calculatedExpression';\n\ninterface initialFormFromResponseParams {\n questionnaireResponse: QuestionnaireResponse;\n enableWhenItems: EnableWhenItems;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n calculatedExpressions: Record<string, CalculatedExpression>;\n variablesFhirPath: Record<string, Expression[]>;\n tabs: Tabs;\n}\n\nexport function initialiseFormFromResponse(params: initialFormFromResponseParams): {\n initialEnableWhenItems: EnableWhenItems;\n initialEnableWhenLinkedQuestions: Record<string, string[]>;\n initialEnableWhenExpressions: Record<string, EnableWhenExpression>;\n initialCalculatedExpressions: Record<string, CalculatedExpression>;\n firstVisibleTab: number;\n} {\n const {\n questionnaireResponse,\n enableWhenItems,\n enableWhenExpressions,\n calculatedExpressions,\n variablesFhirPath,\n tabs\n } = params;\n\n const { initialisedItems, linkedQuestions } = assignPopulatedAnswersToEnableWhen(\n enableWhenItems,\n questionnaireResponse\n );\n\n const initialEnableWhenExpressions = evaluateInitialEnableWhenExpressions({\n initialResponse: questionnaireResponse,\n enableWhenExpressions: enableWhenExpressions,\n variablesFhirPath: variablesFhirPath\n });\n\n const initialCalculatedExpressions = evaluateInitialCalculatedExpressions({\n initialResponse: questionnaireResponse,\n calculatedExpressions: calculatedExpressions,\n variablesFhirPath: variablesFhirPath\n });\n\n const firstVisibleTab =\n Object.keys(tabs).length > 0\n ? getFirstVisibleTab(tabs, initialisedItems, initialEnableWhenExpressions)\n : 0;\n\n return {\n initialEnableWhenItems: initialisedItems,\n initialEnableWhenLinkedQuestions: linkedQuestions,\n initialEnableWhenExpressions,\n initialCalculatedExpressions,\n firstVisibleTab\n };\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { create } from 'zustand';\nimport type {\n Coding,\n Questionnaire,\n QuestionnaireResponse,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport type { Variables } from '../interfaces/variables.interface';\nimport type { LaunchContext } from '../interfaces/populate.interface';\nimport type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';\nimport type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';\nimport type { AnswerExpression } from '../interfaces/answerExpression.interface';\nimport type { Tabs } from '../interfaces/tab.interface';\nimport { updateItemAnswer } from '../utils/enableWhen';\nimport { evaluateUpdatedExpressions } from '../utils/fhirpath';\nimport {\n evaluateInitialCalculatedExpressions,\n initialiseCalculatedExpressionValues\n} from '../utils/calculatedExpression';\nimport { createQuestionnaireModel } from '../utils/questionnaireStoreUtils/createQuestionaireModel';\nimport { initialiseFormFromResponse } from '../utils/initialiseForm';\nimport { emptyQuestionnaire, emptyResponse } from '../utils/emptyResource';\nimport cloneDeep from 'lodash.clonedeep';\n\nexport interface UseQuestionnaireStoreType {\n sourceQuestionnaire: Questionnaire;\n tabs: Tabs;\n currentTabIndex: number;\n variables: Variables;\n launchContexts: Record<string, LaunchContext>;\n enableWhenItems: EnableWhenItems;\n enableWhenLinkedQuestions: Record<string, string[]>;\n enableWhenIsActivated: boolean;\n enableWhenExpressions: Record<string, EnableWhenExpression>;\n calculatedExpressions: Record<string, CalculatedExpression>;\n answerExpressions: Record<string, AnswerExpression>;\n processedValueSetCodings: Record<string, Coding[]>;\n processedValueSetUrls: Record<string, string>;\n cachedValueSetCodings: Record<string, Coding[]>;\n buildSourceQuestionnaire: (\n questionnaire: Questionnaire,\n questionnaireResponse?: QuestionnaireResponse,\n additionalVariables?: Record<string, object>\n ) => Promise<void>;\n destroySourceQuestionnaire: () => void;\n switchTab: (newTabIndex: number) => void;\n markTabAsComplete: (tabLinkId: string) => void;\n updateEnableWhenItem: (linkId: string, newAnswer: QuestionnaireResponseItemAnswer[]) => void;\n toggleEnableWhenActivation: (isActivated: boolean) => void;\n updateExpressions: (updatedResponse: QuestionnaireResponse) => void;\n addCodingToCache: (valueSetUrl: string, codings: Coding[]) => void;\n updatePopulatedProperties: (populatedResponse: QuestionnaireResponse) => QuestionnaireResponse;\n}\n\nconst useQuestionnaireStore = create<UseQuestionnaireStoreType>()((set, get) => ({\n sourceQuestionnaire: cloneDeep(emptyQuestionnaire),\n tabs: {},\n currentTabIndex: 0,\n variables: { fhirPathVariables: {}, xFhirQueryVariables: {} },\n launchContexts: {},\n calculatedExpressions: {},\n enableWhenExpressions: {},\n answerExpressions: {},\n enableWhenItems: {},\n enableWhenLinkedQuestions: {},\n enableWhenIsActivated: true,\n processedValueSetCodings: {},\n processedValueSetUrls: {},\n cachedValueSetCodings: {},\n buildSourceQuestionnaire: async (\n questionnaire,\n questionnaireResponse = cloneDeep(emptyResponse),\n additionalVariables = {}\n ) => {\n const questionnaireModel = await createQuestionnaireModel(questionnaire, additionalVariables);\n\n const {\n initialEnableWhenItems,\n initialEnableWhenLinkedQuestions,\n initialEnableWhenExpressions,\n initialCalculatedExpressions,\n firstVisibleTab\n } = initialiseFormFromResponse({\n questionnaireResponse,\n enableWhenItems: questionnaireModel.enableWhenItems,\n enableWhenExpressions: questionnaireModel.enableWhenExpressions,\n calculatedExpressions: questionnaireModel.calculatedExpressions,\n variablesFhirPath: questionnaireModel.variables.fhirPathVariables,\n tabs: questionnaireModel.tabs\n });\n\n set({\n sourceQuestionnaire: questionnaire,\n tabs: questionnaireModel.tabs,\n currentTabIndex: firstVisibleTab,\n variables: questionnaireModel.variables,\n launchContexts: questionnaireModel.launchContexts,\n enableWhenItems: initialEnableWhenItems,\n enableWhenLinkedQuestions: initialEnableWhenLinkedQuestions,\n enableWhenExpressions: initialEnableWhenExpressions,\n calculatedExpressions: initialCalculatedExpressions,\n answerExpressions: questionnaireModel.answerExpressions,\n processedValueSetCodings: questionnaireModel.processedValueSetCodings,\n processedValueSetUrls: questionnaireModel.processedValueSetUrls\n });\n },\n destroySourceQuestionnaire: () =>\n set({\n sourceQuestionnaire: cloneDeep(emptyQuestionnaire),\n tabs: {},\n currentTabIndex: 0,\n variables: { fhirPathVariables: {}, xFhirQueryVariables: {} },\n launchContexts: {},\n enableWhenItems: {},\n enableWhenLinkedQuestions: {},\n enableWhenExpressions: {},\n calculatedExpressions: {},\n answerExpressions: {},\n processedValueSetCodings: {},\n processedValueSetUrls: {}\n }),\n switchTab: (newTabIndex: number) => set(() => ({ currentTabIndex: newTabIndex })),\n markTabAsComplete: (tabLinkId: string) => {\n const tabs = get().tabs;\n set(() => ({\n tabs: {\n ...tabs,\n [tabLinkId]: { ...tabs[tabLinkId], isComplete: !tabs[tabLinkId].isComplete }\n }\n }));\n },\n updateEnableWhenItem: (linkId: string, newAnswer: QuestionnaireResponseItemAnswer[]) => {\n const enableWhenLinkedQuestions = get().enableWhenLinkedQuestions;\n const enableWhenItems = get().enableWhenItems;\n if (!enableWhenLinkedQuestions[linkId]) {\n return;\n }\n\n const itemLinkedQuestions = enableWhenLinkedQuestions[linkId];\n const updatedEnableWhenItems = updateItemAnswer(\n { ...enableWhenItems },\n itemLinkedQuestions,\n linkId,\n newAnswer\n );\n\n set(() => ({\n enableWhenItems: updatedEnableWhenItems\n }));\n },\n toggleEnableWhenActivation: (isActivated: boolean) =>\n set(() => ({ enableWhenIsActivated: isActivated })),\n updateExpressions: (updatedResponse: QuestionnaireResponse) => {\n const { isUpdated, updatedCalculatedExpressions, updatedEnableWhenExpressions } =\n evaluateUpdatedExpressions({\n updatedResponse: updatedResponse,\n enableWhenExpressions: get().enableWhenExpressions,\n calculatedExpressions: get().calculatedExpressions,\n variablesFhirPath: get().variables.fhirPathVariables\n });\n\n if (isUpdated) {\n set(() => ({\n enableWhenExpressions: updatedEnableWhenExpressions,\n calculatedExpressions: updatedCalculatedExpressions\n }));\n }\n },\n addCodingToCache: (valueSetUrl: string, codings: Coding[]) =>\n set(() => ({\n cachedValueSetCodings: {\n ...get().cachedValueSetCodings,\n [valueSetUrl]: codings\n }\n })),\n updatePopulatedProperties: (populatedResponse: QuestionnaireResponse) => {\n const initialCalculatedExpressions = evaluateInitialCalculatedExpressions({\n initialResponse: populatedResponse,\n calculatedExpressions: get().calculatedExpressions,\n variablesFhirPath: get().variables.fhirPathVariables\n });\n\n const updatedResponse = initialiseCalculatedExpressionValues(\n get().sourceQuestionnaire,\n populatedResponse,\n initialCalculatedExpressions\n );\n\n const {\n initialEnableWhenItems,\n initialEnableWhenLinkedQuestions,\n initialEnableWhenExpressions,\n firstVisibleTab\n } = initialiseFormFromResponse({\n questionnaireResponse: updatedResponse,\n enableWhenItems: get().enableWhenItems,\n enableWhenExpressions: get().enableWhenExpressions,\n calculatedExpressions: initialCalculatedExpressions,\n variablesFhirPath: get().variables.fhirPathVariables,\n tabs: get().tabs\n });\n\n set(() => ({\n enableWhenItems: initialEnableWhenItems,\n enableWhenLinkedQuestions: initialEnableWhenLinkedQuestions,\n enableWhenExpressions: initialEnableWhenExpressions,\n calculatedExpressions: initialCalculatedExpressions,\n currentTabIndex: firstVisibleTab\n }));\n\n return updatedResponse;\n }\n}));\n\nexport default useQuestionnaireStore;\n","import { create } from 'zustand';\nimport type { QuestionnaireResponse } from 'fhir/r4';\nimport { emptyResponse } from '../utils/emptyResource';\nimport cloneDeep from 'lodash.clonedeep';\n\nexport interface UseQuestionnaireResponseStoreType {\n sourceResponse: QuestionnaireResponse;\n updatableResponse: QuestionnaireResponse;\n hasChanges: boolean;\n buildSourceResponse: (response: QuestionnaireResponse) => void;\n populateResponse: (response: QuestionnaireResponse) => void;\n updateResponse: (updatedResponse: QuestionnaireResponse) => void;\n saveResponse: (savedResponse: QuestionnaireResponse) => void;\n clearResponse: (clearedResponse: QuestionnaireResponse) => void;\n destroySourceResponse: () => void;\n}\n\nconst useQuestionnaireResponseStore = create<UseQuestionnaireResponseStoreType>()((set) => ({\n sourceResponse: cloneDeep(emptyResponse),\n updatableResponse: cloneDeep(emptyResponse),\n hasChanges: false,\n\n buildSourceResponse: (questionnaireResponse: QuestionnaireResponse) => {\n set(() => ({\n sourceResponse: questionnaireResponse,\n updatableResponse: questionnaireResponse\n }));\n },\n populateResponse: (populatedResponse: QuestionnaireResponse) => {\n set(() => ({\n updatableResponse: populatedResponse\n }));\n },\n updateResponse: (updatedResponse: QuestionnaireResponse) =>\n set(() => ({\n updatableResponse: updatedResponse,\n hasChanges: true\n })),\n saveResponse: (savedResponse: QuestionnaireResponse) =>\n set(() => ({\n sourceResponse: savedResponse,\n updatableResponse: savedResponse,\n hasChanges: false\n })),\n clearResponse: (clearedResponse: QuestionnaireResponse) =>\n set(() => ({\n updatableResponse: clearedResponse,\n hasChanges: false\n })),\n destroySourceResponse: () =>\n set(() => ({\n sourceResponse: cloneDeep(emptyResponse),\n updatableResponse: cloneDeep(emptyResponse),\n hasChanges: false\n }))\n}));\n\nexport default useQuestionnaireResponseStore;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';\nimport { useEffect, useState } from 'react';\nimport { createQuestionnaireResponse } from '../utils/qrItem';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\nimport useQuestionnaireResponseStore from '../stores/useQuestionnaireResponseStore';\n\nfunction useInitialiseRenderer(\n questionnaire: Questionnaire,\n questionnaireResponse?: QuestionnaireResponse,\n additionalVariables?: Record<string, object>\n): boolean {\n const buildSourceQuestionnaire = useQuestionnaireStore((state) => state.buildSourceQuestionnaire);\n const updatePopulatedProperties = useQuestionnaireStore(\n (state) => state.updatePopulatedProperties\n );\n const buildSourceResponse = useQuestionnaireResponseStore((state) => state.buildSourceResponse);\n const populateResponse = useQuestionnaireResponseStore((state) => state.populateResponse);\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n buildSourceQuestionnaire(questionnaire, questionnaireResponse, additionalVariables).then(() => {\n buildSourceResponse(createQuestionnaireResponse(questionnaire));\n\n if (questionnaireResponse) {\n const updatedResponse = updatePopulatedProperties(questionnaireResponse);\n populateResponse(updatedResponse);\n }\n setLoading(false);\n });\n }, [\n questionnaire,\n questionnaireResponse,\n buildSourceQuestionnaire,\n buildSourceResponse,\n populateResponse,\n updatePopulatedProperties,\n additionalVariables\n ]);\n\n return loading;\n}\n\nexport default useInitialiseRenderer;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { QueryClient } from '@tanstack/react-query';\n\nfunction useQueryClient() {\n return new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n keepPreviousData: true\n }\n }\n });\n}\n\nexport default useQueryClient;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, styled } from '@mui/material';\n\nexport const QGroupContainerBox = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'cardElevation' && prop !== 'isRepeated'\n})<{ cardElevation: number; isRepeated: boolean }>(({ cardElevation, isRepeated }) => ({\n marginTop: cardElevation === 1 || isRepeated ? 0 : 18,\n marginBottom: cardElevation === 1 || isRepeated ? 0 : 18\n}));\n\nexport const FullWidthFormComponentBox = styled(Box)(() => ({\n marginBottom: 14\n}));\n\nexport const FormTitleWrapper = styled(Box)(() => ({\n marginTop: 12\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { hasHiddenExtension } from '../utils/itemControl';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\nimport { isHiddenByEnableWhens } from '../utils/qItem';\n\nfunction useHidden(qItem: QuestionnaireItem): boolean {\n const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);\n const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);\n const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);\n\n if (hasHiddenExtension(qItem)) {\n return true;\n }\n\n return isHiddenByEnableWhens({\n linkId: qItem.linkId,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n}\n\nexport default useHidden;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled, Typography } from '@mui/material';\n\nexport const QGroupHeadingTypography = styled(Typography, {\n shouldForwardProp: (prop) => prop !== 'isTabHeading'\n})<{ isTabHeading?: boolean }>(({ isTabHeading }) => ({\n fontSize: isTabHeading ? 16 : 15\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormGroup, RadioGroup, styled, Typography } from '@mui/material';\n\nexport const QFormGroup = styled(FormGroup)(() => ({\n marginBottom: 4\n}));\n\nexport const QRadioGroup = styled(RadioGroup)(() => ({\n marginBottom: 4\n}));\n\nexport const QItemTypography = styled(Typography)(() => ({\n marginTop: 4\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { getMarkdownString, getXHtmlString } from '../../../utils/itemControl';\nimport { QItemTypography } from '../Item.styles';\nimport parse from 'html-react-parser';\nimport { Box } from '@mui/material';\nimport ReactMarkdown from 'react-markdown';\n\ninterface ItemLabelTextProps {\n qItem: QuestionnaireItem;\n}\n\nconst ItemLabelText = memo(function ItemLabelText(props: ItemLabelTextProps) {\n const { qItem } = props;\n\n // parse xHTML if found\n const xHtmlString = getXHtmlString(qItem);\n\n if (xHtmlString) {\n return <Box>{parse(xHtmlString)}</Box>;\n }\n\n // parse xHTML if found\n const markdownString = getMarkdownString(qItem);\n if (markdownString) {\n return (\n <Box>\n <ReactMarkdown>{markdownString}</ReactMarkdown>\n </Box>\n );\n }\n\n // parse regular text\n if (qItem.type === 'group') {\n return <>{qItem.text}</>;\n } else {\n return <QItemTypography>{qItem.text}</QItemTypography>;\n }\n});\n\nexport default ItemLabelText;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport useHidden from '../../../hooks/useHidden';\nimport ItemLabelText from './ItemLabelText';\n\ninterface GroupHeadingIconProps {\n displayItem: QuestionnaireItem;\n}\n\nconst ContextDisplayItem = memo(function GroupHeadingIcon(props: GroupHeadingIconProps) {\n const { displayItem } = props;\n\n const itemIsHidden = useHidden(displayItem);\n if (itemIsHidden) {\n return null;\n }\n\n return <ItemLabelText qItem={displayItem} />;\n});\n\nexport default ContextDisplayItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Box, Divider } from '@mui/material';\nimport { QGroupHeadingTypography } from '../Typography.styles';\nimport type { PropsWithIsRepeatedAttribute } from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { getContextDisplays } from '../../../utils/tabs';\nimport ContextDisplayItem from '../ItemParts/ContextDisplayItem';\nimport LabelText from '../ItemParts/ItemLabelText';\n\ninterface GroupHeadingProps extends PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n tabIsMarkedAsComplete?: boolean;\n}\n\nconst GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {\n const { qItem, tabIsMarkedAsComplete, isRepeated } = props;\n\n const contextDisplayItems = getContextDisplays(qItem);\n\n if (isRepeated) {\n return null;\n }\n\n return (\n <>\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\n <QGroupHeadingTypography variant=\"h6\" isTabHeading={tabIsMarkedAsComplete !== undefined}>\n <LabelText qItem={qItem} />\n </QGroupHeadingTypography>\n\n <Box display=\"flex\" columnGap={0.5}>\n {contextDisplayItems.map((item) => {\n return <ContextDisplayItem key={item.linkId} displayItem={item} />;\n })}\n </Box>\n </Box>\n {qItem.text ? <Divider sx={{ mt: 1, mb: 1.5 }} light /> : null}\n </>\n );\n});\n\nexport default GroupHeading;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Card, styled } from '@mui/material';\n\nexport const GroupCard = styled(Card, {\n shouldForwardProp: (prop) => prop !== 'elevation' && prop !== 'isRepeated'\n})<{ elevation: number; isRepeated: boolean }>(({ elevation, isRepeated }) => ({\n paddingTop: '20px',\n paddingBottom: '20px',\n paddingLeft: elevation === 1 ? '26px' : '24px',\n paddingRight: elevation === 1 ? '26px' : '24px',\n marginBottom: isRepeated ? 0 : '28px'\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { forwardRef, memo } from 'react';\nimport { Icon } from '@iconify/react';\nimport type { SxProps, Theme } from '@mui/material';\nimport { Box } from '@mui/material';\n\ninterface IconifyProps {\n icon: string;\n width?: number;\n height?: number;\n sx?: SxProps<Theme>;\n}\n\nconst Iconify = memo(\n forwardRef(function Iconify(props: IconifyProps, ref) {\n // eslint-disable-next-line react/prop-types\n const { icon, width = 20, height = 20, sx } = props;\n return <Box ref={ref} component={Icon} icon={icon} sx={{ width, height, ...sx }} />;\n })\n);\n\nexport default Iconify;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Button } from '@mui/material';\nimport Iconify from '../../Iconify/Iconify';\n\ninterface NextTabButtonProps {\n isDisabled: boolean;\n onNextTabClick: () => void;\n}\n\nfunction NextTabButton(props: NextTabButtonProps) {\n const { isDisabled, onNextTabClick } = props;\n\n return (\n <Button\n variant=\"contained\"\n size=\"small\"\n endIcon={<Iconify icon=\"material-symbols:arrow-forward\" />}\n disabled={isDisabled}\n color=\"secondary\"\n onClick={onNextTabClick}>\n Next tab\n </Button>\n );\n}\n\nexport default NextTabButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Box } from '@mui/material';\nimport { findNumOfVisibleTabs, getNextVisibleTabIndex } from '../../../utils/tabs';\nimport type { Tabs } from '../../../interfaces/tab.interface';\nimport useQuestionnaireStore from '../../../stores/useQuestionnaireStore';\nimport NextTabButton from './NextTabButton';\n\ninterface NextTabButtonWrapperProps {\n currentTabIndex?: number;\n tabs?: Tabs;\n}\n\nconst NextTabButtonWrapper = memo(function NextTabWrapper(props: NextTabButtonWrapperProps) {\n const { currentTabIndex, tabs } = props;\n\n const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);\n const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);\n const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);\n const switchTab = useQuestionnaireStore((state) => state.switchTab);\n\n const tabsNotDefined = currentTabIndex === undefined || tabs === undefined;\n\n function handleNextTabClick() {\n if (tabsNotDefined) {\n return;\n }\n\n const nextVisibleTabIndex = getNextVisibleTabIndex({\n tabs,\n currentTabIndex,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n });\n switchTab(nextVisibleTabIndex);\n\n // Scroll to top of page\n window.scrollTo(0, 0);\n }\n\n if (tabsNotDefined) {\n return null;\n }\n\n if (currentTabIndex === Object.keys(tabs).length - 1) {\n return null;\n }\n\n const buttonIsDisabled =\n findNumOfVisibleTabs(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) <= 1;\n\n return (\n <Box display=\"flex\" flexDirection=\"row-reverse\" mt={3}>\n <NextTabButton isDisabled={buttonIsDisabled} onNextTabClick={handleNextTabClick} />\n </Box>\n );\n});\n\nexport default NextTabButtonWrapper;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { FormControlLabel, Radio } from '@mui/material';\n\ninterface Props {\n value: string;\n label: string;\n readOnly: boolean;\n}\n\nfunction QItemChoiceRadioSingle(props: Props) {\n const { value, label, readOnly } = props;\n\n return (\n <FormControlLabel\n disabled={readOnly}\n value={value}\n control={<Radio size=\"small\" />}\n label={label}\n sx={{ mr: 3 }}\n />\n );\n}\n\nexport default QItemChoiceRadioSingle;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getEntryFormat,\n getMaxLength,\n getReadOnly,\n getRegexValidation,\n getTextDisplayInstructions,\n getTextDisplayPrompt,\n getTextDisplayUnit\n} from '../utils/itemControl';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport type { RegexValidation } from '../interfaces/regex.interface';\n\ninterface RenderingExtensions {\n displayUnit: string;\n displayPrompt: string;\n displayInstructions: string;\n readOnly: boolean;\n entryFormat: string;\n regexValidation: RegexValidation | null;\n maxLength: number | null;\n}\n\nfunction useRenderingExtensions(qItem: QuestionnaireItem): RenderingExtensions {\n return {\n displayUnit: getTextDisplayUnit(qItem),\n displayPrompt: getTextDisplayPrompt(qItem),\n displayInstructions: getTextDisplayInstructions(qItem),\n readOnly: getReadOnly(qItem),\n entryFormat: getEntryFormat(qItem),\n regexValidation: getRegexValidation(qItem),\n maxLength: getMaxLength(qItem)\n };\n}\n\nexport default useRenderingExtensions;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, styled } from '@mui/material';\n\nexport const DisplayInstructionsWrapper = styled(Box)(({ theme }) => ({\n color: theme.palette.text.secondary,\n textTransform: 'capitalize',\n marginBottom: '8px'\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Typography } from '@mui/material';\nimport { DisplayInstructionsWrapper } from './DisplayInstructions.styles';\n\ninterface DisplayInstructionsProps {\n displayInstructions: string;\n}\n\nconst DisplayInstructions = memo(function DisplayInstructions(props: DisplayInstructionsProps) {\n const { displayInstructions } = props;\n\n return displayInstructions ? (\n <DisplayInstructionsWrapper>\n <Typography variant=\"caption\" fontSize={10.5}>\n {displayInstructions}\n </Typography>\n </DisplayInstructionsWrapper>\n ) : null;\n});\n\nexport default DisplayInstructions;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Box } from '@mui/material';\nimport ContextDisplayItem from './ContextDisplayItem';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { getContextDisplays } from '../../../utils/tabs';\nimport ItemLabelText from './ItemLabelText';\n\ninterface LabelWrapperProps {\n qItem: QuestionnaireItem;\n}\n\nfunction ItemLabelWrapper(props: LabelWrapperProps) {\n const { qItem } = props;\n\n const contextDisplayItems = getContextDisplays(qItem);\n\n return (\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\n <ItemLabelText qItem={qItem} />\n\n <Box display=\"flex\" columnGap={0.5}>\n {contextDisplayItems.map((item) => {\n return <ContextDisplayItem key={item.linkId} displayItem={item} />;\n })}\n </Box>\n </Box>\n );\n}\n\nexport default ItemLabelWrapper;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { Grid } from '@mui/material';\nimport { QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';\nimport QItemChoiceRadioSingle from './QItemChoiceRadioSingle';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { QRadioGroup } from '../Item.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemChoiceRadioAnswerOption(props: Props) {\n const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;\n\n // Init input value\n const qrChoiceRadio = qrItem ?? createEmptyQrItem(qItem);\n const valueRadio = getQrChoiceValue(qrChoiceRadio);\n\n // Get additional rendering extensions\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Event handlers\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n if (qItem.answerOption) {\n const qrAnswer = findInAnswerOptions(qItem.answerOption, e.target.value);\n if (qrAnswer) {\n onQrItemChange({ ...createEmptyQrItem(qItem), answer: [qrAnswer] });\n }\n }\n }\n\n const choiceRadio = (\n <QRadioGroup\n row={orientation === QItemChoiceOrientation.Horizontal}\n name={qItem.text}\n id={qItem.id}\n onChange={handleChange}\n value={valueRadio}\n data-test=\"q-item-radio-group\">\n {qItem.answerOption?.map((option) => {\n if (option['valueCoding']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueCoding.code ?? ''}\n value={option.valueCoding.code ?? ''}\n label={option.valueCoding.display ?? `${option.valueCoding.code}`}\n readOnly={readOnly}\n />\n );\n } else if (option['valueString']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueString}\n value={option.valueString}\n label={option.valueString}\n readOnly={readOnly}\n />\n );\n } else if (option['valueInteger']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueInteger}\n value={option.valueInteger.toString()}\n label={option.valueInteger.toString()}\n readOnly={readOnly}\n />\n );\n } else {\n return null;\n }\n })}\n </QRadioGroup>\n );\n\n const renderQItemChoiceRadio = isRepeated ? (\n <>{choiceRadio}</>\n ) : (\n <FullWidthFormComponentBox data-test=\"q-item-choice-radio-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceRadio}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemChoiceRadio}</>;\n}\n\nexport default QItemChoiceRadioAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { Fragment } from 'react';\nimport type { SelectChangeEvent } from '@mui/material';\nimport { Grid, InputAdornment, MenuItem, Select } from '@mui/material';\n\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemChoiceSelectAnswerOption(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Init input value\n const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);\n let valueSelect = getQrChoiceValue(qrChoiceSelect);\n if (valueSelect === null) {\n valueSelect = '';\n }\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Event handlers\n function handleChange(e: SelectChangeEvent) {\n if (qItem.answerOption) {\n const qrAnswer = findInAnswerOptions(qItem.answerOption, e.target.value);\n if (qrAnswer) {\n onQrItemChange({ ...createEmptyQrItem(qItem), answer: [qrAnswer] });\n return;\n }\n }\n onQrItemChange(createEmptyQrItem(qItem));\n }\n\n const choiceSelectAnswerOption = (\n <Select\n id={qItem.id}\n name={qItem.text}\n value={valueSelect}\n disabled={readOnly}\n fullWidth\n placeholder={entryFormat}\n label={displayPrompt}\n endAdornment={<InputAdornment position={'end'}>{displayUnit}</InputAdornment>}\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}\n size=\"small\"\n onChange={handleChange}>\n {qItem.answerOption?.map((option, index) => {\n if (option['valueCoding']) {\n return (\n <MenuItem key={option.valueCoding.code} value={option.valueCoding.code}>\n {option.valueCoding.display ?? option.valueCoding.code}\n </MenuItem>\n );\n }\n\n if (option['valueString']) {\n return (\n <MenuItem key={option.valueString} value={option.valueString}>\n {option.valueString}\n </MenuItem>\n );\n }\n\n if (option['valueInteger']) {\n return (\n <MenuItem key={option.valueInteger} value={option.valueInteger.toString()}>\n {option.valueInteger}\n </MenuItem>\n );\n }\n\n return <Fragment key={index} />;\n })}\n </Select>\n );\n\n const renderQItemChoiceSelectAnswerOption = isRepeated ? (\n <>{choiceSelectAnswerOption}</>\n ) : (\n <FullWidthFormComponentBox data-test=\"q-item-choice-select-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceSelectAnswerOption}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemChoiceSelectAnswerOption}</>;\n}\n\nexport default QItemChoiceSelectAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Checkbox, FormControlLabel } from '@mui/material';\n\ninterface Props {\n value: string;\n label: string;\n readOnly: boolean;\n isChecked: boolean;\n onCheckedChange: (value: string) => unknown;\n}\n\nfunction QItemCheckboxSingle(props: Props) {\n const { value, label, readOnly, isChecked, onCheckedChange } = props;\n\n return (\n <FormControlLabel\n disabled={readOnly}\n control={\n <Checkbox size=\"small\" checked={isChecked} onChange={() => onCheckedChange(value)} />\n }\n label={label}\n sx={{ mr: 3 }}\n />\n );\n}\n\nexport default QItemCheckboxSingle;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Grid } from '@mui/material';\nimport { QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport QItemChoiceCheckboxSingle from '../ItemParts/QItemCheckboxSingle';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { QFormGroup } from '../Item.styles';\nimport { updateQrCheckboxAnswers } from '../../../utils/choice';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface QItemChoiceCheckboxProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemChoiceCheckboxAnswerOption(props: QItemChoiceCheckboxProps) {\n const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;\n\n // Init input value\n const qrChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);\n const answers = qrChoiceCheckbox.answer ? qrChoiceCheckbox.answer : [];\n\n // Get additional rendering extensions\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Event handlers\n function handleCheckedChange(changedValue: string) {\n const answerOptions = qItem.answerOption;\n if (!answerOptions) return null;\n\n const updatedQrChoiceCheckbox = updateQrCheckboxAnswers(\n changedValue,\n answers,\n answerOptions,\n qrChoiceCheckbox,\n isRepeated\n );\n\n if (updatedQrChoiceCheckbox) {\n onQrItemChange(updatedQrChoiceCheckbox);\n }\n }\n\n const choiceCheckbox = (\n <QFormGroup row={orientation === QItemChoiceOrientation.Horizontal}>\n {qItem.answerOption?.map((option) => {\n if (option['valueCoding']) {\n return (\n <QItemChoiceCheckboxSingle\n key={option.valueCoding.code ?? ''}\n value={option.valueCoding.code ?? ''}\n label={option.valueCoding.display ?? `${option.valueCoding.code}`}\n readOnly={readOnly}\n isChecked={answers.some(\n (answer) => JSON.stringify(answer) === JSON.stringify(option)\n )}\n onCheckedChange={handleCheckedChange}\n />\n );\n } else if (option['valueString']) {\n return (\n <QItemChoiceCheckboxSingle\n key={option.valueString}\n value={option.valueString}\n label={option.valueString}\n readOnly={readOnly}\n isChecked={answers.some((answer) => answer.valueString === option.valueString)}\n onCheckedChange={handleCheckedChange}\n />\n );\n } else if (option['valueInteger']) {\n return (\n <QItemChoiceCheckboxSingle\n key={option.valueInteger}\n value={option.valueInteger.toString()}\n label={option.valueInteger.toString()}\n readOnly={readOnly}\n isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}\n onCheckedChange={handleCheckedChange}\n />\n );\n } else {\n return null;\n }\n })}\n </QFormGroup>\n );\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-choice-checkbox-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceCheckbox}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default QItemChoiceCheckboxAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled, TextField } from '@mui/material';\n\n// Always use this accompanied by the TextField prop fullWidth\nexport const StandardTextField = styled(TextField, {\n shouldForwardProp: (prop) => prop !== 'isTabled'\n})<{ isTabled: boolean }>(({ isTabled }) => ({\n // Set 280 as the standard width for a field\n // Set a theoretical infinite maxWidth if field is within a table to fill the table row\n maxWidth: !isTabled ? 280 : 3000,\n minWidth: 160\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from 'react';\n\n// Lifted from https://usehooks.com/useDebounce/\nfunction useDebounce(value: string, delay: number): string {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState<string>(value);\n\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay] // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n}\n\nexport default useDebounce;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { Coding, ValueSet } from 'fhir/r4';\nimport { getValueSetCodings, getValueSetPromise } from '../utils/valueSet';\n\nimport type { AlertColor } from '@mui/material';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\n\nfunction useTerminologyServerQuery(\n answerValueSetUrl: string | undefined,\n maxList: number,\n input: string,\n searchTerm: string,\n terminologyServerUrl?: string\n): { options: Coding[]; loading: boolean; feedback?: { message: string; color: AlertColor } } {\n const processedValueSetUrls = useQuestionnaireStore((state) => state.processedValueSetUrls);\n\n let fullUrl = '';\n\n let options: Coding[] = [];\n let loading = false;\n let feedback: { message: string; color: AlertColor } | undefined;\n\n if (input.length === 0) {\n feedback = undefined;\n }\n\n if (searchTerm.length < 2 && searchTerm.length > 0) {\n feedback = { message: 'Enter at least 2 characters to search for results.', color: 'info' };\n }\n\n // Restructure url to include filter and count parameters\n if (answerValueSetUrl) {\n if (answerValueSetUrl.startsWith('#')) {\n answerValueSetUrl = answerValueSetUrl.slice(1);\n }\n\n // attempt to get url from contained value sets when loading questionnaire\n if (processedValueSetUrls[answerValueSetUrl]) {\n answerValueSetUrl = processedValueSetUrls[answerValueSetUrl];\n }\n\n const urlWithTrailingAmpersand =\n answerValueSetUrl + (answerValueSetUrl[answerValueSetUrl.length - 1] !== '&' ? '&' : '');\n fullUrl = urlWithTrailingAmpersand + 'filter=' + searchTerm + '&count=' + maxList;\n }\n\n // Perform query\n const { isInitialLoading, error, data } = useQuery<ValueSet>(\n ['expandValueSet', fullUrl],\n () => getValueSetPromise(fullUrl, terminologyServerUrl),\n {\n enabled: searchTerm.length >= 2 && answerValueSetUrl !== undefined\n }\n );\n\n if (isInitialLoading) {\n loading = true;\n }\n\n if (error) {\n console.warn('Ontoserver query failed. Details below: \\n' + error);\n feedback = {\n message: 'An error occurred. Try again later or try searching for a different term.',\n color: 'error'\n };\n }\n\n if (data) {\n if (data.expansion?.total !== 0) {\n options = getValueSetCodings(data);\n } else {\n feedback = {\n message: \"We couldn't seem to find anything. Try searching for a different term.\",\n color: 'warning'\n };\n }\n }\n\n return { options, loading, feedback };\n}\nexport default useTerminologyServerQuery;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DEBOUNCE_DURATION = 200;\n\nexport const AUTOCOMPLETE_DEBOUNCE_DURATION = 300;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent, SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\nimport { Autocomplete, CircularProgress, Fade, Grid, Tooltip } from '@mui/material';\nimport type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\n\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { StandardTextField } from '../Textfield.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport SearchIcon from '@mui/icons-material/Search';\nimport useDebounce from '../../../hooks/useDebounce';\nimport useTerminologyServerQuery from '../../../hooks/useTerminologyServerQuery';\nimport InfoIcon from '@mui/icons-material/Info';\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { getTerminologyServerUrl } from '../../../utils/valueSet';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { AUTOCOMPLETE_DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface QItemChoiceAutocompleteProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemChoiceAutocomplete(props: QItemChoiceAutocompleteProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n const qrChoice = qrItem ?? createEmptyQrItem(qItem);\n\n // Init input value\n let valueCoding: Coding | undefined;\n if (qrChoice.answer) {\n valueCoding = qrChoice.answer[0].valueCoding;\n }\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Query ontoserver for options\n const maxList = 10;\n\n const [input, setInput] = useState('');\n const debouncedInput = useDebounce(input, AUTOCOMPLETE_DEBOUNCE_DURATION);\n\n const answerValueSetUrl = qItem.answerValueSet;\n const terminologyServerUrl = getTerminologyServerUrl(qItem);\n const { options, loading, feedback } = useTerminologyServerQuery(\n answerValueSetUrl,\n maxList,\n input,\n debouncedInput,\n terminologyServerUrl\n );\n\n if (!answerValueSetUrl) return null;\n\n // Event handlers\n function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | null) {\n if (newValue === null) {\n setInput('');\n onQrItemChange(createEmptyQrItem(qItem));\n return;\n }\n\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueCoding: newValue }]\n });\n }\n\n const choiceAutocomplete = (\n <>\n <Autocomplete\n id={qItem.id}\n value={valueCoding ?? null}\n placeholder={entryFormat}\n options={options}\n getOptionLabel={(option) => `${option.display}`}\n isOptionEqualToValue={(option, value) => option.id === value.id}\n loading={loading}\n loadingText={'Fetching results...'}\n clearOnEscape\n autoHighlight\n onChange={handleValueChange}\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}\n filterOptions={(x) => x}\n renderInput={(params) => (\n <StandardTextField\n {...params}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setInput(e.target.value)}\n isTabled={isTabled}\n disabled={readOnly}\n label={displayPrompt}\n size=\"small\"\n InputProps={{\n ...params.InputProps,\n\n startAdornment: (\n <>\n {!valueCoding ? <SearchIcon fontSize=\"small\" sx={{ ml: 0.5 }} /> : null}\n {params.InputProps.startAdornment}\n </>\n ),\n endAdornment: (\n <>\n {loading ? (\n <CircularProgress color=\"inherit\" size={16} />\n ) : feedback ? (\n <Fade in={!!feedback} timeout={300}>\n <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>\n {\n {\n info: <InfoIcon fontSize=\"small\" color=\"info\" />,\n warning: <WarningAmberIcon fontSize=\"small\" color=\"warning\" />,\n success: <DoneIcon fontSize=\"small\" color=\"success\" />,\n error: <ErrorIcon fontSize=\"small\" color=\"error\" />\n }[feedback.color]\n }\n </Tooltip>\n </Fade>\n ) : null}\n {params.InputProps.endAdornment}\n {displayUnit}\n </>\n )\n }}\n />\n )}\n />\n </>\n );\n\n const renderQItemChoiceAutocomplete = isRepeated ? (\n <>{choiceAutocomplete}</>\n ) : (\n <FullWidthFormComponentBox>\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceAutocomplete}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemChoiceAutocomplete}</>;\n}\n\nexport default QItemChoiceAutocomplete;\n","import { create } from 'zustand';\nimport type { Encounter, Patient, Practitioner, Questionnaire } from 'fhir/r4';\nimport type Client from 'fhirclient/lib/Client';\n\nexport interface ConfigState {\n smartClient: Client | null;\n patient: Patient | null;\n user: Practitioner | null;\n encounter: Encounter | null;\n launchQuestionnaire: Questionnaire | null;\n debugMode: boolean;\n setSmartClient: (client: Client) => void;\n setPatient: (patient: Patient) => void;\n setUser: (user: Practitioner) => void;\n setEncounter: (encounter: Encounter) => void;\n setLaunchQuestionnaire: (launchQuestionnaire: Questionnaire | null) => void;\n activateDebugMode: () => void;\n}\n\nconst useConfigStore = create<ConfigState>()((set) => ({\n smartClient: null,\n patient: null,\n user: null,\n encounter: null,\n launchQuestionnaire: null,\n debugMode: false,\n setSmartClient: (client: Client) => set(() => ({ smartClient: client })),\n setPatient: (patient: Patient) => set(() => ({ patient: patient })),\n setUser: (user: Practitioner) => set(() => ({ user: user })),\n setEncounter: (encounter: Encounter) => set(() => ({ encounter: encounter })),\n setLaunchQuestionnaire: (launchQuestionnaire: Questionnaire | null) =>\n set(() => ({ launchQuestionnaire: launchQuestionnaire })),\n activateDebugMode: () => set(() => ({ debugMode: true }))\n}));\n\nexport default useConfigStore;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useMemo, useState } from 'react';\nimport type { Coding, FhirResource, QuestionnaireItem, ValueSet } from 'fhir/r4';\nimport {\n getResourceFromLaunchContext,\n getTerminologyServerUrl,\n getValueSetCodings,\n getValueSetPromise\n} from '../utils/valueSet';\nimport { getAnswerExpression } from '../utils/itemControl';\nimport fhirpath from 'fhirpath';\nimport fhirpath_r4_model from 'fhirpath/fhir-context/r4';\nimport useConfigStore from '../stores/useConfigStore';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\n\nfunction useValueSetCodings(qItem: QuestionnaireItem) {\n const patient = useConfigStore((state) => state.patient);\n const user = useConfigStore((state) => state.user);\n const encounter = useConfigStore((state) => state.encounter);\n\n const launchContexts = useQuestionnaireStore((state) => state.launchContexts);\n const processedValueSetCodings = useQuestionnaireStore((state) => state.processedValueSetCodings);\n const cachedValueSetCodings = useQuestionnaireStore((state) => state.cachedValueSetCodings);\n const addCodingToCache = useQuestionnaireStore((state) => state.addCodingToCache);\n const { xFhirQueryVariables } = useQuestionnaireStore((state) => state.variables);\n\n const valueSetUrl = qItem.answerValueSet;\n let initialCodings = useMemo(() => {\n // set options from cached answer options if present\n if (valueSetUrl) {\n let cleanValueSetUrl = valueSetUrl;\n if (valueSetUrl.startsWith('#')) {\n cleanValueSetUrl = valueSetUrl.slice(1);\n }\n\n // attempt to get codings from value sets preprocessed when loading questionnaire\n if (processedValueSetCodings[cleanValueSetUrl]) {\n return processedValueSetCodings[cleanValueSetUrl];\n }\n\n // attempt to get codings from cached queried value sets\n if (cachedValueSetCodings[cleanValueSetUrl]) {\n return cachedValueSetCodings[cleanValueSetUrl];\n }\n }\n\n return [];\n }, [cachedValueSetCodings, processedValueSetCodings, valueSetUrl]);\n\n const answerExpression = getAnswerExpression(qItem)?.expression;\n initialCodings = useMemo(() => {\n if (initialCodings.length === 0 && answerExpression) {\n const variable = answerExpression.substring(\n answerExpression.indexOf('%') + 1,\n answerExpression.indexOf('.')\n );\n const contextMap: Record<string, FhirResource> = {};\n\n // get answer expression resource from launch contexts\n if (launchContexts[variable]) {\n const resourceType = launchContexts[variable].extension[1].valueCode;\n const resource = getResourceFromLaunchContext(resourceType, patient, user, encounter);\n if (resource) {\n contextMap[variable] = resource;\n }\n } else if (xFhirQueryVariables[variable]) {\n const resource = xFhirQueryVariables[variable].result;\n if (resource) {\n contextMap[variable] = resource;\n }\n }\n\n if (contextMap[variable]) {\n try {\n const evaluated: any[] = fhirpath.evaluate(\n {},\n answerExpression,\n contextMap,\n fhirpath_r4_model\n );\n\n if (evaluated[0].system || evaluated[0].code) {\n // determine if the evaluated array is a coding array\n return evaluated;\n } else if (evaluated[0].coding) {\n // determine and return if the evaluated array is a codeable concept\n return evaluated[0].coding;\n }\n } catch (e) {\n console.warn(e.message);\n }\n }\n }\n\n return initialCodings;\n }, [\n answerExpression,\n encounter,\n initialCodings,\n launchContexts,\n patient,\n user,\n xFhirQueryVariables\n ]);\n\n const [codings, setCodings] = useState<Coding[]>(initialCodings);\n const [serverError, setServerError] = useState<Error | null>(null);\n\n // get options from answerValueSet on render\n useEffect(() => {\n const valueSetUrl = qItem.answerValueSet;\n if (!valueSetUrl || codings.length > 0) return;\n\n const terminologyServer = getTerminologyServerUrl(qItem);\n const promise = getValueSetPromise(valueSetUrl, terminologyServer);\n if (promise) {\n promise\n .then((valueSet: ValueSet) => {\n const codings = getValueSetCodings(valueSet);\n if (codings.length > 0) {\n addCodingToCache(valueSetUrl, codings);\n setCodings(codings);\n }\n })\n .catch((error: Error) => {\n setServerError(error);\n });\n }\n }, [qItem]);\n\n return { codings, serverError };\n}\n\nexport default useValueSetCodings;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { alpha, styled } from '@mui/material/styles';\nimport { Box, ListItemIcon } from '@mui/material';\n\nexport const StyledAlert = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'color'\n})<{ color: 'info' | 'error' }>(({ theme, color }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(1.25),\n borderRadius: Number(theme.shape.borderRadius) * 1.5,\n backgroundColor: alpha(\n color === 'error' ? theme.palette.error.light : theme.palette.info.light,\n 0.12\n ),\n [theme.breakpoints.up('sm')]: {\n padding: theme.spacing(1.5)\n },\n [theme.breakpoints.up('md')]: {\n padding: theme.spacing(2)\n }\n}));\n\nexport const StyledNavItemIcon = styled(ListItemIcon)({\n color: 'inherit',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n});\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { SyntheticEvent } from 'react';\nimport React, { useEffect, useMemo } from 'react';\nimport { Autocomplete, Grid, Typography } from '@mui/material';\n\nimport type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { StandardTextField } from '../Textfield.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useValueSetCodings from '../../../hooks/useValueSetCodings';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { StyledAlert } from '../../Alert.styles';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemChoiceSelectAnswerValueSet(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Init input value\n const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);\n let valueCoding: Coding | undefined;\n if (qrChoiceSelect.answer) {\n valueCoding = qrChoiceSelect.answer[0].valueCoding;\n }\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Get codings/options from valueSet\n const { codings, serverError } = useValueSetCodings(qItem);\n\n valueCoding = useMemo(() => {\n const updatedValueCoding = codings.find(\n (queriedCoding) => queriedCoding.code === valueCoding?.code\n );\n return updatedValueCoding ?? valueCoding;\n }, [codings, valueCoding]);\n\n // Check and remove populated answer if it is a string\n // NOTE: $populate will try to populate answer as valueCoding,\n // but will fail if answer provided is not within options\n useEffect(\n () => {\n if (qrChoiceSelect.answer && qrChoiceSelect.answer[0].valueString) {\n onQrItemChange(createEmptyQrItem(qItem));\n }\n },\n // Only run effect once - on populate\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n // Event handlers\n function handleChange(_: SyntheticEvent<Element, Event>, newValue: Coding | null) {\n if (newValue) {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueCoding: newValue }]\n });\n return;\n }\n onQrItemChange(createEmptyQrItem(qItem));\n }\n\n const choiceSelectAnswerValueSet =\n codings.length > 0 ? (\n <Autocomplete\n id={qItem.id}\n options={codings}\n getOptionLabel={(option) => `${option.display}`}\n value={valueCoding ?? null}\n onChange={handleChange}\n openOnFocus\n autoHighlight\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}\n size=\"small\"\n disabled={readOnly}\n placeholder={entryFormat}\n renderInput={(params) => (\n <StandardTextField\n isTabled={isTabled}\n label={displayPrompt}\n {...params}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {params.InputProps.endAdornment}\n {displayUnit}\n </>\n )\n }}\n data-test=\"q-item-choice-dropdown-answer-value-set-field\"\n />\n )}\n />\n ) : serverError ? (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n There was an error fetching options from the terminology server\n </Typography>\n </StyledAlert>\n ) : (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n Unable to fetch options from the questionnaire or launch context\n </Typography>\n </StyledAlert>\n );\n\n const renderQItemChoiceSelectAnswerValueSet = isRepeated ? (\n <>{choiceSelectAnswerValueSet}</>\n ) : (\n <FullWidthFormComponentBox data-test=\"q-item-choice-dropdown-answer-value-set-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceSelectAnswerValueSet}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemChoiceSelectAnswerValueSet}</>;\n}\n\nexport default QItemChoiceSelectAnswerValueSet;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { Grid, Typography } from '@mui/material';\nimport { QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { findInAnswerValueSetCodings } from '../../../utils/choice';\nimport QItemChoiceRadioSingle from './QItemChoiceRadioSingle';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { QRadioGroup } from '../Item.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useValueSetCodings from '../../../hooks/useValueSetCodings';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { StyledAlert } from '../../Alert.styles';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemChoiceRadioAnswerValueSet(props: Props) {\n const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;\n\n // Init input value\n const qrChoiceRadio = qrItem ?? createEmptyQrItem(qItem);\n\n let valueRadio: string | undefined;\n if (qrChoiceRadio.answer) {\n valueRadio = qrChoiceRadio.answer[0].valueCoding?.code;\n }\n\n // Get additional rendering extensions\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Get codings/options from valueSet\n const { codings, serverError } = useValueSetCodings(qItem);\n\n function handleChange(event: ChangeEvent<HTMLInputElement>) {\n if (codings.length > 0) {\n const qrAnswer = findInAnswerValueSetCodings(codings, event.target.value);\n if (qrAnswer) {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueCoding: qrAnswer }]\n });\n }\n }\n }\n\n const choiceRadio =\n codings.length > 0 ? (\n <QRadioGroup\n row={orientation === QItemChoiceOrientation.Horizontal}\n name={qItem.text}\n id={qItem.id}\n onChange={handleChange}\n value={valueRadio ?? null}>\n {codings.map((coding: Coding) => {\n return (\n <QItemChoiceRadioSingle\n key={coding.code ?? ''}\n value={coding.code ?? ''}\n label={coding.display ?? `${coding.code}`}\n readOnly={readOnly}\n />\n );\n })}\n </QRadioGroup>\n ) : serverError ? (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n There was an error fetching options from the terminology server\n </Typography>\n </StyledAlert>\n ) : (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n Unable to fetch options from the questionnaire or launch context\n </Typography>\n </StyledAlert>\n );\n\n const renderQItemChoiceRadio = isRepeated ? (\n <>{choiceRadio}</>\n ) : (\n <FullWidthFormComponentBox data-test=\"q-item-choice-radio-answer-value-set-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceRadio}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemChoiceRadio}</>;\n}\n\nexport default QItemChoiceRadioAnswerValueSet;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Grid, Typography } from '@mui/material';\n\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport useValueSetCodings from '../../../hooks/useValueSetCodings';\nimport { QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport { mapCodingsToOptions, updateQrCheckboxAnswers } from '../../../utils/choice';\nimport QItemCheckboxSingle from '../ItemParts/QItemCheckboxSingle';\nimport { QFormGroup } from '../Item.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { StyledAlert } from '../../Alert.styles';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemChoiceCheckboxAnswerValueSet(props: Props) {\n const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;\n\n // Init input value\n const qrChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);\n const answers = qrChoiceCheckbox.answer ? qrChoiceCheckbox.answer : [];\n\n // Get additional rendering extensions\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Get codings/options from valueSet\n const { codings, serverError } = useValueSetCodings(qItem);\n\n // Event handlers\n function handleCheckedChange(changedValue: string) {\n if (codings.length < 1) return null;\n\n const updatedQrChoiceCheckbox = updateQrCheckboxAnswers(\n changedValue,\n answers,\n mapCodingsToOptions(codings),\n qrChoiceCheckbox,\n isRepeated\n );\n\n if (updatedQrChoiceCheckbox) {\n onQrItemChange(updatedQrChoiceCheckbox);\n }\n }\n\n const choiceCheckbox =\n codings.length > 0 ? (\n <QFormGroup row={orientation === QItemChoiceOrientation.Horizontal}>\n {codings.map((coding) => {\n return (\n <QItemCheckboxSingle\n key={coding.code ?? ''}\n value={coding.code ?? ''}\n label={coding.display ?? `${coding.code}`}\n readOnly={readOnly}\n isChecked={answers.some(\n (answer) => JSON.stringify(answer.valueCoding) === JSON.stringify(coding)\n )}\n onCheckedChange={handleCheckedChange}\n />\n );\n })}\n </QFormGroup>\n ) : serverError ? (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n There was an error fetching options from the terminology server\n </Typography>\n </StyledAlert>\n ) : (\n <StyledAlert color=\"error\">\n <ErrorOutlineIcon color=\"error\" sx={{ pr: 0.75 }} />\n <Typography variant=\"subtitle2\">\n Unable to fetch options from the questionnaire or launch context\n </Typography>\n </StyledAlert>\n );\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-choice-checkbox-answer-value-set-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {choiceCheckbox}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default QItemChoiceCheckboxAnswerValueSet;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { QItemChoiceControl } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport QItemChoiceRadioAnswerOption from './QItemChoiceRadioAnswerOption';\nimport QItemChoiceSelectAnswerOption from './QItemChoiceSelectAnswerOption';\nimport QItemChoiceCheckboxAnswerOption from './QItemChoiceCheckboxAnswerOption';\nimport QItemChoiceAutocomplete from './QItemChoiceAutocomplete';\nimport QItemChoiceSelectAnswerValueSet from './QItemChoiceSelectAnswerValueSet';\nimport { getChoiceControlType, getChoiceOrientation } from '../../../utils/choice';\nimport QItemChoiceRadioAnswerValueSet from './QItemChoiceRadioAnswerValueSet';\nimport QItemChoiceCheckboxAnswerValueSet from './QItemChoiceCheckboxAnswerValueSet';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemChoice(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n const orientation = getChoiceOrientation(qItem);\n const choiceControlType = getChoiceControlType(qItem);\n\n switch (choiceControlType) {\n case QItemChoiceControl.Radio:\n if (qItem.answerOption) {\n return (\n <QItemChoiceRadioAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n } else {\n return (\n <QItemChoiceRadioAnswerValueSet\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n }\n case QItemChoiceControl.Checkbox:\n if (qItem.answerOption) {\n return (\n <QItemChoiceCheckboxAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={qItem['repeats'] ?? false}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n } else {\n return (\n <QItemChoiceCheckboxAnswerValueSet\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={qItem['repeats'] ?? false}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n }\n case QItemChoiceControl.Autocomplete:\n return (\n <QItemChoiceAutocomplete\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case QItemChoiceControl.Select:\n if (qItem.answerOption) {\n return (\n <QItemChoiceSelectAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n } else {\n return (\n <QItemChoiceSelectAnswerValueSet\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n default:\n return null;\n }\n}\n\nexport default QItemChoice;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { SyntheticEvent } from 'react';\nimport React from 'react';\nimport { Autocomplete, Grid } from '@mui/material';\n\nimport type {\n QuestionnaireItem,\n QuestionnaireItemAnswerOption,\n QuestionnaireResponseItem\n} from 'fhir/r4';\nimport { getAnswerOptionLabel } from '../../../utils/openChoice';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { StandardTextField } from '../Textfield.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemOpenChoiceSelectAnswerOption(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Init input value\n const answerOptions = qItem.answerOption;\n if (!answerOptions) return null;\n\n const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);\n let valueSelect: QuestionnaireItemAnswerOption | undefined = undefined;\n if (qrOpenChoice.answer) {\n valueSelect = qrOpenChoice.answer[0];\n }\n\n // Event handlers\n function handleChange(\n _: SyntheticEvent<Element, Event>,\n newValue: QuestionnaireItemAnswerOption | string | null\n ) {\n if (newValue) {\n if (typeof newValue === 'string') {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueString: newValue }]\n });\n } else {\n const option = newValue;\n if (option['valueCoding']) {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueCoding: option.valueCoding }]\n });\n } else if (option['valueString']) {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueString: option.valueString }]\n });\n } else if (option['valueInteger']) {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueInteger: option.valueInteger }]\n });\n }\n }\n return;\n }\n onQrItemChange(createEmptyQrItem(qItem));\n }\n\n const openOpenChoiceSelectAnswerOption = (\n <Autocomplete\n id={qItem.id}\n value={valueSelect ?? null}\n options={answerOptions}\n getOptionLabel={(option) => getAnswerOptionLabel(option)}\n onChange={handleChange}\n freeSolo\n autoHighlight\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}\n disabled={readOnly}\n size=\"small\"\n placeholder={entryFormat}\n renderInput={(params) => (\n <StandardTextField\n isTabled={isTabled}\n label={displayPrompt}\n {...params}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {params.InputProps.endAdornment}\n {displayUnit}\n </>\n )\n }}\n />\n )}\n />\n );\n const renderQItemOpenChoiceAutocomplete = isRepeated ? (\n <>{openOpenChoiceSelectAnswerOption}</>\n ) : (\n <FullWidthFormComponentBox data-test=\"q-item-open-choice-select-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {openOpenChoiceSelectAnswerOption}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemOpenChoiceAutocomplete}</>;\n}\n\nexport default QItemOpenChoiceSelectAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { SyntheticEvent } from 'react';\nimport React from 'react';\nimport { Autocomplete, Grid, Typography } from '@mui/material';\n\nimport type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { StandardTextField } from '../Textfield.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useValueSetCodings from '../../../hooks/useValueSetCodings';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemOpenChoiceSelectAnswerValueSet(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Init input value\n const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);\n let valueSelect: Coding | undefined = undefined;\n if (qrOpenChoice['answer']) {\n valueSelect = qrOpenChoice['answer'][0].valueCoding;\n }\n\n // Get codings/options from valueSet\n const { codings, serverError } = useValueSetCodings(qItem);\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Event handlers\n function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | string | null) {\n if (newValue) {\n if (typeof newValue === 'string') {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueString: newValue }]\n });\n } else {\n onQrItemChange({\n ...qrOpenChoice,\n answer: [{ valueCoding: newValue }]\n });\n }\n return;\n }\n onQrItemChange(createEmptyQrItem(qItem));\n }\n\n const openChoiceSelectAnswerValueSet = (\n <>\n <Autocomplete\n id={qItem.id}\n value={valueSelect ?? null}\n options={codings}\n getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}\n onChange={handleValueChange}\n onInputChange={(event, newValue) => handleValueChange(event, newValue)}\n freeSolo\n autoHighlight\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}\n disabled={readOnly}\n size=\"small\"\n placeholder={entryFormat}\n renderInput={(params) => (\n <StandardTextField\n isTabled={isTabled}\n label={displayPrompt}\n {...params}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {params.InputProps.endAdornment}\n {displayUnit}\n </>\n )\n }}\n />\n )}\n />\n {serverError ? (\n <Typography variant=\"subtitle2\">\n There was an error fetching options from the terminology server.\n </Typography>\n ) : null}\n </>\n );\n\n const renderQItemOpenChoiceSelectAnswerValueSet = isRepeated ? (\n <>{openChoiceSelectAnswerValueSet}</>\n ) : (\n <FullWidthFormComponentBox>\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {openChoiceSelectAnswerValueSet}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemOpenChoiceSelectAnswerValueSet}</>;\n}\n\nexport default QItemOpenChoiceSelectAnswerValueSet;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent, SyntheticEvent } from 'react';\nimport React, { useState } from 'react';\nimport { Autocomplete, Box, CircularProgress, Fade, Grid, Tooltip } from '@mui/material';\nimport type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\n\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { StandardTextField } from '../Textfield.styles';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport SearchIcon from '@mui/icons-material/Search';\nimport useDebounce from '../../../hooks/useDebounce';\nimport useTerminologyServerQuery from '../../../hooks/useTerminologyServerQuery';\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\nimport InfoIcon from '@mui/icons-material/Info';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { getTerminologyServerUrl } from '../../../utils/valueSet';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { AUTOCOMPLETE_DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface QItemOpenChoiceAutocompleteProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemOpenChoiceAutocomplete(props: QItemOpenChoiceAutocompleteProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);\n\n // Init input value\n let valueAutocomplete: Coding | string | undefined;\n if (qrOpenChoice.answer) {\n const answer = qrOpenChoice.answer[0];\n valueAutocomplete = answer.valueCoding ? answer.valueCoding : answer.valueString;\n }\n\n if (!valueAutocomplete) {\n valueAutocomplete = '';\n }\n\n // Get additional rendering extensions\n const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Query ontoserver for options\n const maxList = 10;\n\n const [input, setInput] = useState('');\n const debouncedInput = useDebounce(input, AUTOCOMPLETE_DEBOUNCE_DURATION);\n\n const answerValueSetUrl = qItem.answerValueSet;\n const terminologyServerUrl = getTerminologyServerUrl(qItem);\n const { options, loading, feedback } = useTerminologyServerQuery(\n answerValueSetUrl,\n maxList,\n input,\n debouncedInput,\n terminologyServerUrl\n );\n\n if (!answerValueSetUrl) return null;\n\n // Event handlers\n function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | string | null) {\n if (newValue === null) {\n setInput('');\n newValue = '';\n }\n\n if (typeof newValue === 'string') {\n if (newValue !== '') {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueString: newValue }]\n });\n } else {\n onQrItemChange(createEmptyQrItem(qItem));\n }\n } else {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueCoding: newValue }]\n });\n }\n }\n\n const openChoiceAutocomplete = (\n <>\n <Box display=\"flex\">\n <Autocomplete\n id={qItem.id}\n value={valueAutocomplete}\n options={options}\n getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}\n loading={loading}\n loadingText={'Fetching results...'}\n clearOnEscape\n freeSolo\n autoHighlight\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 220, flexGrow: 1 }}\n placeholder={entryFormat}\n onChange={handleValueChange}\n filterOptions={(x) => x}\n renderInput={(params) => (\n <StandardTextField\n {...params}\n value={input}\n onBlur={() => {\n // set answer to current input when text field is unfocused\n if (!valueAutocomplete && input !== '') {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueString: input }]\n });\n }\n }}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setInput(e.target.value)}\n isTabled={isTabled}\n disabled={readOnly}\n label={displayPrompt}\n size=\"small\"\n InputProps={{\n ...params.InputProps,\n startAdornment: (\n <>\n {!valueAutocomplete || valueAutocomplete === '' ? (\n <SearchIcon fontSize=\"small\" sx={{ ml: 0.5 }} />\n ) : null}\n {params.InputProps.startAdornment}\n </>\n ),\n endAdornment: (\n <>\n {loading ? (\n <CircularProgress color=\"inherit\" size={16} />\n ) : feedback ? (\n <Fade in={!!feedback} timeout={300}>\n <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>\n {\n {\n info: <InfoIcon fontSize=\"small\" color=\"info\" />,\n warning: <WarningAmberIcon fontSize=\"small\" color=\"warning\" />,\n success: <DoneIcon fontSize=\"small\" color=\"success\" />,\n error: <ErrorIcon fontSize=\"small\" color=\"error\" />\n }[feedback.color]\n }\n </Tooltip>\n </Fade>\n ) : null}\n {params.InputProps.endAdornment}\n {displayUnit}\n </>\n )\n }}\n data-test=\"q-item-open-choice-autocomplete-field\"\n />\n )}\n />\n </Box>\n </>\n );\n\n const renderQItemOpenChoiceAutocomplete = isRepeated ? (\n <>{openChoiceAutocomplete}</>\n ) : (\n <FullWidthFormComponentBox>\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {openChoiceAutocomplete}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n return <>{renderQItemOpenChoiceAutocomplete}</>;\n}\n\nexport default QItemOpenChoiceAutocomplete;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { Box, Checkbox, FormControlLabel } from '@mui/material';\nimport { StandardTextField } from '../Textfield.styles';\n\ninterface Props {\n value: string | null;\n label: string;\n isChecked: boolean;\n onCheckedChange: (checked: boolean) => unknown;\n onInputChange: (input: string) => unknown;\n}\n\nfunction QItemCheckboxSingleWithOpenLabel(props: Props) {\n const { value, label, isChecked, onCheckedChange, onInputChange } = props;\n\n function handleCheckedChange(event: ChangeEvent<HTMLInputElement>) {\n onCheckedChange(event.target.checked);\n }\n\n function handleInputChange(event: ChangeEvent<HTMLInputElement>) {\n onInputChange(event.target.value);\n }\n\n return (\n <Box data-test=\"q-item-checkbox-open-label-box\">\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={isChecked} onChange={handleCheckedChange} />}\n label={label + ':'}\n sx={{ mr: 3 }}\n />\n <StandardTextField\n disabled={!isChecked}\n value={value}\n onChange={handleInputChange}\n fullWidth\n isTabled={false}\n size=\"small\"\n data-test=\"q-item-checkbox-open-label-field\"\n />\n </Box>\n );\n}\n\nexport default QItemCheckboxSingleWithOpenLabel;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Grid } from '@mui/material';\nimport { CheckBoxOptionType, QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport QItemCheckboxSingle from '../ItemParts/QItemCheckboxSingle';\nimport { getOpenLabelText } from '../../../utils/itemControl';\nimport QItemCheckboxSingleWithOpenLabel from '../ItemParts/QItemCheckboxSingleWithOpenLabel';\nimport { QFormGroup } from '../Item.styles';\nimport {\n getOldOpenLabelAnswer,\n updateQrOpenChoiceCheckboxAnswers\n} from '../../../utils/openChoice';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport debounce from 'lodash.debounce';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface QItemOpenChoiceCheckboxProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemOpenChoiceCheckboxAnswerOption(props: QItemOpenChoiceCheckboxProps) {\n const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;\n\n // Init answers\n const qrOpenChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);\n const answers = useMemo(() => qrOpenChoiceCheckbox.answer ?? [], [qrOpenChoiceCheckbox.answer]);\n\n // Init options and open label value\n const answerOptions = qItem.answerOption;\n let initialOpenLabelValue = '';\n let initialOpenLabelChecked = false;\n if (answerOptions) {\n const oldLabelAnswer = getOldOpenLabelAnswer(answers, answerOptions);\n if (oldLabelAnswer && oldLabelAnswer.valueString) {\n initialOpenLabelValue = oldLabelAnswer.valueString;\n initialOpenLabelChecked = true;\n }\n }\n const [openLabelValue, setOpenLabelValue] = useState(initialOpenLabelValue);\n const [openLabelChecked, setOpenLabelChecked] = useState(initialOpenLabelChecked);\n\n // Get additional rendering extensions\n const openLabelText = getOpenLabelText(qItem);\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Event handlers\n const handleValueChange = useCallback(\n (changedOptionValue: string | null, changedOpenLabelValue: string | null) => {\n if (!answerOptions) return null;\n\n let updatedQrChoiceCheckbox: QuestionnaireResponseItem | null = null;\n if (changedOptionValue) {\n updatedQrChoiceCheckbox = updateQrOpenChoiceCheckboxAnswers(\n changedOptionValue,\n null,\n answers,\n answerOptions,\n qrOpenChoiceCheckbox,\n CheckBoxOptionType.AnswerOption,\n isRepeated\n );\n } else if (changedOpenLabelValue !== null) {\n updatedQrChoiceCheckbox = updateQrOpenChoiceCheckboxAnswers(\n null,\n changedOpenLabelValue,\n answers,\n answerOptions,\n qrOpenChoiceCheckbox,\n CheckBoxOptionType.AnswerOption,\n isRepeated\n );\n }\n\n if (updatedQrChoiceCheckbox) {\n onQrItemChange(updatedQrChoiceCheckbox);\n }\n },\n [answerOptions, answers, isRepeated, onQrItemChange, qrOpenChoiceCheckbox]\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateOpenLabelValueWithDebounce = useCallback(\n debounce((input: string) => {\n handleValueChange(null, input);\n }, DEBOUNCE_DURATION),\n [handleValueChange]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n const openChoiceCheckbox = (\n <QFormGroup row={orientation === QItemChoiceOrientation.Horizontal}>\n {qItem.answerOption?.map((option) => {\n if (option['valueCoding']) {\n return (\n <QItemCheckboxSingle\n key={option.valueCoding.code ?? ''}\n value={option.valueCoding.code ?? ''}\n label={option.valueCoding.display ?? `${option.valueCoding.code}`}\n readOnly={readOnly}\n isChecked={answers.some(\n (answer) => JSON.stringify(answer) === JSON.stringify(option)\n )}\n onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}\n />\n );\n } else if (option['valueString']) {\n return (\n <QItemCheckboxSingle\n key={option.valueString}\n value={option.valueString}\n label={option.valueString}\n readOnly={readOnly}\n isChecked={answers.some((answer) => answer.valueString === option.valueString)}\n onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}\n />\n );\n } else if (option['valueInteger']) {\n return (\n <QItemCheckboxSingle\n key={option.valueInteger}\n value={option.valueInteger.toString()}\n label={option.valueInteger.toString()}\n readOnly={readOnly}\n isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}\n onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}\n />\n );\n } else {\n return null;\n }\n })}\n\n {openLabelText ? (\n <QItemCheckboxSingleWithOpenLabel\n value={openLabelValue}\n label={openLabelText}\n isChecked={openLabelChecked}\n onCheckedChange={(checked) => {\n handleValueChange(null, openLabelValue);\n setOpenLabelChecked(checked);\n }}\n onInputChange={(input) => {\n setOpenLabelValue(input);\n updateOpenLabelValueWithDebounce(input);\n }}\n />\n ) : null}\n </QFormGroup>\n );\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-open-choice-checkbox-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {openChoiceCheckbox}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default QItemOpenChoiceCheckboxAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { Box } from '@mui/material';\nimport { StandardTextField } from '../Textfield.styles';\nimport QItemChoiceRadioSingle from '../QItemChoice/QItemChoiceRadioSingle';\n\ninterface Props {\n value: string | null;\n label: string;\n readOnly: boolean;\n isSelected: boolean;\n onInputChange: (input: string) => unknown;\n}\n\nfunction QItemRadioButtonWithOpenLabel(props: Props) {\n const { value, label, readOnly, isSelected, onInputChange } = props;\n function handleInputChange(event: ChangeEvent<HTMLInputElement>) {\n onInputChange(event.target.value);\n }\n\n return (\n <Box data-test=\"q-item-radio-open-label-box\">\n <QItemChoiceRadioSingle value={value ?? ''} label={label + ':'} readOnly={readOnly} />\n <StandardTextField\n disabled={!isSelected}\n value={value}\n onChange={handleInputChange}\n fullWidth\n isTabled={false}\n size=\"small\"\n data-test=\"q-item-radio-open-label-field\"\n />\n </Box>\n );\n}\n\nexport default QItemRadioButtonWithOpenLabel;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ChangeEvent } from 'react';\nimport React, { useState } from 'react';\nimport { Grid } from '@mui/material';\nimport { QItemChoiceOrientation } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { getOpenLabelText } from '../../../utils/itemControl';\nimport { QRadioGroup } from '../Item.styles';\nimport { getOldOpenLabelAnswer } from '../../../utils/openChoice';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport QItemChoiceRadioSingle from '../QItemChoice/QItemChoiceRadioSingle';\nimport { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';\nimport QItemRadioButtonWithOpenLabel from '../ItemParts/QItemRadioButtonWithOpenLabel';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface QItemOpenChoiceRadioProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n orientation: QItemChoiceOrientation;\n}\n\nfunction QItemOpenChoiceRadioAnswerOption(props: QItemOpenChoiceRadioProps) {\n const { qItem, qrItem, onQrItemChange, orientation } = props;\n\n // Init answers\n const qrOpenChoiceRadio = qrItem ?? createEmptyQrItem(qItem);\n let valueRadio: string | null = getQrChoiceValue(qrOpenChoiceRadio, true);\n const answers = qrOpenChoiceRadio.answer ?? [];\n\n // Init empty open label\n const answerOptions = qItem.answerOption;\n let initialOpenLabelValue = '';\n let initialOpenLabelSelected = false;\n if (answerOptions) {\n const oldLabelAnswer = getOldOpenLabelAnswer(answers, answerOptions);\n if (oldLabelAnswer && oldLabelAnswer.valueString) {\n initialOpenLabelValue = oldLabelAnswer.valueString;\n initialOpenLabelSelected = true;\n valueRadio = initialOpenLabelValue;\n }\n }\n\n const [openLabelValue, setOpenLabelValue] = useState<string | null>(initialOpenLabelValue);\n const [openLabelSelected, setOpenLabelSelected] = useState(initialOpenLabelSelected);\n\n // Allow open label to remain selected even if its input was cleared\n if (openLabelSelected && valueRadio === null) {\n valueRadio = '';\n }\n\n // Get additional rendering extensions\n const openLabelText = getOpenLabelText(qItem);\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Event handlers\n function handleValueChange(\n changedOptionValue: string | null,\n changedOpenLabelValue: string | null\n ) {\n if (!answerOptions) return null;\n\n if (changedOptionValue !== null) {\n if (qItem.answerOption) {\n const qrAnswer = findInAnswerOptions(qItem.answerOption, changedOptionValue);\n\n // If selected answer can be found in options, it is a non-open label selection\n if (qrAnswer) {\n onQrItemChange({ ...createEmptyQrItem(qItem), answer: [qrAnswer] });\n setOpenLabelSelected(false);\n } else {\n // Otherwise, it is an open-label selection\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueString: changedOptionValue }]\n });\n setOpenLabelValue(changedOptionValue);\n setOpenLabelSelected(true);\n }\n }\n }\n\n if (changedOpenLabelValue !== null) {\n setOpenLabelValue(changedOpenLabelValue);\n\n if (changedOpenLabelValue === '') {\n onQrItemChange(createEmptyQrItem(qItem));\n } else {\n setOpenLabelValue(changedOpenLabelValue);\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueString: changedOpenLabelValue }]\n });\n }\n }\n }\n\n const openChoiceRadio = (\n <QRadioGroup\n row={orientation === QItemChoiceOrientation.Horizontal}\n name={qItem.text}\n id={qItem.id}\n onChange={(e: ChangeEvent<HTMLInputElement>) => handleValueChange(e.target.value, null)}\n value={valueRadio}\n data-test=\"q-item-radio-group\">\n {qItem.answerOption?.map((option) => {\n if (option['valueCoding']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueCoding.code ?? ''}\n value={option.valueCoding.code ?? ''}\n label={option.valueCoding.display ?? `${option.valueCoding.code}`}\n readOnly={readOnly}\n />\n );\n } else if (option['valueString']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueString}\n value={option.valueString}\n label={option.valueString}\n readOnly={readOnly}\n />\n );\n } else if (option['valueInteger']) {\n return (\n <QItemChoiceRadioSingle\n key={option.valueInteger}\n value={option.valueInteger.toString()}\n label={option.valueInteger.toString()}\n readOnly={readOnly}\n />\n );\n } else {\n return null;\n }\n })}\n\n {openLabelText ? (\n <QItemRadioButtonWithOpenLabel\n value={openLabelValue}\n label={openLabelText}\n readOnly={readOnly}\n isSelected={openLabelSelected}\n onInputChange={(input) => handleValueChange(null, input)}\n />\n ) : null}\n </QRadioGroup>\n );\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-open-choice-radio-answer-option-box\">\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {openChoiceRadio}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default QItemOpenChoiceRadioAnswerOption;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { QItemOpenChoiceControl } from '../../../interfaces/choice.enum';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport QItemOpenChoiceSelectAnswerOption from './QItemOpenChoiceSelectAnswerOption';\nimport QItemOpenChoiceSelectAnswerValueSet from './QItemOpenChoiceSelectAnswerValueSet';\nimport QItemOpenChoiceAutocomplete from './QItemOpenChoiceAutocomplete';\nimport { getOpenChoiceControlType } from '../../../utils/openChoice';\nimport { getChoiceOrientation } from '../../../utils/choice';\nimport QItemOpenChoiceCheckboxAnswerOption from './QItemOpenChoiceCheckboxAnswerOption';\nimport QItemOpenChoiceRadioAnswerOption from './QItemOpenChoiceRadioAnswerOption';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\n\ninterface Props\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction QItemOpenChoice(props: Props) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n const orientation = getChoiceOrientation(qItem);\n\n switch (getOpenChoiceControlType(qItem)) {\n case QItemOpenChoiceControl.Checkbox:\n return (\n <QItemOpenChoiceCheckboxAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={qItem['repeats'] ?? false}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n case QItemOpenChoiceControl.Radio:\n return (\n <QItemOpenChoiceRadioAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={qItem['repeats'] ?? false}\n onQrItemChange={onQrItemChange}\n orientation={orientation}\n />\n );\n case QItemOpenChoiceControl.Autocomplete:\n return (\n <QItemOpenChoiceAutocomplete\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case QItemOpenChoiceControl.Select:\n if (qItem.answerValueSet) {\n return (\n <QItemOpenChoiceSelectAnswerValueSet\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n } else {\n return (\n <QItemOpenChoiceSelectAnswerOption\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n default:\n return null;\n }\n}\n\nexport default QItemOpenChoice;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RegexValidation } from '../interfaces/regex.interface';\n\nfunction useValidationError(\n input: string,\n regexValidation: RegexValidation | null,\n maxLength: number | null\n): string {\n let feedback = '';\n\n if (input) {\n // Test regex\n if (regexValidation) {\n if (!regexValidation.expression.test(input)) {\n feedback =\n regexValidation.feedback ??\n `Input should match the specified regex ${regexValidation.expression}`;\n }\n }\n\n // Test max character limit\n if (maxLength) {\n if (input.length > maxLength) {\n feedback = 'Input exceeds maximum character limit.';\n }\n }\n }\n\n return feedback;\n}\n\nexport default useValidationError;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Fade } from '@mui/material';\nimport CheckIcon from '@mui/icons-material/Check';\n\ninterface FadingCheckIconProps {\n fadeIn: boolean;\n}\n\nfunction FadingCheckIcon(props: FadingCheckIconProps) {\n const { fadeIn } = props;\n\n return (\n <Fade in={fadeIn} timeout={{ enter: 100, exit: 300 }}>\n <CheckIcon color=\"success\" fontSize=\"small\" />\n </Fade>\n );\n}\n\nexport default FadingCheckIcon;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport { InputAdornment } from '@mui/material';\nimport { StandardTextField } from '../Textfield.styles';\nimport FadingCheckIcon from '../ItemParts/FadingCheckIcon';\n\ninterface StringFieldProps extends PropsWithIsTabledAttribute {\n linkId: string;\n input: string;\n feedback: string;\n displayPrompt: string;\n displayUnit: string;\n entryFormat: string;\n readOnly: boolean;\n calcExpUpdated: boolean;\n onInputChange: (value: string) => void;\n}\n\nfunction StringField(props: StringFieldProps) {\n const {\n linkId,\n input,\n feedback,\n displayPrompt,\n displayUnit,\n entryFormat,\n readOnly,\n isTabled,\n calcExpUpdated,\n onInputChange\n } = props;\n\n return (\n <StandardTextField\n fullWidth\n isTabled={isTabled}\n id={linkId}\n value={input}\n error={!!feedback}\n onChange={(event) => onInputChange(event.target.value)}\n label={displayPrompt}\n placeholder={entryFormat}\n disabled={readOnly}\n size=\"small\"\n InputProps={{\n endAdornment: (\n <InputAdornment position={'end'}>\n <FadingCheckIcon fadeIn={calcExpUpdated} />\n {displayUnit}\n </InputAdornment>\n )\n }}\n helperText={feedback}\n data-test=\"q-item-string-field\"\n />\n );\n}\n\nexport default StringField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ReactNode } from 'react';\nimport React from 'react';\nimport { Grid } from '@mui/material';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport DisplayInstructions from '../DisplayItem/DisplayInstructions';\nimport LabelWrapper from './ItemLabelWrapper';\n\ninterface ItemFieldGridProps {\n children: ReactNode;\n qItem: QuestionnaireItem;\n displayInstructions: string;\n}\n\nfunction ItemFieldGrid(props: ItemFieldGridProps) {\n const { children, qItem, displayInstructions } = props;\n\n return (\n <Grid container columnSpacing={6}>\n <Grid item xs={5}>\n <LabelWrapper qItem={qItem} />\n </Grid>\n <Grid item xs={7}>\n {children}\n <DisplayInstructions displayInstructions={displayInstructions} />\n </Grid>\n </Grid>\n );\n}\n\nexport default ItemFieldGrid;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from 'react';\nimport { createEmptyQrItem } from '../utils/qrItem';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\n\ninterface UseStringCalculatedExpression {\n calcExpUpdated: boolean;\n}\n\ninterface useStringCalculatedExpressionProps {\n qItem: QuestionnaireItem;\n inputValue: string;\n setInputValue: (value: string) => void;\n onQrItemChange: (qrItem: QuestionnaireResponseItem) => void;\n}\n\nfunction useStringCalculatedExpression(\n props: useStringCalculatedExpressionProps\n): UseStringCalculatedExpression {\n const { qItem, inputValue, setInputValue, onQrItemChange } = props;\n\n const calculatedExpressions = useQuestionnaireStore((state) => state.calculatedExpressions);\n\n const [calcExpUpdated, setCalcExpUpdated] = useState(false);\n\n useEffect(\n () => {\n const calcExpression = calculatedExpressions[qItem.linkId];\n\n // only update if calculated value is different from current value\n if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'string') {\n // update ui to show calculated value changes\n setCalcExpUpdated(true);\n setTimeout(() => {\n setCalcExpUpdated(false);\n }, 500);\n\n // update questionnaireResponse\n setInputValue(calcExpression.value);\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueString: calcExpression.value }]\n });\n }\n },\n // Only trigger this effect if calculatedExpression of item changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [calculatedExpressions]\n );\n\n return { calcExpUpdated: calcExpUpdated };\n}\n\nexport default useStringCalculatedExpression;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useState } from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport useValidationError from '../../../hooks/useValidationError';\nimport debounce from 'lodash.debounce';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport StringField from './StringField';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\nimport useStringCalculatedExpression from '../../../hooks/useStringCalculatedExpression';\n\ninterface StringItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\nfunction StringItem(props: StringItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const {\n displayUnit,\n displayPrompt,\n displayInstructions,\n readOnly,\n entryFormat,\n regexValidation,\n maxLength\n } = useRenderingExtensions(qItem);\n\n // Init input value\n let valueString = '';\n if (qrItem?.answer && qrItem?.answer[0].valueString) {\n valueString = qrItem.answer[0].valueString;\n }\n const [input, setInput] = useState(valueString);\n\n // Perform validation checks\n const feedback = useValidationError(input, regexValidation, maxLength);\n\n // Process calculated expressions\n const { calcExpUpdated } = useStringCalculatedExpression({\n qItem: qItem,\n inputValue: input,\n setInputValue: (value) => {\n setInput(value);\n },\n onQrItemChange: onQrItemChange\n });\n\n // Event handlers\n function handleChange(newInput: string) {\n setInput(newInput);\n updateQrItemWithDebounce(newInput);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateQrItemWithDebounce = useCallback(\n debounce((input: string) => {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (input !== '') {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueString: input.trim() }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }, DEBOUNCE_DURATION),\n [onQrItemChange, qItem]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n if (isRepeated) {\n return (\n <StringField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n onInputChange={handleChange}\n isTabled={isTabled}\n />\n );\n }\n return (\n <FullWidthFormComponentBox data-test=\"q-item-string-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <StringField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n onInputChange={handleChange}\n isTabled={isTabled}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default StringItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Checkbox, FormControlLabel } from '@mui/material';\n\ninterface BooleanFieldProps {\n checked: boolean;\n readOnly: boolean;\n onCheckedChange: (newChecked: boolean) => void;\n}\nconst BooleanField = memo(function BooleanField(props: BooleanFieldProps) {\n const { checked, readOnly, onCheckedChange } = props;\n\n return (\n <FormControlLabel\n disabled={readOnly}\n control={\n <Checkbox\n size=\"small\"\n checked={checked}\n onChange={(event) => onCheckedChange(event.target.checked)}\n />\n }\n label=\"\"\n />\n );\n});\n\nexport default BooleanField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\nimport BooleanField from './BooleanField';\nimport { Box } from '@mui/material';\n\ninterface BooleanItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction BooleanItem(props: BooleanItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayInstructions, readOnly } = useRenderingExtensions(qItem);\n\n // Init input value\n let checked = false;\n if (qrItem?.answer && qrItem.answer[0].valueBoolean) {\n checked = qrItem.answer[0].valueBoolean;\n }\n\n // Event handlers\n function handleCheckedChange(newChecked: boolean) {\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: [{ valueBoolean: newChecked }]\n });\n }\n\n if (isTabled) {\n return (\n <Box display=\"flex\" justifyContent=\"center\">\n <BooleanField checked={checked} readOnly={readOnly} onCheckedChange={handleCheckedChange} />\n </Box>\n );\n }\n\n if (isRepeated) {\n return (\n <BooleanField checked={checked} readOnly={readOnly} onCheckedChange={handleCheckedChange} />\n );\n }\n return (\n <FullWidthFormComponentBox data-test=\"q-item-boolean-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <BooleanField checked={checked} readOnly={readOnly} onCheckedChange={handleCheckedChange} />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default BooleanItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport type { Dayjs } from 'dayjs';\nimport { LocalizationProvider, TimePicker as MuiTimePicker } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\n\ninterface TimeFieldProps extends PropsWithIsTabledAttribute {\n value: Dayjs | null;\n displayPrompt: string;\n entryFormat: string;\n readOnly: boolean;\n onTimeChange: (newValue: Dayjs | null) => unknown;\n}\n\nfunction TimeField(props: TimeFieldProps) {\n const { value, displayPrompt, entryFormat, readOnly, isTabled, onTimeChange } = props;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiTimePicker\n format={entryFormat !== '' ? entryFormat : 'hh:mm a'}\n value={value}\n disabled={readOnly}\n label={displayPrompt}\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}\n slotProps={{\n textField: {\n fullWidth: true\n }\n }}\n onChange={onTimeChange}\n />\n </LocalizationProvider>\n );\n}\n\nexport default TimeField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport TimeField from './TimeField';\nimport type { Dayjs } from 'dayjs';\nimport dayjs from 'dayjs';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\n\ninterface TimeItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction TimeItem(props: TimeItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Init input value\n let timeString: string | null = null;\n if (qrItem?.answer && qrItem?.answer[0].valueTime) {\n timeString = qrItem.answer[0].valueTime;\n }\n const timeDayJs = timeString ? dayjs(timeString) : null;\n\n // Event handlers\n function handleTimeChange(newValue: Dayjs | null) {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (newValue) {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueTime: newValue.format() }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }\n\n if (isRepeated) {\n return (\n <TimeField\n value={timeDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onTimeChange={handleTimeChange}\n isTabled={isTabled}\n />\n );\n }\n\n return (\n <FullWidthFormComponentBox>\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <TimeField\n value={timeDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onTimeChange={handleTimeChange}\n isTabled={isTabled}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default TimeItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport type { Dayjs } from 'dayjs';\nimport { DateTimePicker as MuiDateTimePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { Box } from '@mui/material';\n\ninterface DateTimeFieldProps extends PropsWithIsTabledAttribute {\n value: Dayjs | null;\n displayPrompt: string;\n entryFormat: string;\n readOnly: boolean;\n onDateTimeChange: (newValue: Dayjs | null) => unknown;\n}\n\nfunction DateTimeField(props: DateTimeFieldProps) {\n const { value, displayPrompt, entryFormat, readOnly, isTabled, onDateTimeChange } = props;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <Box data-test=\"q-item-date-time-field\">\n <MuiDateTimePicker\n format={entryFormat !== '' ? entryFormat : 'DD/MM/YYYY hh:mm A'}\n value={value}\n disabled={readOnly}\n label={displayPrompt}\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}\n onChange={onDateTimeChange}\n slotProps={{\n textField: {\n size: 'small',\n fullWidth: true\n }\n }}\n />\n </Box>\n </LocalizationProvider>\n );\n}\n\nexport default DateTimeField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\nimport DateTimeField from './DateTimeField';\nimport type { Dayjs } from 'dayjs';\nimport dayjs from 'dayjs';\n\ninterface DateTimeItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction DateTimeItem(props: DateTimeItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Init input value\n let dateTimeString: string | null = null;\n if (qrItem?.answer && qrItem?.answer[0].valueDateTime) {\n dateTimeString = qrItem.answer[0].valueDateTime;\n }\n const dateTimeDayJs = dateTimeString ? dayjs(dateTimeString) : null;\n\n // Event handlers\n function handleDateTimeChange(newValue: Dayjs | null) {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (newValue) {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueDateTime: newValue.format() }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }\n\n if (isRepeated) {\n return (\n <DateTimeField\n value={dateTimeDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onDateTimeChange={handleDateTimeChange}\n isTabled={isTabled}\n />\n );\n }\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-date-time-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <DateTimeField\n value={dateTimeDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onDateTimeChange={handleDateTimeChange}\n isTabled={isTabled}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default DateTimeItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport type { Dayjs } from 'dayjs';\nimport { DatePicker as MuiDatePicker, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\n\ninterface DateFieldProps extends PropsWithIsTabledAttribute {\n value: Dayjs | null;\n displayPrompt: string;\n entryFormat: string;\n readOnly: boolean;\n onDateChange: (newValue: Dayjs | null) => unknown;\n}\n\nfunction DateField(props: DateFieldProps) {\n const { value, displayPrompt, entryFormat, readOnly, isTabled, onDateChange } = props;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDatePicker\n format={entryFormat !== '' ? entryFormat : 'DD/MM/YYYY'}\n value={value}\n disabled={readOnly}\n label={displayPrompt}\n sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}\n onChange={onDateChange}\n slotProps={{\n textField: {\n size: 'small',\n fullWidth: true\n }\n }}\n data-test=\"q-item-date-field\"\n />\n </LocalizationProvider>\n );\n}\n\nexport default DateField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\nimport DateField from './DateField';\nimport type { Dayjs } from 'dayjs';\nimport dayjs from 'dayjs';\n\ninterface DateItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction DateItem(props: DateItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayPrompt, displayInstructions, readOnly, entryFormat } =\n useRenderingExtensions(qItem);\n\n // Init input value\n let dateString: string | null = null;\n\n if (qrItem?.answer && qrItem?.answer[0].valueDate) {\n dateString = qrItem.answer[0].valueDate;\n }\n const dateDayJs = dateString ? dayjs(dateString) : null;\n\n // Event handlers\n function handleDateChange(newValue: Dayjs | null) {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (newValue) {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueDate: newValue.format('YYYY-MM-DD') }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }\n\n if (isRepeated) {\n return (\n <DateField\n value={dateDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onDateChange={handleDateChange}\n isTabled={isTabled}\n />\n );\n }\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-date-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <DateField\n value={dateDayJs}\n displayPrompt={displayPrompt}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onDateChange={handleDateChange}\n isTabled={isTabled}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default DateItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { InputAdornment, TextField as MuiTextField } from '@mui/material';\nimport FadingCheckIcon from '../ItemParts/FadingCheckIcon';\n\ninterface TextFieldProps {\n linkId: string;\n input: string;\n feedback: string;\n displayPrompt: string;\n displayUnit: string;\n entryFormat: string;\n readOnly: boolean;\n calcExpUpdated: boolean;\n onInputChange: (value: string) => void;\n}\n\nfunction TextField(props: TextFieldProps) {\n const {\n linkId,\n input,\n feedback,\n displayPrompt,\n displayUnit,\n entryFormat,\n readOnly,\n calcExpUpdated,\n onInputChange\n } = props;\n\n return (\n <MuiTextField\n id={linkId}\n value={input}\n error={!!feedback}\n onChange={(event) => onInputChange(event.target.value)}\n disabled={readOnly}\n label={displayPrompt}\n placeholder={entryFormat}\n fullWidth\n multiline\n size=\"small\"\n minRows={3}\n InputProps={{\n endAdornment: (\n <InputAdornment position={'end'}>\n <FadingCheckIcon fadeIn={calcExpUpdated} />\n {displayUnit}\n </InputAdornment>\n )\n }}\n helperText={feedback}\n data-test=\"q-item-text-field\"\n />\n );\n}\n\nexport default TextField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useState } from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport useValidationError from '../../../hooks/useValidationError';\nimport debounce from 'lodash.debounce';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport TextField from './TextField';\nimport useStringCalculatedExpression from '../../../hooks/useStringCalculatedExpression';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\n\ninterface TextItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction TextItem(props: TextItemProps) {\n const { qItem, qrItem, isRepeated, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const {\n displayUnit,\n displayPrompt,\n displayInstructions,\n readOnly,\n entryFormat,\n regexValidation,\n maxLength\n } = useRenderingExtensions(qItem);\n\n // Init input value\n let valueText = '';\n if (qrItem?.answer && qrItem?.answer[0].valueString) {\n valueText = qrItem.answer[0].valueString;\n }\n const [input, setInput] = useState(valueText);\n\n // Perform validation checks\n const feedback = useValidationError(input, regexValidation, maxLength);\n\n // Process calculated expressions\n const { calcExpUpdated } = useStringCalculatedExpression({\n qItem: qItem,\n inputValue: input,\n setInputValue: (value) => {\n setInput(value);\n },\n onQrItemChange: onQrItemChange\n });\n\n // Event handlers\n function handleInputChange(newInput: string) {\n setInput(newInput);\n updateQrItemWithDebounce(newInput);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateQrItemWithDebounce = useCallback(\n debounce((input: string) => {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (input !== '') {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueString: input.trim() }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }, DEBOUNCE_DURATION),\n [onQrItemChange, qItem]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n if (isRepeated) {\n return (\n <TextField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n onInputChange={handleInputChange}\n />\n );\n }\n return (\n <FullWidthFormComponentBox data-test=\"q-item-text-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <TextField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n onInputChange={handleInputChange}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default TextItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport { isSpecificItemControl } from '../../../utils/itemControl';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface DisplayItemProps {\n qItem: QuestionnaireItem;\n}\n\nconst DisplayItem = memo(function DisplayItem(props: DisplayItemProps) {\n const { qItem } = props;\n\n const isContextDisplay = isSpecificItemControl(qItem, 'context-display');\n if (isContextDisplay) {\n return null;\n }\n\n return (\n <FullWidthFormComponentBox>\n <LabelWrapper qItem={qItem} />\n </FullWidthFormComponentBox>\n );\n});\n\nexport default DisplayItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { InputAdornment } from '@mui/material';\nimport { StandardTextField } from '../Textfield.styles';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport FadingCheckIcon from '../ItemParts/FadingCheckIcon';\n\ninterface IntegerFieldProps extends PropsWithIsTabledAttribute {\n linkId: string;\n value: number;\n feedback: string;\n displayPrompt: string;\n displayUnit: string;\n entryFormat: string;\n readOnly: boolean;\n calcExpUpdated: boolean;\n onInputChange: (value: string) => void;\n}\n\nfunction IntegerField(props: IntegerFieldProps) {\n const {\n linkId,\n value,\n feedback,\n displayPrompt,\n displayUnit,\n entryFormat,\n readOnly,\n calcExpUpdated,\n isTabled,\n onInputChange\n } = props;\n\n return (\n <StandardTextField\n id={linkId}\n value={value.toString()}\n error={!!feedback}\n onChange={(event) => onInputChange(event.target.value)}\n disabled={readOnly}\n label={displayPrompt}\n placeholder={entryFormat}\n fullWidth\n isTabled={isTabled}\n size=\"small\"\n inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }}\n InputProps={{\n endAdornment: (\n <InputAdornment position={'end'}>\n <FadingCheckIcon fadeIn={calcExpUpdated} />\n {displayUnit}\n </InputAdornment>\n )\n }}\n data-test=\"q-item-integer-field\"\n />\n );\n}\n\nexport default IntegerField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from 'react';\nimport { createEmptyQrItemWithUnit } from '../utils/qrItem';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\n\ninterface UseIntegerCalculatedExpression {\n calcExpUpdated: boolean;\n}\n\ninterface useIntegerCalculatedExpressionProps {\n qItem: QuestionnaireItem;\n inputValue: number;\n displayUnit: string;\n setInputValue: (value: number) => void;\n onQrItemChange: (qrItem: QuestionnaireResponseItem) => void;\n}\n\nfunction useIntegerCalculatedExpression(\n props: useIntegerCalculatedExpressionProps\n): UseIntegerCalculatedExpression {\n const { qItem, inputValue, displayUnit, setInputValue, onQrItemChange } = props;\n\n const calculatedExpressions = useQuestionnaireStore((state) => state.calculatedExpressions);\n\n const [calcExpUpdated, setCalcExpUpdated] = useState(false);\n\n useEffect(\n () => {\n const calcExpression = calculatedExpressions[qItem.linkId];\n\n // only update if calculated value is different from current value\n if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'number') {\n // update ui to show calculated value changes\n setCalcExpUpdated(true);\n setTimeout(() => {\n setCalcExpUpdated(false);\n }, 500);\n\n // update questionnaireResponse\n setInputValue(calcExpression.value);\n onQrItemChange({\n ...createEmptyQrItemWithUnit(qItem, displayUnit),\n answer: [{ valueInteger: calcExpression.value }]\n });\n }\n },\n // Only trigger this effect if calculatedExpression of item changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [calculatedExpressions]\n );\n\n return { calcExpUpdated: calcExpUpdated };\n}\n\nexport default useIntegerCalculatedExpression;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function parseValidInteger(input: string): number {\n const validNumericString = parseValidNumericString(input);\n\n return parseInt(validNumericString);\n}\n\nexport function parseValidNumericString(input: string): string {\n const hasNumber = /\\d/;\n if (!hasNumber.test(input)) {\n return '0';\n }\n\n return input;\n}\n\nexport function parseDecimalStringWithPrecision(input: string, precision: number | null): string {\n input = parseValidNumericString(input);\n\n let parsedInput = parseFloat(input).toString();\n\n // restore decimal digits if parseFloat() removes them\n const decimalPoint = input.indexOf('.');\n if (decimalPoint !== -1) {\n const decimalDigits = input.slice(decimalPoint);\n if (parsedInput.indexOf('.') === -1) {\n parsedInput += decimalDigits;\n }\n }\n\n // truncate decimal digits based on precision\n const parsedDecimalPoint = input.indexOf('.');\n if (precision && parsedDecimalPoint !== -1) {\n parsedInput = parsedInput.substring(0, parsedDecimalPoint + precision + 1);\n }\n\n return parsedInput;\n}\n\nexport function parseDecimalStringToFloat(input: string, precision: number): number {\n return parseFloat(parseFloat(input).toFixed(precision));\n}\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useState } from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport useValidationError from '../../../hooks/useValidationError';\nimport debounce from 'lodash.debounce';\nimport { createEmptyQrItemWithUnit } from '../../../utils/qrItem';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport IntegerField from './IntegerField';\nimport useIntegerCalculatedExpression from '../../../hooks/useIntegerCalculatedExpression';\nimport { parseValidInteger } from '../../../utils/parseInputs';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\n\ninterface IntegerItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction IntegerItem(props: IntegerItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const {\n displayUnit,\n displayPrompt,\n displayInstructions,\n readOnly,\n entryFormat,\n regexValidation,\n maxLength\n } = useRenderingExtensions(qItem);\n\n // Init input value\n let valueInteger = 0;\n if (qrItem?.answer) {\n if (qrItem?.answer[0].valueInteger) {\n valueInteger = qrItem.answer[0].valueInteger;\n }\n if (qrItem?.answer[0].valueDecimal) {\n valueInteger = Math.round(qrItem.answer[0].valueDecimal);\n }\n }\n const [value, setValue] = useState(valueInteger);\n\n // Perform validation checks\n const feedback = useValidationError(value.toString(), regexValidation, maxLength);\n\n // Process calculated expressions\n const { calcExpUpdated } = useIntegerCalculatedExpression({\n qItem: qItem,\n inputValue: value,\n displayUnit: displayUnit,\n setInputValue: (newValue) => {\n setValue(newValue);\n },\n onQrItemChange: onQrItemChange\n });\n\n // Event handlers\n function handleInputChange(newInput: string) {\n const newValue = parseValidInteger(newInput);\n\n setValue(newValue);\n updateQrItemWithDebounce(newValue);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateQrItemWithDebounce = useCallback(\n debounce((newValue: number) => {\n onQrItemChange({\n ...createEmptyQrItemWithUnit(qItem, displayUnit),\n answer: [{ valueInteger: newValue }]\n });\n }, DEBOUNCE_DURATION),\n [onQrItemChange, qItem, displayUnit]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n if (isRepeated) {\n return (\n <IntegerField\n linkId={qItem.linkId}\n value={value}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n isTabled={isTabled}\n onInputChange={handleInputChange}\n />\n );\n }\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-integer-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <IntegerField\n linkId={qItem.linkId}\n value={value}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n isTabled={isTabled}\n onInputChange={handleInputChange}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default IntegerItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { InputAdornment } from '@mui/material';\nimport FadingCheckIcon from '../ItemParts/FadingCheckIcon';\nimport { StandardTextField } from '../Textfield.styles';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\n\ninterface DecimalFieldProps extends PropsWithIsTabledAttribute {\n linkId: string;\n input: string;\n feedback: string;\n displayPrompt: string;\n displayUnit: string;\n entryFormat: string;\n readOnly: boolean;\n calcExpUpdated: boolean;\n onInputChange: (value: string) => void;\n}\n\nfunction DecimalField(props: DecimalFieldProps) {\n const {\n linkId,\n input,\n feedback,\n displayPrompt,\n displayUnit,\n entryFormat,\n readOnly,\n calcExpUpdated,\n isTabled,\n onInputChange\n } = props;\n\n return (\n <StandardTextField\n id={linkId}\n value={input}\n error={!!feedback}\n onChange={(event) => onInputChange(event.target.value)}\n disabled={readOnly}\n label={displayPrompt}\n placeholder={entryFormat}\n fullWidth\n isTabled={isTabled}\n size=\"small\"\n inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }}\n InputProps={{\n endAdornment: (\n <InputAdornment position={'end'}>\n <FadingCheckIcon fadeIn={calcExpUpdated} />\n {displayUnit}\n </InputAdornment>\n )\n }}\n data-test=\"q-item-decimal-field\"\n />\n );\n}\n\nexport default DecimalField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from 'react';\nimport { createEmptyQrItemWithUnit } from '../utils/qrItem';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useQuestionnaireStore from '../stores/useQuestionnaireStore';\n\ninterface UseDecimalCalculatedExpression {\n calcExpUpdated: boolean;\n}\n\ninterface useDecimalCalculatedExpressionProps {\n qItem: QuestionnaireItem;\n inputValue: string;\n displayUnit: string;\n precision: number | null;\n setInputValue: (value: string) => void;\n onQrItemChange: (qrItem: QuestionnaireResponseItem) => void;\n}\n\nfunction useDecimalCalculatedExpression(\n props: useDecimalCalculatedExpressionProps\n): UseDecimalCalculatedExpression {\n const { qItem, inputValue, displayUnit, precision, setInputValue, onQrItemChange } = props;\n\n const calculatedExpressions = useQuestionnaireStore((state) => state.calculatedExpressions);\n\n const [calcExpUpdated, setCalcExpUpdated] = useState(false);\n\n useEffect(\n () => {\n const calcExpression = calculatedExpressions[qItem.linkId];\n\n // only update if calculated value is different from current value\n if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'number') {\n const value = precision\n ? parseFloat(calcExpression.value.toFixed(precision))\n : calcExpression.value;\n\n // only update if calculated value is different from current value\n if (value !== parseFloat(inputValue)) {\n // update ui to show calculated value changes\n setCalcExpUpdated(true);\n setTimeout(() => {\n setCalcExpUpdated(false);\n }, 500);\n\n // update questionnaireResponse\n setInputValue(precision ? value.toFixed(precision) : value.toString());\n onQrItemChange({\n ...createEmptyQrItemWithUnit(qItem, displayUnit),\n answer: [{ valueDecimal: value }]\n });\n }\n }\n },\n // Only trigger this effect if calculatedExpression of item changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [calculatedExpressions]\n );\n\n return { calcExpUpdated: calcExpUpdated };\n}\n\nexport default useDecimalCalculatedExpression;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useState } from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport useValidationError from '../../../hooks/useValidationError';\nimport debounce from 'lodash.debounce';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport { createEmptyQrItemWithUnit } from '../../../utils/qrItem';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\nimport DecimalField from './DecimalField';\nimport {\n parseDecimalStringToFloat,\n parseDecimalStringWithPrecision\n} from '../../../utils/parseInputs';\nimport { getDecimalPrecision } from '../../../utils/itemControl';\nimport useDecimalCalculatedExpression from '../../../hooks/useDecimalCalculatedExpression';\n\ninterface DecimalItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction DecimalItem(props: DecimalItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const precision = getDecimalPrecision(qItem);\n const {\n displayUnit,\n displayPrompt,\n displayInstructions,\n readOnly,\n entryFormat,\n regexValidation,\n maxLength\n } = useRenderingExtensions(qItem);\n\n // Init input value\n let valueDecimal = 0.0;\n let initialInput = '0';\n if (qrItem?.answer) {\n if (qrItem?.answer[0].valueDecimal) {\n valueDecimal = qrItem.answer[0].valueDecimal;\n }\n\n if (qrItem?.answer[0].valueInteger) {\n valueDecimal = qrItem.answer[0].valueInteger;\n }\n\n initialInput = precision ? valueDecimal.toFixed(precision) : valueDecimal.toString();\n }\n const [input, setInput] = useState(initialInput);\n\n // Perform validation checks\n const feedback = useValidationError(input, regexValidation, maxLength);\n\n // Process calculated expressions\n const { calcExpUpdated } = useDecimalCalculatedExpression({\n qItem: qItem,\n inputValue: input,\n displayUnit: displayUnit,\n precision: precision,\n setInputValue: (newInput) => {\n setInput(newInput);\n },\n onQrItemChange: onQrItemChange\n });\n\n // Event handlers\n function handleInputChange(newInput: string) {\n const parsedNewInput: string = parseDecimalStringWithPrecision(newInput, precision);\n\n setInput(parsedNewInput);\n updateQrItemWithDebounce(parsedNewInput);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateQrItemWithDebounce = useCallback(\n debounce((parsedNewInput: string) => {\n onQrItemChange({\n ...createEmptyQrItemWithUnit(qItem, displayUnit),\n answer: precision\n ? [{ valueDecimal: parseDecimalStringToFloat(parsedNewInput, precision) }]\n : [{ valueDecimal: parseFloat(parsedNewInput) }]\n });\n }, DEBOUNCE_DURATION),\n [onQrItemChange, qItem, displayUnit, precision]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n if (isRepeated) {\n return (\n <DecimalField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n isTabled={isTabled}\n onInputChange={handleInputChange}\n />\n );\n }\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-decimal-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <DecimalField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n calcExpUpdated={calcExpUpdated}\n isTabled={isTabled}\n onInputChange={handleInputChange}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default DecimalItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';\nimport { InputAdornment } from '@mui/material';\nimport { StandardTextField } from '../Textfield.styles';\n\ninterface UrlFieldProps extends PropsWithIsTabledAttribute {\n linkId: string;\n input: string;\n feedback: string;\n displayPrompt: string;\n displayUnit: string;\n entryFormat: string;\n readOnly: boolean;\n onInputChange: (value: string) => void;\n}\n\nfunction UrlField(props: UrlFieldProps) {\n const {\n linkId,\n input,\n feedback,\n displayPrompt,\n displayUnit,\n entryFormat,\n readOnly,\n isTabled,\n onInputChange\n } = props;\n\n return (\n <StandardTextField\n fullWidth\n isTabled={isTabled}\n id={linkId}\n value={input}\n error={!!feedback}\n onChange={(event) => onInputChange(event.target.value)}\n label={displayPrompt}\n placeholder={entryFormat}\n disabled={readOnly}\n size=\"small\"\n InputProps={{ endAdornment: <InputAdornment position={'end'}>{displayUnit}</InputAdornment> }}\n helperText={feedback}\n data-test=\"q-item-url-field\"\n />\n );\n}\n\nexport default UrlField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useState } from 'react';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport useValidationError from '../../../hooks/useValidationError';\nimport debounce from 'lodash.debounce';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { DEBOUNCE_DURATION } from '../../../utils/debounce';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport UrlField from './UrlField';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\n\ninterface UrlItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\nfunction UrlItem(props: UrlItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const {\n displayUnit,\n displayPrompt,\n displayInstructions,\n readOnly,\n entryFormat,\n regexValidation,\n maxLength\n } = useRenderingExtensions(qItem);\n\n // Init input value\n let valueUri = '';\n if (qrItem?.answer && qrItem?.answer[0].valueUri) {\n valueUri = qrItem.answer[0].valueUri;\n }\n const [input, setInput] = useState(valueUri);\n\n // Perform validation checks\n const feedback = useValidationError(input, regexValidation, maxLength);\n\n // Event handlers\n function handleChange(newInput: string) {\n setInput(newInput);\n updateQrItemWithDebounce(newInput);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const updateQrItemWithDebounce = useCallback(\n debounce((input: string) => {\n const emptyQrItem = createEmptyQrItem(qItem);\n if (input !== '') {\n onQrItemChange({ ...emptyQrItem, answer: [{ valueUri: input }] });\n } else {\n onQrItemChange(emptyQrItem);\n }\n }, DEBOUNCE_DURATION),\n [onQrItemChange, qItem]\n ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies\n\n if (isRepeated) {\n return (\n <UrlField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onInputChange={handleChange}\n isTabled={isTabled}\n />\n );\n }\n return (\n <FullWidthFormComponentBox data-test=\"q-item-string-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <UrlField\n linkId={qItem.linkId}\n input={input}\n feedback={feedback}\n displayPrompt={displayPrompt}\n displayUnit={displayUnit}\n entryFormat={entryFormat}\n readOnly={readOnly}\n onInputChange={handleChange}\n isTabled={isTabled}\n />\n </ItemFieldGrid>\n </FullWidthFormComponentBox>\n );\n}\n\nexport default UrlItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport QItemChoice from '../QItemChoice/QItemChoice';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport QItemOpenChoice from '../QItemOpenChoice/QItemOpenChoice';\nimport { Typography } from '@mui/material';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport StringItem from '../StringItem/StringItem';\nimport BooleanItem from '../BooleanItem/BooleanItem';\nimport TimeItem from '../TimeItem/TimeItem';\nimport DateTimeItem from '../DateTimeItem/DateTimeItem';\nimport DateItem from '../DateItem/DateItem';\nimport TextItem from '../TextItem/TextItem';\nimport DisplayItem from '../DisplayItem/DisplayItem';\nimport IntegerItem from '../IntegerItem/IntegerItem';\nimport DecimalItem from '../DecimalItem/DecimalItem';\nimport UrlItem from '../UrlItem/UrlItem';\n\ninterface SingleItemSwitcherProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction SingleItemSwitcher(props: SingleItemSwitcherProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n switch (qItem.type) {\n case 'string':\n return (\n <StringItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'boolean':\n return (\n <BooleanItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'time':\n return (\n <TimeItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'date':\n return (\n <DateItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'dateTime':\n return (\n <DateTimeItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'text':\n return (\n <TextItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'display':\n return <DisplayItem qItem={qItem} />;\n case 'integer':\n return (\n <IntegerItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'decimal':\n return (\n <DecimalItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'choice':\n return (\n <QItemChoice\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'open-choice':\n return (\n <QItemOpenChoice\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n case 'url':\n return (\n <UrlItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={onQrItemChange}\n />\n );\n default:\n return (\n <Typography>\n Item type not supported yet. Only R4 datatypes are supported at the moment.\n </Typography>\n );\n }\n}\n\nexport default SingleItemSwitcher;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback } from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport useQuestionnaireStore from '../../../stores/useQuestionnaireStore';\nimport SingleItemSwitcher from './SingleItemSwitcher';\n\ninterface SingleItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute,\n PropsWithIsTabledAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction SingleItem(props: SingleItemProps) {\n const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;\n\n const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);\n\n const handleQrItemChange = useCallback(\n (newQrItem: QuestionnaireResponseItem) => {\n if (newQrItem.answer) {\n updateEnableWhenItem(qItem.linkId, newQrItem.answer);\n }\n onQrItemChange(newQrItem);\n },\n [updateEnableWhenItem, onQrItemChange, qItem.linkId]\n );\n\n return (\n <SingleItemSwitcher\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n isTabled={isTabled}\n onQrItemChange={handleQrItemChange}\n />\n );\n}\n\nexport default SingleItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled, TableCell } from '@mui/material';\n\nexport const HeaderTableCell = styled(TableCell)(() => ({\n fontSize: 13,\n lineHeight: 'normal'\n}));\n\nexport const StandardTableCell = styled(TableCell, {\n shouldForwardProp: (prop) => prop !== 'numOfColumns' && prop !== 'isFirst'\n})<{ numOfColumns: number; isFirst: boolean }>(({ numOfColumns, isFirst }) => ({\n width: `${100 / numOfColumns}%`,\n paddingLeft: isFirst ? 8 : 4,\n paddingRight: 4\n}));\n\nexport const DeleteButtonTableCell = styled(TableCell)(() => ({\n paddingLeft: 0,\n paddingRight: 4\n}));\n\nexport const GridTextTableCell = styled(TableCell)(({ theme }) => ({\n width: '20%',\n paddingLeft: '18px',\n paddingRight: '18px',\n color: theme.palette.text.secondary\n}));\n\nexport const GridAnswerTableCell = styled(TableCell, {\n shouldForwardProp: (prop) => prop !== 'numOfColumns'\n})<{ numOfColumns: number }>(({ numOfColumns }) => ({\n width: `${80 / numOfColumns}%`,\n paddingLeft: 5,\n paddingRight: 5\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createQrGroup, updateQrGroup } from '../../../utils/qrItem';\nimport SingleItem from '../SingleItem/SingleItem';\nimport { getQrItemsIndex } from '../../../utils/mapItem';\nimport { StandardTableCell } from './Table.styles';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\n\ninterface Props extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n qItemsIndexMap: Record<string, number>;\n}\n\nfunction QItemGroupTableRow(props: Props) {\n const { qItem, qrItem, qItemsIndexMap, onQrItemChange } = props;\n\n const rowItems = qItem.item;\n const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);\n const rowQrItems = row.item;\n\n if (!rowItems || !rowQrItems) {\n return null;\n }\n\n function handleQrRowItemChange(newQrRowItem: QuestionnaireResponseItem) {\n const qrRow: QuestionnaireResponseItem = { ...row };\n updateQrGroup(newQrRowItem, null, qrRow, qItemsIndexMap);\n onQrItemChange(qrRow);\n }\n\n const qrItemsByIndex = getQrItemsIndex(rowItems, rowQrItems, qItemsIndexMap);\n\n return (\n <>\n {rowItems.map((rowItem, index) => {\n const qrItem = qrItemsByIndex[index];\n\n if (Array.isArray(qrItem)) {\n return null;\n }\n\n return (\n <StandardTableCell key={index} numOfColumns={rowItems.length} isFirst={index === 0}>\n <SingleItem\n key={qItem.linkId}\n qItem={rowItem}\n qrItem={qrItem}\n isRepeated={true}\n isTabled={true}\n onQrItemChange={handleQrRowItemChange}\n />\n </StandardTableCell>\n );\n })}\n </>\n );\n}\n\nexport default QItemGroupTableRow;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { QuestionnaireResponseItem } from 'fhir/r4';\nimport { nanoid } from 'nanoid';\nimport type { GroupTableRow } from '../interfaces/groupTable.interface';\n\nfunction useInitialiseGroupTable(qrItems: QuestionnaireResponseItem[]): GroupTableRow[] {\n let initialGroupTableRows: GroupTableRow[] = [\n {\n nanoId: nanoid(),\n qrItem: null\n }\n ];\n\n if (qrItems.length > 0) {\n initialGroupTableRows = qrItems.map((qrItem) => {\n return {\n nanoId: nanoid(),\n qrItem\n };\n });\n }\n\n return initialGroupTableRows;\n}\n\nexport default useInitialiseGroupTable;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { DeleteButtonTableCell } from './Table.styles';\nimport { IconButton, Tooltip } from '@mui/material';\nimport RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';\nimport type { QuestionnaireResponseItem } from 'fhir/r4';\n\ninterface DeleteRowButtonProps {\n nullableQrItem: QuestionnaireResponseItem | null;\n numOfRows: number;\n onDeleteItem: () => void;\n}\n\nfunction DeleteRowButton(props: DeleteRowButtonProps) {\n const { nullableQrItem, numOfRows, onDeleteItem } = props;\n\n const isDisabled = nullableQrItem === null || numOfRows === 1;\n return (\n <DeleteButtonTableCell>\n <Tooltip title=\"Delete item\">\n <span>\n <IconButton size=\"small\" color=\"error\" disabled={isDisabled} onClick={onDeleteItem}>\n <RemoveCircleOutlineIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n </DeleteButtonTableCell>\n );\n}\n\nexport default DeleteRowButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo, useState } from 'react';\n\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport {\n Button,\n Divider,\n Paper,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport QItemGroupTableRow from './QItemGroupTableRow';\nimport { HeaderTableCell } from './Table.styles';\nimport { QGroupContainerBox } from '../../Box.styles';\nimport { mapQItemsIndex } from '../../../utils/mapItem';\nimport type { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';\nimport useInitialiseGroupTable from '../../../hooks/useInitialiseGroupTable';\nimport { nanoid } from 'nanoid';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport DeleteRowButton from './DeleteRowButton';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface Props extends PropsWithQrRepeatGroupChangeHandler {\n qItem: QuestionnaireItem;\n qrItems: QuestionnaireResponseItem[];\n groupCardElevation: number;\n}\n\nfunction QItemGroupTable(props: Props) {\n const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;\n\n const initialisedGroupTables = useInitialiseGroupTable(qrItems);\n\n const [tableRows, setTableRows] = useState(initialisedGroupTables);\n\n // Generate item labels as table headers\n const qItems = qItem.item;\n const itemLabels: string[] = useMemo(\n () => qItems?.map((item) => item.text ?? '') ?? [],\n [qItems]\n );\n\n const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);\n\n // Check if there are columns within the group table\n if (!qItems || qItems.length === 0) {\n return null;\n }\n\n // Event Handlers\n function handleRowChange(newQrRow: QuestionnaireResponseItem, index: number) {\n const updatedTableRows = [...tableRows];\n\n if (newQrRow.item) {\n updatedTableRows[index].qrItem = {\n linkId: newQrRow.linkId,\n text: newQrRow.text,\n item: newQrRow.item\n };\n }\n\n setTableRows(updatedTableRows);\n onQrRepeatGroupChange({\n linkId: qItem.linkId,\n qrItems: updatedTableRows.flatMap((singleRow) => (singleRow.qrItem ? [singleRow.qrItem] : []))\n });\n }\n\n function handleDeleteRow(index: number) {\n const updatedTableRows = [...tableRows];\n\n updatedTableRows.splice(index, 1);\n\n setTableRows(updatedTableRows);\n onQrRepeatGroupChange({\n linkId: qItem.linkId,\n qrItems: updatedTableRows.flatMap((singleRow) => (singleRow.qrItem ? [singleRow.qrItem] : []))\n });\n }\n\n function handleAddRow() {\n setTableRows([\n ...tableRows,\n {\n nanoId: nanoid(),\n qrItem: null\n }\n ]);\n }\n\n return (\n <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>\n <Typography fontSize={13} variant=\"h6\">\n <LabelWrapper qItem={qItem} />\n </Typography>\n <Divider sx={{ my: 1 }} light />\n <TableContainer component={Paper} elevation={groupCardElevation}>\n <Table>\n <caption>\n <Stack direction=\"row\" justifyContent=\"end\">\n <Button\n variant=\"contained\"\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={handleAddRow}>\n Add Row\n </Button>\n </Stack>\n </caption>\n <TableHead>\n <TableRow>\n {itemLabels.map((itemLabel) => (\n <HeaderTableCell key={itemLabel}>{itemLabel}</HeaderTableCell>\n ))}\n <TableCell />\n </TableRow>\n </TableHead>\n <TableBody>\n {tableRows.map(({ nanoId, qrItem: nullableQrItem }, index) => {\n const answeredQrItem = createEmptyQrItem(qItem);\n if (nullableQrItem) {\n answeredQrItem.item = nullableQrItem.item;\n }\n\n return (\n <TableRow key={nanoId}>\n <QItemGroupTableRow\n qItem={qItem}\n qrItem={answeredQrItem}\n qItemsIndexMap={qItemsIndexMap}\n onQrItemChange={(newQrGroup) => handleRowChange(newQrGroup, index)}\n />\n <DeleteRowButton\n nullableQrItem={nullableQrItem}\n numOfRows={tableRows.length}\n onDeleteItem={() => handleDeleteRow(index)}\n />\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n </QGroupContainerBox>\n );\n}\n\nexport default QItemGroupTable;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { QuestionnaireResponseItem } from 'fhir/r4';\nimport { nanoid } from 'nanoid';\nimport type { RepeatGroupSingle } from '../interfaces/repeatGroup.interface';\n\nfunction useInitialiseRepeatGroups(qrItems: QuestionnaireResponseItem[]): RepeatGroupSingle[] {\n let initialRepeatGroupAnswers: RepeatGroupSingle[] = [\n {\n nanoId: nanoid(),\n qrItem: null\n }\n ];\n\n if (qrItems.length > 0) {\n initialRepeatGroupAnswers = qrItems.map((qrItem) => {\n return {\n nanoId: nanoid(),\n qrItem\n };\n });\n }\n\n return initialRepeatGroupAnswers;\n}\n\nexport default useInitialiseRepeatGroups;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import React from 'react';\nexport default React.createContext(null);","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Stack, styled, Tooltip } from '@mui/material';\n\nexport const RepeatDeleteTooltip = styled(Tooltip)(() => ({\n marginLeft: 8\n}));\n\nexport const RepeatItemContainerStack = styled(Stack)(() => ({\n alignItems: 'center',\n paddingBottom: 8\n}));\n\nexport const RepeatGroupContainerStack = styled(Stack)(() => ({\n alignItems: 'center',\n paddingBottom: 16\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { RepeatDeleteTooltip } from '../RepeatItem/RepeatItem.styles';\nimport { IconButton } from '@mui/material';\nimport RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';\nimport type { QuestionnaireResponseItem } from 'fhir/r4';\n\ninterface DeleteItemButtonProps {\n nullableQrItem: QuestionnaireResponseItem | null;\n numOfRepeatGroups: number;\n onDeleteItem: () => void;\n}\n\nfunction DeleteItemButton(props: DeleteItemButtonProps) {\n const { nullableQrItem, numOfRepeatGroups, onDeleteItem } = props;\n\n const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1;\n\n return (\n <RepeatDeleteTooltip className=\"repeat-group-delete\" title=\"Delete item\">\n <span>\n <IconButton size=\"small\" color=\"error\" disabled={isDisabled} onClick={onDeleteItem}>\n <RemoveCircleOutlineIcon />\n </IconButton>\n </span>\n </RepeatDeleteTooltip>\n );\n}\n\nexport default DeleteItemButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { RepeatGroupContainerStack } from '../RepeatItem/RepeatItem.styles';\nimport { Box } from '@mui/material';\nimport GroupItem from '../GroupItem/GroupItem';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport DeleteItemButton from './DeleteItemButton';\n\ninterface RepeatGroupItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n answeredQrItem: QuestionnaireResponseItem;\n nullableQrItem: QuestionnaireResponseItem | null;\n numOfRepeatGroups: number;\n groupCardElevation: number;\n onDeleteItem: () => void;\n}\n\nfunction RepeatGroupItem(props: RepeatGroupItemProps) {\n const {\n qItem,\n answeredQrItem,\n nullableQrItem,\n numOfRepeatGroups,\n groupCardElevation,\n onDeleteItem,\n onQrItemChange\n } = props;\n\n return (\n <RepeatGroupContainerStack direction=\"row\" justifyContent=\"end\">\n <Box sx={{ flexGrow: 1 }}>\n <GroupItem\n qItem={qItem}\n qrItem={answeredQrItem}\n isRepeated={true}\n groupCardElevation={groupCardElevation + 1}\n onQrItemChange={onQrItemChange}\n />\n </Box>\n <DeleteItemButton\n nullableQrItem={nullableQrItem}\n numOfRepeatGroups={numOfRepeatGroups}\n onDeleteItem={onDeleteItem}\n />\n </RepeatGroupContainerStack>\n );\n}\n\nexport default RepeatGroupItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport type { RepeatGroupSingle } from '../../../interfaces/repeatGroup.interface';\n\ninterface AddItemButtonProps {\n repeatGroups: RepeatGroupSingle[];\n onAddItem: () => void;\n}\n\nfunction AddItemButton(props: AddItemButtonProps) {\n const { repeatGroups, onAddItem } = props;\n\n const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null;\n\n return (\n <Box display=\"flex\" flexDirection=\"row-reverse\">\n <Button\n variant=\"contained\"\n startIcon={<AddIcon />}\n disabled={isDisabled}\n onClick={onAddItem}\n data-test=\"button-add-repeat-item\">\n Add Item\n </Button>\n </Box>\n );\n}\n\nexport default AddItemButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from 'react';\nimport type { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';\nimport { QGroupContainerBox } from '../../Box.styles';\nimport { Card, Collapse, Divider } from '@mui/material';\nimport { QGroupHeadingTypography } from '../Typography.styles';\nimport { TransitionGroup } from 'react-transition-group';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { nanoid } from 'nanoid';\nimport RepeatGroupItem from './RepeatGroupItem';\nimport AddItemButton from './AddItemButton';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface RepeatGroupProps extends PropsWithQrRepeatGroupChangeHandler {\n qItem: QuestionnaireItem;\n qrItems: QuestionnaireResponseItem[];\n groupCardElevation: number;\n}\n\nfunction RepeatGroup(props: RepeatGroupProps) {\n const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;\n\n const initialRepeatGroups = useInitialiseRepeatGroups(qrItems);\n\n const [repeatGroups, setRepeatGroups] = useState(initialRepeatGroups);\n\n function handleAnswerChange(newQrItem: QuestionnaireResponseItem, index: number) {\n const updatedRepeatGroups = [...repeatGroups];\n\n if (newQrItem.item) {\n updatedRepeatGroups[index].qrItem = {\n linkId: newQrItem.linkId,\n text: newQrItem.text,\n item: newQrItem.item\n };\n }\n\n setRepeatGroups(updatedRepeatGroups);\n onQrRepeatGroupChange({\n linkId: qItem.linkId,\n qrItems: updatedRepeatGroups.flatMap((singleGroup) =>\n singleGroup.qrItem ? [singleGroup.qrItem] : []\n )\n });\n }\n\n function handleDeleteItem(index: number) {\n const updatedRepeatGroups = [...repeatGroups];\n\n updatedRepeatGroups.splice(index, 1);\n\n setRepeatGroups(updatedRepeatGroups);\n onQrRepeatGroupChange({\n linkId: qItem.linkId,\n qrItems: updatedRepeatGroups.flatMap((singleGroup) =>\n singleGroup.qrItem ? [singleGroup.qrItem] : []\n )\n });\n }\n\n function handleAddItem() {\n setRepeatGroups([\n ...repeatGroups,\n {\n nanoId: nanoid(),\n qrItem: null\n }\n ]);\n }\n\n return (\n <QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>\n <Card elevation={groupCardElevation} sx={{ p: 3, py: 2.5, mb: 3.5 }}>\n <QGroupHeadingTypography variant=\"h6\">\n <LabelWrapper qItem={qItem} />\n </QGroupHeadingTypography>\n <Divider sx={{ mt: 1, mb: 1.5 }} light />\n <TransitionGroup>\n {repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {\n const answeredQrItem = createEmptyQrItem(qItem);\n if (nullableQrItem) {\n answeredQrItem.item = nullableQrItem.item;\n }\n\n return (\n <Collapse key={nanoId} timeout={200}>\n <RepeatGroupItem\n qItem={qItem}\n answeredQrItem={answeredQrItem}\n nullableQrItem={nullableQrItem}\n numOfRepeatGroups={repeatGroups.length}\n groupCardElevation={groupCardElevation + 1}\n onDeleteItem={() => handleDeleteItem(index)}\n onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}\n />\n </Collapse>\n );\n })}\n </TransitionGroup>\n\n <AddItemButton repeatGroups={repeatGroups} onAddItem={handleAddItem} />\n </Card>\n </QGroupContainerBox>\n );\n}\n\nexport default RepeatGroup;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport type { RepeatAnswer } from '../../../interfaces/repeatItem.interface';\n\ninterface AddItemButtonProps {\n repeatAnswers: RepeatAnswer[];\n onAddItem: () => void;\n}\n\nfunction AddItemButton(props: AddItemButtonProps) {\n const { repeatAnswers, onAddItem } = props;\n\n const isDisabled = repeatAnswers[repeatAnswers.length - 1].answer === null;\n\n return (\n <Box display=\"flex\" flexDirection=\"row-reverse\">\n <Button\n variant=\"contained\"\n startIcon={<AddIcon />}\n disabled={isDisabled}\n onClick={onAddItem}\n data-test=\"button-add-repeat-item\">\n Add Item\n </Button>\n </Box>\n );\n}\n\nexport default AddItemButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { RepeatDeleteTooltip } from './RepeatItem.styles';\nimport { IconButton } from '@mui/material';\nimport RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';\nimport type { QuestionnaireResponseItemAnswer } from 'fhir/r4';\n\ninterface DeleteItemButtonProps {\n answer: QuestionnaireResponseItemAnswer | null;\n numOfRepeatAnswers: number;\n onDeleteAnswer: () => void;\n}\n\nfunction DeleteItemButton(props: DeleteItemButtonProps) {\n const { answer, numOfRepeatAnswers, onDeleteAnswer } = props;\n\n const isDisabled = answer === null || numOfRepeatAnswers === 1;\n\n return (\n <RepeatDeleteTooltip className=\"repeat-item-delete\" title=\"Delete item\">\n <span>\n <IconButton size=\"small\" color=\"error\" disabled={isDisabled} onClick={onDeleteAnswer}>\n <RemoveCircleOutlineIcon fontSize=\"small\" />\n </IconButton>\n </span>\n </RepeatDeleteTooltip>\n );\n}\n\nexport default DeleteItemButton;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Box } from '@mui/material';\nimport { RepeatItemContainerStack } from './RepeatItem.styles';\nimport SingleItem from '../SingleItem/SingleItem';\nimport type {\n QuestionnaireItem,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer\n} from 'fhir/r4';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\nimport DeleteItemButton from './DeleteItemButton';\n\ninterface RepeatFieldProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n answer: QuestionnaireResponseItemAnswer | null;\n numOfRepeatAnswers: number;\n onDeleteAnswer: () => void;\n}\n\nfunction RepeatField(props: RepeatFieldProps) {\n const { qItem, qrItem, answer, numOfRepeatAnswers, onDeleteAnswer, onQrItemChange } = props;\n\n return (\n <RepeatItemContainerStack direction=\"row\">\n <Box sx={{ flexGrow: 1 }}>\n <SingleItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={qItem.repeats ?? false}\n isTabled={false}\n onQrItemChange={onQrItemChange}\n />\n </Box>\n <DeleteItemButton\n answer={answer}\n numOfRepeatAnswers={numOfRepeatAnswers}\n onDeleteAnswer={onDeleteAnswer}\n />\n </RepeatItemContainerStack>\n );\n}\n\nexport default RepeatField;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { QuestionnaireResponseItem } from 'fhir/r4';\nimport type { RepeatAnswer } from '../interfaces/repeatItem.interface';\nimport { nanoid } from 'nanoid';\n\nfunction useInitialiseRepeatAnswers(qrItem: QuestionnaireResponseItem): RepeatAnswer[] {\n let initialRepeatAnswers: RepeatAnswer[] = [\n {\n nanoId: nanoid(),\n answer: null\n }\n ];\n\n if (qrItem?.answer) {\n initialRepeatAnswers = qrItem.answer.map((answer) => {\n return {\n nanoId: nanoid(),\n answer\n };\n });\n }\n\n return initialRepeatAnswers;\n}\n\nexport default useInitialiseRepeatAnswers;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from 'react';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { nanoid } from 'nanoid';\nimport useRenderingExtensions from '../../../hooks/useRenderingExtensions';\nimport { createEmptyQrItem } from '../../../utils/qrItem';\nimport { FullWidthFormComponentBox } from '../../Box.styles';\nimport AddItemButton from './AddItemButton';\nimport { TransitionGroup } from 'react-transition-group';\nimport RepeatField from './RepeatField';\nimport { Collapse } from '@mui/material';\nimport useInitialiseRepeatAnswers from '../../../hooks/useInitialiseRepeatAnswers';\nimport ItemFieldGrid from '../ItemParts/ItemFieldGrid';\n\ninterface RepeatItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n}\n\nfunction RepeatItem(props: RepeatItemProps) {\n const { qItem, qrItem, onQrItemChange } = props;\n\n // Get additional rendering extensions\n const { displayInstructions } = useRenderingExtensions(qItem);\n\n const initialRepeatAnswers = useInitialiseRepeatAnswers(qrItem);\n\n const [repeatAnswers, setRepeatAnswers] = useState(initialRepeatAnswers);\n\n // Event Handlers\n function handleAnswerChange(newQrItem: QuestionnaireResponseItem, index: number) {\n const updatedRepeatAnswers = [...repeatAnswers];\n updatedRepeatAnswers[index].answer = newQrItem.answer ? newQrItem.answer[0] : null;\n\n setRepeatAnswers(updatedRepeatAnswers);\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: updatedRepeatAnswers.flatMap((repeatAnswer) =>\n repeatAnswer.answer ? [repeatAnswer.answer] : []\n )\n });\n }\n\n function handleDeleteItem(index: number) {\n const updatedRepeatAnswers = [...repeatAnswers];\n\n updatedRepeatAnswers.splice(index, 1);\n\n setRepeatAnswers(updatedRepeatAnswers);\n onQrItemChange({\n ...createEmptyQrItem(qItem),\n answer: updatedRepeatAnswers.flatMap((repeatAnswer) =>\n repeatAnswer.answer ? [repeatAnswer.answer] : []\n )\n });\n }\n\n function handleAddItem() {\n setRepeatAnswers([\n ...repeatAnswers,\n {\n nanoId: nanoid(),\n answer: null\n }\n ]);\n }\n\n return (\n <FullWidthFormComponentBox data-test=\"q-item-repeat-box\">\n <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>\n <TransitionGroup>\n {repeatAnswers.map(({ nanoId, answer }, index) => {\n const repeatAnswerQrItem = createEmptyQrItem(qItem);\n if (answer) {\n repeatAnswerQrItem.answer = [answer];\n }\n\n return (\n <Collapse key={nanoId} timeout={200}>\n <RepeatField\n qItem={qItem}\n qrItem={repeatAnswerQrItem}\n answer={answer}\n numOfRepeatAnswers={repeatAnswers.length}\n onDeleteAnswer={() => handleDeleteItem(index)}\n onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}\n />\n </Collapse>\n );\n })}\n </TransitionGroup>\n </ItemFieldGrid>\n\n <AddItemButton repeatAnswers={repeatAnswers} onAddItem={handleAddItem} />\n </FullWidthFormComponentBox>\n );\n}\n\nexport default RepeatItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\nimport { createQrGroup, updateQrGroup } from '../../../utils/qrItem';\nimport { GridAnswerTableCell, GridTextTableCell } from '../Tables/Table.styles';\nimport SingleItem from '../SingleItem/SingleItem';\nimport { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';\nimport { Typography } from '@mui/material';\n\ninterface GridRowProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n columnLabels: string[];\n numOfColumns: number;\n}\n\nfunction GridRow(props: GridRowProps) {\n const { qItem, qrItem, columnLabels, numOfColumns, onQrItemChange } = props;\n\n const rowQItems = qItem.item;\n const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);\n const rowQrItems = row.item;\n\n const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);\n\n if (!rowQItems || !rowQrItems) {\n return null;\n }\n\n function handleQrRowItemChange(newQrRowItem: QuestionnaireResponseItem) {\n const qrRow: QuestionnaireResponseItem = { ...row };\n updateQrGroup(newQrRowItem, null, qrRow, qItemsIndexMap);\n onQrItemChange(qrRow);\n }\n\n const qrItemsByIndex = getQrItemsIndex(rowQItems, rowQrItems, qItemsIndexMap);\n\n return (\n <>\n <GridTextTableCell>\n <Typography fontWeight=\"bold\">{qItem.text}</Typography>\n </GridTextTableCell>\n {rowQItems.map((cellQItem, index) => {\n const cellQrItem = qrItemsByIndex[index];\n\n // Don't render cell if column label does not match - \"sparse-ness\" of grid\n if (columnLabels[index] !== cellQItem.text) {\n return null;\n }\n\n if (Array.isArray(cellQrItem)) {\n return null;\n }\n\n return (\n <GridAnswerTableCell key={index} numOfColumns={numOfColumns}>\n <SingleItem\n qItem={cellQItem}\n qrItem={cellQrItem}\n isRepeated={true}\n isTabled={true}\n onQrItemChange={handleQrRowItemChange}\n />\n </GridAnswerTableCell>\n );\n })}\n </>\n );\n}\n\nexport default GridRow;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { HeaderTableCell } from '../Tables/Table.styles';\nimport GridRow from './GridRow';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { getQrItemsIndex } from '../../../utils/mapItem';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\n\ninterface GridTableProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItems: QuestionnaireItem[];\n qrItems: QuestionnaireResponseItem[];\n qItemsIndexMap: Record<string, number>;\n columnLabels: string[];\n}\n\nfunction GridTable(props: GridTableProps) {\n const { qItems, qrItems, qItemsIndexMap, columnLabels, onQrItemChange } = props;\n\n const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =\n getQrItemsIndex(qItems, qrItems, qItemsIndexMap);\n\n const numOfColumns = columnLabels.length;\n\n return (\n <Table>\n <TableHead>\n <TableRow>\n <HeaderTableCell />\n {columnLabels.map((label) => (\n <HeaderTableCell key={label}>{label}</HeaderTableCell>\n ))}\n <TableCell />\n </TableRow>\n </TableHead>\n <TableBody>\n {qItems.map((qItem, index) => {\n const qrItem = qrItemsByIndex[index];\n\n if (Array.isArray(qrItem)) {\n return null;\n }\n\n return (\n <TableRow key={qItem.linkId}>\n <GridRow\n qItem={qItem}\n qrItem={qrItem}\n columnLabels={columnLabels}\n numOfColumns={numOfColumns}\n onQrItemChange={onQrItemChange}\n />\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n );\n}\n\nexport default GridTable;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';\nimport { createQrGroup, updateQrGroup } from '../../../utils/qrItem';\nimport useHidden from '../../../hooks/useHidden';\nimport { QGroupContainerBox } from '../../Box.styles';\nimport { Divider, Paper, TableContainer, Typography } from '@mui/material';\nimport { mapQItemsIndex } from '../../../utils/mapItem';\nimport GridTable from './GridTable';\nimport LabelWrapper from '../ItemParts/ItemLabelWrapper';\n\ninterface GridGroupProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n groupCardElevation: number;\n}\n\nfunction GridGroup(props: GridGroupProps) {\n const { qItem, qrItem, groupCardElevation, onQrItemChange } = props;\n\n const qRowItems = qItem.item;\n const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);\n const qrRowItems = qrGroup.item;\n\n const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);\n\n const columnLabels: string[] = useMemo(\n () => qRowItems?.[0].item?.map((firstItem) => firstItem.text ?? ' ') ?? [],\n [qRowItems]\n );\n\n const itemIsHidden = useHidden(qItem);\n if (itemIsHidden) {\n return null;\n }\n\n if (!qRowItems || !qrRowItems) {\n return <>Unable to load group, something has gone terribly wrong.</>;\n }\n\n // Check if there are row within the grid\n if (qRowItems.length === 0) {\n return null;\n }\n\n // Event Handlers\n function handleRowChange(newQrItem: QuestionnaireResponseItem) {\n const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };\n updateQrGroup(newQrItem, null, updatedQrGroup, qItemsIndexMap);\n onQrItemChange(updatedQrGroup);\n }\n\n return (\n <>\n <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>\n <Typography fontSize={13} variant=\"h6\">\n <LabelWrapper qItem={qItem} />\n </Typography>\n <Divider sx={{ my: 1 }} light />\n\n <TableContainer component={Paper} elevation={groupCardElevation}>\n <GridTable\n qItems={qRowItems}\n qrItems={qrRowItems}\n qItemsIndexMap={qItemsIndexMap}\n columnLabels={columnLabels}\n onQrItemChange={handleRowChange}\n />\n </TableContainer>\n </QGroupContainerBox>\n </>\n );\n}\n\nexport default GridGroup;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type {\n PropsWithQrItemChangeHandler,\n PropsWithQrRepeatGroupChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { isSpecificItemControl } from '../../../utils/itemControl';\nimport QItemGroupTable from '../Tables/QItemGroupTable';\nimport RepeatGroup from '../RepeatGroup/RepeatGroup';\nimport { isRepeatItemAndNotCheckbox } from '../../../utils/qItem';\nimport RepeatItem from '../RepeatItem/RepeatItem';\nimport SingleItem from '../SingleItem/SingleItem';\nimport useHidden from '../../../hooks/useHidden';\nimport GroupItem from './GroupItem';\nimport GridGroup from '../GridGroup/GridGroup';\n\ninterface GroupItemSwitcherProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithQrRepeatGroupChangeHandler {\n qItem: QuestionnaireItem;\n qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];\n groupCardElevation: number;\n}\n\nfunction GroupItemSwitcher(props: GroupItemSwitcherProps) {\n const { qItem, qrItemOrItems, groupCardElevation, onQrItemChange, onQrRepeatGroupChange } = props;\n\n const itemIsHidden = useHidden(qItem);\n if (itemIsHidden) {\n return null;\n }\n\n // If there are multiple answers\n const hasMultipleAnswers = Array.isArray(qrItemOrItems);\n if (hasMultipleAnswers) {\n const qrItems = qrItemOrItems;\n\n // qItem should always be either a repeatGroup or a groupTable item\n // groupTables item have qItem.repeats = true and qItem.type = 'group' as well\n if (!qItem.repeats || qItem.type !== 'group') {\n return <>Something went wrong here</>;\n }\n\n if (isSpecificItemControl(qItem, 'gtable')) {\n return (\n <QItemGroupTable\n qItem={qItem}\n qrItems={qrItems}\n groupCardElevation={groupCardElevation + 1}\n onQrRepeatGroupChange={onQrRepeatGroupChange}\n />\n );\n }\n\n return (\n <RepeatGroup\n qItem={qItem}\n qrItems={qrItems}\n groupCardElevation={groupCardElevation + 1}\n onQrRepeatGroupChange={onQrRepeatGroupChange}\n />\n );\n }\n\n // If there is only one answer\n const qrItem = qrItemOrItems;\n const itemIsGrid = isSpecificItemControl(qItem, 'grid');\n if (itemIsGrid) {\n return (\n <GridGroup\n qItem={qItem}\n qrItem={qrItem}\n groupCardElevation={groupCardElevation}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n\n const itemRepeatsAndIsNotCheckbox = isRepeatItemAndNotCheckbox(qItem);\n if (itemRepeatsAndIsNotCheckbox) {\n if (qItem.type === 'group') {\n // If qItem is RepeatGroup or a groupTable item in this decision branch,\n // their qrItem array should always be empty\n if (isSpecificItemControl(qItem, 'gtable')) {\n return (\n <QItemGroupTable\n qItem={qItem}\n qrItems={[]}\n groupCardElevation={groupCardElevation + 1}\n onQrRepeatGroupChange={onQrRepeatGroupChange}\n />\n );\n }\n\n return (\n <RepeatGroup\n qItem={qItem}\n qrItems={[]}\n groupCardElevation={groupCardElevation + 1}\n onQrRepeatGroupChange={onQrRepeatGroupChange}\n />\n );\n }\n\n return <RepeatItem qItem={qItem} qrItem={qrItem} onQrItemChange={onQrItemChange} />;\n }\n\n // if qItem is not a repeating question or is a checkbox\n if (qItem.type === 'group') {\n return (\n <GroupItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={false}\n groupCardElevation={groupCardElevation + 1}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n\n // Defaults to a normal QItemSwitcher\n return (\n <SingleItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={false}\n isTabled={false}\n onQrItemChange={onQrItemChange}\n />\n );\n}\n\nexport default GroupItemSwitcher;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { createQrGroup, updateQrGroup } from '../../../utils/qrItem';\nimport { QGroupContainerBox } from '../../Box.styles';\nimport type {\n PropsWithIsRepeatedAttribute,\n PropsWithQrItemChangeHandler\n} from '../../../interfaces/renderProps.interface';\nimport type { QrRepeatGroup } from '../../../interfaces/repeatGroup.interface';\nimport useHidden from '../../../hooks/useHidden';\nimport type { Tabs } from '../../../interfaces/tab.interface';\nimport GroupHeading from './GroupHeading';\nimport { GroupCard } from './GroupItem.styles';\nimport NextTabButtonWrapper from './NextTabButtonWrapper';\nimport GroupItemSwitcher from './GroupItemSwitcher';\n\ninterface GroupItemProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,\n PropsWithIsRepeatedAttribute {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n groupCardElevation: number;\n tabIsMarkedAsComplete?: boolean;\n tabs?: Tabs;\n currentTabIndex?: number;\n goToNextTab?: (nextTabIndex: number) => unknown;\n}\n\nfunction GroupItem(props: GroupItemProps) {\n const {\n qItem,\n qrItem,\n isRepeated,\n groupCardElevation,\n tabIsMarkedAsComplete,\n tabs,\n currentTabIndex,\n onQrItemChange\n } = props;\n\n const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);\n\n const itemIsHidden = useHidden(qItem);\n if (itemIsHidden) {\n return null;\n }\n\n const qItems = qItem.item;\n const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);\n const qrItems = qrGroup.item;\n\n // Event Handlers\n function handleQrItemChange(newQrItem: QuestionnaireResponseItem) {\n const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };\n updateQrGroup(newQrItem, null, updatedQrGroup, qItemsIndexMap);\n onQrItemChange(updatedQrGroup);\n }\n\n function handleQrRepeatGroupChange(qrRepeatGroup: QrRepeatGroup) {\n const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };\n updateQrGroup(null, qrRepeatGroup, updatedQrGroup, qItemsIndexMap);\n onQrItemChange(updatedQrGroup);\n }\n\n if (!qItems || !qrItems) {\n return <>Unable to load group, something has gone terribly wrong.</>;\n }\n\n // If an item has multiple answers, it is a repeat group\n const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =\n getQrItemsIndex(qItems, qrItems, qItemsIndexMap);\n\n return (\n <QGroupContainerBox\n cardElevation={groupCardElevation}\n isRepeated={isRepeated}\n data-test=\"q-item-group-box\">\n <GroupCard elevation={groupCardElevation} isRepeated={isRepeated}>\n <GroupHeading\n qItem={qItem}\n tabIsMarkedAsComplete={tabIsMarkedAsComplete}\n isRepeated={isRepeated}\n />\n {qItems.map((qItem: QuestionnaireItem, i) => {\n const qrItemOrItems = qrItemsByIndex[i];\n\n return (\n <GroupItemSwitcher\n key={qItem.linkId}\n qItem={qItem}\n qrItemOrItems={qrItemOrItems}\n groupCardElevation={groupCardElevation}\n onQrItemChange={handleQrItemChange}\n onQrRepeatGroupChange={handleQrRepeatGroupChange}\n />\n );\n })}\n\n {/* Next tab button at the end of each tab group */}\n <NextTabButtonWrapper currentTabIndex={currentTabIndex} tabs={tabs} />\n </GroupCard>\n </QGroupContainerBox>\n );\n}\n\nexport default GroupItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { List, styled } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nexport const PrimarySelectableList = styled(List)(({ theme }) => ({\n '&& .Mui-selected': {\n color: theme.palette.primary.dark,\n backgroundColor: alpha(theme.palette.primary.main, 0.2),\n borderRadius: 30,\n '& .MuiTypography-root': {\n fontWeight: 'bold'\n }\n },\n '& .MuiListItemButton-root': {\n color: '#444746',\n borderRadius: 30\n },\n '& .MuiListItemButton-root:hover': {\n color: theme.palette.primary.dark,\n backgroundColor: alpha(theme.palette.primary.main, 0.09),\n borderRadius: 30\n }\n}));\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Box, ListItemButton, ListItemText, Typography } from '@mui/material';\nimport useQuestionnaireStore from '../../stores/useQuestionnaireStore';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { getContextDisplays } from '../../utils/tabs';\nimport ContextDisplayItem from '../FormComponents/ItemParts/ContextDisplayItem';\n\ninterface FormBodySingleTabProps {\n qItem: QuestionnaireItem;\n selected: boolean;\n tabLabel: string;\n listIndex: number;\n}\n\nconst FormBodySingleTab = memo(function FormBodySingleTab(props: FormBodySingleTabProps) {\n const { qItem, selected, tabLabel, listIndex } = props;\n\n const switchTab = useQuestionnaireStore((state) => state.switchTab);\n\n const contextDisplayItems = getContextDisplays(qItem);\n\n function handleTabClick() {\n switchTab(listIndex);\n window.scrollTo(0, 0);\n }\n\n return (\n <>\n <ListItemButton\n selected={selected}\n sx={{ my: 0.2, minHeight: '36px' }}\n onClick={handleTabClick}>\n <ListItemText\n primary={\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\n <Typography variant=\"subtitle2\">{tabLabel}</Typography>\n <Box display=\"flex\">\n {contextDisplayItems.map((item) => {\n return <ContextDisplayItem key={item.linkId} displayItem={item} />;\n })}\n </Box>\n </Box>\n }\n />\n </ListItemButton>\n </>\n );\n});\n\nexport default FormBodySingleTab;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from 'react';\nimport { Box, Card, Collapse } from '@mui/material';\nimport { PrimarySelectableList } from '../Lists.styles';\nimport { TransitionGroup } from 'react-transition-group';\nimport { isHidden } from '../../utils/qItem';\nimport { getShortText } from '../../utils/itemControl';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport FormBodySingleTab from './FormBodySingleTab';\nimport type { Tabs } from '../../interfaces/tab.interface';\nimport useQuestionnaireStore from '../../stores/useQuestionnaireStore';\n\ninterface FormBodyTabListProps {\n qFormItems: QuestionnaireItem[];\n currentTabIndex: number;\n tabs: Tabs;\n}\n\nconst FormBodyTabList = memo(function FormBodyTabList(props: FormBodyTabListProps) {\n const { qFormItems, currentTabIndex, tabs } = props;\n\n const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);\n const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);\n const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);\n\n return (\n <Card sx={{ p: 0.75, mb: 2 }}>\n <Box sx={{ flexGrow: 1 }}>\n <PrimarySelectableList dense disablePadding sx={{ my: 1 }} data-test=\"renderer-tab-list\">\n <TransitionGroup>\n {qFormItems.map((qItem, i) => {\n const isTab = !!tabs[qItem.linkId];\n\n if (\n !isTab ||\n isHidden({\n questionnaireItem: qItem,\n enableWhenIsActivated,\n enableWhenItems,\n enableWhenExpressions\n })\n ) {\n return null;\n }\n\n const tabIsSelected = currentTabIndex.toString() === i.toString();\n const tabLabel = getShortText(qItem) ?? qItem.text ?? '';\n\n return (\n <Collapse key={qItem.linkId} timeout={100}>\n <FormBodySingleTab\n qItem={qItem}\n selected={tabIsSelected}\n tabLabel={tabLabel}\n listIndex={i}\n />\n </Collapse>\n );\n })}\n </TransitionGroup>\n </PrimarySelectableList>\n </Box>\n </Card>\n );\n});\n\nexport default FormBodyTabList;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport { Grid } from '@mui/material';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { TabContext, TabPanel } from '@mui/lab';\nimport { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';\nimport GroupItem from '../FormComponents/GroupItem/GroupItem';\nimport { updateQrGroup } from '../../utils/qrItem';\nimport FormBodyTabList from '../Tabs/FormBodyTabList';\nimport type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';\nimport useQuestionnaireStore from '../../stores/useQuestionnaireStore';\n\ninterface FormBodyTabbedProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n topLevelQItem: QuestionnaireItem;\n topLevelQRItem: QuestionnaireResponseItem;\n}\n\nfunction FormBodyTabbed(props: FormBodyTabbedProps) {\n const { topLevelQItem, topLevelQRItem, onQrItemChange } = props;\n\n const tabs = useQuestionnaireStore((state) => state.tabs);\n const currentTab = useQuestionnaireStore((state) => state.currentTabIndex);\n\n const indexMap: Record<string, number> = useMemo(\n () => mapQItemsIndex(topLevelQItem),\n [topLevelQItem]\n );\n\n const qItems = topLevelQItem.item;\n const qrItems = topLevelQRItem.item;\n\n function handleQrGroupChange(qrItem: QuestionnaireResponseItem) {\n updateQrGroup(qrItem, null, topLevelQRItem, indexMap);\n onQrItemChange(topLevelQRItem);\n }\n\n if (!qItems || !qrItems) {\n return <>Unable to load form</>;\n }\n\n const qrItemsByIndex = getQrItemsIndex(qItems, qrItems, indexMap);\n\n return (\n <Grid container spacing={2}>\n <TabContext value={currentTab.toString()}>\n <Grid item xs={12} md={3.5} lg={3} xl={2.75}>\n <FormBodyTabList qFormItems={qItems} currentTabIndex={currentTab} tabs={tabs} />\n </Grid>\n\n <Grid item xs={12} md={8.5} lg={9} xl={9.25}>\n {qItems.map((qItem, i) => {\n const qrItem = qrItemsByIndex[i];\n\n const isNotRepeatGroup = !Array.isArray(qrItem);\n const isTab = !!tabs[qItem.linkId];\n\n if (!isTab || !isNotRepeatGroup) {\n // Something has gone horribly wrong\n return null;\n }\n\n const isRepeated = qItem.repeats ?? false;\n const tabIsMarkedAsComplete = tabs[qItem.linkId].isComplete ?? false;\n\n return (\n <TabPanel\n key={qItem.linkId}\n sx={{ p: 0 }}\n value={i.toString()}\n data-test=\"renderer-tab-panel\">\n <GroupItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={isRepeated}\n groupCardElevation={1}\n tabIsMarkedAsComplete={tabIsMarkedAsComplete}\n tabs={tabs}\n currentTabIndex={currentTab}\n onQrItemChange={handleQrGroupChange}\n />\n </TabPanel>\n );\n })}\n </Grid>\n </TabContext>\n </Grid>\n );\n}\n\nexport default FormBodyTabbed;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ReactNode } from 'react';\nimport React, { memo } from 'react';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Tooltip,\n Typography\n} from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { getContextDisplays } from '../../utils/tabs';\nimport type { QuestionnaireItem } from 'fhir/r4';\nimport { getShortText } from '../../utils/itemControl';\nimport ContextDisplayItem from '../FormComponents/ItemParts/ContextDisplayItem';\n\ninterface FormBodySingleCollapsibleProps {\n qItem: QuestionnaireItem;\n index: number;\n selectedIndex: number;\n onToggleExpand: (index: number) => void;\n children: ReactNode;\n}\n\nconst FormBodySingleCollapsible = memo(function FormBodySingleCollapsible(\n props: FormBodySingleCollapsibleProps\n) {\n const { qItem, index, selectedIndex, onToggleExpand, children } = props;\n\n const contextDisplayItems = getContextDisplays(qItem);\n\n const collapsibleLabel = getShortText(qItem) ?? qItem.text ?? '';\n\n return (\n <Accordion\n expanded={selectedIndex === index}\n TransitionProps={{ unmountOnExit: true, timeout: 250 }}\n onChange={() => onToggleExpand(index)}>\n <AccordionSummary\n expandIcon={\n <Tooltip title={'Expand'}>\n <ExpandMoreIcon />\n </Tooltip>\n }>\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\" mr={3}>\n <Typography variant=\"subtitle2\">{collapsibleLabel}</Typography>\n <Box display=\"flex\" columnGap={0.5}>\n {contextDisplayItems.map((item) => {\n return <ContextDisplayItem key={item.linkId} displayItem={item} />;\n })}\n </Box>\n </Box>\n </AccordionSummary>\n <AccordionDetails>{children}</AccordionDetails>\n </Accordion>\n );\n});\n\nexport default FormBodySingleCollapsible;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport GroupItem from '../FormComponents/GroupItem/GroupItem';\nimport FormBodySingleCollapsible from './FormBodySingleCollapsible';\nimport type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';\nimport useHidden from '../../hooks/useHidden';\n\ninterface FormBodySingleCollapsibleProps\n extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n qItem: QuestionnaireItem;\n qrItem: QuestionnaireResponseItem;\n index: number;\n selectedIndex: number;\n onToggleExpand: (index: number) => void;\n}\n\nfunction FormBodySingleCollapsibleWrapper(props: FormBodySingleCollapsibleProps) {\n const { qItem, qrItem, index, selectedIndex, onToggleExpand, onQrItemChange } = props;\n\n const itemIsHidden = useHidden(qItem);\n if (itemIsHidden) {\n return null;\n }\n\n return (\n <FormBodySingleCollapsible\n key={qItem.linkId}\n qItem={qItem}\n index={index}\n selectedIndex={selectedIndex}\n onToggleExpand={onToggleExpand}>\n <GroupItem\n qItem={qItem}\n qrItem={qrItem}\n isRepeated={true}\n groupCardElevation={1}\n onQrItemChange={onQrItemChange}\n />\n </FormBodySingleCollapsible>\n );\n}\n\nexport default FormBodySingleCollapsibleWrapper;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from 'react';\nimport { Stack } from '@mui/material';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';\nimport { updateQrGroup } from '../../utils/qrItem';\nimport type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';\nimport useQuestionnaireStore from '../../stores/useQuestionnaireStore';\nimport FormBodySingleCollapsibleWrapper from './FormBodySingleCollapsibleWrapper';\n\ninterface FormBodyCollapsibleProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n topLevelQItem: QuestionnaireItem;\n topLevelQRItem: QuestionnaireResponseItem;\n}\n\nfunction FormBodyCollapsibleWrapper(props: FormBodyCollapsibleProps) {\n const { topLevelQItem, topLevelQRItem, onQrItemChange } = props;\n\n const currentTab = useQuestionnaireStore((state) => state.currentTabIndex);\n const tabs = useQuestionnaireStore((state) => state.tabs);\n\n const switchTab = useQuestionnaireStore((state) => state.switchTab);\n\n const indexMap: Record<string, number> = useMemo(\n () => mapQItemsIndex(topLevelQItem),\n [topLevelQItem]\n );\n\n const qItems = topLevelQItem.item;\n const qrItems = topLevelQRItem.item;\n\n function handleQrGroupChange(qrItem: QuestionnaireResponseItem) {\n updateQrGroup(qrItem, null, topLevelQRItem, indexMap);\n onQrItemChange(topLevelQRItem);\n }\n\n if (!qItems || !qrItems) {\n return <>Unable to load form</>;\n }\n\n function handleToggleExpand(index: number) {\n switchTab(currentTab === index ? -1 : index);\n }\n\n if (!qItems || !qrItems) {\n return <>Unable to load form</>;\n }\n\n const qrItemsByIndex = getQrItemsIndex(qItems, qrItems, indexMap);\n\n return (\n <Stack rowGap={1}>\n {qItems.map((qItem, i) => {\n const qrItem = qrItemsByIndex[i];\n\n const isNotRepeatGroup = !Array.isArray(qrItem);\n const isTab = !!tabs[qItem.linkId];\n\n if (!isTab || !isNotRepeatGroup) {\n // Something has gone horribly wrong\n return null;\n }\n\n return (\n <FormBodySingleCollapsibleWrapper\n key={qItem.linkId}\n qItem={qItem}\n qrItem={qrItem}\n index={i}\n selectedIndex={currentTab}\n onToggleExpand={handleToggleExpand}\n onQrItemChange={handleQrGroupChange}\n />\n );\n })}\n </Stack>\n );\n}\n\nexport default FormBodyCollapsibleWrapper;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nfunction useResponsive(\n query: 'up' | 'down' | 'between' | 'only',\n start: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n end: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'xl'\n) {\n const theme = useTheme();\n\n const mediaUp = useMediaQuery(theme.breakpoints.up(start));\n\n const mediaDown = useMediaQuery(theme.breakpoints.down(start));\n\n const mediaBetween = useMediaQuery(theme.breakpoints.between(start, end));\n\n const mediaOnly = useMediaQuery(theme.breakpoints.only(start));\n\n if (query === 'up') {\n return mediaUp;\n }\n\n if (query === 'down') {\n return mediaDown;\n }\n\n if (query === 'between') {\n return mediaBetween;\n }\n\n return mediaOnly;\n}\n\nexport default useResponsive;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\nimport FormBodyTabbed from './FormBodyTabbed';\nimport { containsTabs, isTabContainer } from '../../utils/tabs';\nimport GroupItem from '../FormComponents/GroupItem/GroupItem';\nimport SingleItem from '../FormComponents/SingleItem/SingleItem';\nimport type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';\nimport FormBodyCollapsible from './FormBodyCollapsible';\nimport useResponsive from '../../hooks/useResponsive';\n\ninterface FormTopLevelItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {\n topLevelQItem: QuestionnaireItem;\n topLevelQRItem: QuestionnaireResponseItem;\n}\n\nfunction FormTopLevelItem(props: FormTopLevelItemProps) {\n const { topLevelQItem, topLevelQRItem, onQrItemChange } = props;\n\n const itemIsTabContainer = isTabContainer(topLevelQItem);\n const itemContainsTabs = containsTabs(topLevelQItem);\n\n const isDesktop = useResponsive('up', 'lg');\n\n const itemIsGroup = topLevelQItem.type === 'group';\n\n // If form is tabbed, it is rendered as a tabbed form\n if (itemContainsTabs || itemIsTabContainer) {\n if (isDesktop) {\n return (\n <FormBodyTabbed\n key={topLevelQItem.linkId}\n topLevelQItem={topLevelQItem}\n topLevelQRItem={topLevelQRItem}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n\n return (\n <FormBodyCollapsible\n key={topLevelQItem.linkId}\n topLevelQItem={topLevelQItem}\n topLevelQRItem={topLevelQRItem}\n onQrItemChange={onQrItemChange}\n />\n );\n }\n\n // If form is untabbed, it is rendered as a regular group\n if (itemIsGroup) {\n return (\n <GroupItem\n key={topLevelQItem.linkId}\n qItem={topLevelQItem}\n qrItem={topLevelQRItem}\n groupCardElevation={1}\n onQrItemChange={onQrItemChange}\n isRepeated={false}\n />\n );\n }\n\n // Otherwise, it is rendered as a non-group item\n return (\n <SingleItem\n key={topLevelQItem.linkId}\n qItem={topLevelQItem}\n qrItem={topLevelQRItem}\n isTabled={false}\n onQrItemChange={onQrItemChange}\n isRepeated={false}\n />\n );\n}\n\nexport default FormTopLevelItem;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { Container, Fade } from '@mui/material';\nimport FormTopLevelItem from '../FormRenderer/FormTopLevelItem';\nimport type { QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';\nimport useQuestionnaireStore from '../../stores/useQuestionnaireStore';\nimport useQuestionnaireResponseStore from '../../stores/useQuestionnaireResponseStore';\n\nfunction FormRenderer() {\n const sourceQuestionnaire = useQuestionnaireStore((state) => state.sourceQuestionnaire);\n const updateExpressions = useQuestionnaireStore((state) => state.updateExpressions);\n const updatableResponse = useQuestionnaireResponseStore((state) => state.updatableResponse);\n const updateResponse = useQuestionnaireResponseStore((state) => state.updateResponse);\n\n function handleTopLevelQRItemChange(newTopLevelQItem: QuestionnaireResponseItem, index: number) {\n if (!updatableResponse.item || updatableResponse.item.length === 0) {\n return;\n }\n\n const updatedItems = [...updatableResponse.item]; // Copy the original array of items\n updatedItems[index] = newTopLevelQItem; // Modify the item at the specified index\n\n const updatedResponse: QuestionnaireResponse = {\n ...updatableResponse,\n item: updatedItems\n };\n\n updateExpressions(updatedResponse);\n updateResponse(updatedResponse);\n }\n\n const topLevelQItems = sourceQuestionnaire.item;\n const topLevelQRItems = updatableResponse.item;\n\n if (!topLevelQItems) {\n return <>Questionnaire does not have any items</>;\n }\n\n return (\n <Fade in={true} timeout={500}>\n <Container maxWidth=\"xl\">\n {topLevelQItems.map((qItem, index) => {\n const qrItem = topLevelQRItems\n ? topLevelQRItems[index]\n : {\n linkId: qItem.linkId,\n text: qItem.text\n };\n\n return (\n <FormTopLevelItem\n key={qItem.linkId}\n topLevelQItem={qItem}\n topLevelQRItem={qrItem}\n onQrItemChange={(newTopLevelQRItem) =>\n handleTopLevelQRItemChange(newTopLevelQRItem, index)\n }\n />\n );\n })}\n </Container>\n </Fade>\n );\n}\n\nexport default FormRenderer;\n","/*\n * Copyright 2023 Commonwealth Scientific and Industrial Research\n * Organisation (CSIRO) ABN 41 687 119 230.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';\nimport useInitialiseRenderer from '../../hooks/useInitialiseRenderer';\nimport { Box, CircularProgress, Typography } from '@mui/material';\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport useQueryClient from '../../hooks/useQueryClient';\nimport FormRenderer from './FormRenderer';\n\ninterface SmartFormsRendererProps {\n questionnaire: Questionnaire;\n questionnaireResponse?: QuestionnaireResponse;\n additionalVariables?: Record<string, object>;\n}\n\n// TODO add terminiology server\n//TODO\n/*\n * SetFhirClient(fhirClient: fhirClient) // the object to call to perform any further fhir calls from the host\n * SetTerminologyServer(???) // not sure on what this parameter should look like, is it another fhirClient, or just a URL. Not sure - what do you have already? I think the Telstra one just took the URL. But that doesn't give any way to do terminology servers that require authentication\n * GetResponse() : fhir4.QuestionnaireResponse // return the current response values.\n */\nfunction SmartFormsRenderer(props: SmartFormsRendererProps) {\n const { questionnaire, questionnaireResponse, additionalVariables } = props;\n\n const isLoading = useInitialiseRenderer(\n questionnaire,\n questionnaireResponse,\n additionalVariables\n );\n const queryClient = useQueryClient();\n\n if (isLoading) {\n return (\n <Box display=\"flex\" alignItems=\"center\" columnGap={2}>\n <CircularProgress />\n <Typography>Loading questionnaire...</Typography>\n </Box>\n );\n }\n\n return (\n <QueryClientProvider client={queryClient}>\n <FormRenderer />\n </QueryClientProvider>\n );\n}\n\nexport default SmartFormsRenderer;\n"],"names":["cloneDeep","eq","assocIndexOf","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","global","freeGlobal","Symbol","root","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","objectToString","funcTag","isObject","baseGetTag","coreJsData","funcProto","funcToString","isMasked","isFunction","toSource","getValue","baseIsNative","getNative","nativeCreate","HASH_UNDEFINED","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","Map","isKeyable","getMapData","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","setCacheAdd","setCacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","SetCache","arraySome","cacheHas","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","arrayBufferTag","dataViewTag","Uint8Array","mapToArray","setToArray","equalArrays","isArray","arrayPush","propertyIsEnumerable","stubArray","arrayFilter","argsTag","isObjectLike","baseIsArguments","stubFalse","MAX_SAFE_INTEGER","arrayTag","objectTag","weakMapTag","isLength","nodeUtil","baseUnary","baseIsTypedArray","isArguments","isBuffer","isTypedArray","baseTimes","isIndex","overArg","isPrototype","nativeKeys","isArrayLike","arrayLikeKeys","baseKeys","baseGetAllKeys","keys","getSymbols","getAllKeys","Promise","DataView","Set","WeakMap","getTag","Stack","equalByTag","equalObjects","baseIsEqualDeep","baseIsEqual","_isEqual","fhirpath","fhirpath_r4_model","FHIR","create","useState","useEffect","QueryClient","styled","Box","Typography","FormGroup","RadioGroup","memo","React","parse","ReactMarkdown","LabelText","Divider","Card","forwardRef","Icon","Button","FormControlLabel","Radio","Grid","LabelWrapper","Select","InputAdornment","MenuItem","Fragment","Checkbox","QItemChoiceCheckboxSingle","TextField","useQuery","Autocomplete","SearchIcon","CircularProgress","Fade","Tooltip","InfoIcon","WarningAmberIcon","DoneIcon","ErrorIcon","useMemo","alpha","ListItemIcon","ErrorOutlineIcon","useCallback","debounce","CheckIcon","LocalizationProvider","AdapterDayjs","MuiTimePicker","dayjs","MuiDateTimePicker","MuiDatePicker","MuiTextField","TableCell","nanoid","IconButton","RemoveCircleOutlineIcon","TableContainer","Paper","Table","AddIcon","TableHead","TableRow","TableBody","setPrototypeOf","require$$0","require$$1","ReactPropTypesSecret","has","printWarning","checkPropTypes","ReactIs","assign","isValidElement","Children","cloneElement","DeleteItemButton","AddItemButton","TransitionGroup","Collapse","List","ListItemButton","ListItemText","TabContext","TabPanel","Accordion","AccordionSummary","ExpandMoreIcon","AccordionDetails","useTheme","useMediaQuery","FormBodyCollapsible","Container","QueryClientProvider"],"mappings":"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"}
|