{"version":3,"file":"js/app-e0bb4ee9.js?t=1793697283758","mappings":"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","sources":["webpack://Novadoc/./src/useTutorial.ts","webpack://Novadoc/./src/useEvents.ts","webpack://Novadoc/./src/useNotifications.ts","webpack://Novadoc/./src/utils/encrypt.ts","webpack://Novadoc/./src/views/documents/useDocumentActions.ts","webpack://Novadoc/./src/views/errors/UnknownError.vue?4b08","webpack://Novadoc/./src/views/errors/UnknownError.vue","webpack://Novadoc/./src/views/errors/UnknownError.vue?3cf5","webpack://Novadoc/webpack/bootstrap","webpack://Novadoc/webpack/runtime/chunk loaded","webpack://Novadoc/webpack/runtime/compat get default export","webpack://Novadoc/webpack/runtime/concatenation wrap","webpack://Novadoc/webpack/runtime/define property getters","webpack://Novadoc/webpack/runtime/ensure chunk","webpack://Novadoc/webpack/runtime/get javascript chunk filename","webpack://Novadoc/webpack/runtime/get mini-css chunk filename","webpack://Novadoc/webpack/runtime/global","webpack://Novadoc/webpack/runtime/harmony module decorator","webpack://Novadoc/webpack/runtime/hasOwnProperty shorthand","webpack://Novadoc/webpack/runtime/load script","webpack://Novadoc/webpack/runtime/make namespace object","webpack://Novadoc/webpack/runtime/node module decorator","webpack://Novadoc/webpack/runtime/set anonymous default export name","webpack://Novadoc/webpack/runtime/publicPath","webpack://Novadoc/webpack/runtime/css loading","webpack://Novadoc/webpack/runtime/jsonp chunk loading","webpack://Novadoc/webpack/startup"],"sourcesContent":["import { TRouteNames } from '@/modules/router/TRouteNames';\nimport { ELoginReminderType } from '@/lib/models/User/ELoginReminderType';\nimport { EToastNotificationTypes } from '@/lib/models/Notification/EToastNotificationTypes';\nimport { useTutorialModule } from '@/modules/store/tutorial';\nimport { useI18n } from 'vue-i18n';\nimport { useRoute } from 'vue-router';\nimport { storeToRefs } from 'pinia';\nimport { useUserModule } from '@/modules/store/user';\nimport { useNotifications } from '@/useNotifications';\nimport { watch } from 'vue';\nimport { ERouteNames } from '@/modules/router/ERouteNames';\nimport { useNavigationHelpers } from '@/lib/core/composables';\n\nexport const useTutorial = () => {\n  const tutorialModule = useTutorialModule();\n  const { t, te } = useI18n();\n  const route = useRoute();\n  const { profile } = storeToRefs(useUserModule());\n  const { showNotification } = useNotifications();\n  const { redirect } = useNavigationHelpers();\n\n  const showTutorial = (routeName: Partial<TRouteNames>) => {\n    const messageKey = `tutorial.${String(routeName)}`;\n\n    if (route.name === routeName\n      && profile.value?.loginReminder !== ELoginReminderType.normalLogin // backend tells us that wee need to show notifications\n      && te(messageKey) // current page has its own notification\n      && !tutorialModule.checkIfTutorialMessageWasShown(routeName) // and notification was not shown before\n      && tutorialModule.welcomeMessageWasShown) { // and welcome message was shown\n      // show tutorial notification\n      showNotification({\n        text: t(messageKey),\n        duration: 15000,\n        type: EToastNotificationTypes.info,\n      });\n      tutorialModule.addToAlreadyShown(routeName);\n    }\n  };\n\n  watch(profile, (newVal) => {\n    const routeName = profile.value?.isAuthenticatedByKey ? ERouteNames.allDocuments : ERouteNames.myCredentials;\n    if (newVal?.loginReminder === ELoginReminderType.normalLogin // first login\n      && route.name !== routeName // not allDocuments page\n      && !tutorialModule.welcomeMessageWasShown // welcome message was not shown yet\n    ) {\n      // redirect to allDocuments and show welcome message\n      if (!route.fullPath.includes('document')) {\n        redirect({ name: routeName });\n      }\n    }\n    // on old login - flush tutorial messages\n    if (newVal?.loginReminder === ELoginReminderType.oldLogin) {\n      tutorialModule.sectionsWhereTutorialMessageWasShown = [];\n    }\n  });\n\n  // show notifications during tutorial\n  watch(route, (newVal) => {\n    const routeName = newVal.name as Partial<TRouteNames>;\n    showTutorial(routeName);\n  });\n\n  return {\n    showTutorial,\n  };\n};\n","import { EEmitterEventNames } from '@/modules/emitter/EEmitterEventNames';\nimport { emitter } from '@/modules/emitter';\nimport { EWSEventNames, EWSEventNamesDocuments } from '@/modules/ws/EWSEventNames';\nimport { useNotifications } from '@/useNotifications';\nimport { useErrorsModule } from '@/modules/store/errors';\nimport { useAuthModule } from '@/modules/store/auth';\nimport { useNotificationsModule } from '@/modules/store/notifications';\nimport { useTutorial } from '@/useTutorial';\nimport { watch } from 'vue';\nimport { storeToRefs } from 'pinia';\nimport { useUserModule } from '@/modules/store/user';\nimport { EToastNotificationTypes } from '@/lib/models/Notification/EToastNotificationTypes';\nimport { INotificationDTO } from '@/lib/models/Notification/Notification';\nimport { ESystemNotificationTypes } from '@/lib/models/Notification/ESystemNotificationTypes';\nimport { subscribeToWebsocketEvents, unsubscribeFromWebsocketEvents } from '@/modules/ws';\nimport { IDocumentCommentDTO } from '@/lib/models/Document/DocumentComment';\nimport { useDocumentCommentsModule } from '@/modules/store/comments';\nimport { useDocumentsModule } from '@/modules/store/documents';\n\nexport const useEvents = () => {\n  const { showNotification } = useNotifications();\n  const { showTutorial } = useTutorial();\n  const errorsModule = useErrorsModule();\n  const authModule = useAuthModule();\n  const notificationsModule = useNotificationsModule();\n  const { addNotification } = notificationsModule;\n  const { list: notificationsList } = storeToRefs(notificationsModule);\n  const userModule = useUserModule();\n  const { lastContractor, wsChannel } = storeToRefs(userModule);\n  const { addComment, getLastDocumentComment } = useDocumentCommentsModule();\n  const { currentDocument } = storeToRefs(useDocumentsModule());\n\n  const registerEvents = () => {\n    emitter.on(EEmitterEventNames.error, (error) => {\n      errorsModule.logError(error);\n      const text = errorsModule.getErrorMessage(error);\n      showNotification({ text, type: EToastNotificationTypes.error });\n      throw error;\n    });\n    emitter.on(EEmitterEventNames.success, (config) => showNotification({ ...config, type: EToastNotificationTypes.success }));\n    emitter.on(EEmitterEventNames.warning, (config) => showNotification({ ...config, type: EToastNotificationTypes.warning }));\n    emitter.on(EEmitterEventNames.info, (config) => showNotification({ ...config, type: EToastNotificationTypes.info }));\n    emitter.on(\n      EEmitterEventNames.refreshBearerToken,\n      (token: string): void => {\n        authModule.setBearerToken(token).then().catch((e) => console.error(e));\n      },\n    );\n    emitter.on(EEmitterEventNames.logOut, () => authModule.logOut());\n    emitter.on(EEmitterEventNames.refreshToken, () => authModule.refreshToken());\n    emitter.on(EEmitterEventNames.showTutorial, (routeName) => showTutorial(routeName));\n    emitter.on(EEmitterEventNames.unsubscribeFromWebsocketEvents, () => unsubscribeFromWebsocketEvents(wsChannel.value));\n\n    // from WS\n    emitter.on(EWSEventNames.updateNotifications, (notificationDTOAsString: string) => {\n      if (notificationDTOAsString) {\n        const notificationDTO = <INotificationDTO>JSON.parse(notificationDTOAsString);\n        notificationDTO.data = JSON.stringify(notificationDTO.data);\n        const newNotification = addNotification(notificationDTO);\n        if (newNotification.type === ESystemNotificationTypes.DocumentCommentNotification) {\n          showNotification({\n            type: newNotification.toastNotificationType,\n            title: newNotification.payload.documentName,\n            text: newNotification.payload.commentMessage,\n          });\n        }\n      }\n    });\n\n    emitter.on(EWSEventNames.addComment, (commentDTOAsString: string) => {\n      const commentDTO = <IDocumentCommentDTO>JSON.parse(commentDTOAsString);\n      // @ts-ignore\n      if (Number(currentDocument.value?.id) === Number(commentDTO.document_id)) {\n        addComment(commentDTO);\n        getLastDocumentComment().then().catch();\n      }\n    });\n\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    document.addEventListener('appUpdateAvailable', () => {\n    });\n  };\n\n  const unregisterEvents = () => {\n    emitter.off(EEmitterEventNames.error);\n    emitter.off(EEmitterEventNames.success);\n    emitter.off(EEmitterEventNames.warning);\n    emitter.off(EEmitterEventNames.info);\n    emitter.off(EEmitterEventNames.refreshBearerToken);\n    emitter.off(EEmitterEventNames.logOut);\n    emitter.off(EEmitterEventNames.refreshToken);\n    emitter.off(EEmitterEventNames.showTutorial);\n    emitter.off(EEmitterEventNames.unsubscribeFromWebsocketEvents);\n    emitter.off(EWSEventNames.updateNotifications);\n    emitter.off(EWSEventNames.addComment);\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    document.removeEventListener('appUpdateAvailable', () => {\n    });\n  };\n\n  watch(lastContractor, (contractorId) => {\n    if (contractorId) {\n      notificationsList.value = [];\n      notificationsModule.getMyNotifications().then().catch((e) => console.error(e));\n      subscribeToWebsocketEvents(wsChannel.value);\n    }\n  });\n\n  return {\n    registerEvents,\n    unregisterEvents,\n  };\n};\n","import {\n  NotificationsOptions,\n  useNotification,\n} from '@kyvg/vue3-notification';\n\nexport const useNotifications = () => {\n  const { notify } = useNotification();\n\n  const showNotification = (config: NotificationsOptions): void => {\n    notify(config);\n  };\n\n  return {\n    showNotification,\n  };\n};\n","import forge from 'node-forge';\nimport { publicKeyPem } from '@/config/encryption';\n\nconst encryptValue = (value: string | null): string | null => {\n  if (value === null) return null;\n\n  try {\n    const publicKey = forge.pki.publicKeyFromPem(publicKeyPem.trim());\n\n    const encryptedBytes = publicKey.encrypt(value, 'RSAES-PKCS1-V1_5');\n    const encryptedBase64 = forge.util.encode64(encryptedBytes);\n    return encryptedBase64;\n  } catch (err) {\n    console.error('Ошибка шифрования:', err);\n    return null;\n  }\n};\n\nexport default encryptValue;\n","import {\n  computed, reactive, ref, Ref, unref,\n} from 'vue';\nimport * as process from 'process';\nimport { storeToRefs } from 'pinia';\nimport { annulmentActTypeId } from '@/config';\nimport { useDocumentsModule } from '@/modules/store/documents';\nimport { EModalNames, useUiModule } from '@/modules/store/ui';\nimport { EReadEdsDialogActions } from '@/components/v2/common/eds/EReadEdsDialogActions';\nimport { IDocument } from '@/lib/models/Document/Document';\nimport { ERouteNames } from '@/modules/router/ERouteNames';\nimport { router } from '@/modules/router';\nimport { useRoute } from 'vue-router';\nimport {\n  getDocumentSignTokenQuery,\n} from '@/lib/core/composables/useDocumentSignTokenRoute';\nimport { EDocumentDraftStatuses } from '@/lib/models/Document/EDocumentDraftStatuses';\nimport { useNavigationHelpers } from '@/lib/core/composables/useNavigationHelpers';\nimport { EDocumentActions } from '@/lib/models/Document/EDocumentActions';\nimport { IKeystoreEntry, useEDSModule } from '@/modules/store/eds';\nimport { i18n } from '@/modules/i18n';\nimport { emitter } from '@/modules/emitter';\nimport { ILabel } from '@/lib/models/Label/Label';\nimport { EApiResponseStatus } from '@/lib/core/api';\nimport { EDocumentOperationStatus } from '@/modules/api/EDocumentOperationStatus';\nimport { EDocumentCancelResponse } from '@/modules/api/EDocumentCancelResponse';\nimport { EEmitterEventNames } from '@/modules/emitter/EEmitterEventNames';\nimport { useContractorsModule } from '@/modules/store/contractors';\nimport { DateFormatter, SupportedOutputFileFormats } from '@/lib/core/helpers';\nimport { ILabelAssignInput } from '@/modules/api/Labels.api';\nimport { useLabelsModule } from '@/modules/store/labels';\nimport { ELabelActions } from '@/lib/models/Label/ELabelActions';\nimport { useArchivesModule } from '@/modules/store/archives';\nimport { EDocumentStatuses } from '@/lib/models/Document/EDocumentStatuses';\nimport { useUserModule } from '@/modules/store/user';\nimport { useSurveysModule } from '@/modules/store/surveys';\nimport { useSurveyActions } from '@/components/v2/common/survey/useSurveyActions';\nimport { EWSEventNamesDocuments } from '@/modules/ws/EWSEventNames';\nimport { EDocumentApprovalStatuses } from '@/lib/models/Document/EDocumentApprovalStatuses';\nimport { IAttachSignature } from '@/lib/models/Document/IAttachSignature';\nimport { documentObjectsApi } from '@/modules/api/DocumentObjects.api';\nimport { defaultCipherSessionOptions } from '@/modules/eds/cipher';\nimport { documentsApi } from '@/modules/api/Documents.api';\nimport { EAttachSignResponse } from '@/modules/api/EAttachSignResponse';\nimport { LogError } from '@/lib/core/decorators';\nimport { AuthHeadersHelper } from '@/lib/core/api/AuthHeadersHelper';\nimport { useDocumentSignTokenMode } from '@/lib/core/composables/useDocumentSignTokenMode';\nimport { useSignContractorId } from '@/lib/core/composables/useSignContractorId';\n\n// import { useTableModule } from '@/modules/store/table';\n\n// const tableModule = useTableModule();\n// const {\n//   queryParams,\n//   getQuery,\n//   getOrderParams,\n//   orderParams,\n// } = tableModule;\n// const {\n//   tableViewCols,\n// } = storeToRefs(tableModule);\n\nconst { t } = i18n.global;\n\ninterface IDocumentActions {\n  bulkPrintDocument(documents: IDocument[]): Promise<void>;\n  viewDocument(document: IDocument, openInNewTab: boolean): void;\n  signDocument(document: IDocument): Promise<void>;\n  cancelDocument(document: IDocument): Promise<void>;\n  bulkSignDocument(documents: IDocument[]): void;\n  rejectDocument(document: IDocument): Promise<void>;\n  deleteDocument(document: IDocument): Promise<void>;\n  bulkDeleteDocument(documents: IDocument[]): void;\n  generateReport(): void;\n  generateArchive(documents: IDocument[]): void;\n  assignLabel(document: IDocument, label: ILabel): Promise<EApiResponseStatus | boolean | undefined>;\n  revokeLabel(document: IDocument, label: ILabel): Promise<EApiResponseStatus | boolean | undefined>;\n  bulkAssignLabel(documents: IDocument[]): Promise<void>;\n  bulkRevokeLabel(documents: IDocument[]): Promise<void>;\n  showRelatedDocumentsManagementModal(): void;\n  showRejectDocumentReasonModal(): void;\n  showCancelDocumentReasonModal(): void;\n  documentButtons: any[];\n  isDocumentInfoMenuOpen: Ref<boolean>;\n  getDocumentButtonTooltip(button: { tooltip: string; tokenTooltip?: string }): string;\n  isDocumentButtonVisible(button: { show: boolean | Ref<boolean> }): boolean;\n  isDocumentButtonPlacement(button: { button: string[] | Ref<string[]> }, placement: string): boolean;\n}\n\ninterface IProcessDocumentActionResultParams {\n  document: IDocument,\n  status: EDocumentOperationStatus | EDocumentCancelResponse,\n  action: EDocumentActions,\n}\n\nconst processDocumentActionResult = (params: IProcessDocumentActionResultParams) => {\n  const {\n    document,\n    action,\n  } = params;\n  let { status } = params;\n\n  if (!status) {\n    status = EDocumentOperationStatus.unknownError;\n    try {\n      emitter.emit(\n        EEmitterEventNames.error,\n        new Error(i18n.global.t(`general.documentActionMessages.error.${action}`, [\n          document.name,\n          i18n.global.t(`general.apiMessages.documents.${status}`),\n        ])),\n      );\n    } catch (error) {\n      console.error(error);\n    }\n  } else if ([EDocumentOperationStatus.success as string, EDocumentCancelResponse.success as string].includes(status.toLowerCase())) {\n    emitter.emit(\n      EEmitterEventNames.success,\n      {\n        text: i18n.global.t(\n          `general.documentActionMessages.success.${action}`,\n          [document.name],\n        ),\n      },\n    );\n  } else {\n    try {\n      emitter.emit(\n        EEmitterEventNames.error,\n        new Error(i18n.global.t(`general.documentActionMessages.error.${action}`, [\n          document.name,\n          i18n.global.t(`general.apiMessages.documents.${status}`),\n        ])),\n      );\n    } catch (error) {\n      console.error(error);\n    }\n  }\n};\n\nexport const useDocumentActions = (): IDocumentActions => {\n  const route = useRoute();\n  const { redirect } = useNavigationHelpers();\n  const edsModule = useEDSModule();\n  const documentsModule = useDocumentsModule();\n  const tokenSignMode = useDocumentSignTokenMode();\n  const isTokenSignMode = computed(() => !!tokenSignMode?.isTokenSignMode?.value || AuthHeadersHelper.isSignTokenAuth);\n  const contractorsModule = useContractorsModule();\n  const labelsModule = useLabelsModule();\n  const archivesModule = useArchivesModule();\n  const { signContractorId } = useSignContractorId();\n  const {\n    rejectionReason, rejectionDialogTitle, cancelReason, cancelDialogTitle, currentDocument, signActionAttachModal,\n    isDocumentCopy, isDocumentDeleted,\n  } = storeToRefs(documentsModule);\n  const isDocumentUnavailable = computed(() => !currentDocument.value || isDocumentDeleted.value);\n  const isDraftDocumentPreviewActionsVisible = computed(() => (\n    !currentDocument.value?.isEditable\n    && currentDocument.value?.status === EDocumentStatuses.draft\n  ));\n  const {\n    openModal, closeModal, reportDialogConfig, readEdsDialogConfig,\n  } = useUiModule();\n  const {\n    beforeCloseModalOperation,\n    beforeOpenModalOperation,\n    afterCloseModalOperation,\n    confirmDialogConfig,\n    bulkActionsDialogConfig,\n  } = storeToRefs(useUiModule());\n  const signDocumentFlow = ref(false);\n  const surveysModule = useSurveysModule();\n  const { showSurvey } = storeToRefs(surveysModule);\n  const surveyActions = useSurveyActions();\n\n  const bulkPrintDocument = async (documents: IDocument[]): Promise<void> => {\n    bulkActionsDialogConfig.value.list = documents;\n    bulkActionsDialogConfig.value.actionType = EDocumentActions.print;\n    bulkActionsDialogConfig.value.action = async () => {\n      await closeModal(EModalNames.documentBulkActionModal);\n      // eslint-disable-next-line no-restricted-syntax\n      for (const document of bulkActionsDialogConfig.value.list as IDocument[]) {\n        // eslint-disable-next-line no-await-in-loop\n        await document.forPrint?.print();\n      }\n    };\n    await openModal(EModalNames.documentBulkActionModal);\n  };\n\n  const viewDocument = (document: IDocument, openInNewTab = false): void => {\n    const { VUE_APP_BASE_URL } = process.env;\n    const { isEditable, status, id } = document;\n\n    if (!openInNewTab) {\n      if (isEditable && status === EDocumentStatuses.draft) {\n        router.push(`/document/${id}/edit`);\n      } else {\n        redirect({ name: ERouteNames.document, params: { id: document.id }});\n      }\n    } else {\n      window.open(`${VUE_APP_BASE_URL}/${ERouteNames.documents}/${document.id}`, '_blank');\n    }\n  };\n\n  const applySignatureAndStampIfPossible = async (\n    document: IDocument,\n  ): Promise<EDocumentOperationStatus | null> => {\n    const { keystoreList, keyTypeDevice } = storeToRefs(edsModule);\n\n    let resultStatus: EDocumentOperationStatus | null = null;\n\n    const sign = async (\n      keystore: any,\n      action: EDocumentActions,\n    ): Promise<void> => {\n      const status = await documentsModule.signDocument(document, keystore);\n\n      processDocumentActionResult({\n        document,\n        status: status as EDocumentOperationStatus,\n        action,\n      });\n\n      resultStatus = status as EDocumentOperationStatus;\n\n      if (status === EDocumentOperationStatus.success && signDocumentFlow.value) {\n        showSurvey.value = true;\n        surveyActions.showSurveyModal();\n        signDocumentFlow.value = false;\n      }\n    };\n\n    if (keystoreList.value.signature.loadedSignature || keyTypeDevice.value === 'ksp') {\n      await sign(keystoreList.value.signature, EDocumentActions.sign);\n    }\n\n    if (keystoreList.value.stamp.loadedSignature) {\n      await sign(keystoreList.value.stamp, EDocumentActions.stamp);\n    }\n\n    return resultStatus;\n  };\n\n  const getSignatureKey = (signature: IAttachSignature) => `${signature.tax_number}_${signature.attach_object_id}_${signature.type}`;\n\n  const getUniqueSignatures = (\n    signatures: IAttachSignature[],\n  ): IAttachSignature[] => {\n    const map = new Map<string, IAttachSignature>();\n\n    for (const signature of signatures) {\n      const key = getSignatureKey(signature);\n\n      if (!map.has(key)) {\n        map.set(key, signature);\n      }\n    }\n\n    return Array.from(map.values());\n  };\n\n  const applyAttachments = async (document: IDocument) => {\n    const {\n      keystoreList, signatureTaxNumber, stampTaxNumber, keyTypeDevice,\n    } = storeToRefs(edsModule);\n    const attachSignatures = document.attachSignatures ?? [];\n\n    const signSequentially = async (\n      document: IDocument,\n      type: 'signature' | 'stamp',\n      keystore: IKeystoreEntry,\n    ) => {\n      const filtered = attachSignatures.filter(\n        (signature) => signature.status === 'ready'\n              && signature.required\n              && signature.type === type\n              && (signature.tax_number === signatureTaxNumber.value || signature.tax_number === stampTaxNumber.value),\n      );\n\n      const uniqueSignatures = getUniqueSignatures(filtered);\n\n      await uniqueSignatures.reduce<Promise<void>>(async (prev, signature) => {\n        await prev;\n\n        const data = await documentObjectsApi.raw(signature.attach_object_id);\n        const object = document.objects?.find(\n          (item) => item.id === signature.attach_object_id,\n        );\n        const attachName = object?.name || '';\n        const attactData = data.data;\n\n        try {\n          const status = await documentsModule.signAttachment(\n            attactData,\n            signature.attach_object_id,\n            keystore,\n            attachName,\n          );\n        } catch (error) {\n          throw error;\n        }\n      }, Promise.resolve());\n    };\n\n    if (keystoreList.value.signature.loadedSignature || keyTypeDevice.value === 'ksp') {\n      await signSequentially(document, 'signature', keystoreList.value.signature);\n    }\n\n    if (keystoreList.value.stamp.loadedSignature) {\n      await signSequentially(document, 'stamp', keystoreList.value.stamp);\n    }\n  };\n\n  const redirectToAdditionDocument = async () => {\n    await documentsModule.documentDraftChangeEditStatus(EDocumentDraftStatuses.edit);\n\n    if (isTokenSignMode.value) {\n      await router.push({\n        name: ERouteNames.additionDocument,\n        params: { id: currentDocument.value?.id },\n        query: getDocumentSignTokenQuery(route),\n      });\n      return;\n    }\n\n    await router.push(`/document/${currentDocument.value?.id}/edit`);\n  };\n\n  const signDocument = async (document: IDocument, onSuccess?: () => Promise<void> | void): Promise<void> => {\n    edsModule.resetSignature();\n    edsModule.resetStamp();\n    readEdsDialogConfig.showStampUi = true;\n    readEdsDialogConfig.showSignatureUi = true;\n    readEdsDialogConfig.showSaveEds = !isTokenSignMode.value;\n    readEdsDialogConfig.showTabsHeader = true;\n    readEdsDialogConfig.showDiiaSign = true;\n    readEdsDialogConfig.dialogAction = EReadEdsDialogActions.signing;\n\n    await openModal(EModalNames.readEDSModal);\n    beforeCloseModalOperation.value = async (): Promise<void> => {\n      beforeCloseModalOperation.value = null;\n      if (readEdsDialogConfig.signDocument) {\n        await applyAttachments(document);\n        const status = await applySignatureAndStampIfPossible(document);\n        readEdsDialogConfig.signDocument = false;\n\n        if (status === EDocumentOperationStatus.success) {\n          await onSuccess?.();\n        }\n      }\n    };\n  };\n\n  const bulkSignDocument = async (documents: IDocument[], onSuccess?: () => Promise<void> | void) => {\n    bulkActionsDialogConfig.value.list = documents;\n    bulkActionsDialogConfig.value.actionType = EDocumentActions.sign;\n    bulkActionsDialogConfig.value.action = async () => {\n      await closeModal(EModalNames.documentBulkActionModal);\n      edsModule.resetSignature();\n      edsModule.resetStamp();\n      readEdsDialogConfig.showStampUi = true;\n      readEdsDialogConfig.showSignatureUi = true;\n      readEdsDialogConfig.showTabsHeader = true;\n      readEdsDialogConfig.showDiiaSign = true;\n      await openModal(EModalNames.readEDSModal);\n      beforeCloseModalOperation.value = async (): Promise<void> => {\n        beforeCloseModalOperation.value = null;\n        // eslint-disable-next-line no-restricted-syntax\n        for (const document of bulkActionsDialogConfig.value.list) {\n          // eslint-disable-next-line no-await-in-loop\n          await applyAttachments(document);\n          await applySignatureAndStampIfPossible(document);\n        }\n        await onSuccess?.();\n      };\n    };\n    beforeCloseModalOperation.value = async () => {\n      beforeCloseModalOperation.value = null;\n    };\n    await openModal(EModalNames.documentBulkActionModal);\n  };\n\n  // const rejectDocument = async (document: IDocument): Promise<void> => {\n  //   beforeOpenModalOperation.value = async () => {\n  //     rejectionDialogTitle.value = i18n.global.t('components.documents.RejectDocumentReasonModal.title');\n  //     rejectionReason.value = '';\n  //   };\n  //   await openModal(EModalNames.rejectDocumentReasonModal);\n  //   afterCloseModalOperation.value = async () => {\n  //     beforeOpenModalOperation.value = null;\n  //     afterCloseModalOperation.value = async () => {\n  //       rejectionReason.value = '';\n  //     };\n  //     if (rejectionReason.value !== '') {\n  //       afterCloseModalOperation.value = null;\n  //       await openModal(EModalNames.confirmModal);\n  //       // eslint-disable-next-line vue/max-len\n  //       confirmDialogConfig.value.message = `Ви впевнені, що бажаєте відхилити документ ${document.name} у звязку з: <br /> \"${rejectionReason.value}\"`;\n  //       confirmDialogConfig.value.action = async () => {\n  //         const status = await documentsModule.rejectDocument(document);\n  //         processDocumentActionResult({\n  //           document,\n  //           status: status as EDocumentCancelResponse,\n  //           action: EDocumentActions.reject,\n  //         });\n  //         await closeModal(EModalNames.confirmModal);\n  //       };\n  //     }\n  //   };\n  // };\n  const rejectDocument = async (document: IDocument): Promise<void> => {\n    if (rejectionReason.value !== '') {\n      const status = await documentsModule.rejectDocument(document);\n      processDocumentActionResult({\n        document,\n        status: status as EDocumentCancelResponse,\n        action: EDocumentActions.reject,\n      });\n      await closeModal(EModalNames.rejectDocumentReasonModal);\n    }\n  };\n\n  // const cancelDocument = async (document: IDocument): Promise<void> => {\n  //   beforeOpenModalOperation.value = async () => {\n  //     rejectionDialogTitle.value = i18n.global.t('components.documents.RejectDocumentReasonModal.title1');\n  //     rejectionReason.value = '';\n  //   };\n  //   await openModal(EModalNames.rejectDocumentReasonModal);\n  //   afterCloseModalOperation.value = async () => {\n  //     beforeOpenModalOperation.value = null;\n  //     afterCloseModalOperation.value = async () => {\n  //       rejectionReason.value = '';\n  //     };\n  //     if (rejectionReason.value !== '') {\n  //       afterCloseModalOperation.value = null;\n  //       await openModal(EModalNames.confirmModal);\n  //       // eslint-disable-next-line vue/max-len\n  //       confirmDialogConfig.value.message = `Ви впевнені, що бажаєте анулювати документ ${document.name} у звязку з: <br /> \"${rejectionReason.value}\"`;\n  //       confirmDialogConfig.value.action = async () => {\n  //         const status = await documentsModule.cancelDocument(document);\n  //         processDocumentActionResult({\n  //           document,\n  //           status: status as EDocumentCancelResponse,\n  //           action: EDocumentActions.cancel,\n  //         });\n  //         await closeModal(EModalNames.confirmModal);\n  //       };\n  //     }\n  //   };\n  // };\n\n  const deleteDocument = async (document: IDocument): Promise<void> => {\n    await openModal(EModalNames.confirmModal);\n    confirmDialogConfig.value.message = `Документ ${document.name} буде видалено безповоротно!`;\n    confirmDialogConfig.value.action = async () => {\n      const status = await documentsModule.deleteDocument(document);\n      processDocumentActionResult({\n        document,\n        status: status as EDocumentOperationStatus,\n        action: EDocumentActions.delete,\n      });\n      await closeModal(EModalNames.confirmModal);\n    };\n  };\n  const bulkDeleteDocument = async (documents: IDocument[]) => {\n    bulkActionsDialogConfig.value.list = documents;\n    bulkActionsDialogConfig.value.actionType = EDocumentActions.delete;\n    bulkActionsDialogConfig.value.action = async () => {\n      await closeModal(EModalNames.documentBulkActionModal);\n      await openModal(EModalNames.confirmModal);\n      confirmDialogConfig.value.message = 'Документи буде видалено безповоротно!';\n      confirmDialogConfig.value.action = async () => {\n        // eslint-disable-next-line no-restricted-syntax\n        for (const document of bulkActionsDialogConfig.value.list) {\n          // eslint-disable-next-line no-await-in-loop\n          const status = await documentsModule.deleteDocument(document);\n          processDocumentActionResult({\n            document,\n            status: status as EDocumentOperationStatus,\n            action: EDocumentActions.delete,\n          });\n        }\n        await closeModal(EModalNames.confirmModal);\n      };\n    };\n    await openModal(EModalNames.documentBulkActionModal);\n  };\n\n  const generateReport = async () => {\n    reportDialogConfig.action = async (fileExtension: keyof typeof SupportedOutputFileFormats) => {\n      const contractorName = contractorsModule.activeContractor?.name || 'mycompany';\n      // eslint-disable-next-line vue/max-len\n      const fileName = `Звіт по документам ${contractorName} від ${DateFormatter.toHumanReadable(new Date())}.${fileExtension.toLocaleLowerCase()}`;\n      await documentsModule.getDocumentsReportId(fileExtension.toLocaleLowerCase(), fileName);\n    };\n    await openModal(EModalNames.loadReportModal);\n  };\n\n  const assignLabel = async (document: IDocument, label: ILabel): Promise<EApiResponseStatus | boolean | undefined> => {\n    const input: ILabelAssignInput = {\n      documentId: document.id,\n      labelId: [label.id],\n    };\n    return documentsModule.assignLabelToDocument([input]);\n  };\n\n  const revokeLabel = async (document: IDocument, label: ILabel): Promise<EApiResponseStatus | boolean | undefined> => {\n    const input: ILabelAssignInput = {\n      documentId: document.id,\n      labelId: [label.id],\n    };\n    return documentsModule.revokeLabelFromDocument([input]);\n  };\n\n  const commitBulkLabelOperation = async (documents: IDocument[], labelsList: ILabel[], operation: ELabelActions = ELabelActions.assign)\n    // eslint-disable-next-line consistent-return\n    : Promise<boolean | EApiResponseStatus | undefined> => {\n    const labelsSelectedList: number[] = [];\n    labelsList.forEach((label: ILabel) => {\n      if (label.isSelected) labelsSelectedList.push(label.id);\n    });\n    const input: ILabelAssignInput[] = [];\n    documents.forEach((document: IDocument) => {\n      input.push({\n        documentId: document.id,\n        labelId: labelsSelectedList,\n      });\n    });\n    await closeModal(EModalNames.assignLabelModal);\n    labelsList.forEach((label: ILabel) => label.isSelected = false);\n    if (operation === ELabelActions.assign) {\n      return documentsModule.assignLabelToDocument(input);\n    }\n    if (operation === ELabelActions.revoke) {\n      return documentsModule.revokeLabelFromDocument(input);\n    }\n  };\n\n  const bulkAssignLabel = async (documents: IDocument[]) => {\n    confirmDialogConfig.value.message = i18n.global.t('components.settings.labels.assignLabelModal.titleAssign');\n    confirmDialogConfig.value.action = async () => {\n      const { list: labelsList } = storeToRefs(labelsModule);\n      const res = await commitBulkLabelOperation(documents, labelsList.value, ELabelActions.assign);\n      if (res === EApiResponseStatus.SUCCESS) {\n        emitter.emit(EEmitterEventNames.toggleSelectAllDocuments);\n        emitter.emit(\n          EEmitterEventNames.success,\n          { text: i18n.global.t(`general.labelActionsMessages.success.${ELabelActions.assign}`) },\n        );\n      }\n      return res;\n    };\n    beforeCloseModalOperation.value = async () => {\n      const { copyLabels } = storeToRefs(labelsModule);\n      copyLabels.value = [];\n      beforeCloseModalOperation.value = null;\n    };\n    await openModal(EModalNames.assignLabelModal);\n  };\n  const bulkRevokeLabel = async (documents: IDocument[]) => {\n    confirmDialogConfig.value.message = i18n.global.t('components.settings.labels.assignLabelModal.titleRemove');\n    confirmDialogConfig.value.action = async () => {\n      const { list: labelsList } = storeToRefs(labelsModule);\n      const res = await commitBulkLabelOperation(documents, labelsList.value, ELabelActions.revoke);\n      if (res === EApiResponseStatus.SUCCESS) {\n        emitter.emit(EEmitterEventNames.toggleSelectAllDocuments);\n        emitter.emit(\n          EEmitterEventNames.success,\n          { text: i18n.global.t(`general.labelActionsMessages.success.${ELabelActions.revoke}`) },\n        );\n      }\n      return res;\n    };\n    beforeCloseModalOperation.value = async () => {\n      const { copyLabels } = storeToRefs(labelsModule);\n      copyLabels.value = [];\n      beforeCloseModalOperation.value = null;\n    };\n    await openModal(EModalNames.assignLabelModal);\n  };\n\n  const generateArchive = async (documents: IDocument[]) => {\n    const selectedFiles: number[] = [];\n    for (let i = 0; i < documents.length; i += 1) {\n      const document = documents[i];\n      if (document.status === EDocumentStatuses.signed) {\n        selectedFiles.push(document.id);\n      }\n    }\n    if (selectedFiles.length === 0) {\n      try {\n        emitter.emit(\n          EEmitterEventNames.error,\n          new Error('Створення архівів доступне тільки для документів у статусі \"Підписаний усіма\"'),\n        );\n        return;\n      } catch (error) {\n        return;\n      }\n    }\n    await openModal(EModalNames.createArchiveModal);\n    confirmDialogConfig.value.message = `Вибрано документів у статусі \"Підписаний усіма\": ${selectedFiles.length}. Створити архів?`;\n    confirmDialogConfig.value.action = async () => {\n      await documentsModule.subscribeToDocumentArchiveWS(EWSEventNamesDocuments.contractorArchiveCreated);\n      await closeModal(EModalNames.confirmModal);\n      documents.forEach((document: IDocument) => document.isSelected = false);\n      const status = await archivesModule.createArchive(selectedFiles);\n      if (status === EApiResponseStatus.SUCCESS) {\n        emitter.emit(EEmitterEventNames.toggleSelectAllDocuments);\n        emitter.emit(\n          EEmitterEventNames.success,\n          { text: 'Формування архіву почалось! Статус можна перевірити у вкладці \"Мої архіви\"' },\n        );\n      }\n    };\n  };\n\n  const showRelatedDocumentsManagementModal = async () => {\n    await openModal(EModalNames.relatedDocumentsManagementModal);\n  };\n\n  const showRejectDocumentReasonModal = async () => {\n    beforeOpenModalOperation.value = async () => {\n      rejectionDialogTitle.value = i18n.global.t('components.documents.RejectDocumentReasonModal.title');\n      rejectionReason.value = '';\n    };\n    await openModal(EModalNames.rejectDocumentReasonModal);\n  };\n\n  const hasRelatedDocumentsForSign = computed(\n    () => currentDocument.value?.hasRelatedDocumentsForSign ?? false,\n  );\n\n  const signCurrentDocument = () => {\n    const { selectedAttachmentId } = storeToRefs(documentsModule);\n\n    selectedAttachmentId.value = null;\n\n    if (currentDocument.value?.status === EDocumentStatuses.attach_required) {\n      signActionAttachModal.value = true;\n      openModal(EModalNames.documentAttachmentsModal);\n\n      return;\n    }\n\n    signDocumentFlow.value = true;\n    signDocument(currentDocument.value as IDocument);\n  };\n\n  const openRelatedDocumentsSignConfirm = () => {\n    openModal(EModalNames.confirmModal);\n    confirmDialogConfig.value.message = 'У вас є непідписані пов’язані документи. Підписати їх?';\n    confirmDialogConfig.value.action = async () => {\n      openModal(EModalNames.documentRelatedSignModal);\n      closeModal(EModalNames.confirmModal);\n    };\n\n    confirmDialogConfig.value.backAction = async () => {\n      closeModal(EModalNames.confirmModal);\n      signCurrentDocument();\n    };\n  };\n\n  const signDocumentAction = () => {\n    if (hasRelatedDocumentsForSign.value) {\n      openRelatedDocumentsSignConfirm();\n\n      return;\n    }\n\n    signCurrentDocument();\n  };\n\n  const proceedToSigning = async () => {\n    const { id: currentDocumentId, status: documentStatus } = currentDocument.value as IDocument;\n\n    if (documentStatus && documentStatus === EDocumentStatuses.in_progress) {\n      signDocumentAction();\n    } else {\n      try {\n        await openModal(EModalNames.confirmModal);\n        confirmDialogConfig.value.message = 'При переході до підписання, повернення до режиму редагування буде не можливим! Продовжити ?';\n        confirmDialogConfig.value.action = async () => {\n          await closeModal(EModalNames.confirmModal);\n          const status = await documentsModule.documentDraftChangeEditStatus(EDocumentDraftStatuses.inProgress);\n          if (status === EApiResponseStatus.SUCCESS) {\n            await documentsModule.getDocument(currentDocumentId);\n            if (\n              currentDocument.value?.status !== EDocumentStatuses.waiting\n              && currentDocument.value?.status !== EDocumentStatuses.approval_waiting\n            ) {\n              signDocumentAction();\n            }\n          }\n        };\n      } catch (error) {\n        console.error(error);\n      }\n    }\n  };\n\n  const approvalDocument = async () => {\n    const { id: currentDocumentId, status: documentStatus } = currentDocument.value as IDocument;\n    const contractorId = signContractorId.value as number;\n\n    const status = await documentsModule.approvalDocument(\n      EDocumentApprovalStatuses.approved,\n      contractorId,\n      currentDocumentId,\n    );\n  };\n\n  const userModule = useUserModule();\n  const contractorSignDocument = computed(() => userModule.hasPermissions('contractorSignDocument'));\n  const contractorCancelDocument = computed(() => userModule.hasPermissions('contractorCancelDocument'));\n  const contractorApproveDocument = computed(() => userModule.hasPermissions('contractorApproveDocument'));\n\n  const isDocumentInfoMenuOpen = ref(false);\n  const getLastAnnulmentAct = () => {\n    const relations = currentDocument.value?.documentRelations;\n    if (!relations || relations.length === 0) {\n      return null;\n    }\n\n    // filter relations by annulmentActTypeId\n    const filteredRelations = relations.filter(\n      (d) => d.type?.code === annulmentActTypeId,\n    );\n\n    if (filteredRelations.length === 0) {\n      return null;\n    }\n\n    // get the latest relation by createdAt date\n    return filteredRelations.reduce((latestItem, currentItem) => {\n      const latestDate = new Date(latestItem?.createdAt as unknown as string);\n      const currentDate = new Date(currentItem?.createdAt as unknown as string);\n      return currentDate > latestDate ? currentItem : latestItem;\n    });\n  };\n\n  const annulmentAct = computed(() => getLastAnnulmentAct());\n\n  const cancelDocument = async (document: IDocument): Promise<void> => {\n    if (cancelReason.value !== '') {\n      const status = await documentsModule.cancelDocument(document);\n      processDocumentActionResult({\n        document,\n        status: status as EDocumentCancelResponse,\n        action: EDocumentActions.cancel,\n      });\n      await closeModal(EModalNames.cancelDocumentReasonModal);\n      redirect({ name: ERouteNames.document, params: { id: annulmentAct?.value?.id }});\n    }\n  };\n\n  const showCancelDocumentReasonModal = async () => {\n    beforeOpenModalOperation.value = async () => {\n      cancelDialogTitle.value = i18n.global.t('components.documents.RejectDocumentReasonModal.title1');\n      cancelReason.value = '';\n    };\n    await openModal(EModalNames.cancelDocumentReasonModal);\n  };\n\n  const copyDocument = async (document: IDocument): Promise<void> => {\n    isDocumentCopy.value = true;\n    if (document?.copyAsDraft) {\n      redirect({ name: ERouteNames.templateDocument, query: { id: document.id as number, type: 'copy' }});\n    } else {\n      redirect({ name: ERouteNames.import, query: { id: document.id as number, type: 'copy' }});\n    }\n  };\n\n  const isApproveButtonVisible = computed(() => {\n    const status = currentDocument.value?.status;\n    const approvalStatus = currentDocument.value?.approvalStatus;\n\n    if (status === EDocumentStatuses.draft || status === EDocumentStatuses.draft_waiting) {\n      return false;\n    }\n\n    return !isTokenSignMode.value && (\n      (approvalStatus === 'wait' || status === EDocumentStatuses.approval_waiting)\n        && contractorApproveDocument.value\n    );\n  });\n\n  const openDocumentTokenGenerationModal = async () => {\n    await openModal(EModalNames.documentTokenGenerationModal);\n  };\n\n  const signStatus = [EDocumentStatuses.waiting, EDocumentStatuses.in_progress, EDocumentStatuses.attach_required, EDocumentStatuses.stamp_required, EDocumentStatuses.stamp_waiting];\n  const tokenSignActionButtons = ['desktopButton', 'mobileSign'];\n  const isEditableDraftActionsVisible = isDraftDocumentPreviewActionsVisible;\n  const documentButtons = reactive([\n    {\n      // 'Підписати',\n      icon: 'IconInfo',\n      tooltip: t('views.documents.document.sign'),\n      tokenTooltip: 'Підписати',\n      onClick: () => signDocumentAction(),\n      show: computed(() => {\n        const canShow = signStatus.includes(currentDocument.value?.status as EDocumentStatuses)\n          && currentDocument.value?.approvalStatus !== 'wait';\n        return isTokenSignMode.value ? canShow : (canShow && contractorSignDocument.value);\n      }),\n      disabled: computed(() => !currentDocument.value?.canBeSigned && currentDocument.value?.status !== EDocumentStatuses.attach_required),\n      button: tokenSignActionButtons,\n    },\n    {\n      icon: 'IconInfo',\n      tooltip: 'Перейти до підписання',\n      onClick: () => proceedToSigning(),\n      show: isEditableDraftActionsVisible,\n      disabled: false,\n      class: 'to-sign-button',\n      type: 'primary',\n      button: ['desktopButton', 'mobileSign'],\n    },\n    {\n      icon: 'IconInfo',\n      tooltip: 'Погодити',\n      onClick: () => approvalDocument(),\n      show: isApproveButtonVisible,\n      disabled: false,\n      class: 'to-sign-button',\n      button: ['desktopButton', 'mobileSign'],\n    },\n    {\n      // 'Керування',\n      icon: 'IconInfo',\n      tooltip: t('views.documents.document.management'),\n      onClick: () => isDocumentInfoMenuOpen.value = true,\n      show: true,\n      disabled: computed(() => !currentDocument.value),\n      button: ['mobile'],\n    },\n    // 'Редагування',\n    {\n      icon: 'IconInfo',\n      tooltip: 'Редагувати',\n      onClick: () => redirectToAdditionDocument(),\n      show: isEditableDraftActionsVisible,\n      type: 'gray200',\n      class: 'edit-button',\n      disabled: computed(() => !currentDocument.value),\n      button: ['desktopButton', 'mobileSign'],\n    },\n    {\n      // 'Анулювати',\n      icon: 'IconBlock',\n      tooltip: t('views.documents.document.cancel'),\n      onClick: showCancelDocumentReasonModal,\n      type: 'gray200',\n      show: computed(() => !isTokenSignMode.value && currentDocument.value?.status === EDocumentStatuses.signed\n        && currentDocument.value?.type?.code !== annulmentActTypeId),\n      disabled: computed(() => !currentDocument.value),\n      button: contractorCancelDocument.value ? ['mobile', 'desktopButton'] : [],\n    },\n    {\n      // 'Додати підпис в статусі signed',\n      icon: 'IconInfo',\n      tooltip: 'Додати підпис',\n      onClick: () => signDocumentAction(),\n      type: 'gray200',\n      show: computed(() => currentDocument.value?.status === EDocumentStatuses.signed\n          && currentDocument.value?.type?.code !== annulmentActTypeId\n          && (isTokenSignMode.value || contractorCancelDocument.value)),\n      disabled: computed(() => !currentDocument.value),\n      button: tokenSignActionButtons,\n      tokenTooltip: 'Додати підпис',\n    },\n    {\n      // 'Акт ануляції',\n      icon: 'IconScan',\n      tooltip: t('views.documents.document.toAnulment'),\n      onClick: () => (viewDocument(annulmentAct.value as IDocument, false)),\n      type: 'gray200',\n      show: computed(() => !isTokenSignMode.value && currentDocument.value?.status === EDocumentStatuses.in_annulment && annulmentAct.value),\n      disabled: computed(() => !currentDocument.value),\n      button: ['mobile', 'desktopButton'],\n    },\n    {\n      // 'Відхилити',\n      icon: 'IconCancel',\n      tooltip: t('views.documents.document.reject'),\n      tokenTooltip: 'Відхилити',\n      onClick: showRejectDocumentReasonModal,\n      type: 'gray200',\n      show: computed(() => !!currentDocument.value?.showRejected\n        && (isTokenSignMode.value || contractorCancelDocument.value)),\n      disabled: false,\n      button: ['desktopButton', 'mobile'],\n    },\n    {\n      icon: 'IconUser',\n      tooltip: 'Доступ за посиланням',\n      onClick: async () => openDocumentTokenGenerationModal(),\n      show: computed(() => !isTokenSignMode.value),\n      disabled: isDocumentUnavailable,\n      button: ['mobile', 'desktopButtonsHelp'],\n    },\n    {\n      // 'Копіювати,\n      icon: 'IconAllDocuments',\n      tooltip: t('views.documents.document.copy'),\n      onClick: async () => copyDocument(currentDocument.value as IDocument),\n      show: computed(() => !isTokenSignMode.value),\n      disabled: isDocumentUnavailable,\n      button: ['mobile', 'desktopButtonsHelp'],\n    },\n    {\n      // 'Завантажити',\n      icon: 'IconDownloadV2',\n      tooltip: t('views.documents.document.download'),\n      onClick: () => currentDocument.value?.forPrint?.download(),\n      show: true,\n      disabled: computed(() => !currentDocument.value),\n      button: ['mobile', 'desktopButtonsHelp'],\n    },\n    {\n      // 'Роздрукувати',\n      icon: 'IconPrint',\n      tooltip: t('views.documents.document.print'),\n      onClick: () => currentDocument.value?.forPrint?.print(),\n      show: true,\n      disabled: computed(() => !currentDocument.value),\n      button: ['mobile', 'desktopButtonsHelp'],\n    },\n    {\n      // 'Видалити',\n      icon: 'IconTrash',\n      tooltip: t('views.documents.document.remove'),\n      onClick: () => deleteDocument(currentDocument.value as IDocument),\n      show: computed(() => !isTokenSignMode.value),\n      disabled: computed(() => !currentDocument.value),\n      button: contractorCancelDocument.value ? ['mobile', 'desktopButtonsHelp'] : [],\n    },\n  ]);\n\n  const getDocumentButtonTooltip = (button: { tooltip: string; tokenTooltip?: string }) => (\n    isTokenSignMode.value && button.tokenTooltip ? button.tokenTooltip : button.tooltip\n  );\n\n  const resolveButtonValue = <T>(value: T | Ref<T>): T => unref(value as Ref<T>);\n\n  const isDocumentButtonVisible = (button: { show: boolean | Ref<boolean> }) => resolveButtonValue(button.show);\n\n  const isDocumentButtonPlacement = (button: { button: string[] | Ref<string[]> }, placement: string) => (\n    resolveButtonValue(button.button).includes(placement)\n  );\n\n  return {\n    bulkPrintDocument,\n    rejectDocument,\n    signDocument,\n    cancelDocument,\n    bulkSignDocument,\n    viewDocument,\n    deleteDocument,\n    bulkDeleteDocument,\n    generateReport,\n    assignLabel,\n    revokeLabel,\n    bulkAssignLabel,\n    bulkRevokeLabel,\n    generateArchive,\n    showRelatedDocumentsManagementModal,\n    showRejectDocumentReasonModal,\n    showCancelDocumentReasonModal,\n    documentButtons,\n    isDocumentInfoMenuOpen,\n    getDocumentButtonTooltip,\n    isDocumentButtonVisible,\n    isDocumentButtonPlacement,\n  };\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"error-page @container\" }\nconst _hoisted_2 = { class: \"error-page__image\" }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = { class: \"error-page__message-wrapper\" }\nconst _hoisted_5 = { class: \"error-page__title\" }\nconst _hoisted_6 = { class: \"error-page__message\" }\nconst _hoisted_7 = { class: \"error-page__action\" }\n\nimport {\n  ENdButtonTypes,\n  NdButton,\n} from '@/components/v2/ui';\nimport { useAuthModule } from '@/modules/store/auth';\n\n\nexport default /*@__PURE__*/_defineComponent({\n  __name: 'UnknownError',\n  setup(__props) {\n\nconst authModule = useAuthModule();\n\nconst onExit = (): void => {\n  authModule.logOut();\n};\n\nreturn (_ctx: any,_cache: any) => {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", _hoisted_2, [\n      _createElementVNode(\"img\", {\n        class: \"error-page__image-item\",\n        src: require('@/assets/images/ErrorPageImage_300.png'),\n        loading: \"lazy\",\n        alt: \"Error page image\"\n      }, null, 8, _hoisted_3)\n    ]),\n    _createElementVNode(\"div\", _hoisted_4, [\n      _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('views.errors.unknownError.title')), 1),\n      _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('views.errors.unknownError.message')), 1),\n      _createElementVNode(\"div\", _hoisted_7, [\n        _createVNode(_unref(NdButton), {\n          class: \"user-menu__content-button\",\n          text: _ctx.$t('views.errors.unknownError.buttonCaption'),\n          type: _unref(ENdButtonTypes).primary,\n          onClick: _cache[0] || (_cache[0] = ($event: any) => (onExit()))\n        }, null, 8, [\"text\", \"type\"])\n      ])\n    ])\n  ]))\n}\n}\n\n})","<template>\n  <div class=\"error-page @container\">\n    <div class=\"error-page__image\">\n      <img\n        class=\"error-page__image-item\"\n        :src=\"require('@/assets/images/ErrorPageImage_300.png')\"\n        loading=\"lazy\"\n        alt=\"Error page image\"\n      />\n    </div>\n    <div class=\"error-page__message-wrapper\">\n      <div class=\"error-page__title\">{{ $t('views.errors.unknownError.title') }}</div>\n      <div class=\"error-page__message\">{{ $t('views.errors.unknownError.message') }}</div>\n      <div class=\"error-page__action\">\n        <NdButton\n          class=\"user-menu__content-button\"\n          :text=\"$t('views.errors.unknownError.buttonCaption')\"\n          :type=\"ENdButtonTypes.primary\"\n          @click=\"onExit()\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n  ENdButtonTypes,\n  NdButton,\n} from '@/components/v2/ui';\nimport { useAuthModule } from '@/modules/store/auth';\n\nconst authModule = useAuthModule();\n\nconst onExit = (): void => {\n  authModule.logOut();\n};\n</script>\n\n<style scoped lang=\"scss\">\n.error-page {\n  @apply absolute top-0 right-0 bottom-0 left-0\n  z-50 flex flex-col items-center justify-center bg-white\n  @3lg:flex-row;\n}\n\n.error-page__image {\n  @apply w-[95px] h-[95px] mr-0 mb-8\n  @3lg:w-[232px] @3lg:h-[232px] @3lg:mb-0;\n}\n\n.error-page__image-item {\n  @apply w-[95px] h-[95px] @3lg:w-[232px] @3lg:h-[232px];\n}\n\n.error-page__message-wrapper {\n  @apply flex flex-col justify-center items-center;\n}\n\n.error-page__title {\n  @apply block text-center font-np-medium\n  text-np-6 text-black font-medium mb-3\n  @3lg:mb-4 @3lg:text-np-4;\n}\n\n.error-page__message {\n  @apply font-inter text-center text-inter-6 mb-8 @3lg:text-inter-3;\n}\n\n.error-page__action {\n  @apply w-[337px] @3lg:w-[300px] mx-auto;\n}\n</style>\n","import script from \"./UnknownError.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UnknownError.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UnknownError.vue?vue&type=style&index=0&id=54fd589c&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-54fd589c\"]])\n\nexport default __exports__","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn) {\n\tif(chunkIds) {\n\t\tdeferred.push([chunkIds, fn]);\n\t\treturn;\n\t}\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = function(body) {\n\tvar mod;\n\treturn function() {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) { return \"js/\" + ({\"94\":\"additionDocument-017397ff\",\"180\":\"Upload\",\"305\":\"Organizations\",\"396\":\"AccessRights\",\"443\":\"All-adb37a53\",\"452\":\"Surveys\",\"601\":\"Contractors\",\"615\":\"additionDocument-d8c7df15\",\"684\":\"Admin\",\"815\":\"Documents\",\"828\":\"Import\",\"1085\":\"mySettings\",\"3078\":\"All-4c120c8f\",\"3816\":\"EditAccessRights\",\"4247\":\"All-d87c119a\",\"4297\":\"AdminExports\",\"4752\":\"Exports\",\"5095\":\"All-ad6a2f20\",\"5400\":\"OrganizationDetails\",\"5961\":\"Users\",\"6188\":\"Leads\",\"6195\":\"credentials\",\"6570\":\"FavoriteDivision\",\"7616\":\"Tags\",\"8248\":\"Settings\",\"8490\":\"All-663611b4\",\"9224\":\"Templates\",\"9403\":\"All-2f393c84\",\"9443\":\"StatusCheck\"}[chunkId] || chunkId) + \"-chunk.js?t=1793697283758\"; };","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) { return \"css/\" + ({\"94\":\"additionDocument-017397ff\",\"180\":\"Upload\",\"305\":\"Organizations\",\"396\":\"AccessRights\",\"452\":\"Surveys\",\"601\":\"Contractors\",\"615\":\"additionDocument-d8c7df15\",\"815\":\"Documents\",\"828\":\"Import\",\"1085\":\"mySettings\",\"3078\":\"All-4c120c8f\",\"3816\":\"EditAccessRights\",\"4247\":\"All-d87c119a\",\"4297\":\"AdminExports\",\"4752\":\"Exports\",\"5095\":\"All-ad6a2f20\",\"5400\":\"OrganizationDetails\",\"5961\":\"Users\",\"6188\":\"Leads\",\"6195\":\"credentials\",\"7616\":\"Tags\",\"8248\":\"Settings\",\"8490\":\"All-663611b4\",\"9224\":\"Templates\"}[chunkId] || chunkId) + \".\" + {\"94\":\"9b365149\",\"180\":\"111671d3\",\"305\":\"0f966312\",\"396\":\"8f565549\",\"452\":\"641b7764\",\"601\":\"accddfda\",\"615\":\"ae52e411\",\"815\":\"4248c839\",\"828\":\"2121a129\",\"866\":\"cf107b69\",\"1085\":\"4b33d95e\",\"3078\":\"20ebd20f\",\"3660\":\"449c3e25\",\"3816\":\"a51fa810\",\"4247\":\"8cb18bef\",\"4297\":\"821a9ca6\",\"4752\":\"beea6bae\",\"5093\":\"ac27586c\",\"5095\":\"ff98a847\",\"5400\":\"f91d3a4e\",\"5933\":\"7aaf34b1\",\"5961\":\"aeca27e6\",\"6188\":\"87872aa6\",\"6195\":\"1000b42d\",\"7616\":\"34b051fc\",\"8248\":\"c066532f\",\"8490\":\"830aabe5\",\"9224\":\"19cdb70c\",\"9726\":\"68c32036\"}[chunkId] + \".css\"; };","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); };","var inProgress = {};\nvar dataWebpackPrefix = \"Novadoc:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = function(x) {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t4905: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"94\":1,\"180\":1,\"305\":1,\"396\":1,\"452\":1,\"601\":1,\"615\":1,\"815\":1,\"828\":1,\"866\":1,\"1085\":1,\"3078\":1,\"3660\":1,\"3816\":1,\"4247\":1,\"4297\":1,\"4752\":1,\"5093\":1,\"5095\":1,\"5400\":1,\"5933\":1,\"5961\":1,\"6188\":1,\"6195\":1,\"7616\":1,\"8248\":1,\"8490\":1,\"9224\":1,\"9726\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4905: 0,\n\t5634: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(5634 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkNovadoc\"] = self[\"webpackChunkNovadoc\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4817,7855,1548,1591,9991,1676,8608,5634,4719,45,7869,2487,899,5808,6609,3502,927,2255,4687,182,6678,4957,4634,2172,4145,2858,5284,4923,6444,1793,4091,4442,5149,5539,7122,5839,6010,7905,6937,8033,9524,3709,745,2501,7636,3276,8055,8093,1378,3429,785,3466,2074,2655,6790,6920,7501,8462,8666,7589,4097,8337,6334,4331,3990,9172,9673,1425,2466,6808,4396,2774], function() { return __webpack_require__(43287); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["useTutorial","tutorialModule","useTutorialModule","t","te","useI18n","route","useRoute","profile","storeToRefs","useUserModule","showNotification","useNotifications","redirect","useNavigationHelpers","showTutorial","routeName","messageKey","String","name","value","loginReminder","ELoginReminderType","normalLogin","checkIfTutorialMessageWasShown","welcomeMessageWasShown","text","duration","type","EToastNotificationTypes","info","addToAlreadyShown","watch","newVal","isAuthenticatedByKey","ERouteNames","allDocuments","myCredentials","fullPath","includes","oldLogin","sectionsWhereTutorialMessageWasShown","useEvents","errorsModule","useErrorsModule","authModule","useAuthModule","notificationsModule","useNotificationsModule","addNotification","list","notificationsList","userModule","lastContractor","wsChannel","addComment","getLastDocumentComment","useDocumentCommentsModule","currentDocument","useDocumentsModule","registerEvents","emitter","on","EEmitterEventNames","error","logError","getErrorMessage","success","config","warning","refreshBearerToken","token","setBearerToken","then","catch","e","console","logOut","refreshToken","unsubscribeFromWebsocketEvents","EWSEventNames","updateNotifications","notificationDTOAsString","notificationDTO","JSON","parse","data","stringify","newNotification","ESystemNotificationTypes","DocumentCommentNotification","toastNotificationType","title","payload","documentName","commentMessage","commentDTOAsString","commentDTO","Number","id","document_id","document","addEventListener","unregisterEvents","off","removeEventListener","contractorId","getMyNotifications","subscribeToWebsocketEvents","notify","useNotification","encryptValue","publicKey","forge","pki","publicKeyFromPem","publicKeyPem","trim","encryptedBytes","encrypt","encryptedBase64","util","encode64","err","__webpack_exports__","A","i18n","global","processDocumentActionResult","params","action","status","EDocumentOperationStatus","EDocumentCancelResponse","toLowerCase","emit","Error","unknownError","useDocumentActions","edsModule","useEDSModule","documentsModule","tokenSignMode","useDocumentSignTokenMode","isTokenSignMode","computed","AuthHeadersHelper","isSignTokenAuth","contractorsModule","useContractorsModule","labelsModule","useLabelsModule","archivesModule","useArchivesModule","signContractorId","useSignContractorId","rejectionReason","rejectionDialogTitle","cancelReason","cancelDialogTitle","signActionAttachModal","isDocumentCopy","isDocumentDeleted","isDocumentUnavailable","isDraftDocumentPreviewActionsVisible","isEditable","EDocumentStatuses","draft","openModal","closeModal","reportDialogConfig","readEdsDialogConfig","useUiModule","beforeCloseModalOperation","beforeOpenModalOperation","afterCloseModalOperation","confirmDialogConfig","bulkActionsDialogConfig","signDocumentFlow","ref","surveysModule","useSurveysModule","showSurvey","surveyActions","useSurveyActions","bulkPrintDocument","async","documents","actionType","EDocumentActions","print","EModalNames","documentBulkActionModal","forPrint","viewDocument","openInNewTab","VUE_APP_BASE_URL","process","window","open","router","push","applySignatureAndStampIfPossible","keystoreList","keyTypeDevice","resultStatus","sign","keystore","signDocument","showSurveyModal","signature","loadedSignature","stamp","getSignatureKey","tax_number","attach_object_id","getUniqueSignatures","signatures","map","Map","key","has","set","Array","from","values","applyAttachments","signatureTaxNumber","stampTaxNumber","attachSignatures","signSequentially","filtered","filter","required","uniqueSignatures","reduce","prev","documentObjectsApi","raw","object","objects","find","item","attachName","attactData","signAttachment","Promise","resolve","redirectToAdditionDocument","documentDraftChangeEditStatus","EDocumentDraftStatuses","edit","additionDocument","query","getDocumentSignTokenQuery","onSuccess","resetSignature","resetStamp","showStampUi","showSignatureUi","showSaveEds","showTabsHeader","showDiiaSign","dialogAction","EReadEdsDialogActions","signing","readEDSModal","bulkSignDocument","rejectDocument","reject","rejectDocumentReasonModal","deleteDocument","confirmModal","message","delete","bulkDeleteDocument","generateReport","contractorName","activeContractor","fileName","DateFormatter","toHumanReadable","Date","fileExtension","toLocaleLowerCase","getDocumentsReportId","loadReportModal","assignLabel","label","input","documentId","labelId","assignLabelToDocument","revokeLabel","revokeLabelFromDocument","commitBulkLabelOperation","labelsList","operation","ELabelActions","assign","labelsSelectedList","forEach","isSelected","assignLabelModal","revoke","bulkAssignLabel","res","EApiResponseStatus","SUCCESS","toggleSelectAllDocuments","copyLabels","bulkRevokeLabel","generateArchive","selectedFiles","i","length","signed","createArchiveModal","subscribeToDocumentArchiveWS","EWSEventNamesDocuments","contractorArchiveCreated","createArchive","showRelatedDocumentsManagementModal","relatedDocumentsManagementModal","showRejectDocumentReasonModal","hasRelatedDocumentsForSign","signCurrentDocument","selectedAttachmentId","attach_required","documentAttachmentsModal","openRelatedDocumentsSignConfirm","documentRelatedSignModal","backAction","signDocumentAction","proceedToSigning","currentDocumentId","documentStatus","in_progress","inProgress","getDocument","waiting","approval_waiting","approvalDocument","EDocumentApprovalStatuses","approved","contractorSignDocument","hasPermissions","contractorCancelDocument","contractorApproveDocument","isDocumentInfoMenuOpen","getLastAnnulmentAct","relations","documentRelations","filteredRelations","d","annulmentActTypeId","code","latestItem","currentItem","latestDate","createdAt","currentDate","annulmentAct","cancelDocument","cancel","cancelDocumentReasonModal","showCancelDocumentReasonModal","copyDocument","copyAsDraft","templateDocument","import","isApproveButtonVisible","approvalStatus","draft_waiting","openDocumentTokenGenerationModal","documentTokenGenerationModal","signStatus","stamp_required","stamp_waiting","tokenSignActionButtons","isEditableDraftActionsVisible","documentButtons","reactive","icon","tooltip","tokenTooltip","onClick","show","canShow","disabled","canBeSigned","button","class","in_annulment","showRejected","download","getDocumentButtonTooltip","resolveButtonValue","unref","isDocumentButtonVisible","isDocumentButtonPlacement","placement","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","UnknownErrorvue_type_script_setup_true_lang_ts","_defineComponent","__name","setup","__props","onExit","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","src","require","loading","alt","_toDisplayString","$t","_createVNode","_unref","NdButton","ENdButtonTypes","primary","$event","__exports__","exportHelper","UnknownError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","a","cw","body","mod","definition","isArray","binding","descriptor","enumerable","get","o","defineProperty","f","chunkId","all","promises","u","miniCssF","g","globalThis","this","Function","hmd","create","children","obj","prop","prototype","hasOwnProperty","dataWebpackPrefix","l","url","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","onScriptComplete","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","nmd","paths","dn","x","getOwnPropertyDescriptor","writable","configurable","p","createStylesheet","fullhref","oldTag","linkTag","rel","nonce","onLinkComplete","errorType","realHref","href","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self"],"sourceRoot":""}