{"version":3,"mappings":"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","names":["SKJEMA_URL","VEILEDER_URL","LOGGETUT_FEILCODE","FEIL","DEFAULT_LANGUAGE","LanguageLocales","TQQC","DEFAULT_MAX_ATTACHMENT_FILE_SIZE_HN_SKJEMA_BYTES","HN_SKJEMA_FRONTEND_RESOURCES","HN_SKJEMA_ERRORCODES_RESOURCES","LocalStorageConstants","defaultResourceName","getResources","projectName","language","defaultResources","__variableDynamicImportRuntimeHelper","__vitePreload","HN_Skjema_Frontend_nbNO","getLanguageDisplay","formDef","display","codings","t","getLanguageLocaleFromString","getLanguagesInDefinition","questionnaires","q","_b","_a","isValidPortalLanguage","getPortalLanguage","userLanguage","getUserLanguage","isLanguageInFormDefinition","portalLanguage","languagesInDefinition","x","getUrlLanguage","params","getPreferredLanguage","languagesInFormDefinition","languageFromQueryString","MELDINGER_BASE_URL","DOKUMENTER_BASE_URL","redirectTilInnsendtSkjemaUrl","id","redirectTilLagretSkjemaPaaDokumenterUrl","isNewDocument","state","getFilteredParams","getQueryParams","key","value","createQuestionnaireResponse","getQuestionnaireInLanguage","skjemaDefinition","getLoadParameter","query","skjemaTekniskNavnFraUrl","nameMatchString","createSavePayload","qr","automatiskLagring","withDiscretion","isMicrowebStep","dokumentGuidMicroweb","dokumentGuid","taskId","skalMicrowebStepOverskriveEksisterendeDokument","getNewUrl","tekniskNavn","gotoUrl","url","redirectTilLagretSkjemaPaaDokumenter","redirectTilInnsendtSkjema","gotoMinHelse","getQuestionnairs","parsedData","entry","postUrl","form","hiddenField","updateUrlAndFetchMessage","mainQuestionnaire","filteredParams","filteredParamsUrl","newUrlPath","HNeventSetDriftsmeldingPath","removeAttachmentsIfNeeded","metadata","vedleggMaFjernes","itemsWithType","getQuestionnaireItemsWithType","ItemTypeConstants","itemWithType","responseItem","getResponseItemAndPathWithLinkId","ip","generateQuestionnaireResponseData","questionnaireResponse","isMicroweb","skjemadata","generateQuestionnaireResponse","isHelsenorgeProxyError","error","cleanContextParameter","contextParameter","getRedirectParams","handleRedirect","redirectUrl","contextParamParsed","queryParams","buildQueryString","pathWithParams","appendQueryParamsToUrl","handlePostRequest","postParams","mergedParams","baseUrl","GUIDANCE_PARAMETER","GUIDANCE_ACTION","SAVE_CAPABILITIES","ACCESSIBILITY_TO_RESPONSE","AUTHENTICATION_REQUIREMENT_URL","GENERATE_PDF","RECIPIENT_URL","PRINT_VERSION","SIDEBAR","INFORMATION_MESSAGE","getResponseItemWithLinkIdPossiblyContainingRepeat","linkId","items","path","item","result","getQuestionnaireResponseItemWithLinkid","isItemEnabled","qItem","qrItems","enableMatches","enableWhen","matchesAnswer","enableWhenMatchesAnswer","QuestionnaireItemEnableBehaviorCodes","getActiveItemsWithExtension","extensionUrl","qItems","collector","ordering","getExtension","getSingleAnswer","answer","coding","codingValue","displayValue","getMultiAnswer","answers","getAnswer","getParamName","extension","collectPostParameters","postItems","postItem","paramName","getAnswerFromResponseItem","getVeilederRedirectPath","redirect","actionItems","actionExtension","toRelativeUrl","submitVeilederData","getLastSegmentUrl","segments","redirectEtterFullfortSkjema","formDefinition","formData","normalRedirectFn","onCompleteMicroweb","redirectPath","SidebarVisibility","TopMessageVisibility","ForbudBegrunnelser","getSaveCapabilitiesValue","questionnaire","saveCapabilitiesValue","getLastSaveCapabilitiesValue","questionnaireItems","responsitems","lastSaveCapabilityItem","getAccessibilityToResponse","accessibilityToResponse","getAuthenticationRequirementValue","itemAuthenticationRequirement","getPrintVersion","questionniare","recipientUrl","getRecipientUrl","getGeneratePdfExtensionValue","generatepdf","getSidebarVisibilityValue","sidebarExtension","getTopMessageVisibilityValue","infoMessageExtension","AccessibilityToResponse","getQueryStrings","a","getLoginUrl","getSkjemaNameFromUrl","pathParts","pageIndex","hasEndpointOrTqqcComponent","reduceHasTqqc","currentValue","childItemHasTqqcComponent","hasExtension","reduceExtension","childItemHasGuidanceAction","hasEndpoint","isKopiLagret","getNumberOfAttachments","reduceMaxAttachments","currentMaxAttachments","qrItem","childItemAttachments","itemAnswerAttachments","itemAnswerItemAttachments","current","answerItem","hasTooManyAttachments","sortObjectByKey","obj","v","sjekkInputErIkkeTom","input","jsonStringifySortProps","brukerHarIkkeTilgangOgKanPrinteSkjema","metaData","printReferanse","brukerHarIkkeTilgangTilSkjema","resetQuestionnaireResponseVersion","newMeta","settDokumentStatusTilKladd","ProcedureStatusCodes","oppdaterQuestionnaireResponseSomNyReponseHvisGjenbrukes","kanIkkeAutofylleskjema","hentSotHarIkkeTilgangFeilmelding","forbudGrunnelse","resource","hentOversettelse","stringToLanguageLocales","languageString","resources","defaultResource","trackFormEvent","event","formName","formEvent","pushToDataLayer","SHOULD_SHOW_BEFORE_UNLOAD","shouldShowBeforeUnload","createAction","ResponseCorrolationId_Log_Label","Feilkode_Log_Label","httpStatusCode_Log_Label","tidFraApnetSkjema_Log_Label","FULLFORING_AV_SKJEMA_FEIL","LAGRING_AV_SKJEMA_FEIL","TID_KUNNE_IKKE_BEREGNES","WHITE_SPACE","logSkjemaLagringsFeil","feilmelding","responseCorrolationId","feilkode","httpStatusCode","tidFraApnetSkjema","tidBrukt","endTime","diff","intervalToDuration","formatDuration","UnknownErrorType","__publicField","ProxyErrorResponse","UNKNOWN_ERROR_CODE","transformFetchErrors","failure","HelsenorgeProxyError","HelsenorgeHttpError","_c","sendInnSkjema","createAsyncThunk","timeSkjemaLoadedForUser","getState","rejectWithValue","fulfillWithValue","isNewDoc","payload","skalMicrowebStepOverskriveDokument","harDocumentGuidPayload","sendFn","put","post","response","err","errorInfo","currentQuestionnaire","dispatch","setSkjemaDefinitionAction","lagreSkjema","globalState","lagreFn","resonseQr","loadValueSet","searchString","successCallback","errorCallback","get","valueSet","lastMottakere","skjemaTekniskNavn","handleLanguageAndLoadResources","languages","preferredLanguage","questionnaireInLanguage","loadResources","fetchSkjemaoppgave","documentGuid","skjemaNavnParam","documentGuidParam","isAuthorized","getParams","warning","data","loadParamName","loadParamValue","controllerName","erTjenester","userChangeLanguage","remove","setUserLanguage","abortSkjema","_","returUrl","setAllowNavigation","redirectToReturUrlHvisEksisterer","returnUrlRelative","fetchResources","AuthenticationRequirement","getPrintReference","getIsNavigatorEnabled","getNavigatorExtension","getIsSavedInDokumenter","getSaveCapabilities","getShouldShowBeforeUnload","original","getSidebarVisibility","getTopMessageVisibility","SaveCapabilites","initialState","Language","reducer","createSlice","action","builder","saveCapabilities","getSidebarSections","ui","dismissAnonymousMessage","startSendInnSkjema","dismissSendInnError","dismissLagreError","kanIkkeLagreError","dismissKanIkkeLagre","anonymousUploadOfAttachmentDenied","hideAnonymousUploadOfAttachmentDenied","closeContinueOrLeaveMessageAndLeave","closeContinueOrLeaveMessage","showAttachmentMaxFilesError","hideAttachmentMaxFilesError","promptLoginMessage","setSamtaleguid","blockSubmit","formHasChanges","rootReducer","combineReducers","hjelpeskuff","cmsTjenesteTekster","pendingChanges","store","configureStore","getDefaultMiddleware","useAppDispatch","useDispatch","useAppSelector","selector","useSelector","useEffect","useHandleDocumentTitle","microwebOrStep","formTitle","updateDocumentTitle","useState","useLastActivity","lastActivity","setLastActivity","getResourcesSelector","resourceGroup","getResourcesFromState","ConfirmationLightbox","erKopiLagret","onOkButtonClick","skjemaSendtInn","samtaleGuid","jsx","Modal","ConfirmationLightboxLagre","showContinueOrLeaveMessage","onCloseLagreMessageAndLeave","onContinueOrLeave","DEFAULT_ERROR_MESSAGE","getErrorMessageFromErrorCodeResource","createSelector","_state","errorCode","errorCodesResources","code","char","getErrorMessageFromSkjemaResource","getErrorMessageFromErrorCode","errorCodeResourceMessage","skjemaResourcesMessage","SkjemaLoadError","loadSkjemaoppgaveErrorMessage","loadSkjemaErrorCode","errorMessage","description","NotificationPanel","useAttachmentUtils","generateAttachmentLink","fileId","link","files","onSuccess","onError","reader","dataString","attachment","getId","_fileId","useFormHasChanges","sendPendingChangesEventMicroweb","lastSavedDataItem","hasChanges","add","getActionButtonTitle","isSavedInDokumenter","harEndepunkt","harGuidanceAction","getSkjemaResources","useGetSchemaResources","useHandleAuthenticationRequirment","shouldAllowAnonymous","authenticationRequirement","allowAnonymous","MicrowebStepReferoButtonCallBackDirection","EventListener","kanMellomlagres","webcompheader","HNaddEventListener","HeaderFooterEvents","Fragment","HelpButton","opening","HelpElement","helpText","collapseClasses","classNames","SafeHTML","sortOrder","LanguageSelector","searchParams","setSearchParams","useSearchParams","changeUrlDocumentLanguage","updatedParams","setDocumentLanguage","currentLang","handleChangeUrlDocumentLanguage","sortedLanguages","b","sortA","sortB","LanguagePicker","navigatorSelectorConstant","getSections","root","sectionNodes","sections","node","sectionName","useNavigator","isNavigatorInitiated","setIsNavigatorInitiated","setSections","isNavigatorEnabled","sectionsLength","useRef","NavigatorMenu","toggleNavigatorExpand","setSelectedSection","selectedSection","wrapperRef","scrollToSelectedSection","sectionId","isActive","Button","useSectionScroll","offset","sectionsRef","selectedSectionRef","ticking","handleScroll","scrollY","currentSection","i","section","sectionElement","sectionTop","getYCoordinates","navigatorElements","firstSection","firstSectionYCoordinates","element","Navigator","isNavigatorMenuExpanded","setIsNavigatorMenuExpanded","jsxs","Icon","ChevronUp","ChevronDown","tjenestePath","useLogin","appUrl","getAppUrl","handleLogin","ref","HNeventShowAppInvitation","fullAppUrl","SkjemaLoginButton","buttonText","doNotRender","login","buttonRef","SkjemaTitle","sidebarVisibility","openSidebar","appearance","Title","HjelpetriggerComponent","shouldFormBeDisplayedAsStepView","shouldDisplay","getStepArrayLength","stepArray","isItemSidebar","StepViewComponent","stepIndex","Stepper","AnchorHelpTrigger","React","ReplaceLink","word","anchorRef","ReplaceLinks","messageText","designsystemtypography","RenderFormFillingInformation","userMetadata","visibility","cannotRepresentOthers","messageKey","testId","HighlightBox","getNotificationPanelContent","props","printReference","RenderNotificationPanelMessage","content","message","variant","TopMessage","RenderSkjema","pdf","hidebackbutton","avbryturl","onCancelMicroweb","onNavigateBackMicroweb","sendPendingChangesEvent","setIsDiscretionLightboxVisible","setStepIndex","uiState","originalQr","setOriginalQr","getAttachmentLink","openAttachment","uploadAttachment","deleteAttachment","skjemaResources","allowAnonymousOrAuthorized","redirectVeilederData","onCustomNavigationCallBack","direction","submitForm","lastSaveCapabilityItemValue","_d","itemApprovesSavingOnComplete","shouldShowBeforeUnloadFn","onSubmit","onSave","onCancel","addBlock","registerActivity","getSaveFn","erSendOgLagreKnapperDisabled","hideIfRepresentertSubjectOnly","hideIfNoTilgang","trackFormError","Refero","determineTopMessageVisibility","submitButtonDisabled","fetchReceivers","promptLoginMessageFn","_item","_itemHelp","_helpType","_helpText","dispatchSetSessionTimeoutFn","fn","HNeventSetOnShowSignoutbox","DiscretionLightbox","sendCallback","isDiscretionLightboxVisible","AnonomousSkjemaLightbox","showAnonymousSkjemaLightbox","skjemaLoginButton","formCancel","skjemaLoginMessageAuthenticationRequirementRequired","handleHideAnonymousSkjemaLightbox","AnonymousUploadDeniedModal","showAnonymousUploadDenied","anonymousUploadTitle","anonymousUploadDescription","onAnonymousUploadDeniedClose","AttachementErrorModal","isAttachmentMaxFilesErrorVisible","attachment_field_max_error","confirmationActionButton","KanIkkeLagreModal","kanIkkeLagre","kanIkkeLagreErrorTitle","kanIkkeLagreErrorBody","onKanIkkeLagreClose","useGetSkjemaErrorTitleFromResources","useGetSkjemaErrorBodyFromResources","useGetSkjemaErrorTitleAndBodyFromResources","sendInnSkjemaErrorCode","LagreSkjemaErrorModal","lagreSkjemaError","errorBody","errorTitle","onLagreErrorClose","SendInnSkjemaErrorModal","sendInnSkjemaError","onSendInnErrorClose","LoadSkjemaWarningMessageNotification","loadSkjemaoppgaveWarningMessage","sanitize","Seksjon","header","isExpanded","setIsExpanded","toggleExpanded","handleKeyDown","keyPressed","sectionClasses","theme","Sidebar","prevProps","nextProps","index","sidebarTekst","sidebarData","seksjonerFraSkjema","printName","printUrl","proxyLink","aria","TrapFocus","eventTarget","target","helpDrawerOpen","callback","e","eventPath","helpDrawerClasses","style","seksjonsData","HelpSign","ChevronLeft","X","Sidebar$1","layoutChange","RenderSidebar","toggleSidebarOpen","isSidebarOpen","kanLagresEtterInnsending","closeSidebar","SkjemaSpinners","children","showLocalSpinner","Loader","Skjemautfyller","setIsSidebarOpen","isSentWithDiscretion","setIsSentWithDiscretion","getFormDefinition","getFormData","timeUserHasBeenIdle","onShowSignOutBox","SessionTimeoutAction","handleHideDiscretionLightbox","isOpen","trackProsesshjelp"],"ignoreList":[],"sources":["../../../src/constants/constants.ts","../../../src/constants/localstorage.ts","../../../src/resources/index.ts","../../../src/util/getLanguageDisplay.ts","../../../src/util/getLanguagesInDefinition.ts","../../../src/util/portalLanguage-utils.ts","../../../src/constants/apiConsts.ts","../../../src/store/actions/actionUtils.ts","../../../src/util/redirectUtils.ts","../../../src/constants/extensions.ts","../../../src/util/veileder.ts","../../../src/constants/sidebarVisibility.ts","../../../src/constants/topMessageVisibility.ts","../../../src/util/extension.ts","../../../src/constants/accessibilityToResponse.ts","../../../src/util/index.ts","../../../src/util/stringToLanguageLocales.ts","../../../src/util/trackFormEvent.ts","../../../src/store/actions/actions.ts","../../../src/util/logUtil.ts","../../../src/store/actions/errorHandling.ts","../../../src/store/actions/actionCreators.ts","../../../src/constants/authenticationRequirement.ts","../../../src/store/reducers/selectors.ts","../../../src/constants/saveCapabilites.ts","../../../src/store/reducers/uiSlice.ts","../../../src/store/reducers/index.ts","../../../src/hooks/useHandleDocumentTitle.tsx","../../../src/hooks/useLastActivity.tsx","../../../src/store/selectors/resourcesSelectors.ts","../../../src/components/lightboxes/confirmationlightbox.tsx","../../../src/components/lightboxes/confirmationlightbox-lagre.tsx","../../../src/store/selectors/errorCodesSelectors.ts","../../../src/components/notifications/skjemaLoadError.tsx","../../../src/hooks/useAttachmentUtils.tsx","../../../src/hooks/useFormHasChanges.tsx","../../../src/components/renderUtils.ts","../../../src/hooks/useGetSchemaResources.tsx","../../../src/hooks/useHandleAuthenticationRequirment.tsx","../../../src/microweb-step/types/microwebstepTypes.ts","../../../src/components/eventListener.tsx","../../../src/components/helpComponents/HelpButton.tsx","../../../src/components/helpComponents/HelpElement.tsx","../../../src/components/languageselector.tsx","../../../src/util/getSections.ts","../../../src/hooks/useNavigator.tsx","../../../src/components/navigator/NavigatorMenu.tsx","../../../src/components/navigator/useSectionScroll.tsx","../../../src/components/navigator/navigator.tsx","../../../src/types/url.ts","../../../src/hooks/useLogin.tsx","../../../src/components/skjemaLoginButton.tsx","../../../src/components/SkjemaTitle.tsx","../../../src/components/stepView/utils.ts","../../../src/components/stepView/StepViewComponent.tsx","../../../src/components/navigator/AnchorHelpTrigger.tsx","../../../src/components/navigator/ReplaceLink.tsx","../../../src/components/navigator/replaceLinks.tsx","../../../src/components/TopMessage/GetFormFillingInformation.tsx","../../../src/components/TopMessage/getContent.ts","../../../src/components/TopMessage/RenderNotificatioinPanelMessage.tsx","../../../src/components/TopMessage/TopMessageComponent.tsx","../../../src/components/RenderSkjema.tsx","../../../src/util/webcomp-utils.ts","../../../src/components/lightboxes/discretionLightbox.tsx","../../../src/components/modals/AnonomousSkjemaLightbox.tsx","../../../src/components/modals/AnonymousUploadDeniedModal.tsx","../../../src/components/modals/AttachementErrorModal.tsx","../../../src/components/modals/KanIkkeLagreModal.tsx","../../../src/hooks/useGetSkjemaErrorTitle.tsx","../../../src/components/modals/LagreSkjemaErrorModal.tsx","../../../src/components/modals/SendInnSkjemaErrorModal.tsx","../../../src/components/notifications/LoadSkjemaWarningMessageNotification.tsx","../../../src/components/sidebar/seksjon.tsx","../../../src/components/sidebar/sidebar.tsx","../../../src/components/sidebar/RenderSidebar.tsx","../../../src/components/SkjemaSpinners.tsx","../../../src/components/index.tsx"],"sourcesContent":["import LanguageLocales from '@helsenorge/core-utils/constants/languages';\n\nexport const SKJEMA_URL = 'skjemautfyller';\nexport const VEILEDER_URL = 'veileder';\nexport const LOGGETUT_FEILCODE = 'EHGW-130004';\nexport const FEIL = 'FEIL';\nexport const LANGUAGE_Code = 'lang';\nexport const DEFAULT_LANGUAGE = LanguageLocales.NORWEGIAN;\nexport const TQQC = 'http://ehelse.no/fhir/ValueSet/TQQC';\n\n/**\n * - Represents default maximum file size (bytes) allowed for attachments for 'HN Skjema'\n * - This is the default vaule, note however that Refero can override this setting if\n * - Questionnaires own max validation rule is set.\n * @constant\n * @type {number}\n */\nexport const DEFAULT_MAX_ATTACHMENT_FILE_SIZE_HN_SKJEMA_BYTES = 4 * 1024 * 1024;\nexport const HN_SKJEMA_FRONTEND_RESOURCES = 'HN.Skjema.Frontend';\nexport const HN_SKJEMA_ERRORCODES_RESOURCES = 'HN.Skjema.ErrorCodes';\n","export default {\n Language: 'Skjemautfyller__Language',\n};\n","import { HNSkjemaFrontend } from '../types/Resources';\n\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\nimport { getModifiedResourcesForTest } from '@helsenorge/framework-utils/resources';\n\nimport defaultResources from './HN.Skjema.Frontend.nb-NO.json';\n\ntype ResourceItem = { [key: string]: string } | Record;\n\nconst defaultResourceName = 'HN.Skjema.Frontend.nb-NO';\n\nexport function getResources(projectName: string, language: LanguageLocales = LanguageLocales.NORWEGIAN): Promise {\n if (projectName === defaultResourceName && language === LanguageLocales.NORWEGIAN) {\n return Promise.resolve(defaultResources);\n }\n\n return import(`./${projectName}.${language}.json`);\n}\n\nexport function getResourcesTestHelper(): HNSkjemaFrontend {\n return getModifiedResourcesForTest(defaultResources) as HNSkjemaFrontend;\n}\n","import { Questionnaire, Coding } from 'fhir/r4';\n\nexport const getLanguageDisplay = (formDef: Questionnaire): string | undefined => {\n let display = formDef.language;\n if (formDef.meta && formDef.meta.tag) {\n const codings = formDef.meta.tag.filter((t: Coding) => t.system === 'urn:ietf:bcp:47');\n display = codings.length > 0 ? codings[0].display : undefined;\n }\n return display;\n};\n","import { Questionnaire } from 'fhir/r4';\nimport { DEFAULT_LANGUAGE } from 'src/constants/constants';\n\nimport { languagePickerResource } from '@helsenorge/core-framework/language-picker';\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\n\nimport { getLanguageDisplay } from './getLanguageDisplay';\n\nexport const getLanguageLocaleFromString = (language?: string | null): LanguageLocales | undefined => {\n if (!language) {\n return undefined;\n }\n return Object.values(LanguageLocales).includes(language as LanguageLocales) ? (language as LanguageLocales) : undefined;\n};\nexport const getLanguagesInDefinition = (questionnaires: Questionnaire[]): languagePickerResource[] => {\n return questionnaires?.map(q => {\n return {\n locale: getLanguageLocaleFromString(q.language ?? DEFAULT_LANGUAGE) ?? DEFAULT_LANGUAGE,\n label: getLanguageDisplay(q) || '',\n };\n });\n};\n","import { languagePickerResource } from '@helsenorge/core-framework/language-picker';\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\nimport { getUserLanguage } from '@helsenorge/framework-utils/hn-language';\n\nimport { getLanguageLocaleFromString } from './getLanguagesInDefinition';\nimport { DEFAULT_LANGUAGE } from '../constants/constants';\n\nexport const isValidPortalLanguage = (language: LanguageLocales): boolean => {\n if (\n language === LanguageLocales.NORWEGIAN ||\n language === LanguageLocales.NORWEGIAN_NYNORSK ||\n language === LanguageLocales.ENGLISH ||\n language === LanguageLocales.SAMI_NORTHERN\n ) {\n return true;\n } else {\n return false;\n }\n};\n\nexport const getPortalLanguage = (): LanguageLocales => {\n const userLanguage = getUserLanguage();\n const language = getLanguageLocaleFromString(userLanguage);\n return language && isValidPortalLanguage(language) ? language : DEFAULT_LANGUAGE;\n};\n\nexport const isLanguageInFormDefinition = (portalLanguage: LanguageLocales, languagesInDefinition: languagePickerResource[]): boolean => {\n const languageExists = languagesInDefinition.some(x => x.locale === portalLanguage);\n return languageExists;\n};\n\nexport const getUrlLanguage = (): LanguageLocales | undefined => {\n const params = new URLSearchParams(window.location.search);\n if (params.has('lang')) {\n return getLanguageLocaleFromString(params.get('lang'));\n }\n return undefined;\n};\n\nexport const getPreferredLanguage = (languagesInFormDefinition: languagePickerResource[]): LanguageLocales => {\n const languageFromQueryString = getUrlLanguage();\n const portalLanguage = getPortalLanguage();\n const params = new URLSearchParams(window.location.search);\n if (languagesInFormDefinition.length === 0) {\n return DEFAULT_LANGUAGE;\n } else if (params.has('lang')) {\n return languageFromQueryString && isLanguageInFormDefinition(portalLanguage, languagesInFormDefinition)\n ? languageFromQueryString\n : DEFAULT_LANGUAGE;\n } else if (portalLanguage) {\n return isLanguageInFormDefinition(portalLanguage, languagesInFormDefinition) ? portalLanguage : DEFAULT_LANGUAGE;\n }\n return DEFAULT_LANGUAGE;\n};\n","const MELDINGER_BASE_URL = '/meldinger';\nconst DOKUMENTER_BASE_URL = '/dokumenter';\n\nexport function redirectTilInnsendtSkjemaUrl(id: string): string {\n return `${MELDINGER_BASE_URL}/samtale/${id}`;\n}\n\nexport function redirectTilLagretSkjemaPaaDokumenterUrl(id: string | undefined): string {\n if (id) {\n return `${DOKUMENTER_BASE_URL}/vellykketlagring?dokument=${id}`;\n } else {\n return DOKUMENTER_BASE_URL;\n }\n}\n","import { Bundle, BundleEntry, Questionnaire, QuestionnaireResponse } from 'fhir/r4';\nimport { redirectTilInnsendtSkjemaUrl, redirectTilLagretSkjemaPaaDokumenterUrl } from 'src/constants/apiConsts';\nimport { SKJEMA_URL } from 'src/constants/constants';\nimport { GlobalState } from 'src/store/reducers';\nimport { CreateSkjemasvarRequest, Metadata, UpdateSkjemasvarRequest } from 'src/types/MinHelseEntities';\nimport { getQueryParams, vedleggMaFjernes } from 'src/util';\n\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\nimport { HelsenorgeHttpError, HelsenorgeProxyError, ProxyErrorResponse } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { HNeventSetDriftsmeldingPath } from '@helsenorge/framework-utils/web-component/events';\nimport {\n generateQuestionnaireResponse,\n getQuestionnaireItemsWithType,\n getResponseItemAndPathWithLinkId,\n ItemTypeConstants,\n} from '@helsenorge/refero';\n\nimport { FetchError } from './types';\n\nexport const isNewDocument = (state: GlobalState): boolean => {\n return state.refero.ui.userMetadata?.IsNewDocument ?? false;\n};\nexport function getFilteredParams(): string {\n const params: { [key: string]: string | undefined } = { ...getQueryParams() };\n delete params.Query;\n\n const stringParams = Object.keys(params).map(key => {\n const value = params[key];\n return `${key}=${value ?? ''}`;\n });\n\n return stringParams.join('&');\n}\n\nexport const createQuestionnaireResponse = (state: GlobalState): QuestionnaireResponse => {\n return {\n status: 'in-progress',\n resourceType: 'QuestionnaireResponse',\n ...state.refero.form.FormData.Content,\n questionnaire: state.refero.form.FormDefinition.Content?.url,\n };\n};\nexport function getQuestionnaireInLanguage(questionnaires: Array, language: LanguageLocales): Questionnaire | undefined {\n const skjemaDefinition = questionnaires.filter(q => q.language?.toLowerCase() === language?.toLowerCase());\n return skjemaDefinition.length > 0 ? skjemaDefinition[0] : undefined;\n}\n\nexport function getLoadParameter(query: string, skjemaTekniskNavnFraUrl: string): [string, string] {\n if (skjemaTekniskNavnFraUrl) {\n return ['name', skjemaTekniskNavnFraUrl];\n }\n const nameMatchString = 'Questionnaire?name=';\n const idMatchString = 'Questionnaire/';\n const hasNameParam = decodeURIComponent(query).indexOf(nameMatchString) > -1;\n return hasNameParam\n ? ['name', decodeURIComponent(query).substr(nameMatchString.length)]\n : ['id', decodeURIComponent(query).substr(idMatchString.length)];\n}\n\nexport const createSavePayload = (\n qr: string,\n state: GlobalState,\n automatiskLagring: boolean,\n withDiscretion?: boolean,\n isMicrowebStep?: boolean,\n dokumentGuidMicroweb?: string\n): UpdateSkjemasvarRequest | CreateSkjemasvarRequest => {\n let dokumentGuid = state.refero.ui.dokumentGuid;\n const taskId = state.refero.ui.taskId;\n const skalMicrowebStepOverskriveEksisterendeDokument = isMicrowebStep && dokumentGuidMicroweb;\n\n if (skalMicrowebStepOverskriveEksisterendeDokument) {\n dokumentGuid = dokumentGuidMicroweb;\n }\n\n const payload = {\n ...(dokumentGuid && { DokumentGuid: dokumentGuid }),\n ...(taskId && { OppgaveGuid: taskId }),\n ...(withDiscretion && { Discretion: true }),\n AutomatiskLagring: automatiskLagring,\n QuestionnaireResponse: qr,\n ...(skalMicrowebStepOverskriveEksisterendeDokument && { LageNyttDokument: true }),\n };\n\n return payload;\n};\n\nexport function getNewUrl(tekniskNavn: string): string {\n return `${SKJEMA_URL}/${tekniskNavn}`;\n}\n\nexport const gotoUrl = (url: string): void => {\n window.location.assign(url);\n};\n\nexport const redirectTilLagretSkjemaPaaDokumenter = (id?: string): void => {\n gotoUrl(redirectTilLagretSkjemaPaaDokumenterUrl(id));\n};\n\nexport const redirectTilInnsendtSkjema = (id: string): void => {\n gotoUrl(redirectTilInnsendtSkjemaUrl(id));\n};\n\nexport const gotoMinHelse = (): void => {\n gotoUrl('/');\n};\n\nexport const getQuestionnairs = (parsedData: Questionnaire | Bundle | undefined): Questionnaire[] | undefined => {\n if (!parsedData) {\n return;\n }\n if (parsedData.resourceType === 'Bundle' && parsedData.total === 0) {\n return;\n }\n if (parsedData.resourceType === 'Bundle') {\n return parsedData.entry\n ?.map((entry: BundleEntry) => {\n return entry.resource;\n })\n .filter(x => x?.resourceType === 'Questionnaire');\n } else {\n return [parsedData];\n }\n};\n\nexport const postUrl = (\n url: string,\n params: {\n [key: string]: string | undefined;\n contextParameter?: string;\n dokumentGuid?: string;\n }\n): void => {\n const form = document.createElement('form');\n form.method = 'POST';\n form.action = url;\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n const hiddenField = document.createElement('input');\n hiddenField.type = 'hidden';\n hiddenField.name = key;\n hiddenField.value = params[key] || '';\n\n form.appendChild(hiddenField);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n};\n\nexport const updateUrlAndFetchMessage = (mainQuestionnaire: Questionnaire): void => {\n const filteredParams = getFilteredParams();\n const filteredParamsUrl = filteredParams ? `?${filteredParams}` : '';\n const newUrlPath = getNewUrl(mainQuestionnaire.name || '').replace(/\\/+/g, '/');\n window.history.replaceState(window.history.state, '', `/${newUrlPath}${filteredParamsUrl}`);\n HNeventSetDriftsmeldingPath(encodeURIComponent(newUrlPath));\n};\nexport const removeAttachmentsIfNeeded = (metadata: Metadata, qr: QuestionnaireResponse, mainQuestionnaire: Questionnaire): void => {\n if (vedleggMaFjernes(metadata)) {\n const itemsWithType = getQuestionnaireItemsWithType(ItemTypeConstants.ATTATCHMENT, mainQuestionnaire.item);\n\n itemsWithType?.forEach(itemWithType => {\n qr.item?.forEach(responseItem => {\n const itemsWithPath = getResponseItemAndPathWithLinkId(itemWithType.linkId, responseItem);\n itemsWithPath.forEach(ip => delete ip.item.answer);\n });\n });\n }\n};\nexport const generateQuestionnaireResponseData = (\n questionnaireResponse: string | undefined,\n mainQuestionnaire: Questionnaire,\n isMicroweb: boolean | undefined,\n skjemadata: string | undefined\n): QuestionnaireResponse => {\n if (isMicroweb && skjemadata !== undefined) {\n const parseOuterObject = JSON.parse(skjemadata);\n return parseOuterObject.Content as QuestionnaireResponse;\n }\n return questionnaireResponse ? JSON.parse(questionnaireResponse) : generateQuestionnaireResponse(mainQuestionnaire);\n};\n\nexport function isFetchError(obj: unknown): obj is FetchError {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'message' in obj &&\n typeof (obj as FetchError).message === 'string' &&\n ('name' in obj ? typeof (obj as FetchError).name === 'string' : true) &&\n ('statusCode' in obj ? typeof (obj as FetchError).statusCode === 'number' : true) &&\n ('correlationId' in obj ? typeof (obj as FetchError).correlationId === 'string' || (obj as FetchError).correlationId === null : true) &&\n ('response' in obj ? typeof (obj as FetchError).response !== 'undefined' : true) &&\n ('type' in obj ? ['unknown', 'HelsenorgeProxyError', 'HelsenorgeHttpError', 'Error'].includes((obj as FetchError).type!) : true)\n );\n}\nexport const isHelsenorgeProxyError = (error: FetchError): error is HelsenorgeProxyError => {\n return error.type === 'HelsenorgeProxyError';\n};\nexport const isHelsenorgeHttpError = (error: FetchError): error is HelsenorgeHttpError => {\n return error.type === 'HelsenorgeHttpError';\n};\nexport function isProxyErrorResponse(error: unknown): error is ProxyErrorResponse {\n if (typeof error === 'object' && error !== null && 'message' in error && 'code' in error && 'errorCategory' in error) {\n const e = error as { message: unknown; code: unknown; errorCategory: unknown };\n return typeof e.message === 'string' && typeof e.code === 'string' && typeof e.errorCategory === 'number';\n }\n return false;\n}\n","import { gotoUrl, postUrl } from 'src/store/actions/actionUtils';\n\n// Function to decode and clean the context parameter\nexport function cleanContextParameter(contextParameter?: string): string {\n return decodeURIComponent(contextParameter || '')\n .replace(/[^A-Za-z0-9+\\-\\s]/g, '') // Allow only valid characters\n .trim();\n}\n\nfunction getRedirectParams(contextParameter?: string, dokumentGuid?: string): { contextParameter?: string; dokumentGuid?: string } {\n return {\n ...(contextParameter && { contextParameter: contextParameter }),\n ...(dokumentGuid && { dokumentGuid: dokumentGuid }),\n };\n}\n\nexport function handleRedirect(redirectUrl: string, contextParamParsed: string, dokumentGuid?: string): void {\n const params = getRedirectParams(contextParamParsed, dokumentGuid);\n const queryParams = buildQueryString(params);\n const pathWithParams = appendQueryParamsToUrl(redirectUrl, queryParams);\n gotoUrl(pathWithParams);\n}\n\nexport function handlePostRequest(\n redirectUrl: string,\n postParams: Record,\n contextParamParsed: string,\n dokumentGuid?: string\n): void {\n // Merge post parameters with redirect parameters\n const mergedParams = {\n ...postParams,\n ...getRedirectParams(contextParamParsed, dokumentGuid),\n };\n postUrl(redirectUrl, mergedParams);\n}\n\nfunction buildQueryString(params: Record): string {\n return Object.entries(params)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n}\n\nfunction appendQueryParamsToUrl(baseUrl: string, queryParams: string): string {\n if (!queryParams) return baseUrl;\n\n return baseUrl.includes('?')\n ? `${baseUrl}&${queryParams}` // Eksisterende query\n : `${baseUrl}?${queryParams}`; // Ny query string\n}\n","export const GUIDANCE_PARAMETER = 'http://helsenorge.no/fhir/StructureDefinition/sdf-guidanceparameter';\nexport const GUIDANCE_ACTION = 'http://helsenorge.no/fhir/StructureDefinition/sdf-guidanceaction';\nexport const SAVE_CAPABILITIES = 'http://helsenorge.no/fhir/StructureDefinition/sdf-save-capabilities';\nexport const ACCESSIBILITY_TO_RESPONSE = 'http://ehelse.no/fhir/StructureDefinition/sdf-accessibilitytoresponse';\nexport const AUTHENTICATION_REQUIREMENT_URL = 'http://ehelse.no/fhir/StructureDefinition/sdf-authenticationrequirement';\nexport const GENERATE_PDF = 'http://ehelse.no/fhir/StructureDefinition/sdf-generatepdf';\nexport const RECIPIENT_URL = 'http://ehelse.no/fhir/StructureDefinition/sdf-endpoint';\nexport const PRINT_VERSION = 'http://helsenorge.no/fhir/StructureDefinition/sdf-questionnaire-print-version';\nexport const SIDEBAR = 'http://helsenorge.no/fhir/StructureDefinition/sdf-sidebar';\nexport const INFORMATION_MESSAGE = 'http://helsenorge.no/fhir/StructureDefinition/sdf-information-message';\n","import { QuestionnaireItem, QuestionnaireItemEnableWhen, QuestionnaireResponseItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';\nimport { MicrowebStepFormDataCallBack } from 'src/microweb-step/types/microwebstepTypes';\n\nimport {\n FormData,\n FormDefinition,\n Path,\n QuestionnaireItemEnableBehaviorCodes,\n enableWhenMatchesAnswer,\n getAnswerFromResponseItem,\n getExtension,\n getQuestionnaireResponseItemWithLinkid,\n} from '@helsenorge/refero';\n\nimport { cleanContextParameter, handlePostRequest, handleRedirect } from './redirectUtils';\nimport { GUIDANCE_ACTION, GUIDANCE_PARAMETER } from '../constants/extensions';\n\nimport { toRelativeUrl } from '.';\n\ninterface ItemPair {\n questionnaireItem: QuestionnaireItem;\n questionnaireResponseItem: QuestionnaireResponseItem;\n ordering: number;\n}\n\nfunction getResponseItemWithLinkIdPossiblyContainingRepeat(\n linkId: string,\n items: Array,\n path: Array | undefined\n): QuestionnaireResponseItem | undefined {\n const findResponseItem = (linkId: string, items: Array): QuestionnaireResponseItem | undefined => {\n for (const item of items) {\n const result = getQuestionnaireResponseItemWithLinkid(linkId, item, path || []);\n if (result) {\n return result;\n }\n }\n };\n\n return findResponseItem(linkId, items);\n}\n\nfunction isItemEnabled(qItem: QuestionnaireItem, path: Path[], qrItems: QuestionnaireResponseItem[]): boolean {\n if (!qItem.enableWhen || qItem.enableWhen.length === 0) {\n return true;\n }\n\n const enableMatches: Array = [];\n qItem.enableWhen.forEach((enableWhen: QuestionnaireItemEnableWhen) => {\n const responseItem = getResponseItemWithLinkIdPossiblyContainingRepeat(enableWhen.question, qrItems, path);\n if (responseItem) {\n const matchesAnswer = enableWhenMatchesAnswer(enableWhen, responseItem.answer);\n enableMatches.push(matchesAnswer);\n }\n });\n\n return qItem.enableBehavior == QuestionnaireItemEnableBehaviorCodes.ALL\n ? enableMatches.every(x => x === true)\n : enableMatches.some(x => x === true);\n}\n\nexport function getActiveItemsWithExtension(\n extensionUrl: string,\n qItems: QuestionnaireItem[],\n qrItems: QuestionnaireResponseItem[],\n path: Path[] = [],\n collector: ItemPair[] = [],\n ordering = [1]\n): ItemPair[] {\n for (const qItem of qItems) {\n path.push({ linkId: qItem.linkId, index: 0 });\n if (isItemEnabled(qItem, path, qrItems)) {\n const extension = getExtension(extensionUrl, qItem);\n if (extension) {\n const responseItem = getResponseItemWithLinkIdPossiblyContainingRepeat(qItem.linkId, qrItems, path);\n if (responseItem) {\n collector.push({\n questionnaireResponseItem: responseItem,\n questionnaireItem: qItem,\n ordering: ordering[0],\n });\n ordering[0] += 1;\n }\n }\n\n if (qItem.item) {\n getActiveItemsWithExtension(extensionUrl, qItem.item, qrItems, path, collector, ordering);\n }\n }\n path.pop();\n }\n return collector;\n}\n\nfunction getSingleAnswer(answer: QuestionnaireResponseItemAnswer): string | undefined {\n if (!answer) {\n return;\n }\n if (answer.valueBoolean === true || answer.valueBoolean === false) {\n return answer.valueBoolean ? 'true' : 'false';\n }\n\n const coding = answer.valueCoding;\n const codingValue = coding && coding.code ? String(coding.code) : null;\n const displayValue = coding && coding.display ? coding.display : null;\n if (displayValue !== null && displayValue != undefined && displayValue !== '') {\n return displayValue;\n } else if (codingValue !== null && codingValue !== undefined && codingValue !== '') {\n return codingValue;\n }\n\n if (answer.valueQuantity && (answer.valueQuantity.value || answer.valueQuantity.value === 0)) {\n return [answer.valueQuantity.value, answer.valueQuantity.unit].join('|');\n }\n if (answer.valueDate) {\n return answer.valueDate;\n }\n if (answer.valueDateTime) {\n return answer.valueDateTime;\n }\n if (answer.valueDecimal) {\n return answer.valueDecimal.toString();\n }\n if (answer.valueInteger || answer.valueInteger === 0) {\n return answer.valueInteger.toString();\n }\n if (answer.valueString) {\n return answer.valueString;\n }\n if (answer.valueTime) {\n return answer.valueTime;\n }\n return;\n}\n\nfunction getMultiAnswer(answers: QuestionnaireResponseItemAnswer[]): string {\n const values = answers.map(answer => getSingleAnswer(answer));\n return values.join('|');\n}\n\nfunction getAnswer(answer: QuestionnaireResponseItemAnswer | QuestionnaireResponseItemAnswer[]): string | undefined {\n if (!answer) {\n return;\n }\n return Array.isArray(answer) ? getMultiAnswer(answer) : getSingleAnswer(answer);\n}\n\nfunction getParamName(qItem: QuestionnaireItem): string | undefined {\n const extension = getExtension(GUIDANCE_PARAMETER, qItem);\n return extension?.valueString;\n}\n\nfunction collectPostParameters(qItems: QuestionnaireItem[], qrItems: QuestionnaireResponseItem[]): Record {\n const postItems = getActiveItemsWithExtension(GUIDANCE_PARAMETER, qItems, qrItems);\n\n const params: { [key: string]: string } = {};\n if (postItems && postItems.length > 0) {\n for (const postItem of postItems) {\n const paramName = getParamName(postItem.questionnaireItem);\n const answer = getAnswerFromResponseItem(postItem.questionnaireResponseItem);\n if (paramName && answer) {\n const value = getAnswer(answer);\n params[`${paramName}___Answer`] = `${value}`;\n params[`${paramName}___Text`] = `${postItem.questionnaireItem.text}`;\n params[`${paramName}___Ordering`] = `${postItem.ordering}`;\n params[`${paramName}___Type`] = `${postItem.questionnaireItem.type}`;\n }\n }\n }\n return params;\n}\n\nfunction getVeilederRedirectPath(\n qItems: QuestionnaireItem[],\n qrItems: QuestionnaireResponseItem[],\n redirect: string | undefined\n): string | undefined {\n const actionItems = getActiveItemsWithExtension(GUIDANCE_ACTION, qItems, qrItems);\n let url = '';\n if (redirect) {\n url = redirect;\n } else if (actionItems && actionItems.length > 0) {\n const actionExtension = getExtension(GUIDANCE_ACTION, actionItems[0].questionnaireItem);\n url = actionExtension?.valueString || '';\n }\n return url ? toRelativeUrl(decodeURIComponent(url)) : '';\n}\n\nfunction submitVeilederData(\n redirectUrl: string,\n postParams: Record,\n contextParameter?: string,\n dokumentGuid?: string\n): void {\n const contextParamParsed = cleanContextParameter(contextParameter);\n const hasPostParams = Object.keys(postParams).length > 0;\n if (hasPostParams) {\n handlePostRequest(redirectUrl, postParams, contextParamParsed, dokumentGuid);\n } else {\n handleRedirect(redirectUrl, contextParamParsed, dokumentGuid);\n }\n}\n\n/**\n * Function to get the last segment of a given URL\n * @param url - The input URL (can be absolute or relative)\n * @returns The last path segment of the URL\n */\nconst getLastSegmentUrl = (url: string | undefined): string => {\n if (!url) {\n return '';\n }\n const segments = url.split('/');\n return segments[segments.length - 1] || '';\n};\n\nexport function redirectEtterFullfortSkjema(\n formDefinition: FormDefinition | null | undefined,\n formData: FormData | null | undefined,\n redirectUrl: string | undefined,\n contextParameter: string | undefined,\n dokumentGuid: string | undefined,\n normalRedirectFn: () => void,\n isMicrowebStep: boolean | undefined,\n onCompleteMicroweb: MicrowebStepFormDataCallBack | undefined\n): void {\n if (\n !formDefinition ||\n !formDefinition.Content ||\n !formDefinition.Content.item ||\n !formData ||\n !formData.Content ||\n !formData.Content.item\n ) {\n return;\n }\n\n const qrItems = formData.Content.item;\n const qItems = formDefinition.Content.item;\n const redirectPath = getVeilederRedirectPath(qItems, qrItems, redirectUrl);\n\n if (onCompleteMicroweb && isMicrowebStep) {\n const postParams = collectPostParameters(qItems, qrItems);\n // Vedr. dokumentGuid så har TOD logikk på oppsummeringen som viser valg om å legge til vedlegg\n // i oppsummeringen dersom dokumentGuid ikke har verdi\n // men de betrakter både null/undefined og tom streng som ingen verdi\n onCompleteMicroweb({\n skjemanavn: getLastSegmentUrl(redirectPath),\n dokumentGuid: dokumentGuid !== undefined ? dokumentGuid : '',\n ...postParams,\n skjemadata: JSON.stringify(formData),\n });\n } else if (redirectPath) {\n const postParams = collectPostParameters(qItems, qrItems);\n submitVeilederData(redirectPath, postParams, contextParameter, dokumentGuid);\n } else {\n normalRedirectFn();\n }\n}\n","export enum SidebarVisibility {\n On = 1,\n Off = 2,\n}\n","export enum TopMessageVisibility {\n On = 1,\n Off = 2,\n}\n\nexport enum ForbudBegrunnelser {\n ScopeRepresentasjonsforholdSegSelv = 1,\n ScopeRepresentasjonsforholdFullmakt = 2,\n SkjemaTilpassetKunInnbygger = 3,\n SkjemaTilpassetIkkeFullmakt = 4,\n SkjemaTilpassetIkkePaVegnAvBarnUnder12 = 5,\n SkjemaTilpassetIkkePaVegnAvBarnMellom12Og16 = 6,\n SkjemaTilpassetIkkePaVegnAvBarn = 7,\n SperretAdresse = 8,\n Default = 9,\n SkjemaTilpassetIkkeUngdom = 10,\n}\n","import { Questionnaire, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';\n\nimport { getExtension } from '@helsenorge/refero';\n\nimport { getActiveItemsWithExtension } from './veileder';\nimport { AccessibilityToResponse } from '../constants/accessibilityToResponse';\nimport { AuthenticationRequirement } from '../constants/authenticationRequirement';\nimport {\n ACCESSIBILITY_TO_RESPONSE,\n AUTHENTICATION_REQUIREMENT_URL,\n GENERATE_PDF,\n INFORMATION_MESSAGE,\n PRINT_VERSION,\n RECIPIENT_URL,\n SAVE_CAPABILITIES,\n SIDEBAR,\n} from '../constants/extensions';\nimport { SaveCapabilites } from '../constants/saveCapabilites';\nimport { SidebarVisibility } from '../constants/sidebarVisibility';\nimport { TopMessageVisibility } from '../constants/topMessageVisibility';\n\nexport function getSaveCapabilitiesValue(questionnaire: Questionnaire | QuestionnaireItem): SaveCapabilites | undefined {\n const saveCapabilitiesValue = getExtension(SAVE_CAPABILITIES, questionnaire);\n if (!saveCapabilitiesValue || !saveCapabilitiesValue.valueCoding || !saveCapabilitiesValue.valueCoding.code) {\n return undefined;\n }\n\n return parseInt(saveCapabilitiesValue.valueCoding.code, 10);\n}\n\nexport function getLastSaveCapabilitiesValue(\n questionnaireItems: QuestionnaireItem[] | undefined,\n responsitems: QuestionnaireResponseItem[] | undefined\n): SaveCapabilites | undefined {\n const itemsSaveCapabilitie = getActiveItemsWithExtension(\n SAVE_CAPABILITIES,\n questionnaireItems ? questionnaireItems : [],\n responsitems ? responsitems : []\n );\n\n const lastSaveCapabilityItem = itemsSaveCapabilitie.slice(-1)[0];\n const lastSaveCapabilityItemValue = lastSaveCapabilityItem\n ? getSaveCapabilitiesValue(lastSaveCapabilityItem.questionnaireItem)\n : undefined;\n\n return lastSaveCapabilityItemValue;\n}\n\nexport function getAccessibilityToResponse(questionnaire: Questionnaire): AccessibilityToResponse | undefined {\n const accessibilityToResponse = getExtension(ACCESSIBILITY_TO_RESPONSE, questionnaire);\n if (!accessibilityToResponse || !accessibilityToResponse.valueCoding || !accessibilityToResponse.valueCoding.code) {\n return undefined;\n }\n\n return parseInt(accessibilityToResponse.valueCoding.code, 10);\n}\n\nexport function getAuthenticationRequirementValue(questionnaire?: Questionnaire | null): AuthenticationRequirement | undefined {\n const itemAuthenticationRequirement = getExtension(AUTHENTICATION_REQUIREMENT_URL, questionnaire);\n if (!itemAuthenticationRequirement || !itemAuthenticationRequirement.valueCoding || !itemAuthenticationRequirement.valueCoding.code) {\n return undefined;\n }\n\n return parseInt(itemAuthenticationRequirement.valueCoding.code, 10);\n}\n\nexport function getPrintVersion(questionniare: Questionnaire): string | undefined {\n const recipientUrl = getExtension(PRINT_VERSION, questionniare);\n return recipientUrl?.valueReference?.reference;\n}\n\nexport function getRecipientUrl(questionniare: Questionnaire): string | undefined {\n const recipientUrl = getExtension(RECIPIENT_URL, questionniare);\n return recipientUrl?.valueReference?.reference;\n}\n\nexport function getGeneratePdfExtensionValue(questionnaire: Questionnaire): boolean | undefined {\n const generatepdf = getExtension(GENERATE_PDF, questionnaire);\n return generatepdf?.valueBoolean;\n}\n\nexport function getSidebarVisibilityValue(questionnaire: Questionnaire): number {\n const sidebarExtension = getExtension(SIDEBAR, questionnaire);\n if (sidebarExtension?.valueCoding?.code) return parseInt(sidebarExtension.valueCoding.code);\n return SidebarVisibility.On;\n}\n\nexport function getTopMessageVisibilityValue(questionnaire: Questionnaire): number {\n const infoMessageExtension = getExtension(INFORMATION_MESSAGE, questionnaire);\n if (infoMessageExtension?.valueCoding?.code) return parseInt(infoMessageExtension.valueCoding.code);\n return TopMessageVisibility.On;\n}\n","export enum AccessibilityToResponse {\n Default = 1,\n SubjectAndRecipient = 2,\n Recipient = 3,\n}\n","import {\n Coding,\n Meta,\n Questionnaire,\n QuestionnaireItem,\n QuestionnaireResponse,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer,\n} from 'fhir/r4';\n\nimport { Metadata } from '../types/MinHelseEntities';\nimport { HNSkjemaFrontend } from '../types/Resources';\n\nimport { getQueryStrings } from '@helsenorge/core-utils/querystring-utils';\nimport {\n ItemTypeConstants as ItemType,\n ProcedureStatusCodes,\n getQuestionnaireItemsWithType,\n getResponseItemAndPathWithLinkId,\n} from '@helsenorge/refero';\n\nimport { getAccessibilityToResponse, getGeneratePdfExtensionValue, getRecipientUrl } from './extension';\nimport { hentOversettelse } from './stringToLanguageLocales';\nimport { AccessibilityToResponse } from '../constants/accessibilityToResponse';\nimport { SKJEMA_URL, TQQC, VEILEDER_URL } from '../constants/constants';\nimport { ForbudBegrunnelser } from '../constants/topMessageVisibility';\n\ninterface QueryStrings {\n Query?: string;\n resourceId?: string;\n taskId?: string;\n contextId?: string;\n returURL?: string;\n redirect?: string;\n contextParameter?: string;\n}\n\nexport function getQueryParams(): QueryStrings {\n return getQueryStrings();\n}\n\nexport function toRelativeUrl(url: string): string {\n const a = document.createElement('a');\n a.href = url;\n const firstLetter = a.pathname.charAt(0);\n if (firstLetter === '/') {\n return a.pathname + a.search;\n } else {\n return '/' + a.pathname + a.search;\n }\n}\n\nexport function getLoginUrl(): string {\n return `/auth/signin?Source=${encodeURIComponent(window.location.href)}`;\n}\n\n// hent teknisk navn på skjema fra url. Brukes dersom skjemautfyller/veileder åpnes med nytt url-format\nexport function getSkjemaNameFromUrl(): string {\n const pathParts = window.location.pathname.split('/');\n const pageIndex = pathParts.findIndex(value => {\n if (value?.toLocaleLowerCase()?.startsWith(SKJEMA_URL) || value === VEILEDER_URL) return true;\n return false;\n });\n\n if (pageIndex === -1) return '';\n\n const tekniskNavn = pathParts[pageIndex + 1] || '';\n\n // handle cases where skjemautfyller is repeated, eg.: http://.../skjemautfyller/skjemautfyller/?Query\n if (tekniskNavn === SKJEMA_URL) {\n return '';\n }\n\n return tekniskNavn;\n}\n\nexport function hasEndpointOrTqqcComponent(questionnaire: Questionnaire): boolean {\n // sjekk om sdf-endpoint er definert som extension\n if (getRecipientUrl(questionnaire)) {\n return true;\n }\n // ellers, let gjennom skjema etter item med code der system === \"http://ehelse.no/fhir/ValueSet/TQQC\" og code === \"1\"\n const reduceHasTqqc = (currentValue: boolean, qItem: QuestionnaireItem): boolean => {\n const childItemHasTqqcComponent = qItem.item ? qItem.item.reduce(reduceHasTqqc, currentValue) : false;\n return (\n (qItem.code && qItem.code.filter((x: Coding) => x.system === TQQC && x.code === '1').length > 0) ||\n currentValue ||\n childItemHasTqqcComponent\n );\n };\n return questionnaire.item ? questionnaire.item.reduce(reduceHasTqqc, false) : false;\n}\n\nexport function hasExtension(questionnaire: Questionnaire | undefined, extensionUrl: string): boolean {\n if (!questionnaire) return false;\n // Let gjennom skjema etter item med extension som er lik innsendt url\n const reduceExtension = (currentValue: boolean, qItem: QuestionnaireItem): boolean => {\n const childItemHasGuidanceAction = qItem.item ? qItem.item.reduce(reduceExtension, currentValue) : false;\n return (\n (qItem.extension && qItem.extension.filter(item => item.url === extensionUrl).length > 0) ||\n currentValue ||\n childItemHasGuidanceAction\n );\n };\n return questionnaire.item ? questionnaire.item.reduce(reduceExtension, false) : false;\n}\n\nexport function hasEndpoint(questionnaire: Questionnaire | undefined): boolean {\n if (!questionnaire) return false;\n if (getRecipientUrl(questionnaire)) return true;\n return false;\n}\n\nexport function isKopiLagret(questionnaire: Questionnaire): boolean {\n const accessibilityToResponse = getAccessibilityToResponse(questionnaire);\n const generatepdf = getGeneratePdfExtensionValue(questionnaire);\n return accessibilityToResponse !== AccessibilityToResponse.Recipient && generatepdf !== false;\n}\n\nfunction getNumberOfAttachments(questionnaireResponse: QuestionnaireResponse): number {\n // let gjennom questionnaireResponse etter item med type === attachment, og tell antall answer.valueAttachment\n const reduceMaxAttachments = (currentMaxAttachments: number, qrItem: QuestionnaireResponseItem): number => {\n const childItemAttachments = qrItem.item ? qrItem.item.reduce(reduceMaxAttachments, 0) : 0;\n const itemAnswerAttachments = qrItem.answer\n ? qrItem.answer.filter((x: QuestionnaireResponseItemAnswer) => !!x.valueAttachment).length\n : 0;\n const itemAnswerItemAttachments = qrItem.answer\n ? qrItem.answer.reduce((current: number, answerItem: QuestionnaireResponseItemAnswer): number => {\n const inner = answerItem.item ? answerItem.item.reduce(reduceMaxAttachments, 0) : 0;\n return inner + current;\n }, 0)\n : 0;\n return childItemAttachments + itemAnswerAttachments + itemAnswerItemAttachments + currentMaxAttachments;\n };\n return questionnaireResponse.item ? questionnaireResponse.item.reduce(reduceMaxAttachments, 0) : 0;\n}\n\nexport function hasTooManyAttachments(questionnaireResponse: QuestionnaireResponse | null | undefined): boolean {\n if (!questionnaireResponse) {\n return false;\n }\n return getNumberOfAttachments(questionnaireResponse) > 3;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction sortObjectByKey(value: QuestionnaireResponseItem[] | QuestionnaireResponseItem): Record {\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n return value.map(sortObjectByKey);\n } else {\n return Object.keys(value)\n .sort()\n .reduce((obj, key) => {\n //@ts-expect-error - value is of type QuestionnaireResponseItem\n const v = value[key];\n //@ts-expect-error - value is of type QuestionnaireResponseItem\n obj[key] = sortObjectByKey(v);\n return obj;\n }, {});\n }\n } else {\n return value;\n }\n}\n\nexport function sjekkInputErIkkeTom(input: object | string | undefined): boolean {\n return input !== null && input != undefined && input !== '';\n}\n\nexport function jsonStringifySortProps(qrItem: QuestionnaireResponseItem[]): string {\n return JSON.stringify(sortObjectByKey(qrItem));\n}\n\nexport function brukerHarIkkeTilgangOgKanPrinteSkjema(metaData: Metadata, printReferanse: string | undefined): boolean {\n return !metaData.HasTilgang && sjekkInputErIkkeTom(printReferanse);\n}\n\nexport function brukerHarIkkeTilgangTilSkjema(metaData: Metadata, printReferanse: string | undefined): boolean {\n return !metaData.HasTilgang && !printReferanse;\n}\n\nfunction resetQuestionnaireResponseVersion(qr: QuestionnaireResponse, metadata: Metadata): void {\n if (metadata.IsNewDocument && qr.meta) {\n const newMeta: Meta = { ...qr.meta, versionId: '1' };\n qr.meta = newMeta;\n }\n}\n\nfunction settDokumentStatusTilKladd(qr: QuestionnaireResponse, metadata: Metadata): void {\n if (metadata.IsNewDocument) {\n qr.status = ProcedureStatusCodes.IN_PROGRESS;\n }\n}\n\nexport function oppdaterQuestionnaireResponseSomNyReponseHvisGjenbrukes(qr: QuestionnaireResponse, metadata: Metadata | undefined): void {\n if (metadata) {\n resetQuestionnaireResponseVersion(qr, metadata);\n settDokumentStatusTilKladd(qr, metadata);\n }\n}\n\nexport function vedleggMaFjernes(metadata: Metadata): boolean {\n return metadata.HarVedlegg && metadata.IsNewDocument && metadata.HarInnbyggerResponse;\n}\n\nexport function kanIkkeAutofylleskjema(metadata: Metadata): boolean {\n return metadata.IsNewDocument && !metadata.HarInnbyggerResponse;\n}\n\nexport function fjernVedleggFraDokumentHvisGjenbrukes(q: Questionnaire, qr: QuestionnaireResponse, metadata: Metadata): void {\n if (vedleggMaFjernes(metadata)) {\n const itemsWithType = getQuestionnaireItemsWithType(ItemType.ATTATCHMENT, q.item);\n if (itemsWithType) {\n itemsWithType.forEach(itemWithType => {\n if (qr.item) {\n qr.item.forEach(responseItem => {\n const itemsWithPath = getResponseItemAndPathWithLinkId(itemWithType.linkId, responseItem);\n itemsWithPath.forEach(ip => delete ip.item.answer);\n });\n }\n });\n }\n }\n}\n\nexport function hentSotHarIkkeTilgangFeilmelding(forbudGrunnelse: ForbudBegrunnelser, resource: HNSkjemaFrontend): string {\n switch (forbudGrunnelse) {\n case ForbudBegrunnelser.ScopeRepresentasjonsforholdSegSelv:\n return hentOversettelse('harIkkeTilgang_scop_segselv', resource);\n case ForbudBegrunnelser.ScopeRepresentasjonsforholdFullmakt:\n return hentOversettelse('harIkkeTilgang_scop_fullmakt', resource);\n case ForbudBegrunnelser.SkjemaTilpassetKunInnbygger:\n return hentOversettelse('harIkkeTilgang_skjema_kunInnbygger', resource);\n case ForbudBegrunnelser.SkjemaTilpassetIkkeFullmakt:\n return hentOversettelse('harIkkeTilgang_skjema_kanIkkeFullmakt', resource);\n case ForbudBegrunnelser.SkjemaTilpassetIkkePaVegnAvBarn:\n return hentOversettelse('harIkkeTilgang_skjema_paVegnAvBarn', resource);\n case ForbudBegrunnelser.SkjemaTilpassetIkkePaVegnAvBarnUnder12:\n return hentOversettelse('harIkkeTilgang_skjema_paVegnAvBarnUnder12', resource);\n case ForbudBegrunnelser.SkjemaTilpassetIkkePaVegnAvBarnMellom12Og16:\n return hentOversettelse('harIkkeTilgang_skjema_paVegnAvBarnMellom12Og16', resource);\n case ForbudBegrunnelser.SperretAdresse:\n return hentOversettelse('harIkkeTilgang_sperretadresse', resource);\n case ForbudBegrunnelser.SkjemaTilpassetIkkeUngdom:\n return hentOversettelse('harikkeTilgang_skjema_ungdom', resource);\n default:\n return hentOversettelse('harIkkeTilgang_default', resource);\n }\n}\n","import { HNSkjemaFrontend } from '../types/Resources';\n\nimport LanguageLocales from '@helsenorge/core-utils/constants/languages';\n\nimport defaultResource from '../resources/HN.Skjema.Frontend.nb-NO.json';\n\nimport { sjekkInputErIkkeTom } from '.';\n\nexport const stringToLanguageLocales = (languageString?: string | LanguageLocales): LanguageLocales => {\n const language = languageString?.toString().toLowerCase();\n switch (language) {\n case LanguageLocales.NORWEGIAN_NYNORSK.toLowerCase():\n return LanguageLocales.NORWEGIAN_NYNORSK;\n case LanguageLocales.ENGLISH.toLowerCase():\n return LanguageLocales.ENGLISH;\n case LanguageLocales.LITHUANIAN.toLowerCase():\n return LanguageLocales.LITHUANIAN;\n case LanguageLocales.POLISH.toLowerCase():\n return LanguageLocales.POLISH;\n case LanguageLocales.RUSSIAN.toLowerCase():\n return LanguageLocales.RUSSIAN;\n case LanguageLocales.ROMANIAN.toLowerCase():\n return LanguageLocales.ROMANIAN;\n case LanguageLocales.SAMI_NORTHERN.toLowerCase():\n return LanguageLocales.SAMI_NORTHERN;\n default:\n return LanguageLocales.NORWEGIAN;\n }\n};\n\nexport const hentOversettelse = (key: keyof HNSkjemaFrontend, resources: HNSkjemaFrontend): string => {\n const value = resources[key];\n return sjekkInputErIkkeTom(value) ? value : defaultResource[key];\n};\n","import { pushToDataLayer, CustomData } from '@helsenorge/framework-utils/adobe-analytics';\n\ninterface FormEvent extends CustomData {\n event: string;\n form: { name?: string };\n}\n\nexport const trackFormEvent = (event: string, formName: string): void => {\n let formEvent: FormEvent;\n\n switch (event) {\n case 'form start':\n formEvent = {\n event: 'form start',\n form: { name: formName },\n };\n break;\n case 'form complete':\n formEvent = {\n event: 'form complete',\n form: { name: formName },\n };\n break;\n case 'form save':\n formEvent = {\n event: 'form save',\n form: { name: formName },\n };\n break;\n case 'form continue':\n formEvent = {\n event: 'form continue',\n form: { name: formName },\n };\n break;\n case 'site error':\n pushToDataLayer({\n event: 'site error',\n error: {\n level: 4,\n details: 'noen av feltene er ikke fylt ut riktig',\n },\n });\n return;\n default:\n formEvent = {\n event: '',\n form: {},\n };\n break;\n }\n\n if (formEvent.event !== '') {\n pushToDataLayer(formEvent);\n } else {\n return;\n }\n};\n","import { createAction, PayloadAction } from '@reduxjs/toolkit';\nimport { Questionnaire, QuestionnaireResponse } from 'fhir/r4';\n\nimport { Metadata, TextMessage } from '../../types/MinHelseEntities';\nimport { HNSkjemaFrontend } from '../../types/Resources';\n\nimport { HelsenorgeProxyError } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { SET_SKJEMA_DEFINITION } from '@helsenorge/refero';\n\nexport type SkjemaAction = PayloadAction<\n SkjemaActionPayload,\n | RECEIVE_SKJEMAOPPGAVE\n | RECEIVE_SKJEMA_DEFINITION\n | FAILURE_SKJEMAOOPPGAVE\n | SKJEMA_LOADED\n | SET_SKJEMA_DEFINITION\n | SHOULD_SHOW_BEFORE_UNLOAD\n>;\n\nexport type SkjemaActionPayload = {\n questionnaireResponse?: QuestionnaireResponse;\n dokumentGuid?: string;\n samtaleGuid?: string;\n questionnaire?: Questionnaire;\n language?: string | null;\n newFormDefinitionUrl?: string | undefined;\n error?: string | HelsenorgeProxyError;\n warning?: TextMessage;\n userMetadata?: Metadata;\n blockSubmit?: boolean;\n show?: boolean;\n version?: string;\n resources?: HNSkjemaFrontend;\n questionnaires?: Array;\n taskId?: string;\n returUrl?: string;\n};\nexport type SkjemaDefinisjonLoadedPayload = Pick<\n SkjemaActionPayload,\n 'questionnaires' | 'userMetadata' | 'warning' | 'dokumentGuid' | 'taskId' | 'returUrl'\n>;\nexport type SetResourcesPayload = Pick;\nexport type ShouldShowBeforeUnloadPayload = Pick;\nexport type BlockSubmitPayload = Pick;\nexport type PromtLoginMessagePayload = Pick;\nexport type SkjemaFeiletPayload = Pick;\nexport type LagreSkjemaDonePayload = Pick;\n\nexport type SendInnSkjemaDonePayload = Pick;\n\nexport type RECEIVE_SKJEMAOPPGAVE = typeof RECEIVE_SKJEMAOPPGAVE;\nexport const RECEIVE_SKJEMAOPPGAVE = 'skjemautfyller/RECEIVE_SKJEMAOPPGAVE';\n\nexport type RECEIVE_SKJEMA_DEFINITION = typeof RECEIVE_SKJEMA_DEFINITION;\nexport const RECEIVE_SKJEMA_DEFINITION = 'skjemautfyller/RECEIVE_SKJEMA_DEFINITION';\n\nexport const FAILURE_SKJEMAOOPPGAVE = 'skjemautfyller/FAILURE_SKJEMAOOPPGAVE';\nexport type FAILURE_SKJEMAOOPPGAVE = typeof FAILURE_SKJEMAOOPPGAVE;\n\nexport type SHOULD_SHOW_BEFORE_UNLOAD = typeof SHOULD_SHOW_BEFORE_UNLOAD;\nexport const SHOULD_SHOW_BEFORE_UNLOAD = 'skjemautfyller/SHOULD_SHOW_BEFORE_UNLOAD';\n\nexport type SKJEMA_LOADED = typeof SKJEMA_LOADED;\nexport const SKJEMA_LOADED = 'skjemautfyller/SKJEMA_LOADED';\n\nexport const LOAD_VALUESET = 'skjemautfyller/LOAD_VALUESET';\nexport type LOAD_VALUESET = typeof LOAD_VALUESET;\n\nexport const shouldShowBeforeUnload = createAction(SHOULD_SHOW_BEFORE_UNLOAD);\n","import { formatDuration, intervalToDuration } from 'date-fns';\n\nimport { error } from '@helsenorge/framework-utils/logger';\n\nconst ResponseCorrolationId_Log_Label = 'Response corrolation id:';\nconst Feilkode_Log_Label = 'Feilkode: ';\nconst httpStatusCode_Log_Label = ' HttpStatusCode:';\nconst tidFraApnetSkjema_Log_Label = 'Tid fra apnet skjema:';\nexport const FULLFORING_AV_SKJEMA_FEIL = 'Fullføring av skjema feilet';\nexport const LAGRING_AV_SKJEMA_FEIL = 'Lagring av skjema feilet';\nexport const TID_KUNNE_IKKE_BEREGNES = '?';\nexport const WHITE_SPACE = ' ';\n\nexport const logSkjemaLagringsFeil = (\n feilmelding: string,\n responseCorrolationId: string | null,\n feilkode: string,\n httpStatusCode: number,\n tidFraApnetSkjema: number\n): void => {\n let tidBrukt: string | undefined = undefined;\n if (tidFraApnetSkjema !== undefined) {\n const endTime = new Date();\n const diff = intervalToDuration({\n start: new Date(tidFraApnetSkjema),\n end: endTime,\n });\n if (diff !== undefined) {\n tidBrukt = formatDuration(diff);\n }\n } else {\n tidBrukt = TID_KUNNE_IKKE_BEREGNES;\n }\n\n error(\n `'${feilmelding}'${WHITE_SPACE}${ResponseCorrolationId_Log_Label}${WHITE_SPACE}${responseCorrolationId}${WHITE_SPACE}${Feilkode_Log_Label}${WHITE_SPACE}${feilkode}${WHITE_SPACE}${httpStatusCode_Log_Label}${WHITE_SPACE}${httpStatusCode}${WHITE_SPACE}${tidFraApnetSkjema_Log_Label}${WHITE_SPACE}${tidBrukt}`\n );\n};\n","import { HelsenorgeHttpError, HelsenorgeProxyError } from '@helsenorge/framework-utils/hn-proxy-service';\n\nexport class UnknownErrorType {\n Error: string = '';\n}\nexport class ProxyErrorResponse {\n Code: string = '';\n Message: string = '';\n ErrorCategory: number = 0;\n}\n\nexport class TextMessage {\n Title: string = '';\n Body: string = '';\n}\nexport const UNKNOWN_ERROR_CODE = 'UNKNOWN-ERROR-CODE';\nexport const transformFetchErrors = (\n error?: HelsenorgeProxyError | HelsenorgeHttpError | UnknownErrorType | unknown | TextMessage | ProxyErrorResponse\n): ProxyErrorResponse | string => {\n let failure: ProxyErrorResponse = {\n Code: '',\n Message: '',\n ErrorCategory: 1,\n };\n if (error instanceof ProxyErrorResponse) {\n failure = error;\n } else {\n if (error instanceof HelsenorgeProxyError) {\n failure.Message = error.response.message;\n failure.Code = error.response.code;\n failure.ErrorCategory = error.response.errorCategory;\n }\n if (error instanceof HelsenorgeHttpError) {\n failure.Message = error.message;\n failure.Code = (error.response as { code: string })?.code || UNKNOWN_ERROR_CODE;\n }\n\n if (error instanceof UnknownErrorType) {\n failure.Message = error.Error;\n failure.Code = (error as { response?: { code?: string } })?.response?.code || UNKNOWN_ERROR_CODE;\n } else {\n failure.Message = 'Det har skjedd en teknisk feil. Prøv igjen senere.';\n failure.Code = (error as { response?: { code?: string } })?.response?.code || UNKNOWN_ERROR_CODE;\n }\n }\n return failure;\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport { ValueSet, QuestionnaireItem, QuestionnaireResponse, Questionnaire, Bundle } from 'fhir/r4';\nimport { DEFAULT_LANGUAGE, HN_SKJEMA_ERRORCODES_RESOURCES, HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport LocalStorageConstants from 'src/constants/localstorage';\nimport { getResources } from 'src/resources';\nimport { getLanguagesInDefinition } from 'src/util/getLanguagesInDefinition';\nimport { getPreferredLanguage, isValidPortalLanguage } from 'src/util/portalLanguage-utils';\nimport { stringToLanguageLocales } from 'src/util/stringToLanguageLocales';\nimport { trackFormEvent } from 'src/util/trackFormEvent';\n\nimport {\n CreateSkjemasvarRequest,\n GetSkjemaResponse,\n GetSkjemasvarResponse,\n TextMessage,\n UpdateSkjemasvarRequest,\n UpdateSkjemasvarResponse,\n} from '../../types/MinHelseEntities';\n\nimport { remove } from '@helsenorge/core-framework/pending-changes/pending-changes-state';\nimport Languages from '@helsenorge/core-utils/constants/languages';\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\nimport { setUserLanguage } from '@helsenorge/framework-utils/hn-language';\nimport { HelsenorgeProxyError, erTjenester, get, post, put } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { setAllowNavigation } from '@helsenorge/framework-utils/hn-user';\nimport { fetchResources } from '@helsenorge/framework-utils/resources';\nimport { OrgenhetHierarki, ProcedureStatusCodes, setSkjemaDefinitionAction } from '@helsenorge/refero';\n\nimport { LagreSkjemaDonePayload, SetResourcesPayload, shouldShowBeforeUnload, SkjemaDefinisjonLoadedPayload } from './actions';\nimport {\n createQuestionnaireResponse,\n createSavePayload,\n generateQuestionnaireResponseData,\n getLoadParameter,\n getQuestionnaireInLanguage,\n getQuestionnairs,\n gotoMinHelse,\n gotoUrl,\n isHelsenorgeProxyError,\n isNewDocument,\n redirectTilLagretSkjemaPaaDokumenter,\n removeAttachmentsIfNeeded,\n updateUrlAndFetchMessage,\n} from './actionUtils';\nimport { getQueryParams, getSkjemaNameFromUrl, oppdaterQuestionnaireResponseSomNyReponseHvisGjenbrukes, toRelativeUrl } from '../../util';\nimport { FULLFORING_AV_SKJEMA_FEIL, LAGRING_AV_SKJEMA_FEIL, logSkjemaLagringsFeil } from '../../util/logUtil';\nimport { redirectEtterFullfortSkjema } from '../../util/veileder';\nimport { AppDispatch, RootState } from '../reducers';\nimport { ProxyErrorResponse, transformFetchErrors } from './errorHandling';\n\ntype ValueSetResponse = {\n ValueSet: { System: string; Code: string; Display: string }[];\n};\ntype LastMottakereResponse = { Orgenhet: OrgenhetHierarki[] };\n\nexport const sendInnSkjema = createAsyncThunk<\n { samtaleGuid: string | undefined },\n {\n timeSkjemaLoadedForUser: number;\n automatiskLagring: boolean;\n withDiscretion?: boolean;\n isMicrowebStep: boolean | undefined;\n onCompleteMicroweb?: (formData: Record) => void;\n dokumentGuidMicroweb?: string;\n },\n { state: RootState; dispatch: AppDispatch; rejectValue: string | ProxyErrorResponse }\n>(\n 'sendInnSkjema',\n async (\n { timeSkjemaLoadedForUser, automatiskLagring, withDiscretion, isMicrowebStep, onCompleteMicroweb, dokumentGuidMicroweb },\n { getState, rejectWithValue, fulfillWithValue }\n ) => {\n const isNewDoc = isNewDocument(getState());\n\n const qr = JSON.stringify({\n ...createQuestionnaireResponse(getState()),\n status: ProcedureStatusCodes.COMPLETED,\n });\n try {\n const payload = createSavePayload(qr, getState(), automatiskLagring, withDiscretion, isMicrowebStep, dokumentGuidMicroweb);\n const skalMicrowebStepOverskriveDokument = isMicrowebStep && dokumentGuidMicroweb && dokumentGuidMicroweb !== '';\n const harDocumentGuidPayload = Object.prototype.hasOwnProperty.call(payload, 'DokumentGuid');\n\n let sendFn = harDocumentGuidPayload && !isNewDoc ? put : post;\n\n if (skalMicrowebStepOverskriveDokument && harDocumentGuidPayload) {\n sendFn = put;\n }\n\n const response = await sendFn(\n 'skjemainternal',\n 'api/v1/Skjemasvar',\n payload\n );\n if (!response) return rejectWithValue('ingen respons fra server');\n\n const queryParams = getQueryParams();\n if (response.SamtaleGuid && !isNewDoc && !queryParams.redirect) {\n return fulfillWithValue({ samtaleGuid: response.SamtaleGuid, dokumentGuid: response.DokumentGuid });\n } else {\n const queryParams = getQueryParams();\n redirectEtterFullfortSkjema(\n getState().refero.form.FormDefinition,\n getState().refero.form.FormData,\n queryParams.redirect,\n queryParams.contextParameter,\n response.DokumentGuid,\n () => redirectTilLagretSkjemaPaaDokumenter(response.DokumentGuid),\n isMicrowebStep,\n onCompleteMicroweb\n );\n return fulfillWithValue({ samtaleGuid: undefined });\n }\n } catch (error) {\n const err = error as HelsenorgeProxyError;\n const errorInfo = transformFetchErrors(err);\n // Logger etter dispatch in case en gang logger metoden feiler så får\n // fortsatt bruker en feilmelding\n logSkjemaLagringsFeil(FULLFORING_AV_SKJEMA_FEIL, err.correlationId, err.response?.code, err.statusCode, timeSkjemaLoadedForUser);\n return rejectWithValue(errorInfo);\n }\n }\n);\nexport const overstyrSkjemaFraMicroweb = createAsyncThunk<\n void,\n {\n currentQuestionnaire: Questionnaire;\n questionnaireResponse: QuestionnaireResponse | undefined;\n },\n {\n rejectValue: string | ProxyErrorResponse;\n }\n>('skjemautfyller/overstyrSkjemaFraMicroweb', async ({ currentQuestionnaire, questionnaireResponse }, { dispatch }) => {\n dispatch(\n setSkjemaDefinitionAction({\n questionnaire: currentQuestionnaire,\n questionnaireResponse: questionnaireResponse,\n language: undefined,\n syncQuestionnaireResponse: true,\n })\n );\n});\n\nexport const lagreSkjema = createAsyncThunk<\n LagreSkjemaDonePayload,\n { timeSkjemaLoadedForUser: number; automatiskLagring: boolean; dokumentGuidMicroweb?: string; isMicrowebStep?: boolean },\n {\n state: RootState;\n dispatch: AppDispatch;\n rejectValue: string | ProxyErrorResponse;\n }\n>(\n 'lagreSkjema',\n async (\n { timeSkjemaLoadedForUser, automatiskLagring, dokumentGuidMicroweb, isMicrowebStep },\n { dispatch, getState, rejectWithValue, fulfillWithValue }\n ) => {\n try {\n const globalState = getState();\n const questionnaireResponse = createQuestionnaireResponse(globalState);\n const skalMicrowebStepOverskriveDokument = isMicrowebStep && dokumentGuidMicroweb && dokumentGuidMicroweb !== '';\n\n oppdaterQuestionnaireResponseSomNyReponseHvisGjenbrukes(questionnaireResponse, globalState.refero.ui.userMetadata);\n const qr = JSON.stringify(questionnaireResponse);\n const payload = createSavePayload(qr, globalState, automatiskLagring, false, isMicrowebStep, dokumentGuidMicroweb);\n let lagreFn = Object.prototype.hasOwnProperty.call(payload, 'DokumentGuid') && !isNewDocument(globalState) ? put : post;\n\n // Merk: Microwebprosessflyt bryr seg ikke om isNewDocument sjekken, siden dokumentGuidMicroweb staten er fra prosessflyt og ikke i globalsate\n // Dette forutsetter at dokumentGuidMicroweb blir tatt vare på frem/tilbake i prosessflyten ( noe den gjør nå )\n if (skalMicrowebStepOverskriveDokument && Object.prototype.hasOwnProperty.call(payload, 'DokumentGuid')) {\n lagreFn = put;\n }\n\n const response = await lagreFn(\n 'skjemainternal',\n 'api/v1/Skjemasvar',\n payload\n );\n\n if (!response) return rejectWithValue('ingen respons fra server');\n const resonseQr: QuestionnaireResponse = JSON.parse(response?.QuestionnaireResponse);\n const currentQuestionnaire =\n globalState.refero.ui.questionnaires.filter(x => `Questionnaire/${x.id}` === questionnaireResponse.questionnaire)[0] ||\n globalState.refero.ui.questionnaires[0];\n\n dispatch(\n setSkjemaDefinitionAction({\n questionnaire: currentQuestionnaire,\n questionnaireResponse: resonseQr,\n })\n );\n\n return fulfillWithValue({ dokumentGuid: response.DokumentGuid });\n } catch (error) {\n const err = error as HelsenorgeProxyError;\n const errorInfo = transformFetchErrors(err);\n if (isHelsenorgeProxyError(err)) {\n logSkjemaLagringsFeil(\n LAGRING_AV_SKJEMA_FEIL,\n err.correlationId || null,\n err.response?.code,\n err.statusCode,\n timeSkjemaLoadedForUser\n );\n }\n return rejectWithValue(errorInfo);\n }\n }\n);\n\nexport const loadValueSet = async (\n searchString: string,\n item: QuestionnaireItem,\n successCallback: (valueSet: ValueSet) => void,\n errorCallback: (error: string) => void\n): Promise => {\n try {\n const response = await get('skjemainternal', 'api/v1/ValueSet/$expand', {\n url: encodeURIComponent(item.answerValueSet || ''),\n filter: encodeURIComponent(searchString),\n });\n if (!response) {\n return;\n }\n const valueSet: ValueSet = {\n resourceType: 'ValueSet' as const,\n status: 'draft',\n compose: {\n include: [\n {\n system: response.ValueSet.length > 0 ? response.ValueSet[0].System : '',\n concept: response.ValueSet.map(x => {\n return {\n code: x.Code,\n display: x.Display,\n };\n }),\n },\n ],\n },\n };\n successCallback(valueSet);\n } catch (error) {\n errorCallback(error as string);\n }\n};\nexport const lastMottakere = async (\n skjemaTekniskNavn: string,\n successCallback: (receivers: OrgenhetHierarki[]) => void,\n errorCallback: () => void\n): Promise => {\n try {\n const response = await get('skjemainternal', `api/v1/OrgEnhetHierarki?skjemaNavn=${skjemaTekniskNavn}`);\n if (response) {\n successCallback(response?.Orgenhet);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_error) {\n errorCallback();\n }\n};\nconst handleLanguageAndLoadResources = (questionnaires: Questionnaire[], dispatch: AppDispatch): Questionnaire => {\n const languages = getLanguagesInDefinition(questionnaires);\n const preferredLanguage = getPreferredLanguage(languages);\n const questionnaireInLanguage = getQuestionnaireInLanguage(questionnaires, preferredLanguage);\n\n const shouldLoadResources = questionnaireInLanguage && preferredLanguage.toLowerCase() !== DEFAULT_LANGUAGE.toLowerCase();\n\n if (shouldLoadResources) {\n dispatch(loadResources({ language: preferredLanguage }));\n } else if (\n questionnaires.length === 1 &&\n questionnaires[0].language &&\n questionnaires[0].language.toLowerCase() !== DEFAULT_LANGUAGE.toLowerCase()\n ) {\n dispatch(loadResources({ language: questionnaires[0].language }));\n }\n\n return questionnaireInLanguage || questionnaires[0];\n};\n\nexport const fetchSkjemaoppgave = createAsyncThunk<\n SkjemaDefinisjonLoadedPayload,\n {\n skjemaTekniskNavn?: string;\n documentGuid?: string;\n isMicroweb?: boolean;\n skjemadata?: string;\n },\n { state: RootState; dispatch: AppDispatch; rejectValue: ProxyErrorResponse | string }\n>(\n 'fetchSkjemaoppgave',\n async ({ skjemaTekniskNavn, documentGuid, isMicroweb, skjemadata }, { dispatch, rejectWithValue, fulfillWithValue }) => {\n const skjemaNavnParam = (isMicroweb && skjemaTekniskNavn) || getSkjemaNameFromUrl();\n\n const params = getQueryParams();\n const documentGuidParam = (isMicroweb && documentGuid) || params?.contextId;\n\n if (documentGuidParam && isAuthorized()) {\n const getParams = {\n ...(params?.taskId && { OppgaveGuid: params.taskId }),\n DokumentGuid: documentGuidParam,\n };\n try {\n const response = await get('skjemainternal', 'api/v1/Skjemasvar', getParams);\n if (response) {\n const {\n Metadata: metadata,\n WarningMessage: warning,\n QuestionnaireResponse: questionnaireResponse,\n Questionnaire: data,\n } = response;\n\n trackFormEvent('form continue', skjemaNavnParam);\n let parsedData: Bundle | Questionnaire;\n try {\n parsedData = JSON.parse(data);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n return rejectWithValue('Feil i json struktur');\n }\n\n const questionnaires = getQuestionnairs(parsedData);\n\n if (!questionnaires) {\n return rejectWithValue('oppgavenFinsIkke');\n }\n const mainQuestionnaire = handleLanguageAndLoadResources(questionnaires, dispatch);\n\n // endre url og hent driftsmelding for dette skjema\n if (!isMicroweb) {\n updateUrlAndFetchMessage(mainQuestionnaire);\n }\n const queryParams = getQueryParams();\n const qr = generateQuestionnaireResponseData(questionnaireResponse, mainQuestionnaire, isMicroweb, skjemadata);\n\n removeAttachmentsIfNeeded(metadata, qr, mainQuestionnaire);\n\n dispatch(setSkjemaDefinitionAction({ questionnaire: mainQuestionnaire, questionnaireResponse: qr }));\n return fulfillWithValue({\n questionnaires,\n userMetadata: metadata,\n warning,\n taskId: queryParams.taskId,\n returUrl: queryParams.returURL,\n dokumentGuid: queryParams.contextId,\n });\n } else {\n return rejectWithValue('no response');\n }\n } catch (error) {\n const errorInfo = transformFetchErrors(error);\n\n return rejectWithValue(errorInfo);\n }\n } else if (params?.taskId && isAuthorized()) {\n const getParams = {\n ...(params?.resourceId && { Id: params.resourceId }),\n OppgaveGuid: params?.taskId,\n };\n try {\n const response = await get('skjemainternal', 'api/v1/Skjema', getParams);\n if (response) {\n const { Metadata: metadata, WarningMessage: warning, Questionnaire: data } = response;\n trackFormEvent('form continue', skjemaNavnParam);\n let parsedData: Bundle | Questionnaire;\n try {\n parsedData = JSON.parse(data);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n return rejectWithValue('Feil i json struktur');\n }\n const questionnaires = getQuestionnairs(parsedData);\n\n if (!questionnaires) {\n return rejectWithValue('oppgavenFinsIkke');\n }\n const mainQuestionnaire = handleLanguageAndLoadResources(questionnaires, dispatch);\n\n // endre url og hent driftsmelding for dette skjema\n if (!isMicroweb) {\n updateUrlAndFetchMessage(mainQuestionnaire);\n }\n const queryParams = getQueryParams();\n const qr = generateQuestionnaireResponseData(undefined, mainQuestionnaire, isMicroweb, skjemadata);\n\n removeAttachmentsIfNeeded(metadata, qr, mainQuestionnaire);\n dispatch(setSkjemaDefinitionAction({ questionnaire: mainQuestionnaire, questionnaireResponse: qr }));\n return fulfillWithValue({\n questionnaires,\n userMetadata: metadata,\n warning,\n taskId: queryParams.taskId,\n returUrl: queryParams.returURL,\n });\n // dispatch(onReceive(response.Questionnaire, response.Metadata, response.WarningMessage, undefined, isMicroweb));\n } else {\n return rejectWithValue('No response');\n }\n } catch (error) {\n const errorInfo = transformFetchErrors(error);\n\n return rejectWithValue(errorInfo);\n }\n } else if (params?.Query || skjemaNavnParam) {\n const [loadParamName, loadParamValue] = getLoadParameter(params?.Query || '', skjemaNavnParam);\n\n const controllerName = isAuthorized() && erTjenester() ? 'api/v1/Skjema' : 'api/v1/SkjemaAnonym';\n\n try {\n const response = await get('skjemainternal', controllerName, { [loadParamName]: loadParamValue });\n\n if (response) {\n const { Metadata: metadata, WarningMessage: warning, Questionnaire: data } = response;\n trackFormEvent('form continue', skjemaNavnParam);\n let parsedData: Bundle | Questionnaire;\n try {\n parsedData = JSON.parse(data);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n return rejectWithValue('Feil i json struktur');\n }\n const questionnaires = getQuestionnairs(parsedData);\n\n if (!questionnaires) {\n return rejectWithValue('oppgavenFinsIkke');\n }\n const mainQuestionnaire = handleLanguageAndLoadResources(questionnaires, dispatch);\n\n // endre url og hent driftsmelding for dette skjema\n if (!isMicroweb) {\n updateUrlAndFetchMessage(mainQuestionnaire);\n }\n const queryParams = getQueryParams();\n\n const qr = generateQuestionnaireResponseData(undefined, mainQuestionnaire, isMicroweb, skjemadata);\n removeAttachmentsIfNeeded(metadata, qr, mainQuestionnaire);\n\n dispatch(setSkjemaDefinitionAction({ questionnaire: mainQuestionnaire, questionnaireResponse: qr }));\n return fulfillWithValue({\n questionnaires,\n userMetadata: metadata,\n warning,\n taskId: queryParams?.taskId,\n returUrl: queryParams?.returURL,\n });\n } else {\n return rejectWithValue('Empty response');\n }\n } catch (error) {\n const errorInfo = transformFetchErrors(error);\n\n return rejectWithValue(errorInfo);\n }\n } else {\n return rejectWithValue('Kunne ikke hente skjema. Mangler nødvendige parametere');\n }\n }\n);\nexport const userChangeLanguage = createAsyncThunk<\n { language: Languages },\n { language: Languages },\n {\n dispatch: AppDispatch;\n state: RootState;\n rejectValue: undefined | TextMessage;\n }\n>('skjemautfyller/changeLanguage', async ({ language }, { dispatch, getState, fulfillWithValue }) => {\n await dispatch(remove());\n\n if (isValidPortalLanguage(language)) {\n window.localStorage.setItem(LocalStorageConstants.Language, language);\n setUserLanguage(language);\n }\n const questionnaires = getState().refero.ui.questionnaires;\n const skjemaDefinition = getQuestionnaireInLanguage(questionnaires, language);\n if (skjemaDefinition) {\n dispatch(loadResources({ language }));\n dispatch(setSkjemaDefinitionAction({ questionnaire: skjemaDefinition }));\n }\n\n return fulfillWithValue({ language });\n});\n\nexport const abortSkjema = createAsyncThunk<\n void,\n undefined,\n {\n dispatch: AppDispatch;\n state: RootState;\n }\n>('skjemautfyller/abortSkjema', async (_, { dispatch, getState }) => {\n dispatch(shouldShowBeforeUnload({ show: false }));\n const returUrl = decodeURIComponent(getState().refero.ui.returUrl || '');\n await setAllowNavigation(true);\n if (returUrl) {\n gotoUrl(toRelativeUrl(returUrl));\n } else if (getState().refero.ui.dokumentGuid) {\n redirectTilLagretSkjemaPaaDokumenter();\n } else {\n gotoMinHelse();\n }\n});\n\nexport const redirectToReturUrlHvisEksisterer = createAsyncThunk<\n void,\n undefined,\n {\n dispatch: AppDispatch;\n state: RootState;\n rejectValue: undefined | TextMessage;\n }\n>('skjemautfyller/redirectToReturUrlHvisEksisterer', async (_, { dispatch, getState }) => {\n dispatch(shouldShowBeforeUnload({ show: false }));\n const returUrl = decodeURIComponent(getState().refero.ui.returUrl || '');\n if (returUrl) {\n const returnUrlRelative = toRelativeUrl(returUrl);\n gotoUrl(returnUrlRelative);\n } else {\n redirectTilLagretSkjemaPaaDokumenter();\n }\n});\n\nexport const loadResources = createAsyncThunk<\n SetResourcesPayload | void,\n { language: Languages | string },\n {\n rejectValue: undefined | TextMessage;\n dispatch: AppDispatch;\n }\n>('skjemautfyller/loadResources', async ({ language }, { dispatch, rejectWithValue }) => {\n try {\n dispatch(fetchResources(HN_SKJEMA_FRONTEND_RESOURCES, stringToLanguageLocales(language), getResources));\n dispatch(fetchResources(HN_SKJEMA_ERRORCODES_RESOURCES, stringToLanguageLocales(language), getResources));\n } catch (error) {\n return rejectWithValue(error as TextMessage | undefined);\n }\n});\n","export enum AuthenticationRequirement {\n Anonymous = 1,\n Optional = 2,\n Required = 3,\n}\n","import { Questionnaire } from 'fhir/r4';\nimport { AuthenticationRequirement } from 'src/constants/authenticationRequirement';\nimport { SaveCapabilites } from 'src/constants/saveCapabilites';\nimport { SidebarVisibility } from 'src/constants/sidebarVisibility';\nimport { TopMessageVisibility } from 'src/constants/topMessageVisibility';\nimport { hasEndpointOrTqqcComponent } from 'src/util';\nimport {\n getAuthenticationRequirementValue,\n getPrintVersion,\n getSaveCapabilitiesValue,\n getSidebarVisibilityValue,\n getTopMessageVisibilityValue,\n} from 'src/util/extension';\n\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\nimport { getNavigatorExtension } from '@helsenorge/refero';\n\nexport function getPrintReference(skjemaDefinition: Questionnaire | undefined): string | undefined {\n return skjemaDefinition ? getPrintVersion(skjemaDefinition) : '';\n}\n\nexport function getIsNavigatorEnabled(skjemaDefinition: Questionnaire | undefined): boolean {\n return skjemaDefinition ? !!getNavigatorExtension(skjemaDefinition) : false;\n}\n\nexport function getIsSavedInDokumenter(skjemaDefinition: Questionnaire | undefined): boolean {\n return skjemaDefinition ? !hasEndpointOrTqqcComponent(skjemaDefinition) : false;\n}\n\nexport function getSaveCapabilities(skjemaDefinition: Questionnaire | undefined): SaveCapabilites | undefined {\n return skjemaDefinition ? getSaveCapabilitiesValue(skjemaDefinition) : undefined;\n}\n\nexport function getShouldShowBeforeUnload(original: boolean | undefined, skjemaDefinition: Questionnaire | undefined): boolean | undefined {\n if (!skjemaDefinition) {\n return original;\n }\n const authenticationRequirement = getAuthenticationRequirementValue(skjemaDefinition);\n switch (authenticationRequirement) {\n case AuthenticationRequirement.Anonymous:\n case AuthenticationRequirement.Optional:\n return true;\n default:\n return isAuthorized() ? true : false;\n }\n}\n\nexport function getSidebarVisibility(skjemaDefinition: Questionnaire | undefined): number {\n if (!skjemaDefinition) return SidebarVisibility.On;\n return getSidebarVisibilityValue(skjemaDefinition);\n}\n\nexport function getTopMessageVisibility(skjemaDefinition: Questionnaire | undefined): number {\n if (!skjemaDefinition) return TopMessageVisibility.On;\n return getTopMessageVisibilityValue(skjemaDefinition);\n}\n","export enum SaveCapabilites {\n FinalAndIntermediateVersion = 1,\n FinalVersionOnly = 2,\n NoSaving = 3,\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { Questionnaire, QuestionnaireResponse } from 'fhir/r4';\nimport { fetchSkjemaoppgave, lagreSkjema, sendInnSkjema, userChangeLanguage } from 'src/store/actions/actionCreators';\n\nimport { TextMessage, Metadata } from '../../types/MinHelseEntities';\n\nimport Language from '@helsenorge/core-utils/constants/languages';\nimport { getSidebarSections, setSkjemaDefinitionAction, SidebarItem } from '@helsenorge/refero';\n\nimport {\n getIsNavigatorEnabled,\n getIsSavedInDokumenter,\n getPrintReference,\n getSaveCapabilities,\n getShouldShowBeforeUnload,\n getSidebarVisibility,\n getTopMessageVisibility,\n} from './selectors';\nimport { GUIDANCE_ACTION } from '../../constants/extensions';\nimport { SaveCapabilites } from '../../constants/saveCapabilites';\nimport { hasExtension, hasEndpoint, getSkjemaNameFromUrl } from '../../util/index';\nimport { trackFormEvent } from '../../util/trackFormEvent';\nimport { shouldShowBeforeUnload, PromtLoginMessagePayload, BlockSubmitPayload, SendInnSkjemaDonePayload } from '../actions/actions';\nimport { ProxyErrorResponse, UNKNOWN_ERROR_CODE } from '../actions/errorHandling';\n\nexport type UiState = {\n language: Language;\n loadSkjemaoppgaveErrorMessage?: string;\n loadSkjemaoppgaveErrorCode?: string;\n showGlobalSpinner?: boolean;\n showLocalSpinner?: boolean;\n\n // innsending/ferdigstilling\n sendInnSkjemaError?: string;\n sendInnSkjemaErrorCode?: string;\n skjemaSendtInn?: boolean;\n skjemaSendesInn?: boolean;\n samtaleGuid?: string;\n isAttachmentMaxFilesErrorVisible?: boolean;\n\n // mellomlagring\n lagreSkjemaError?: string;\n showContinueOrLeaveMessage?: boolean;\n dokumentGuid?: string;\n lastSavedData?: QuestionnaireResponse;\n kanIkkeLagre?: boolean;\n lagreSkjemaErrorCode?: string;\n\n blockSubmit?: boolean;\n shouldShowBeforeUnload?: boolean;\n showAnonymousUploadDenied?: boolean;\n showAnonymousSkjemaLightbox?: boolean;\n notUsedForm?: boolean;\n\n // loading bundle:\n questionnaires: Array;\n userMetadata?: Metadata;\n loadSkjemaoppgaveWarningMessage?: TextMessage;\n taskId?: string;\n returUrl?: string;\n\n // derived from current selected questionnaire\n isSavedInDokumenter?: boolean;\n isNavigatorEnabled?: boolean;\n kanMellomlagres: boolean;\n kanLagresEtterInnsending: boolean;\n printReference?: string;\n sidebarData?: Array;\n sidebarVisibility?: number;\n topMessageVisibility?: number;\n harGuidanceAction?: boolean;\n harEndepunkt?: boolean;\n formHasChanges: boolean;\n};\n\nexport const initialState: UiState = {\n language: Language.NORWEGIAN,\n sendInnSkjemaErrorCode: undefined,\n showGlobalSpinner: false,\n showLocalSpinner: false,\n sendInnSkjemaError: undefined,\n skjemaSendtInn: false,\n skjemaSendesInn: false,\n lagreSkjemaError: undefined,\n kanIkkeLagre: false,\n blockSubmit: undefined,\n shouldShowBeforeUnload: true,\n isSavedInDokumenter: false,\n showAnonymousUploadDenied: false,\n showAnonymousSkjemaLightbox: false,\n notUsedForm: true,\n showContinueOrLeaveMessage: false,\n dokumentGuid: undefined,\n kanMellomlagres: true,\n kanLagresEtterInnsending: true,\n sidebarData: undefined,\n questionnaires: [],\n userMetadata: undefined,\n loadSkjemaoppgaveWarningMessage: undefined,\n formHasChanges: false,\n};\n\nconst reducer = createSlice({\n name: 'ui',\n initialState,\n reducers: {\n formHasChanges(state, action: PayloadAction) {\n state.formHasChanges = action.payload;\n },\n dismissAnonymousMessage: state => {\n state.showAnonymousSkjemaLightbox = false;\n },\n startSendInnSkjema: state => {\n state.showGlobalSpinner = true;\n state.sendInnSkjemaError = undefined;\n state.sendInnSkjemaErrorCode = undefined;\n\n state.skjemaSendtInn = false;\n state.skjemaSendesInn = true;\n },\n dismissSendInnError: state => {\n state.sendInnSkjemaError = undefined;\n state.sendInnSkjemaErrorCode = undefined;\n },\n dismissLagreError: state => {\n state.lagreSkjemaError = undefined;\n state.lagreSkjemaErrorCode = undefined;\n },\n kanIkkeLagreError: state => {\n state.kanIkkeLagre = true;\n },\n dismissKanIkkeLagre: state => {\n state.kanIkkeLagre = false;\n },\n anonymousUploadOfAttachmentDenied: state => {\n state.showAnonymousUploadDenied = true;\n },\n hideAnonymousUploadOfAttachmentDenied: state => {\n state.showAnonymousUploadDenied = false;\n },\n closeContinueOrLeaveMessageAndLeave: state => {\n state.showContinueOrLeaveMessage = false;\n state.showGlobalSpinner = true;\n },\n closeContinueOrLeaveMessage: state => {\n state.showContinueOrLeaveMessage = false;\n },\n showAttachmentMaxFilesError: state => {\n state.isAttachmentMaxFilesErrorVisible = true;\n },\n hideAttachmentMaxFilesError: state => {\n state.isAttachmentMaxFilesErrorVisible = false;\n },\n promptLoginMessage: (state, action: PayloadAction) => {\n if (state.notUsedForm) {\n state.shouldShowBeforeUnload = getShouldShowBeforeUnload(state.shouldShowBeforeUnload, action.payload.questionnaire);\n state.showAnonymousSkjemaLightbox = !getShouldShowBeforeUnload(state.shouldShowBeforeUnload, action.payload.questionnaire);\n state.notUsedForm = false;\n }\n },\n setSamtaleguid: (state, action: PayloadAction<{ samtaleGuid?: string; dokumentGuid?: string }>) => {\n state.samtaleGuid = action.payload.samtaleGuid;\n state.dokumentGuid = action.payload.dokumentGuid;\n state.skjemaSendesInn = false;\n state.skjemaSendtInn = true;\n state.showGlobalSpinner = false;\n },\n blockSubmit: (state, action: PayloadAction) => {\n state.blockSubmit = action.payload.blockSubmit;\n },\n },\n extraReducers: builder => {\n builder.addCase(userChangeLanguage.fulfilled, (state, action) => {\n state.language = action.payload.language;\n });\n builder.addCase(setSkjemaDefinitionAction, (state, action) => {\n state.shouldShowBeforeUnload = getShouldShowBeforeUnload(state.shouldShowBeforeUnload, action.payload.questionnaire);\n const saveCapabilities = getSaveCapabilities(action.payload.questionnaire);\n state.kanMellomlagres = saveCapabilities !== SaveCapabilites.FinalVersionOnly && saveCapabilities !== SaveCapabilites.NoSaving;\n state.kanLagresEtterInnsending = saveCapabilities !== SaveCapabilites.NoSaving;\n state.isSavedInDokumenter = getIsSavedInDokumenter(action.payload.questionnaire);\n state.printReference = getPrintReference(action.payload.questionnaire);\n state.isNavigatorEnabled = getIsNavigatorEnabled(action.payload.questionnaire);\n state.sidebarData = action.payload.questionnaire ? getSidebarSections(action.payload.questionnaire) : undefined;\n state.sidebarVisibility = getSidebarVisibility(action.payload.questionnaire);\n state.topMessageVisibility = getTopMessageVisibility(action.payload.questionnaire);\n state.harGuidanceAction = hasExtension(action.payload.questionnaire, GUIDANCE_ACTION);\n state.harEndepunkt = hasEndpoint(action.payload.questionnaire);\n state.lastSavedData = action.payload.questionnaireResponse ? action.payload.questionnaireResponse : state.lastSavedData;\n });\n builder.addCase(shouldShowBeforeUnload, (state, action) => {\n state.shouldShowBeforeUnload = action.payload.show;\n });\n builder.addCase(fetchSkjemaoppgave.pending, state => {\n state.showLocalSpinner = true;\n state.loadSkjemaoppgaveErrorMessage = undefined;\n state.loadSkjemaoppgaveErrorCode = undefined;\n state.formHasChanges = false;\n });\n builder.addCase(fetchSkjemaoppgave.fulfilled, (state, action) => {\n trackFormEvent('form start', getSkjemaNameFromUrl());\n state.dokumentGuid = action.payload.dokumentGuid;\n state.taskId = action.payload.taskId;\n state.returUrl = action.payload.returUrl;\n state.showLocalSpinner = false;\n state.showAnonymousSkjemaLightbox = false;\n state.questionnaires = action.payload.questionnaires || [];\n state.userMetadata = action.payload.userMetadata;\n state.loadSkjemaoppgaveWarningMessage = action.payload.warning;\n });\n builder.addCase(fetchSkjemaoppgave.rejected, (state, action) => {\n if (action.payload && typeof action.payload === 'string') {\n state.loadSkjemaoppgaveErrorMessage = action.payload;\n state.loadSkjemaoppgaveErrorCode = action.payload;\n } else {\n const error = action.payload as ProxyErrorResponse;\n state.loadSkjemaoppgaveErrorCode = error.Code ?? UNKNOWN_ERROR_CODE;\n state.loadSkjemaoppgaveErrorMessage = error.Message ?? 'An unknown error occurred';\n }\n state.loadSkjemaoppgaveWarningMessage = undefined;\n state.showLocalSpinner = false;\n });\n builder.addCase(lagreSkjema.pending, state => {\n state.showGlobalSpinner = true;\n state.lagreSkjemaError = undefined;\n state.lagreSkjemaErrorCode = undefined;\n state.formHasChanges = false;\n });\n builder.addCase(lagreSkjema.fulfilled, (state, action) => {\n trackFormEvent('form save', getSkjemaNameFromUrl());\n state.lagreSkjemaError = undefined;\n state.lagreSkjemaErrorCode = undefined;\n state.showContinueOrLeaveMessage = true;\n state.dokumentGuid = action.payload?.dokumentGuid;\n });\n builder.addCase(lagreSkjema.rejected, (state, action) => {\n if (action.payload && typeof action.payload === 'string') {\n state.lagreSkjemaError = action.payload;\n state.lagreSkjemaErrorCode = action.payload;\n } else {\n const error = action.payload as ProxyErrorResponse;\n state.lagreSkjemaError = error?.Message;\n state.lagreSkjemaErrorCode = error?.Code;\n }\n });\n builder.addCase(sendInnSkjema.pending, state => {\n state.showGlobalSpinner = true;\n state.lagreSkjemaError = undefined;\n state.lagreSkjemaErrorCode = undefined;\n state.shouldShowBeforeUnload = false;\n state.formHasChanges = false;\n });\n builder.addCase(sendInnSkjema.fulfilled, (state, action: PayloadAction) => {\n trackFormEvent('form complete', getSkjemaNameFromUrl());\n state.dokumentGuid = action.payload.dokumentGuid ? action.payload.dokumentGuid : state.dokumentGuid;\n state.samtaleGuid = action.payload.samtaleGuid ? action.payload.samtaleGuid : state.samtaleGuid;\n state.skjemaSendtInn = true;\n });\n builder.addCase(sendInnSkjema.rejected, (state, action) => {\n if (action.payload && typeof action.payload === 'string') {\n state.sendInnSkjemaError = action.payload;\n state.sendInnSkjemaErrorCode = action.payload;\n } else {\n const error = action.payload as ProxyErrorResponse;\n state.sendInnSkjemaErrorCode = error.Code;\n state.sendInnSkjemaError = error.Message ?? error.Message;\n }\n });\n builder.addMatcher(sendInnSkjema.settled, state => {\n state.showGlobalSpinner = false;\n state.skjemaSendesInn = false;\n });\n builder.addMatcher(lagreSkjema.settled, state => {\n state.showGlobalSpinner = false;\n });\n },\n});\nexport default reducer.reducer;\nexport const {\n dismissAnonymousMessage,\n startSendInnSkjema,\n dismissSendInnError,\n dismissLagreError,\n kanIkkeLagreError,\n dismissKanIkkeLagre,\n anonymousUploadOfAttachmentDenied,\n hideAnonymousUploadOfAttachmentDenied,\n closeContinueOrLeaveMessageAndLeave,\n closeContinueOrLeaveMessage,\n showAttachmentMaxFilesError,\n hideAttachmentMaxFilesError,\n promptLoginMessage,\n setSamtaleguid,\n blockSubmit,\n formHasChanges,\n} = reducer.actions;\n","import { UnknownAction, combineReducers, configureStore, ThunkAction, createAsyncThunk } from '@reduxjs/toolkit';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport pendingChanges, { PendingChangesState } from '@helsenorge/core-framework/pending-changes/pending-changes-state';\nimport hjelpeskuff, { HjelpeskuffState } from '@helsenorge/core-framework/prosesshjelp/hjelpeskuff/hjelpeskuff-state';\nimport { cmsTjenesteTekster, CmsTjenesteTeksterState } from '@helsenorge/framework-utils/cms-tjeneste-tekster';\nimport { ProxyErrorResponse } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { resources, ResourcesState } from '@helsenorge/framework-utils/resources';\nimport { Form as ReferoFormState, form } from '@helsenorge/refero';\n\nimport ui, { UiState } from './uiSlice';\n\nexport type GlobalState = {\n resources: ResourcesState;\n hjelpeskuff: HjelpeskuffState;\n refero: {\n ui: UiState;\n form: ReferoFormState;\n };\n cmsTjenesteTekster: CmsTjenesteTeksterState;\n pendingChanges: PendingChangesState;\n};\n\nconst rootReducer = combineReducers({\n resources,\n hjelpeskuff,\n refero: combineReducers({\n ui,\n form,\n }),\n cmsTjenesteTekster,\n pendingChanges,\n});\n\nexport const store = configureStore({ reducer: rootReducer, middleware: getDefaultMiddleware => getDefaultMiddleware() });\n\nexport type RootState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\nexport type AppStore = typeof store;\nexport const createAppAsyncThunk = createAsyncThunk.withTypes<{\n state: RootState;\n dispatch: AppDispatch;\n rejectValue: string | ProxyErrorResponse;\n extra: { s: string; n: number };\n}>();\n\nexport type AppThunk = ThunkAction;\n\nexport const useAppDispatch = () => useDispatch();\nexport function useAppSelector(selector: (state: RootState) => TSelected): TSelected {\n return useSelector(selector);\n}\nexport default rootReducer;\n","import { useEffect } from 'react';\n\nimport { useAppSelector } from 'src/store/reducers';\n\nexport const useHandleDocumentTitle = (microwebOrStep: boolean | undefined): void => {\n const formTitle = useAppSelector(state => state.refero.form?.FormDefinition?.Content?.title);\n const updateDocumentTitle = (): void => {\n if (formTitle && !microwebOrStep) {\n document.title = formTitle;\n }\n };\n useEffect(() => {\n updateDocumentTitle();\n }, [formTitle]);\n};\n","import { useState } from 'react';\n\nexport const useLastActivity = (): {\n lastActivity: number;\n timeUserHasBeenIdle: number;\n setLastActivity: React.Dispatch>;\n} => {\n const [lastActivity, setLastActivity] = useState(Date.now());\n\n return { lastActivity, timeUserHasBeenIdle: Date.now() - lastActivity, setLastActivity };\n};\n","import LanguageLocales from '@helsenorge/core-utils/constants/languages';\nimport { getResourcesFromState, ResourceItem } from '@helsenorge/framework-utils/resources';\n\nimport { RootState } from '../reducers';\n\n/**\n * A generic selector for retrieving typed resources from the global state.\n *\n * @param state The root Redux state\n * @param resourceGroup The key/group name for the resource set\n * @param language Optional language code; defaults to what's in state if not provided\n * @returns A typed resource object (T) or null\n */\nexport function getResourcesSelector(\n state: RootState,\n resourceGroup: string,\n language?: LanguageLocales\n): T {\n return getResourcesFromState(state, resourceGroup, language?.toString() ?? state.refero.ui.language?.toString()) as T;\n}\n","import React from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\n\nexport type Props = {\n erKopiLagret: boolean;\n onOkButtonClick: () => void;\n};\n\nconst ConfirmationLightbox = ({ erKopiLagret, onOkButtonClick }: Props): React.JSX.Element | null => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n const skjemaSendtInn = useAppSelector(state => state.refero.ui.skjemaSendtInn);\n const samtaleGuid = useAppSelector(state => state.refero.ui.samtaleGuid);\n return skjemaSendtInn && samtaleGuid && resources ? (\n \n ) : null;\n};\n\nexport default ConfirmationLightbox;\n","import React from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { redirectToReturUrlHvisEksisterer } from 'src/store/actions/actionCreators';\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\nimport { closeContinueOrLeaveMessageAndLeave, closeContinueOrLeaveMessage } from 'src/store/reducers/uiSlice';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\n\nconst ConfirmationLightboxLagre = (): React.JSX.Element | null => {\n const dispatch = useAppDispatch();\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n const showContinueOrLeaveMessage = useAppSelector(state => state.refero.ui.showContinueOrLeaveMessage);\n const onCloseLagreMessageAndLeave = (): void => {\n dispatch(closeContinueOrLeaveMessageAndLeave());\n dispatch(redirectToReturUrlHvisEksisterer());\n };\n\n const onContinueOrLeave = (): void => {\n dispatch(closeContinueOrLeaveMessage());\n };\n\n return showContinueOrLeaveMessage && resources ? (\n \n ) : null;\n};\n\nexport default ConfirmationLightboxLagre;\n","import { createSelector } from '@reduxjs/toolkit';\nimport { HN_SKJEMA_ERRORCODES_RESOURCES } from 'src/constants/constants';\nimport { HNSkjemaErrorCodes, HNSkjemaFrontend } from 'src/types/Resources';\n\nimport { RootState } from '../reducers';\nimport { getResourcesSelector } from './resourcesSelectors';\nconst DEFAULT_ERROR_MESSAGE = 'Det har oppstått en feil. Prøv igjen senere.';\n\nexport const getErrorMessageFromErrorCodeResource = createSelector(\n [\n (state: RootState): HNSkjemaErrorCodes =>\n getResourcesSelector(state, HN_SKJEMA_ERRORCODES_RESOURCES, state.refero.ui.language),\n (_state: RootState, errorCode: string): string => errorCode,\n ],\n (errorCodesResources, errorCode) => {\n const code = errorCode?.replace('-', '_').replace(/^./, char => char.toLowerCase()) as keyof HNSkjemaErrorCodes;\n\n return errorCodesResources?.[code] ?? '';\n }\n);\nexport const getErrorMessageFromSkjemaResource = createSelector(\n [\n (state: RootState): HNSkjemaFrontend => getResourcesSelector(state, HN_SKJEMA_ERRORCODES_RESOURCES),\n (_state: RootState, errorCode: string): string => errorCode,\n ],\n (errorCodesResources, errorCode) => {\n return errorCodesResources?.[errorCode as keyof HNSkjemaFrontend] ?? '';\n }\n);\nexport const getErrorMessageFromErrorCode = createSelector(\n [\n (_state, errorCode?: string): string | undefined => errorCode,\n (state: RootState, errorCode: string): string | undefined => getErrorMessageFromErrorCodeResource(state, errorCode),\n (state: RootState, errorCode: string): string | undefined => getErrorMessageFromSkjemaResource(state, errorCode),\n ],\n (errorCode, errorCodeResourceMessage, skjemaResourcesMessage) => {\n return errorCodeResourceMessage ?? skjemaResourcesMessage ?? errorCode ?? DEFAULT_ERROR_MESSAGE;\n }\n);\n","import React from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getErrorMessageFromErrorCode } from 'src/store/selectors/errorCodesSelectors';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\n\nimport { HNSkjemaErrorCodes, HNSkjemaFrontend } from '../../types/Resources';\n\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\n\nconst SkjemaLoadError = (): React.JSX.Element => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n const loadSkjemaoppgaveErrorMessage = useAppSelector(state => state.refero.ui.loadSkjemaoppgaveErrorMessage) as keyof HNSkjemaErrorCodes;\n const loadSkjemaErrorCode = useAppSelector(state => state.refero.ui.loadSkjemaoppgaveErrorCode) as keyof HNSkjemaFrontend | undefined;\n const errorMessage = useAppSelector(state => getErrorMessageFromErrorCode(state, loadSkjemaErrorCode));\n\n const description = errorMessage ?? loadSkjemaoppgaveErrorMessage;\n\n return (\n
\n \n {description}\n \n
\n );\n};\n\nexport default SkjemaLoadError;\n","import { Attachment } from 'fhir/r4';\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport { UploadFile } from '@helsenorge/file-upload/components/file-upload';\nimport { link } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { getId, TextMessage } from '@helsenorge/refero';\n\ntype UseAttachmentUtilsReturn = {\n generateAttachmentLink: (fileId: string) => string;\n openAttachment: (fileId: string) => void;\n uploadAttachment: (\n files: UploadFile[],\n onSuccess: (attachment: Attachment) => void,\n onError: (errormessage: TextMessage | null) => void\n ) => void;\n deleteAttachment: (fileId: string, onSuccess: () => void) => void;\n getAttachmentLink: (fileId: string) => string;\n};\n\nexport const useAttachmentUtils = (): UseAttachmentUtilsReturn => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n const generateAttachmentLink = (fileId: string): string => {\n return link('skjemainternal', 'api/v1/Attachment', {\n id: fileId,\n });\n };\n\n const openAttachment = (fileId: string): void => {\n window.open(generateAttachmentLink(fileId), '_blank');\n };\n\n const uploadAttachment = (\n files: UploadFile[],\n onSuccess: (attachment: Attachment) => void,\n onError: (errormessage: TextMessage | null) => void\n ): void => {\n const reader = new FileReader();\n reader.onload = (): void => {\n const dataString = reader.result?.toString() || '';\n\n const attachment: Attachment = {\n id: getId(files[0].id),\n title: files[0].name,\n url: `${getId()}-generated`,\n data: dataString.substring(dataString.indexOf(',') + 1),\n contentType: files[0].type,\n };\n\n onSuccess(attachment);\n };\n reader.onerror = (): void => {\n onError({ Title: resources?.uploadFileError || '', Body: '' });\n };\n\n reader.readAsDataURL(files[0]);\n };\n const deleteAttachment = (_fileId: string, onSuccess: () => void): void => {\n onSuccess();\n };\n\n const getAttachmentLink = (fileId: string): string => {\n return fileId.indexOf('generated') > -1 ? '' : generateAttachmentLink(fileId);\n };\n return {\n generateAttachmentLink,\n openAttachment,\n uploadAttachment,\n deleteAttachment,\n getAttachmentLink,\n };\n};\n","import { useEffect } from 'react';\n\nimport { useAppSelector } from 'src/store/reducers';\nimport { jsonStringifySortProps } from 'src/util';\n\nimport { add, remove } from '@helsenorge/core-framework/pending-changes/pending-changes-state';\nimport { useAppDispatch } from '@helsenorge/refero';\n\n/**\n ** @param sendPendingChangesEventMicroweb Optional callback ment for microweb/step som videresender hasChanges til konsumenten\n ** @description Hook som lytter til endringer i formen og sender evt. en event til microweb/step hvis callback er satt\n ** @returns boolean som indikerer om det er endringer utført av bruker i skjemaformen\n */\nconst useFormHasChanges = (sendPendingChangesEventMicroweb?: (hasChanges: boolean) => void): boolean => {\n const shouldShowBeforeUnload = useAppSelector(state => state.refero.ui.shouldShowBeforeUnload);\n const formHasChanges = useAppSelector(state => state.refero.ui.formHasChanges);\n const lastSavedDataItem = useAppSelector(state => state.refero.ui.lastSavedData?.item);\n const item = useAppSelector(state => state.refero.form.FormData.Content?.item);\n const dispatch = useAppDispatch();\n const hasChanges = !!(\n shouldShowBeforeUnload &&\n lastSavedDataItem &&\n item &&\n jsonStringifySortProps(item) !== jsonStringifySortProps(lastSavedDataItem) &&\n formHasChanges === true\n );\n useEffect(() => {\n if (hasChanges) {\n if (sendPendingChangesEventMicroweb) {\n sendPendingChangesEventMicroweb(true);\n }\n dispatch(add());\n } else {\n if (sendPendingChangesEventMicroweb) {\n sendPendingChangesEventMicroweb(false);\n }\n dispatch(remove());\n }\n }, [hasChanges]);\n\n return hasChanges;\n};\nexport default useFormHasChanges;\n","import { HNSkjemaFrontend } from 'src/types/Resources';\r\nimport { getQueryParams } from 'src/util';\r\nimport { hentOversettelse } from 'src/util/stringToLanguageLocales';\r\n\r\nimport { Resources } from '@helsenorge/refero';\r\n\r\nconst getActionButtonTitle = (\r\n resources: HNSkjemaFrontend,\r\n isSavedInDokumenter?: boolean,\r\n harEndepunkt?: boolean,\r\n harGuidanceAction?: boolean\r\n): string => {\r\n if (getQueryParams().redirect || (!harEndepunkt && harGuidanceAction)) {\r\n return hentOversettelse('formProceed', resources);\r\n }\r\n return isSavedInDokumenter ? hentOversettelse('formFinish', resources) : hentOversettelse('formSend', resources);\r\n};\r\n\r\nexport const getSkjemaResources = (\r\n resources: HNSkjemaFrontend,\r\n isMicrowebStep?: boolean,\r\n isSavedInDokumenter?: boolean,\r\n harEndepunkt?: boolean,\r\n harGuidanceAction?: boolean\r\n): Resources => {\r\n return {\r\n ...resources,\r\n formSend: isMicrowebStep ? resources.nextStep : getActionButtonTitle(resources, isSavedInDokumenter, harEndepunkt, harGuidanceAction),\r\n formCancel: isMicrowebStep ? resources.previousStep : resources.formCancel,\r\n formRequired: resources.formRequired, // brukes ikke i helsenorge-skjema\r\n };\r\n};\r\n","import { getSkjemaResources } from 'src/components/renderUtils';\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport { Resources } from '@helsenorge/refero';\n\nexport const useGetSchemaResources = (isMicrowebStep?: boolean): Resources | undefined => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n const isSavedInDokumenter = useAppSelector(state => state.refero.ui.isSavedInDokumenter);\n const harEndepunkt = useAppSelector(state => state.refero.ui.harEndepunkt);\n const harGuidanceAction = useAppSelector(state => state.refero.ui.harGuidanceAction);\n\n if (!resources) return;\n return getSkjemaResources(resources, isMicrowebStep, isSavedInDokumenter, harEndepunkt, harGuidanceAction);\n};\n","import { AuthenticationRequirement } from 'src/constants/authenticationRequirement';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getAuthenticationRequirementValue } from 'src/util/extension';\n\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\n\nexport const useHandleAuthenticationRequirment = (): {\n allowAnonymous: boolean;\n authenticationRequirement: AuthenticationRequirement | undefined;\n isAuthorized: () => boolean;\n allowAnonymousOrAuthorized: boolean;\n} => {\n const questionnaire = useAppSelector(state => state.refero.form.FormDefinition.Content);\n const shouldAllowAnonymous = (authenticationRequirement: AuthenticationRequirement | undefined): boolean => {\n switch (authenticationRequirement) {\n case AuthenticationRequirement.Anonymous:\n case AuthenticationRequirement.Optional:\n return true;\n default:\n return false;\n }\n };\n\n const authenticationRequirement = getAuthenticationRequirementValue(questionnaire);\n const allowAnonymous = shouldAllowAnonymous(authenticationRequirement);\n return {\n allowAnonymous,\n authenticationRequirement,\n isAuthorized,\n allowAnonymousOrAuthorized: allowAnonymous || isAuthorized(),\n };\n};\n","export type MicrowebStepFormDataCallBack = (formData: Record) => void;\n\nexport enum MicrowebStepReferoButtonCallBackDirection {\n Cancel = 'cancel',\n Forward = 'forward',\n Back = 'back',\n}\n","import React from 'react';\n\nimport { HeaderFooterEvents } from '@helsenorge/framework-utils/web-component/constants';\nimport { HNaddEventListener } from '@helsenorge/framework-utils/web-component/events';\n\nimport { lagreSkjema } from '../store/actions/actionCreators';\nimport { useAppDispatch } from '../store/reducers';\ninterface Props {\n timeSkjemaLoadedForUser: number;\n automatiskLagring: boolean;\n kanMellomlagres: boolean;\n}\n\nconst EventListener = ({ timeSkjemaLoadedForUser, automatiskLagring, kanMellomlagres }: Props): React.JSX.Element => {\n const dispatch = useAppDispatch();\n const webcompheader = document.querySelector('hn-webcomp-header');\n HNaddEventListener(HeaderFooterEvents.soonautosignout, webcompheader, () => {\n if (kanMellomlagres) {\n dispatch(lagreSkjema({ timeSkjemaLoadedForUser, automatiskLagring }));\n }\n });\n\n return <>;\n};\n\nexport default EventListener;\n","import React from 'react';\r\n\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\ntype Props = {\r\n resources?: HNSkjemaFrontend;\r\n opening: boolean;\r\n};\r\n\r\nconst HelpButton = ({ resources, opening }: Props): React.JSX.Element => {\r\n return (\r\n \r\n );\r\n};\r\nexport default HelpButton;\r\n","import React from 'react';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport SafeHTML from '@helsenorge/framework-utils/components/safe-html';\r\n\r\ntype Props = {\r\n helpText: string;\r\n opening: boolean;\r\n};\r\n\r\nconst HelpElement = ({ helpText, opening }: Props): React.JSX.Element => {\r\n const collapseClasses: string = classNames({\r\n page_refero__helpComponent: true,\r\n 'page_refero__helpComponent--open': opening,\r\n });\r\n return opening ? : <>;\r\n};\r\nexport default HelpElement;\r\n","import React, { useEffect } from 'react';\n\nimport { useSelector } from 'react-redux';\nimport { useSearchParams } from 'react-router-dom';\nimport { getLanguagesInDefinition } from 'src/util/getLanguagesInDefinition';\n\nimport { LanguagePicker, languagePickerResource } from '@helsenorge/core-framework/language-picker';\nimport { LanguageLocales } from '@helsenorge/core-utils/constants/languages';\nimport { setDocumentLanguage } from '@helsenorge/framework-utils/hn-language';\n\nimport { userChangeLanguage } from '../store/actions/actionCreators';\nimport { RootState, useAppDispatch } from '../store/reducers';\nimport { getPreferredLanguage, isLanguageInFormDefinition } from '../util/portalLanguage-utils';\n\nconst sortOrder: { [key: string]: number } = {\n 'nb-no': 1,\n 'nn-no': 2,\n 'se-no': 3,\n 'en-gb': 4,\n unknown: 100, // ukjente språk havner bakerst\n};\n\nconst LanguageSelector = (): React.JSX.Element | null => {\n const dispatch = useAppDispatch();\n const questionnaires = useSelector((state: RootState) => state.refero.ui.questionnaires);\n const languages = questionnaires && getLanguagesInDefinition(questionnaires);\n const [searchParams, setSearchParams] = useSearchParams();\n\n const preferredLanguage = getPreferredLanguage(languages);\n\n const changeUrlDocumentLanguage = (language: LanguageLocales): void => {\n const updatedParams = new URLSearchParams(searchParams);\n // Set the 'lang' parameter to the new language\n updatedParams.set('lang', language);\n setSearchParams(updatedParams);\n setDocumentLanguage(language);\n };\n\n useEffect(() => {\n if (questionnaires.length <= 0 || !preferredLanguage) {\n return;\n }\n const currentLang = searchParams.get('lang');\n if (currentLang && !isLanguageInFormDefinition(currentLang as LanguageLocales, languages)) {\n const updatedParams = new URLSearchParams(searchParams);\n updatedParams.set('lang', preferredLanguage);\n setSearchParams(updatedParams);\n } else {\n changeUrlDocumentLanguage(preferredLanguage);\n }\n }, [preferredLanguage, questionnaires.length, searchParams]);\n\n const handleChangeUrlDocumentLanguage = async (language: LanguageLocales | undefined): Promise => {\n if (!language) {\n return;\n }\n await dispatch(userChangeLanguage({ language }));\n changeUrlDocumentLanguage(language);\n };\n\n const sortedLanguages = [...languages]\n .sort((a: languagePickerResource, b: languagePickerResource) => {\n const sortA = sortOrder[a.locale.toLowerCase()] || sortOrder.unknown;\n const sortB = sortOrder[b.locale.toLowerCase()] || sortOrder.unknown;\n return sortA - sortB;\n })\n .map(x => {\n return { label: x.label, locale: x.locale };\n });\n if (!languages || languages.length <= 1) {\n return <>;\n }\n return (\n \n );\n};\n\nexport default LanguageSelector;\n","export type NavigatorSection = { id: string; name: string };\nexport const navigatorSelectorConstant = 'form > section[id]';\n\nexport const getSections = (root: Document | HTMLElement): NavigatorSection[] => {\n if (!root && typeof document !== 'undefined') {\n root = document;\n }\n\n if (!root || typeof root.querySelectorAll !== 'function') {\n return [];\n }\n const sectionNodes = root.querySelectorAll(navigatorSelectorConstant);\n if (!sectionNodes || !sectionNodes.forEach) {\n return [];\n }\n const sections: Array<{ id: string; name: string }> = [];\n sectionNodes.forEach(node => {\n if (node.id !== 'navigator_blindzone') {\n const sectionName = node.getAttribute('data-sectionname');\n if (sectionName && sectionName !== '') {\n sections.push({ id: node.id, name: sectionName });\n }\n }\n });\n return sections;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useAppSelector } from 'src/store/reducers';\nimport { getSections, NavigatorSection } from 'src/util/getSections';\n\ntype UseNavigatiorReturn = {\n isNavigatorInitiated: boolean;\n sections: NavigatorSection[];\n setSections: (sections: NavigatorSection[]) => void;\n};\n\nexport const useNavigator = (lastActivity: number): UseNavigatiorReturn => {\n const [isNavigatorInitiated, setIsNavigatorInitiated] = useState(false);\n const [sections = [], setSections] = useState(getSections(document));\n\n const isNavigatorEnabled = useAppSelector(state => state.refero.ui.isNavigatorEnabled);\n const sectionsLength = getSections(document).length;\n\n useEffect(() => {\n setSections(getSections(document));\n }, [lastActivity]);\n\n useEffect(() => {\n if (isNavigatorEnabled && !isNavigatorInitiated && sectionsLength > 0) {\n setIsNavigatorInitiated(true);\n }\n }, [isNavigatorEnabled, isNavigatorInitiated, sectionsLength]);\n return { isNavigatorInitiated, sections, setSections };\n};\n","// NavigatorMenu.tsx\n\nimport React, { useRef } from 'react';\n\nimport Button from '@helsenorge/designsystem-react/components/Button';\n\nimport { NavigatorSection } from '../../util/getSections';\n\ntype Props = {\n toggleNavigatorExpand: () => void;\n setSelectedSection: React.Dispatch>;\n sections: NavigatorSection[];\n selectedSection: NavigatorSection | null;\n};\n\nexport const NavigatorMenu = ({ toggleNavigatorExpand, setSelectedSection, sections, selectedSection }: Props): React.JSX.Element => {\n const wrapperRef = useRef(null);\n\n const scrollToSelectedSection = (sectionId: string): void => {\n window.location.href = `#${sectionId}-navanchor`;\n window.scrollBy(0, -150);\n };\n\n return (\n
\n {sections.map(x => {\n if (x.name) {\n const isActive = selectedSection?.id === x.id;\n return (\n
\n {\n scrollToSelectedSection(x.id);\n setSelectedSection(x);\n toggleNavigatorExpand();\n }}\n >\n {x.name}\n \n
\n );\n }\n return null;\n })}\n
\n );\n};\n","// useSectionScroll.ts\r\n\r\nimport { useEffect, useRef } from 'react';\r\n\r\nimport { NavigatorSection } from '../../util/getSections';\r\n\r\ninterface UseSectionScrollProps {\r\n sections: NavigatorSection[];\r\n setSelectedSection: React.Dispatch>;\r\n offset?: number;\r\n}\r\n\r\nexport const useSectionScroll = ({ sections, setSelectedSection, offset = 150 }: UseSectionScrollProps): void => {\r\n const sectionsRef = useRef(sections);\r\n const selectedSectionRef = useRef(null);\r\n\r\n // Update refs whenever sections change\r\n useEffect(() => {\r\n sectionsRef.current = sections;\r\n }, [sections]);\r\n\r\n // Scroll event listener to update selectedSection based on scroll position\r\n useEffect(() => {\r\n let ticking = false;\r\n\r\n const handleScroll = (): void => {\r\n if (!ticking) {\r\n window.requestAnimationFrame(() => {\r\n const scrollY = window.scrollY + offset;\r\n\r\n let currentSection: NavigatorSection | null = null;\r\n\r\n // Loop through sections to find the current section\r\n for (let i = sectionsRef.current.length - 1; i >= 0; i--) {\r\n const section = sectionsRef.current[i];\r\n const sectionElement = document.getElementById(section.id);\r\n const sectionTop = getYCoordinates(sectionElement);\r\n\r\n if (sectionTop !== undefined && scrollY >= sectionTop) {\r\n currentSection = section;\r\n break;\r\n }\r\n }\r\n\r\n // Update selectedSection if it has changed\r\n if (currentSection && currentSection.id !== selectedSectionRef.current?.id) {\r\n setSelectedSection(currentSection);\r\n selectedSectionRef.current = currentSection;\r\n }\r\n\r\n // Handle navigator opacity\r\n const navigatorElements = document.getElementsByClassName('page_refero__navigator') as HTMLCollectionOf;\r\n\r\n if (navigatorElements.length > 0 && sectionsRef.current.length > 0) {\r\n const firstSection = document.getElementById(sectionsRef.current[0].id);\r\n const firstSectionYCoordinates = getYCoordinates(firstSection);\r\n\r\n if (firstSectionYCoordinates && scrollY > firstSectionYCoordinates - offset) {\r\n navigatorElements[0].style.opacity = '100%';\r\n } else {\r\n navigatorElements[0].style.opacity = '0%';\r\n }\r\n }\r\n\r\n ticking = false;\r\n });\r\n ticking = true;\r\n }\r\n };\r\n\r\n window.addEventListener('scroll', handleScroll);\r\n\r\n // Cleanup function to remove the event listener\r\n return (): void => {\r\n window.removeEventListener('scroll', handleScroll);\r\n };\r\n }, [offset, setSelectedSection]);\r\n\r\n // Helper function to get Y coordinates\r\n const getYCoordinates = (element: HTMLElement | null): number | undefined => {\r\n if (element) {\r\n const rect = element.getBoundingClientRect();\r\n return rect.top + window.scrollY;\r\n }\r\n };\r\n};\r\n","// Navigator.tsx\n\nimport React, { useState } from 'react';\n\nimport { useNavigator } from 'src/hooks/useNavigator';\n\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport ChevronDown from '@helsenorge/designsystem-react/components/Icons/ChevronDown';\nimport ChevronUp from '@helsenorge/designsystem-react/components/Icons/ChevronUp';\n\nimport { NavigatorMenu } from './NavigatorMenu';\nimport { useSectionScroll } from './useSectionScroll';\nimport { NavigatorSection } from '../../util/getSections';\n\ntype Props = {\n lastActivity: number;\n};\n\nconst Navigator = ({ lastActivity }: Props): React.JSX.Element | null => {\n const { sections, isNavigatorInitiated } = useNavigator(lastActivity);\n\n const [selectedSection, setSelectedSection] = useState(sections[0] || null);\n const [isNavigatorMenuExpanded, setIsNavigatorMenuExpanded] = useState(false);\n\n useSectionScroll({ sections, setSelectedSection });\n\n const toggleNavigatorExpand = (): void => {\n setIsNavigatorMenuExpanded(!isNavigatorMenuExpanded);\n };\n\n if (sections.length === 0 || !isNavigatorInitiated) {\n return null;\n }\n\n return (\n
\n \n
{selectedSection?.name}
\n {isNavigatorMenuExpanded ? : }\n \n {isNavigatorMenuExpanded && (\n \n )}\n
\n );\n};\n\nexport default Navigator;\n","export const tjenestePath: string = '?tjeneste=skjemautfyller';\n","import { tjenestePath } from 'src/types/url';\nimport { getLoginUrl, getSkjemaNameFromUrl } from 'src/util';\n\nimport { getAppUrl } from '@helsenorge/framework-utils/url';\nimport { HNeventShowAppInvitation } from '@helsenorge/framework-utils/web-component/events';\n\nexport const useLogin = (): { login: (ref?: React.MutableRefObject) => void } => {\n const appUrl = getAppUrl();\n const handleLogin = (): void => {\n window.history.replaceState(window.history.state, '', getLoginUrl());\n window.location.reload();\n };\n\n const login = (ref?: React.MutableRefObject): void => {\n if (appUrl) {\n HNeventShowAppInvitation(\n () => {\n const tekniskNavn = getSkjemaNameFromUrl();\n const fullAppUrl = appUrl + tjenestePath + `/${tekniskNavn}`;\n window.location.href = fullAppUrl;\n },\n () => {\n handleLogin();\n },\n () => {\n ref?.current?.focus();\n }\n );\n } else {\n handleLogin();\n }\n };\n return { login };\n};\n","import React, { useRef } from 'react';\n\nimport { useLogin } from 'src/hooks/useLogin';\n\nimport Button from '@helsenorge/designsystem-react/components/Button';\n\ninterface SkjemaLoginButtonProps {\n buttonText: string;\n doNotRender?: boolean;\n}\n\nconst SkjemaLoginButton = ({ buttonText, doNotRender }: SkjemaLoginButtonProps): React.JSX.Element => {\n const { login } = useLogin();\n const buttonRef = useRef(null);\n\n if (doNotRender) {\n return <>;\n }\n return (\n {\n login(buttonRef);\n }}\n >\n {buttonText}\n \n );\n};\n\nexport default SkjemaLoginButton;\n","import React from 'react';\r\n\r\nimport { SidebarVisibility } from 'src/constants/sidebarVisibility';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\nimport { hentOversettelse } from 'src/util/stringToLanguageLocales';\r\n\r\nimport Title, { TitleAppearances } from '@helsenorge/designsystem-react/components/Title';\r\n\r\nimport { ResourceHelpItems } from '@helsenorge/core-framework/prosesshjelp/hjelpeskuff/hjelpeskuff-state';\r\nimport HjelpetriggerComponent from '@helsenorge/core-framework/prosesshjelp/hjelpetrigger/hjelpetrigger-component';\r\nimport { FormDefinition } from '@helsenorge/refero';\r\n\r\nconst SkjemaTitle = ({\r\n formDefinition,\r\n resources,\r\n sidebarVisibility,\r\n isMicroweb,\r\n openSidebar,\r\n}: {\r\n isMicroweb?: boolean;\r\n sidebarVisibility?: number;\r\n resources?: HNSkjemaFrontend;\r\n formDefinition?: FormDefinition | null;\r\n openSidebar: () => void;\r\n}): React.JSX.Element | null => {\r\n if (!resources || !formDefinition || !formDefinition.Content || !formDefinition.Content.title) {\r\n return null;\r\n }\r\n const appearance: TitleAppearances = isMicroweb ? 'title2' : 'title1';\r\n\r\n return (\r\n
\r\n \r\n {formDefinition.Content.title}\r\n \r\n {sidebarVisibility === SidebarVisibility.On && !isMicroweb && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\nexport default SkjemaTitle;\r\n","import { FormDefinition, isItemSidebar } from '@helsenorge/refero';\n\nexport const shouldFormBeDisplayedAsStepView = (formDefinition: FormDefinition): boolean => {\n let shouldDisplay = false;\n formDefinition.Content?.item?.find(qItem =>\n qItem.extension?.find(extension =>\n extension.valueCodeableConcept?.coding?.find(coding => {\n if (coding.code === 'step') {\n shouldDisplay = true;\n }\n })\n )\n );\n return shouldDisplay;\n};\n\nexport const getStepArrayLength = (formDefinition: FormDefinition): number | undefined => {\n const stepArray = formDefinition.Content?.item?.filter(qItem => !isItemSidebar(qItem));\n return stepArray ? stepArray?.length - 1 : undefined;\n};\n","import React from 'react';\n\nimport { useAppSelector } from 'src/store/reducers';\n\nimport Stepper from '@helsenorge/designsystem-react/components/Stepper';\n\nimport { shouldFormBeDisplayedAsStepView, getStepArrayLength } from './utils';\n\ntype Props = {\n isMicroweb?: boolean;\n stepIndex: number;\n};\n\nexport const StepViewComponent = ({ isMicroweb, stepIndex }: Props): React.JSX.Element | null => {\n const formDefinition = useAppSelector(state => state.refero.form.FormDefinition);\n const shouldRenderComponent = formDefinition && !isMicroweb && shouldFormBeDisplayedAsStepView(formDefinition);\n if (!shouldRenderComponent) {\n return null;\n }\n return (\n \n \n \n );\n};\nexport default StepViewComponent;\n","import React from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport { ResourceHelpItems } from '@helsenorge/core-framework/prosesshjelp/hjelpeskuff/hjelpeskuff-state';\nimport HjelpetriggerComponent from '@helsenorge/core-framework/prosesshjelp/hjelpetrigger/hjelpetrigger-component';\n\ntype Props = {\n openSidebar: () => void;\n};\n\nexport const AnchorHelpTrigger = ({ openSidebar }: Props): React.JSX.Element => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n return (\n \n \n \n );\n};\n","import React, { useRef } from 'react';\n\nimport { useLogin } from 'src/hooks/useLogin';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport { AnchorHelpTrigger } from './AnchorHelpTrigger';\n\ntype Props = {\n word: string;\n openSidebar: () => void;\n resources: HNSkjemaFrontend;\n};\nexport const ReplaceLink = ({ word, openSidebar, resources }: Props): React.JSX.Element | null => {\n const { login } = useLogin();\n const anchorRef = useRef(null);\n\n if (word.indexOf('{omSkjemaLink}') > -1) {\n return ;\n } else if (word.indexOf('{loginLink}') > -1) {\n return (\n \n \n {` `}\n \n );\n } else if (word.indexOf('{personverninnstillingerLink}') > -1) {\n return (\n \n {word.replace('{personverninnstillingerLink}', resources.personverninnstillingerLink)}\n {` `}\n \n );\n }\n return {`${word} `};\n};\n","import React from 'react';\n\nimport { HNSkjemaFrontend } from '../../types/Resources';\n\nimport designsystemtypography from '@helsenorge/designsystem-react/scss/typography.module.scss';\n\nimport { ReplaceLink } from './ReplaceLink';\n\ntype Props = {\n messageText: string;\n resources: HNSkjemaFrontend;\n openSidebar: () => void;\n};\n\nexport const ReplaceLinks = ({ messageText, resources, openSidebar }: Props): React.JSX.Element => {\n return (\n
\n {messageText\n ?.split(' ')\n ?.map((word, i) => )}\n
\n );\n};\n","import React from 'react';\r\n\r\nimport HighlightBox from '@helsenorge/designsystem-react/components/HighlightPanel';\r\n\r\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\r\n\r\nimport { TopMessageProps } from './TopMessageComponent';\r\nimport { TopMessageVisibility } from '../../constants/topMessageVisibility';\r\nimport { ReplaceLinks } from '../navigator/replaceLinks';\r\n\r\nexport const RenderFormFillingInformation = ({\r\n resources,\r\n userMetadata,\r\n openSidebar,\r\n visibility,\r\n}: TopMessageProps): React.JSX.Element | null => {\r\n if (visibility === TopMessageVisibility.Off || !isAuthorized()) return null;\r\n\r\n const cannotRepresentOthers =\r\n (userMetadata.CanOnlyBePerformedBySubject && !userMetadata.IsRepresentert) ||\r\n (!userMetadata.CanOnlyBePerformedBySubject && userMetadata.IsRepresentert);\r\n\r\n const messageKey = cannotRepresentOthers ? 'message_canNotRepresentOthers' : 'message_canRepresentOthers';\r\n const testId = cannotRepresentOthers ? 'top-message-is-representert' : 'top-message-not-is-representert';\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\r\n\r\nimport { TopMessageProps } from './TopMessageComponent';\r\nimport { AuthenticationRequirement } from '../../constants/authenticationRequirement';\r\nimport { TopMessageVisibility } from '../../constants/topMessageVisibility';\r\nimport {\r\n brukerHarIkkeTilgangOgKanPrinteSkjema,\r\n brukerHarIkkeTilgangTilSkjema,\r\n hentSotHarIkkeTilgangFeilmelding,\r\n kanIkkeAutofylleskjema,\r\n vedleggMaFjernes,\r\n} from '../../util';\r\nimport { hentOversettelse } from '../../util/stringToLanguageLocales';\r\n\r\ntype NotificaionPanalContent = { message: string; variant: 'info' | 'warn' | 'error'; testId?: string };\r\n\r\nexport const getNotificationPanelContent = (props: TopMessageProps): NotificaionPanalContent | null => {\r\n const { resources, authenticationRequirement, userMetadata, printReference, visibility } = props;\r\n\r\n if (!isAuthorized() && authenticationRequirement !== AuthenticationRequirement.Anonymous) {\r\n if (authenticationRequirement === AuthenticationRequirement.Optional) {\r\n return {\r\n message: resources.skjemaLoginMessageAuthenticationRequirementOptionalPrint,\r\n variant: 'info',\r\n testId: 'notification-panel-not-authorized',\r\n };\r\n }\r\n\r\n if (printReference) {\r\n if (visibility === TopMessageVisibility.Off) return null;\r\n return {\r\n message: resources.skjemaLoginMessageAuthenticationRequirementRequiredPrint,\r\n variant: 'info',\r\n testId: 'notification-panel-not-authorized',\r\n };\r\n }\r\n\r\n return {\r\n message: resources.skjemaLoginMessageAuthenticationRequirementRequiredNoPrint,\r\n variant: 'info',\r\n testId: 'notification-panel-not-authorized',\r\n };\r\n }\r\n\r\n if (isAuthorized()) {\r\n if (brukerHarIkkeTilgangOgKanPrinteSkjema(userMetadata, printReference) && visibility !== TopMessageVisibility.Off) {\r\n const message = `${hentSotHarIkkeTilgangFeilmelding(\r\n userMetadata.ForbudBegrunnelse,\r\n resources\r\n )} ${resources.message_printVersionAvailable}`;\r\n return {\r\n message,\r\n variant: 'info',\r\n };\r\n }\r\n\r\n if (brukerHarIkkeTilgangTilSkjema(userMetadata, printReference)) {\r\n const message = hentSotHarIkkeTilgangFeilmelding(userMetadata.ForbudBegrunnelse, resources);\r\n return {\r\n message,\r\n variant: 'error',\r\n };\r\n }\r\n\r\n if (vedleggMaFjernes(userMetadata)) {\r\n return {\r\n message: resources.message_skjemaHaddeVedlegg,\r\n variant: 'warn',\r\n };\r\n }\r\n\r\n if (kanIkkeAutofylleskjema(userMetadata)) {\r\n const message = hentOversettelse('kan_ikke_autofylle_skjema', resources);\r\n return {\r\n message,\r\n variant: 'warn',\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\n\r\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\r\n\r\nimport { getNotificationPanelContent } from './getContent';\r\nimport { TopMessageProps } from './TopMessageComponent';\r\nimport { ReplaceLinks } from '../navigator/replaceLinks';\r\n\r\nexport const RenderNotificationPanelMessage = (props: TopMessageProps): React.JSX.Element | null => {\r\n const { resources, openSidebar } = props;\r\n const content = getNotificationPanelContent(props);\r\n\r\n if (!content) return null;\r\n\r\n const { message, variant, testId } = content;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\n\nimport { Metadata } from '../../types/MinHelseEntities';\nimport { HNSkjemaFrontend } from '../../types/Resources';\n\nimport { RenderFormFillingInformation } from './GetFormFillingInformation';\nimport { RenderNotificationPanelMessage } from './RenderNotificatioinPanelMessage';\nimport { AuthenticationRequirement } from '../../constants/authenticationRequirement';\n\nexport type TopMessageProps = {\n resources: HNSkjemaFrontend;\n authenticationRequirement?: AuthenticationRequirement;\n userMetadata: Metadata;\n printReference?: string;\n openSidebar: () => void;\n visibility: number | undefined;\n};\n\nconst TopMessage = (props: TopMessageProps): React.JSX.Element | null => {\n return (\n
\n \n \n
\n );\n};\n\nexport default TopMessage;\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { QuestionnaireItem } from 'fhir/r4';\r\nimport { DEFAULT_MAX_ATTACHMENT_FILE_SIZE_HN_SKJEMA_BYTES, HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { SaveCapabilites } from 'src/constants/saveCapabilites';\r\nimport { TopMessageVisibility } from 'src/constants/topMessageVisibility';\r\nimport { useAttachmentUtils } from 'src/hooks/useAttachmentUtils';\r\nimport useFormHasChanges from 'src/hooks/useFormHasChanges';\r\nimport { useGetSchemaResources } from 'src/hooks/useGetSchemaResources';\r\nimport { useHandleAuthenticationRequirment } from 'src/hooks/useHandleAuthenticationRequirment';\r\nimport { MicrowebStepFormDataCallBack, MicrowebStepReferoButtonCallBackDirection } from 'src/microweb-step/types/microwebstepTypes';\r\nimport { lagreSkjema, lastMottakere, loadValueSet, sendInnSkjema, abortSkjema } from 'src/store/actions/actionCreators';\r\nimport { shouldShowBeforeUnload as shouldShowBeforeUnloadFn } from 'src/store/actions/actions';\r\nimport { gotoMinHelse } from 'src/store/actions/actionUtils';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport {\r\n formHasChanges,\r\n kanIkkeLagreError,\r\n promptLoginMessage,\r\n setSamtaleguid,\r\n showAttachmentMaxFilesError,\r\n} from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\nimport { getQueryParams, getSkjemaNameFromUrl, hasTooManyAttachments } from 'src/util';\r\nimport { getLastSaveCapabilitiesValue } from 'src/util/extension';\r\nimport { trackFormEvent } from 'src/util/trackFormEvent';\r\nimport { redirectEtterFullfortSkjema } from 'src/util/veileder';\r\n\r\nimport { addBlock, remove } from '@helsenorge/core-framework/pending-changes/pending-changes-state';\r\nimport { Refero, OrgenhetHierarki } from '@helsenorge/refero';\r\n\r\nimport EventListener from './eventListener';\r\nimport HelpButton from './helpComponents/HelpButton';\r\nimport HelpElement from './helpComponents/HelpElement';\r\nimport LanguageSelector from './languageselector';\r\nimport Navigator from './navigator/navigator';\r\nimport SkjemaLoginButton from './skjemaLoginButton';\r\nimport SkjemaTitle from './SkjemaTitle';\r\nimport StepViewComponent from './stepView/StepViewComponent';\r\nimport { shouldFormBeDisplayedAsStepView } from './stepView/utils';\r\nimport TopMessage from './TopMessage/TopMessageComponent';\r\n\r\ntype Props = {\r\n pdf?: boolean;\r\n isMicrowebStep?: boolean;\r\n isMicroweb?: boolean;\r\n hidebackbutton?: string;\r\n avbryturl?: string;\r\n dokumentGuidMicroweb?: string;\r\n onNavigateBackMicroweb?: MicrowebStepFormDataCallBack;\r\n onCompleteMicroweb?: MicrowebStepFormDataCallBack;\r\n onCancelMicroweb?: MicrowebStepFormDataCallBack;\r\n sendPendingChangesEvent?: (hasChanges: boolean) => void;\r\n setIsDiscretionLightboxVisible: React.Dispatch>;\r\n timeSkjemaLoadedForUser: number;\r\n setLastActivity: React.Dispatch>;\r\n openSidebar: () => void;\r\n lastActivity: number;\r\n};\r\n\r\nconst RenderSkjema = ({\r\n pdf,\r\n isMicrowebStep,\r\n isMicroweb,\r\n hidebackbutton,\r\n avbryturl,\r\n dokumentGuidMicroweb,\r\n onCancelMicroweb,\r\n onNavigateBackMicroweb,\r\n onCompleteMicroweb,\r\n sendPendingChangesEvent,\r\n setIsDiscretionLightboxVisible,\r\n timeSkjemaLoadedForUser,\r\n setLastActivity,\r\n openSidebar,\r\n lastActivity,\r\n}: Props): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const [stepIndex, setStepIndex] = useState(0);\r\n\r\n const uiState = useAppSelector(state => state.refero.ui);\r\n const formData = useAppSelector(state => state.refero.form.FormData);\r\n const formDefinition = useAppSelector(state => state.refero.form.FormDefinition);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const kanMellomlagres = useAppSelector(state => state.refero.ui.kanMellomlagres);\r\n const userMetadata = useAppSelector(state => state.refero.ui.userMetadata);\r\n const blockSubmit = useAppSelector(state => state.refero.ui.blockSubmit);\r\n const dokumentGuid = useAppSelector(state => state.refero.ui.dokumentGuid);\r\n const [originalQr, setOriginalQr] = useState(undefined);\r\n const { getAttachmentLink, openAttachment, uploadAttachment, deleteAttachment } = useAttachmentUtils();\r\n const hasChanges = useFormHasChanges(sendPendingChangesEvent);\r\n const skjemaResources = useGetSchemaResources(isMicrowebStep);\r\n const { authenticationRequirement, isAuthorized, allowAnonymousOrAuthorized } = useHandleAuthenticationRequirment();\r\n useEffect(() => {\r\n if (formDefinition.Content) {\r\n setOriginalQr(JSON.stringify(formDefinition.Content));\r\n }\r\n }, [formDefinition.Content]);\r\n if (!formDefinition || !formDefinition.Content || !resources) {\r\n return null;\r\n }\r\n const redirectVeilederData = (normalRedirectFn: () => void): void => {\r\n const queryParams = getQueryParams();\r\n redirectEtterFullfortSkjema(\r\n formDefinition,\r\n formData,\r\n queryParams.redirect,\r\n queryParams.contextParameter,\r\n dokumentGuid,\r\n normalRedirectFn,\r\n isMicrowebStep,\r\n onCompleteMicroweb\r\n );\r\n };\r\n\r\n const onCustomNavigationCallBack = (direction: string): void => {\r\n switch (direction) {\r\n case MicrowebStepReferoButtonCallBackDirection.Cancel:\r\n if (onCancelMicroweb) {\r\n onCancelMicroweb({\r\n undefined,\r\n });\r\n }\r\n break;\r\n case MicrowebStepReferoButtonCallBackDirection.Forward:\r\n if (onCompleteMicroweb) {\r\n onCompleteMicroweb({\r\n dokumentGuid: dokumentGuidMicroweb,\r\n skjemadata: JSON.stringify(formData),\r\n });\r\n }\r\n break;\r\n case MicrowebStepReferoButtonCallBackDirection.Back:\r\n if (onNavigateBackMicroweb) {\r\n onNavigateBackMicroweb({\r\n dokumentGuid: dokumentGuidMicroweb,\r\n skjemadata: JSON.stringify(formData),\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const submitForm = (): void => {\r\n const formName = formDefinition?.Content?.name ? formDefinition?.Content?.name : 'Skjema uten navn';\r\n\r\n const lastSaveCapabilityItemValue = getLastSaveCapabilitiesValue(formDefinition?.Content?.item, formData?.Content?.item);\r\n const itemApprovesSavingOnComplete =\r\n lastSaveCapabilityItemValue === SaveCapabilites.FinalAndIntermediateVersion ||\r\n lastSaveCapabilityItemValue === SaveCapabilites.FinalVersionOnly;\r\n\r\n if (lastSaveCapabilityItemValue === SaveCapabilites.NoSaving || (!itemApprovesSavingOnComplete && !uiState.kanLagresEtterInnsending)) {\r\n dispatch(setSamtaleguid({ samtaleGuid: uiState.samtaleGuid }));\r\n\r\n dispatch(shouldShowBeforeUnloadFn({ show: false }));\r\n redirectVeilederData(gotoMinHelse);\r\n } else if (formName === 'HV-KGBS-1') {\r\n setIsDiscretionLightboxVisible(true);\r\n } else {\r\n dispatch(\r\n sendInnSkjema({\r\n timeSkjemaLoadedForUser,\r\n automatiskLagring: false,\r\n withDiscretion: undefined,\r\n isMicrowebStep,\r\n onCompleteMicroweb,\r\n dokumentGuidMicroweb,\r\n })\r\n );\r\n }\r\n };\r\n const onSubmit = (): void => {\r\n const waitForPending = async (): Promise => {\r\n await dispatch(remove());\r\n if (hasTooManyAttachments(formData?.Content)) {\r\n dispatch(showAttachmentMaxFilesError());\r\n } else {\r\n if (!uiState.skjemaSendesInn) {\r\n submitForm();\r\n }\r\n }\r\n };\r\n waitForPending();\r\n };\r\n const onSave = (): void | undefined => {\r\n const lastSaveCapabilityItemValue = getLastSaveCapabilitiesValue(formDefinition?.Content?.item, formData?.Content?.item);\r\n\r\n if (lastSaveCapabilityItemValue === SaveCapabilites.NoSaving || lastSaveCapabilityItemValue === SaveCapabilites.FinalVersionOnly) {\r\n dispatch(kanIkkeLagreError());\r\n } else if (hasTooManyAttachments(formData?.Content)) {\r\n dispatch(showAttachmentMaxFilesError());\r\n } else {\r\n dispatch(lagreSkjema({ timeSkjemaLoadedForUser, automatiskLagring: false }));\r\n }\r\n };\r\n\r\n const onCancel = (): void => {\r\n if (onCancelMicroweb) {\r\n if (formData) {\r\n onCancelMicroweb({ undefined });\r\n }\r\n } else if (hasChanges) {\r\n dispatch(addBlock());\r\n } else {\r\n dispatch(remove());\r\n dispatch(abortSkjema());\r\n }\r\n };\r\n\r\n const registerActivity = (): void => {\r\n setLastActivity(Date.now());\r\n if (originalQr) {\r\n if (originalQr !== JSON.stringify(formData.Content)) {\r\n dispatch(formHasChanges(true));\r\n } else {\r\n dispatch(formHasChanges(false));\r\n }\r\n }\r\n };\r\n\r\n const getSaveFn = (): (() => void) | undefined => {\r\n return kanMellomlagres ? onSave : undefined;\r\n };\r\n\r\n const erSendOgLagreKnapperDisabled = (): boolean => {\r\n const hideIfRepresentertSubjectOnly = userMetadata?.IsRepresentert && userMetadata?.CanOnlyBePerformedBySubject;\r\n const hideIfNoTilgang = !userMetadata?.HasTilgang;\r\n return isAuthorized() && (hideIfRepresentertSubjectOnly || hideIfNoTilgang);\r\n };\r\n\r\n const trackFormError = (): void => {\r\n trackFormEvent('site error', getSkjemaNameFromUrl());\r\n };\r\n\r\n if (pdf) {\r\n return (\r\n
\r\n \r\n }\r\n resources={skjemaResources}\r\n />\r\n
\r\n );\r\n }\r\n\r\n const determineTopMessageVisibility = (): number | undefined => {\r\n const shouldHideTopMessage = formDefinition && shouldFormBeDisplayedAsStepView(formDefinition) && stepIndex && stepIndex > 0;\r\n return shouldHideTopMessage ? TopMessageVisibility.Off : uiState.topMessageVisibility;\r\n };\r\n const submitButtonDisabled = !!uiState.loadSkjemaoppgaveWarningMessage || erSendOgLagreKnapperDisabled();\r\n\r\n const fetchReceivers = (successCallback: (receivers: Array) => void, errorCallback: () => void): void => {\r\n lastMottakere(formDefinition.Content?.name || '', successCallback, errorCallback);\r\n };\r\n const promptLoginMessageFn = (): void => {\r\n dispatch(\r\n promptLoginMessage({\r\n questionnaire: formDefinition?.Content ?? undefined,\r\n })\r\n );\r\n };\r\n return (\r\n
\r\n \r\n {!isMicrowebStep && }\r\n \r\n \r\n {userMetadata && (\r\n \r\n )}\r\n \r\n }\r\n resources={skjemaResources}\r\n promptLoginMessage={promptLoginMessageFn}\r\n onRequestAttachmentLink={getAttachmentLink}\r\n onOpenAttachment={openAttachment}\r\n onDeleteAttachment={deleteAttachment}\r\n uploadAttachment={uploadAttachment}\r\n attachmentErrorMessage={hasTooManyAttachments(formData?.Content) ? resources.attachment_field_max_error : undefined}\r\n sticky={isMicroweb ? false : true}\r\n onRequestHelpButton={\r\n isMicroweb\r\n ? undefined\r\n : (\r\n _item: QuestionnaireItem,\r\n _itemHelp: QuestionnaireItem,\r\n _helpType: string,\r\n _helpText: string,\r\n opening: boolean\r\n ): React.JSX.Element => \r\n }\r\n onRequestHelpElement={\r\n isMicroweb\r\n ? undefined\r\n : (\r\n _item: QuestionnaireItem,\r\n _itemHelp: QuestionnaireItem,\r\n _helpType: string,\r\n helpText: string,\r\n opening: boolean\r\n ): React.JSX.Element => \r\n }\r\n validateScriptInjection\r\n onChange={registerActivity}\r\n fetchValueSet={loadValueSet}\r\n attachmentMaxFileSize={DEFAULT_MAX_ATTACHMENT_FILE_SIZE_HN_SKJEMA_BYTES}\r\n autoSuggestProps={{\r\n minSearchCharacters: 3,\r\n typingSearchDelay: 500,\r\n }}\r\n submitButtonDisabled={submitButtonDisabled}\r\n saveButtonDisabled={erSendOgLagreKnapperDisabled()}\r\n fetchReceivers={fetchReceivers}\r\n onFieldsNotCorrectlyFilledOut={trackFormError}\r\n onStepChange={setStepIndex}\r\n customProps={{\r\n isMicrowebStep: isMicrowebStep,\r\n isMicroweb: isMicroweb,\r\n cancelUrl: avbryturl,\r\n hideBackButton: hidebackbutton,\r\n }}\r\n customNavigationCallBack={onCustomNavigationCallBack}\r\n />\r\n
\r\n );\r\n};\r\nexport default RenderSkjema;\r\n","import { SessionTimeoutAction, ShowSignOutBoxData } from '@helsenorge/framework-utils/types/entities';\nimport { HNeventSetOnShowSignoutbox } from '@helsenorge/framework-utils/web-component/events';\n\nexport const dispatchSetSessionTimeoutFn = (fn: (data: ShowSignOutBoxData) => SessionTimeoutAction): void => {\n HNeventSetOnShowSignoutbox(fn);\n};\n","import React from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useAppSelector } from 'src/store/reducers';\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\nimport { HNSkjemaFrontend } from 'src/types/Resources';\n\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\n\nexport type Props = {\n closeCallback: () => void;\n sendCallback: (withDiscretion?: boolean) => void;\n isDiscretionLightboxVisible: boolean;\n};\n\nconst DiscretionLightbox = ({ sendCallback, isDiscretionLightboxVisible }: Props): React.JSX.Element | null => {\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\n\n return isDiscretionLightboxVisible && resources ? (\n sendCallback()}\n onClose={(): void => sendCallback(true)}\n />\n ) : null;\n};\n\nexport default DiscretionLightbox;\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useLogin } from 'src/hooks/useLogin';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { dismissAnonymousMessage } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\r\n\r\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\r\n\r\nexport const AnonomousSkjemaLightbox = (): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const showAnonymousSkjemaLightbox = useAppSelector(state => state.refero.ui.showAnonymousSkjemaLightbox);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const skjemaLoginButton = resources?.skjemaLoginButton;\r\n const formCancel = resources?.formCancel;\r\n const skjemaLoginMessageAuthenticationRequirementRequired = resources?.skjemaLoginMessageAuthenticationRequirementRequired;\r\n const { login } = useLogin();\r\n\r\n const handleHideAnonymousSkjemaLightbox = (): void => {\r\n dispatch(dismissAnonymousMessage());\r\n };\r\n\r\n return showAnonymousSkjemaLightbox && !isAuthorized() ? (\r\n {\r\n handleHideAnonymousSkjemaLightbox();\r\n login();\r\n }}\r\n onClose={handleHideAnonymousSkjemaLightbox}\r\n >\r\n \r\n {skjemaLoginMessageAuthenticationRequirementRequired}\r\n \r\n \r\n ) : null;\r\n};\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { hideAnonymousUploadOfAttachmentDenied } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\r\n\r\nexport const AnonymousUploadDeniedModal = (): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const showAnonymousUploadDenied = useAppSelector(state => state.refero.ui.showAnonymousUploadDenied);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n\r\n const anonymousUploadTitle = resources?.anonymousUploadTitle || '';\r\n const anonymousUploadDescription = resources?.anonymousUploadDescription;\r\n\r\n const onAnonymousUploadDeniedClose = (): void => {\r\n dispatch(hideAnonymousUploadOfAttachmentDenied());\r\n };\r\n return showAnonymousUploadDenied ? (\r\n \r\n {anonymousUploadDescription}\r\n \r\n ) : null;\r\n};\r\n\r\nexport default AnonymousUploadDeniedModal;\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { hideAttachmentMaxFilesError } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\r\n\r\nexport const AttachementErrorModal = (): React.JSX.Element | null => {\r\n const isAttachmentMaxFilesErrorVisible = useAppSelector(state => state.refero.ui.isAttachmentMaxFilesErrorVisible);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const attachment_field_max_error = resources?.attachment_field_max_error;\r\n const confirmationActionButton = resources?.confirmationActionButton;\r\n\r\n const dispatch = useAppDispatch();\r\n return isAttachmentMaxFilesErrorVisible ? (\r\n {\r\n dispatch(hideAttachmentMaxFilesError());\r\n }}\r\n onSuccess={(): void => {\r\n dispatch(hideAttachmentMaxFilesError());\r\n }}\r\n primaryButtonText={confirmationActionButton}\r\n >\r\n {attachment_field_max_error}\r\n \r\n ) : null;\r\n};\r\nexport default AttachementErrorModal;\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { dismissKanIkkeLagre } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\n\r\nexport const KanIkkeLagreModal = (): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const kanIkkeLagre = useAppSelector(state => state.refero.ui.kanIkkeLagre);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const kanIkkeLagreErrorTitle = resources?.kanIkkeLagreErrorTitle || '';\r\n const kanIkkeLagreErrorBody = resources?.kanIkkeLagreErrorBody;\r\n const confirmationActionButton = resources?.confirmationActionButton;\r\n const onKanIkkeLagreClose = (): void => {\r\n dispatch(dismissKanIkkeLagre());\r\n };\r\n\r\n return kanIkkeLagre ? (\r\n \r\n ) : null;\r\n};\r\nexport default KanIkkeLagreModal;\r\n","import { FEIL, HN_SKJEMA_FRONTEND_RESOURCES, LOGGETUT_FEILCODE } from 'src/constants/constants';\r\nimport { useAppSelector } from 'src/store/reducers';\r\nimport { getErrorMessageFromErrorCode } from 'src/store/selectors/errorCodesSelectors';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\nimport { hentOversettelse } from 'src/util/stringToLanguageLocales';\r\n\r\nexport const useGetSkjemaErrorTitleFromResources = (resources: HNSkjemaFrontend, error?: string): string => {\r\n if (!resources) {\r\n return FEIL;\r\n }\r\n\r\n return error === LOGGETUT_FEILCODE\r\n ? hentOversettelse('loggetut_feil_tittel', resources)\r\n : hentOversettelse('sendInnSkjemaErrorTitle', resources);\r\n};\r\n\r\nexport const useGetSkjemaErrorBodyFromResources = (resources: HNSkjemaFrontend, errorMessage: string): string => {\r\n if (!resources) {\r\n return FEIL;\r\n }\r\n if (!errorMessage) {\r\n return hentOversettelse('sendInnSkjemaErrorBody', resources);\r\n }\r\n\r\n return errorMessage;\r\n};\r\n\r\nexport const useGetSkjemaErrorTitleAndBodyFromResources = (error?: string): { errorTitle: string; errorBody: string } => {\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const sendInnSkjemaErrorCode = useAppSelector(state => state.refero.ui.sendInnSkjemaErrorCode);\r\n const errorMessage = useAppSelector(state => getErrorMessageFromErrorCode(state, sendInnSkjemaErrorCode));\r\n return {\r\n errorTitle: useGetSkjemaErrorTitleFromResources(resources, error),\r\n errorBody: useGetSkjemaErrorBodyFromResources(resources, errorMessage),\r\n };\r\n};\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useGetSkjemaErrorTitleAndBodyFromResources } from 'src/hooks/useGetSkjemaErrorTitle';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { dismissLagreError } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\n\r\nexport const LagreSkjemaErrorModal = (): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const lagreSkjemaError = useAppSelector(state => state.refero.ui.lagreSkjemaError);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const confirmationActionButton = resources?.confirmationActionButton;\r\n const { errorBody, errorTitle } = useGetSkjemaErrorTitleAndBodyFromResources(lagreSkjemaError);\r\n const onLagreErrorClose = (): void => {\r\n dispatch(dismissLagreError());\r\n };\r\n return lagreSkjemaError ? (\r\n \r\n ) : null;\r\n};\r\nexport default LagreSkjemaErrorModal;\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useGetSkjemaErrorTitleAndBodyFromResources } from 'src/hooks/useGetSkjemaErrorTitle';\r\nimport { useAppDispatch, useAppSelector } from 'src/store/reducers';\r\nimport { dismissSendInnError } from 'src/store/reducers/uiSlice';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport Modal from '@helsenorge/designsystem-react/components/Modal';\r\n\r\nexport const SendInnSkjemaErrorModal = (): React.JSX.Element | null => {\r\n const dispatch = useAppDispatch();\r\n const sendInnSkjemaError = useAppSelector(state => state.refero.ui.sendInnSkjemaError);\r\n\r\n const { errorBody, errorTitle } = useGetSkjemaErrorTitleAndBodyFromResources(sendInnSkjemaError);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n\r\n const confirmationActionButton = resources?.confirmationActionButton;\r\n const onSendInnErrorClose = (): void => {\r\n dispatch(dismissSendInnError());\r\n };\r\n\r\n return sendInnSkjemaError ? (\r\n \r\n ) : null;\r\n};\r\nexport default SendInnSkjemaErrorModal;\r\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { useAppSelector } from 'src/store/reducers';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport NotificationPanel from '@helsenorge/designsystem-react/components/NotificationPanel';\r\n\r\nimport { sanitize } from '@helsenorge/framework-utils/trusted-types';\r\n\r\nexport const LoadSkjemaWarningMessageNotification = (): React.JSX.Element | null => {\r\n const loadSkjemaoppgaveWarningMessage = useAppSelector(state => state.refero.ui.loadSkjemaoppgaveWarningMessage);\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n\r\n return loadSkjemaoppgaveWarningMessage ? (\r\n
\r\n \r\n {resources?.[loadSkjemaoppgaveWarningMessage.Body as keyof HNSkjemaFrontend]\r\n ? resources?.[loadSkjemaoppgaveWarningMessage.Body as keyof HNSkjemaFrontend]\r\n : loadSkjemaoppgaveWarningMessage.Body}\r\n \r\n
\r\n ) : null;\r\n};\r\nexport default LoadSkjemaWarningMessageNotification;\r\n","import React, { useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport ChevronDown from '@helsenorge/designsystem-react/components/Icons/ChevronDown';\nimport ChevronUp from '@helsenorge/designsystem-react/components/Icons/ChevronUp';\nimport designsystemtypography from '@helsenorge/designsystem-react/scss/typography.module.scss';\n\nimport { theme } from '@helsenorge/designsystem-react';\n\nexport type Props = {\n header: string;\n content: Array;\n};\n\nconst Seksjon = ({ header, content }: Props): React.JSX.Element | null => {\n const [isExpanded, setIsExpanded] = useState(true);\n\n const toggleExpanded = (): void => {\n setIsExpanded(!isExpanded);\n };\n const handleKeyDown = (keyPressed: string): void => {\n if (keyPressed === 'Enter') {\n toggleExpanded();\n } else {\n return;\n }\n };\n\n const sectionClasses: string = classNames('step', { open: isExpanded });\n return (\n
\n
\n {\n handleKeyDown(event.key);\n }}\n role=\"button\"\n tabIndex={0}\n >\n \n \n \n
\n {isExpanded && (\n
{content}
\n )}\n \n \n );\n};\n\nexport default Seksjon;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { HNSkjemaFrontend } from '../../types/Resources';\n\nimport Button from '@helsenorge/designsystem-react/components/Button';\nimport { Icon } from '@helsenorge/designsystem-react/components/Icon';\nimport ChevronLeft from '@helsenorge/designsystem-react/components/Icons/ChevronLeft';\nimport HelpSign from '@helsenorge/designsystem-react/components/Icons/HelpSign';\nimport X from '@helsenorge/designsystem-react/components/Icons/X';\n\nimport aria, { Siblings } from '@helsenorge/core-utils/aria-hidden';\nimport layoutChange, { OriginalProps as LayoutChangeProps } from '@helsenorge/core-utils/hoc/layout-change';\nimport TrapFocus from '@helsenorge/core-utils/trapfocus';\nimport { theme } from '@helsenorge/designsystem-react';\nimport SafeHTML from '@helsenorge/framework-utils/components/safe-html';\nimport { link as proxyLink } from '@helsenorge/framework-utils/hn-proxy-service';\nimport { setAllowNavigation } from '@helsenorge/framework-utils/hn-user';\nimport { SidebarItem } from '@helsenorge/refero';\n\nimport Seksjon, { Props as SeksjonProps } from './seksjon';\n\ninterface SidebarState {\n disableTransition?: boolean;\n}\n\nexport interface SidebarProps {\n resources: HNSkjemaFrontend;\n isOpen?: boolean;\n toggleShowSidebar: () => void;\n hideSidebar: () => void;\n showSidebar: () => void;\n kanLagres: boolean;\n kanSendes: boolean;\n harRepresentasjonsMulighet: boolean;\n sidebarData: Array;\n formTitle: string;\n printReference?: string;\n}\n\nclass Sidebar extends React.Component {\n helpTitleRef: React.RefObject;\n\n private prevAriaHiddens: Siblings | undefined;\n private trapFocus: TrapFocus | undefined;\n private prevFocus: HTMLElement | undefined;\n private sidebarRef: React.RefObject;\n constructor(props: SidebarProps) {\n super(props);\n this.sidebarRef = React.createRef();\n this.helpTitleRef = React.createRef();\n\n this.state = { disableTransition: false };\n this.handleToggleClick = this.handleToggleClick.bind(this);\n // Adds event listener for when the user presses the Back-button in browser\n this.popStateListener = this.popStateListener.bind(this);\n this.clickListener = this.clickListener.bind(this);\n this.disableTransitionToPreventDoubleAnimation = this.disableTransitionToPreventDoubleAnimation.bind(this);\n }\n\n componentDidMount(): void {\n this.toggleFocus();\n window.addEventListener('popstate', this.popStateListener);\n window.addEventListener('click', this.clickListener);\n }\n\n componentDidUpdate(prevProps: SidebarProps & LayoutChangeProps): void {\n if (this.props.isOpen && prevProps.isOpen !== this.props.isOpen) {\n this.toggleFocus();\n }\n if (prevProps.isOpen && prevProps.isOpen !== this.props.isOpen) {\n this.releaseFocus();\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: SidebarProps & LayoutChangeProps): void {\n if (!this.props.isOpen && nextProps.isOpen) {\n this.open();\n } else if (this.props.isOpen && !nextProps.isOpen) {\n this.close();\n }\n }\n\n componentWillUnmount(): void {\n this.releaseFocus();\n window.removeEventListener('popstate', this.popStateListener);\n window.removeEventListener('click', this.clickListener);\n }\n\n generateSectionContent(header: string, content: Array): SeksjonProps {\n return {\n header: header,\n content: content.map((x: string, index: number) => ),\n };\n }\n\n wrapSidebarTekst(sidebarTekst: string): string {\n return `${sidebarTekst}\\n\\n`;\n }\n\n generateSkjemaSidebarSections(): Array {\n const { resources, sidebarData } = this.props;\n const seksjonerFraSkjema: { [key: string]: Array } = {\n 'SOT-1': [],\n 'SOT-2': [],\n 'SOT-3': [],\n };\n\n sidebarData.forEach((x: SidebarItem) => {\n if (x.item.code && x.item.code.length > 0 && x.item.code[0].code) {\n if (seksjonerFraSkjema[x.item.code[0].code]) {\n seksjonerFraSkjema[x.item.code[0].code].push(x.markdownText);\n }\n }\n });\n\n if (this.props.harRepresentasjonsMulighet) {\n seksjonerFraSkjema['SOT-1'].push(this.wrapSidebarTekst(resources.sidebarSectionText_Alternativer_Representasjon));\n }\n seksjonerFraSkjema['SOT-2'].push(this.wrapSidebarTekst(resources.sidebarSectionText_Veiledning_KontaktHelsenorge));\n if (this.props.kanLagres) {\n seksjonerFraSkjema['SOT-2'].push(\n this.wrapSidebarTekst(\n this.props.kanSendes\n ? resources.sidebarSectionText_Veiledning_LagringInnboks\n : resources.sidebarSectionText_Veiledning_LagringDokument\n )\n );\n } else {\n seksjonerFraSkjema['SOT-2'].push(this.wrapSidebarTekst(resources.sidebarSectionText_Veileder_Opplysninger_KontaktHelsenorge));\n }\n\n if (this.props.printReference) {\n const printName = `${this.props.resources.sidebar_printLink} ${this.props.formTitle}`;\n const printUrl = proxyLink('skjemainternal', 'api/v1/Binary', {\n id: this.props.printReference.split('/')[1],\n });\n seksjonerFraSkjema['SOT-1'].push(\n this.wrapSidebarTekst(resources.sidebarSectionText_Alternativer_LoggInn.replace('{0}', `${printName}`))\n );\n }\n\n return [\n this.generateSectionContent(resources.sidebarSectionHeader_Alternativer, seksjonerFraSkjema['SOT-1']),\n this.generateSectionContent(resources.sidebarSectionHeader_Veiledning, seksjonerFraSkjema['SOT-2']),\n this.generateSectionContent(resources.sidebarSectionHeader_BehandlingMottaker, seksjonerFraSkjema['SOT-3']),\n ];\n }\n\n toggleFocus(): void {\n if (this.props.isOpen) {\n this.setTrapFocus();\n // eslint-disable-next-line react/no-find-dom-node\n const node: Element | Text | null = this.sidebarRef.current;\n if (node instanceof HTMLDivElement) {\n this.prevAriaHiddens = aria.setAriaHidden(node);\n if (this.helpTitleRef.current) {\n this.helpTitleRef.current.focus();\n }\n }\n }\n }\n\n setTrapFocus(): void {\n if (this.trapFocus) {\n return; // Focus already trapped\n }\n this.prevFocus = document.activeElement as HTMLElement;\n // eslint-disable-next-line react/no-find-dom-node\n this.trapFocus = new TrapFocus(this.sidebarRef.current as HTMLElement);\n }\n\n releaseFocus(): void {\n if (this.prevAriaHiddens) {\n aria.resetAriaHidden(this.prevAriaHiddens);\n }\n if (this.trapFocus) {\n this.trapFocus.deactivate();\n this.trapFocus = undefined;\n if (this.prevFocus) {\n this.prevFocus.focus();\n }\n this.prevFocus = undefined;\n }\n }\n\n handleToggleClick(): void {\n this.props.toggleShowSidebar();\n }\n\n elementIsInSidebarLink(eventTarget: EventTarget[]): boolean {\n for (const target of eventTarget) {\n if ((target as HTMLElement)?.classList?.contains('sidebar-link')) {\n return true;\n }\n }\n return false;\n }\n\n elementIsInHelpDrawer(eventTarget: EventTarget[]): boolean {\n for (const target of eventTarget) {\n if ((target as HTMLElement)?.classList?.contains('skjemasidebar')) {\n return true;\n }\n }\n return false;\n }\n\n isMobile = (): boolean => {\n return !!(this.props.nullToXs || this.props.smToMd);\n };\n\n open(): void {\n // Only push state to enable back/forward browser navigation if help drawer use the full width (mobile)\n if (this.isMobile() && !this.isOpenInHistoryState()) {\n window.history.pushState(Object.assign({}, window.history.state, { helpDrawerOpen: true }), '', window.location.href);\n }\n this.setScroll();\n }\n\n close(): void {\n if (this.isMobile() && this.isOpenInHistoryState()) {\n setAllowNavigation(true);\n window.history.back();\n }\n if (!this.isLightboxOpen()) {\n this.removePreventscroll();\n }\n }\n\n isOpenInHistoryState(): boolean {\n return window.history.state && window.history.state.helpDrawerOpen;\n }\n\n setScroll(): void {\n if (document.body.classList.contains('preventscroll') && !this.props.isOpen && !this.isLightboxOpen()) {\n this.removePreventscroll();\n } else {\n document.body.classList.add('preventscroll');\n }\n }\n\n removePreventscroll(): void {\n document.body.classList.remove('preventscroll');\n }\n\n isLightboxOpen(): boolean {\n return document.querySelectorAll('.toolkit-lightbox').length > 0;\n }\n\n popStateListener(): void {\n setAllowNavigation(false);\n const helpDrawerOpen: boolean = window.history.state && window.history.state.helpDrawerOpen;\n if (helpDrawerOpen && !this.props.isOpen) {\n this.disableTransitionToPreventDoubleAnimation(this.props.showSidebar);\n } else if (!helpDrawerOpen && this.props.isOpen) {\n this.disableTransitionToPreventDoubleAnimation(this.props.hideSidebar);\n }\n }\n\n disableTransitionToPreventDoubleAnimation(callback: () => void): void {\n this.setState({ disableTransition: true }, callback);\n window.setTimeout(() => {\n this.setState({ disableTransition: false });\n }, 500);\n }\n\n clickListener(e: MouseEvent): void {\n if (this.props.isOpen) {\n const eventPath = e.composedPath();\n if (!this.elementIsInHelpDrawer(eventPath) && !this.elementIsInSidebarLink(eventPath)) {\n this.props.hideSidebar();\n }\n }\n }\n\n render(): React.JSX.Element | null {\n const { resources }: SidebarProps = this.props;\n\n const helpDrawerClasses: string = classNames({\n skjemasidebar: true,\n open: this.props.isOpen,\n });\n\n const style: React.CSSProperties = this.state.disableTransition ? { transitionDuration: '0s' } : {};\n const seksjonsData = this.generateSkjemaSidebarSections();\n\n return (\n
\n \n \n \n \n \n \n
\n
\n \n \n

{this.props.resources.sidebar_titleSkjema}

\n
\n \n
\n
\n {seksjonsData\n .filter(x => x.content.length > 0)\n .map(x => {\n return ;\n })}\n
\n
\n \n );\n }\n}\n\nexport default layoutChange(Sidebar);\n","import React from 'react';\r\n\r\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\r\nimport { SidebarVisibility } from 'src/constants/sidebarVisibility';\r\nimport { GlobalState, useAppSelector } from 'src/store/reducers';\r\nimport { getResourcesSelector } from 'src/store/selectors/resourcesSelectors';\r\nimport { HNSkjemaFrontend } from 'src/types/Resources';\r\n\r\nimport { isAuthorized } from '@helsenorge/framework-utils/hn-authorize';\r\n\r\nimport Sidebar from './sidebar';\r\n\r\ntype Props = {\r\n toggleSidebarOpen: (isOpen: boolean) => void;\r\n isSidebarOpen: boolean;\r\n};\r\nconst RenderSidebar = ({ toggleSidebarOpen, isSidebarOpen }: Props): React.JSX.Element | null => {\r\n const resources = useAppSelector(state => getResourcesSelector(state, HN_SKJEMA_FRONTEND_RESOURCES));\r\n const sidebarData = useAppSelector((state: GlobalState) => state.refero.ui.sidebarData);\r\n const userMetadata = useAppSelector((state: GlobalState) => state.refero.ui.userMetadata);\r\n const formDefinition = useAppSelector((state: GlobalState) => state.refero.form.FormDefinition);\r\n const sidebarVisibility = useAppSelector((state: GlobalState) => state.refero.ui.sidebarVisibility);\r\n const isSavedInDokumenter = useAppSelector((state: GlobalState) => state.refero.ui.isSavedInDokumenter);\r\n const kanLagresEtterInnsending = useAppSelector((state: GlobalState) => state.refero.ui.kanLagresEtterInnsending);\r\n const printReference = useAppSelector((state: GlobalState) => state.refero.ui.printReference);\r\n\r\n const closeSidebar = (): void => {\r\n toggleSidebarOpen(false);\r\n };\r\n\r\n if (!resources || !sidebarData || !formDefinition?.Content?.title || !userMetadata || sidebarVisibility === SidebarVisibility.Off) {\r\n return null;\r\n }\r\n\r\n return (\r\n toggleSidebarOpen(!isSidebarOpen)}\r\n sidebarData={sidebarData}\r\n hideSidebar={closeSidebar}\r\n showSidebar={() => toggleSidebarOpen(true)}\r\n resources={resources}\r\n formTitle={formDefinition.Content.title}\r\n kanSendes={!isSavedInDokumenter}\r\n kanLagres={kanLagresEtterInnsending}\r\n harRepresentasjonsMulighet={isAuthorized() && !userMetadata.CanOnlyBePerformedBySubject}\r\n printReference={isAuthorized() ? undefined : printReference}\r\n />\r\n );\r\n};\r\nexport default RenderSidebar;\r\n","import React from 'react';\r\n\r\nimport { useAppSelector } from 'src/store/reducers';\r\n\r\nimport Loader from '@helsenorge/designsystem-react/components/Loader';\r\n\r\ntype Props = {\r\n children?: React.ReactNode;\r\n};\r\n\r\nexport const SkjemaSpinners = ({ children }: Props): React.JSX.Element | React.ReactNode => {\r\n const showLocalSpinner = useAppSelector(state => state.refero.ui.showLocalSpinner);\r\n const showGlobalSpinner = useAppSelector(state => state.refero.ui.showGlobalSpinner);\r\n\r\n return showGlobalSpinner ? (\r\n \r\n ) : showLocalSpinner ? (\r\n
\r\n {' '}\r\n
\r\n ) : (\r\n children\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\n\nimport { HN_SKJEMA_FRONTEND_RESOURCES } from 'src/constants/constants';\nimport { useHandleDocumentTitle } from 'src/hooks/useHandleDocumentTitle';\nimport { useLastActivity } from 'src/hooks/useLastActivity';\nimport { MicrowebStepFormDataCallBack } from 'src/microweb-step/types/microwebstepTypes';\nimport { redirectTilInnsendtSkjema } from 'src/store/actions/actionUtils';\nimport { getLanguagesInDefinition } from 'src/util/getLanguagesInDefinition';\nimport { getPreferredLanguage } from 'src/util/portalLanguage-utils';\n\nimport { trackProsesshjelp } from '@helsenorge/framework-utils/adobe-analytics';\nimport { getResourcesFromState } from '@helsenorge/framework-utils/resources';\nimport { SessionTimeoutAction, ShowSignOutBoxData } from '@helsenorge/framework-utils/types/entities';\nimport { getFormDefinition, getFormData } from '@helsenorge/refero';\n\nimport ConfirmationLightbox from './lightboxes/confirmationlightbox';\nimport ConfirmationLightboxLagre from './lightboxes/confirmationlightbox-lagre';\nimport SkjemaLoadError from './notifications/skjemaLoadError';\nimport { fetchSkjemaoppgave, sendInnSkjema, loadResources } from '../store/actions/actionCreators';\nimport { useAppDispatch, useAppSelector } from '../store/reducers';\nimport { getQueryParams, isKopiLagret } from '../util';\nimport RenderSkjema from './RenderSkjema';\nimport { redirectEtterFullfortSkjema } from '../util/veileder';\nimport { dispatchSetSessionTimeoutFn } from '../util/webcomp-utils';\nimport DiscretionLightbox from './lightboxes/discretionLightbox';\nimport { AnonomousSkjemaLightbox } from './modals/AnonomousSkjemaLightbox';\nimport AnonymousUploadDeniedModal from './modals/AnonymousUploadDeniedModal';\nimport AttachementErrorModal from './modals/AttachementErrorModal';\nimport KanIkkeLagreModal from './modals/KanIkkeLagreModal';\nimport LagreSkjemaErrorModal from './modals/LagreSkjemaErrorModal';\nimport SendInnSkjemaErrorModal from './modals/SendInnSkjemaErrorModal';\nimport LoadSkjemaWarningMessageNotification from './notifications/LoadSkjemaWarningMessageNotification';\nimport RenderSidebar from './sidebar/RenderSidebar';\nimport { SkjemaSpinners } from './SkjemaSpinners';\n\ntype Props = {\n skjemaTekniskNavn?: string;\n documentGuid?: string;\n isMicroweb?: boolean;\n isMicrowebStep?: boolean;\n avbryturl?: string;\n hidebackbutton?: string;\n skjemadata?: string;\n onNavigateBackMicroweb?: MicrowebStepFormDataCallBack;\n onCompleteMicroweb?: MicrowebStepFormDataCallBack;\n onCancelMicroweb?: MicrowebStepFormDataCallBack;\n sendPendingChangesEvent?: (hasChanges: boolean) => unknown;\n};\n\nconst Skjemautfyller = ({\n skjemaTekniskNavn,\n documentGuid,\n isMicroweb,\n skjemadata,\n isMicrowebStep,\n avbryturl,\n hidebackbutton,\n onCompleteMicroweb,\n onCancelMicroweb,\n onNavigateBackMicroweb,\n sendPendingChangesEvent,\n}: Props): JSX.Element | null => {\n const [isSidebarOpen, setIsSidebarOpen] = useState(false);\n\n const [isDiscretionLightboxVisible, setIsDiscretionLightboxVisible] = useState(false);\n const [isSentWithDiscretion, setIsSentWithDiscretion] = useState(false);\n const [timeSkjemaLoadedForUser] = useState(Date.now());\n\n const dispatch = useAppDispatch();\n const uiState = useAppSelector(state => state.refero.ui);\n const formDefinition = useAppSelector(state => getFormDefinition(state));\n const formData = useAppSelector(state => getFormData(state));\n\n const resources = useAppSelector(state =>\n getResourcesFromState(state, HN_SKJEMA_FRONTEND_RESOURCES, getPreferredLanguage(getLanguagesInDefinition(uiState.questionnaires)))\n );\n\n const { timeUserHasBeenIdle, setLastActivity, lastActivity } = useLastActivity();\n useHandleDocumentTitle(isMicrowebStep || isMicroweb);\n\n useEffect(() => {\n dispatch(fetchSkjemaoppgave({ skjemaTekniskNavn, documentGuid, isMicroweb, skjemadata }));\n document.getElementsByTagName('html')[0].classList.add('page_refero__fixed-scroll-offset');\n }, []);\n\n useEffect(() => {\n dispatch(loadResources({ language: getPreferredLanguage(getLanguagesInDefinition(uiState.questionnaires)) }));\n\n if (formDefinition?.Content) {\n dispatchSetSessionTimeoutFn(onShowSignOutBox);\n }\n }, [formDefinition?.Content]);\n\n useEffect(() => {\n updateDocumentTitle(isMicrowebStep || isMicroweb);\n }, [formDefinition]);\n const updateDocumentTitle = (isMicrowebStep: boolean | undefined): void => {\n if (!isMicrowebStep) {\n if (formDefinition && formDefinition.Content && formDefinition.Content.title) {\n document.title = `${formDefinition.Content.title} - Helsenorge`;\n } else {\n document.title = 'Skjemautfyller - Helsenorge';\n }\n }\n };\n\n const onShowSignOutBox = (data: ShowSignOutBoxData): SessionTimeoutAction => {\n const idleRatio = timeUserHasBeenIdle / (data.tokenLifetime - data.tokenWarnUserWhenRemaining);\n if (idleRatio > 0.5) {\n return SessionTimeoutAction.Default;\n }\n\n return SessionTimeoutAction.RequestExtension;\n };\n\n const redirectVeilederData = (normalRedirectFn: () => void): void => {\n const queryParams = getQueryParams();\n redirectEtterFullfortSkjema(\n formDefinition,\n formData,\n queryParams.redirect,\n queryParams.contextParameter,\n uiState.dokumentGuid,\n normalRedirectFn,\n isMicrowebStep,\n onCompleteMicroweb\n );\n };\n\n const handleHideDiscretionLightbox = (): void => {\n setIsDiscretionLightboxVisible(false);\n };\n\n const toggleSidebarOpen = (isOpen: boolean): void => {\n trackProsesshjelp('Prosesshjelp', 'Hjelp', 'Om skjema', isOpen ? 'Open' : 'Close');\n setIsSidebarOpen(isOpen);\n };\n\n if (!resources) {\n return null;\n }\n if (uiState.loadSkjemaoppgaveErrorMessage || uiState.loadSkjemaoppgaveErrorCode) {\n return ;\n }\n return (\n
\n
\n \n \n toggleSidebarOpen(true)}\n setIsDiscretionLightboxVisible={setIsDiscretionLightboxVisible}\n lastActivity={lastActivity}\n />\n
\n \n \n \n \n \n {\n redirectVeilederData(() => redirectTilInnsendtSkjema(uiState.samtaleGuid as string));\n }}\n erKopiLagret={!isSentWithDiscretion && (formDefinition?.Content ? isKopiLagret(formDefinition?.Content) : true)}\n />\n \n {\n handleHideDiscretionLightbox();\n setIsSentWithDiscretion(withDiscretion || false);\n dispatch(\n sendInnSkjema({\n timeSkjemaLoadedForUser,\n automatiskLagring: false,\n withDiscretion,\n isMicrowebStep,\n onCompleteMicroweb: undefined,\n })\n );\n }}\n />\n \n \n
\n );\n};\n\nexport default Skjemautfyller;\n"],"file":"static/js/index.W_EPvafY.js"}