@anzusystems/common-admin 1.47.0-beta.99 → 1.47.0-beta.dev-1771794052

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labs.js","sources":["../src/labs/filters/ADatatableOrdering.vue","../src/labs/filters/ADatatablePagination.vue","../src/labs/api/useApiFetchByIds.ts","../src/labs/api/useApiFetchListBatch.ts","../src/labs/job/jobApi.ts","../src/labs/filters/datatableColumns.ts","../src/labs/subjectSelect/useSubjectSelect.ts","../src/labs/subjectSelect/ASubjectSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, type Ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n type DatatableOrderingOption,\n type DatatableOrderingOptions,\n SORT_BY_SCORE,\n SortOrder,\n} from '@/composables/system/datatableColumns'\nimport { isUndefined } from '@/utils/common'\nimport { DatatablePaginationKey } from '@/labs/filters/filterInjectionKeys'\n\nimport type { Pagination } from '@/labs/filters/pagination'\n\nconst props = withDefaults(\n defineProps<{\n variant?: 'id' | 'createdAt' | 'most-relevant'\n customOptions?: undefined | DatatableOrderingOptions\n paginationUpdateCustomCb?: ((option: DatatableOrderingOption, pagination: Ref<Pagination>) => void) | undefined\n }>(),\n {\n variant: 'id',\n customOptions: undefined,\n paginationUpdateCustomCb: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'sortByChange', data: DatatableOrderingOption): void\n}>()\n\nconst modelValue = defineModel<number>('modelValue', {\n default: 1,\n required: false,\n})\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst defaultItemsCreatedAt: DatatableOrderingOptions = [\n { id: 1, titleT: 'common.system.datatable.ordering.mostRecent', sortBy: { key: 'createdAt', order: SortOrder.Desc } },\n { id: 2, titleT: 'common.system.datatable.ordering.oldest', sortBy: { key: 'createdAt', order: SortOrder.Asc } },\n]\n\nconst defaultItemsId: DatatableOrderingOptions = [\n { id: 1, titleT: 'common.system.datatable.ordering.mostRecent', sortBy: { key: 'id', order: SortOrder.Desc } },\n { id: 2, titleT: 'common.system.datatable.ordering.oldest', sortBy: { key: 'id', order: SortOrder.Asc } },\n]\n\nconst defaultItemsMostRelevant: DatatableOrderingOptions = [\n {\n id: 3,\n titleT: 'common.system.datatable.ordering.mostRelevant',\n sortBy: { key: SORT_BY_SCORE, order: SortOrder.Desc },\n },\n { id: 1, titleT: 'common.system.datatable.ordering.mostRecent', sortBy: { key: 'createdAt', order: SortOrder.Desc } },\n { id: 2, titleT: 'common.system.datatable.ordering.oldest', sortBy: { key: 'createdAt', order: SortOrder.Asc } },\n]\n\nconst activeTitle = computed(() => {\n const found = options.value.find((item: any) => item.id === modelValue.value)\n if (found) return t(found.titleT)\n return ''\n})\n\nconst options = computed(() => {\n if (props.customOptions) return props.customOptions\n if (props.variant === 'most-relevant') return defaultItemsMostRelevant\n if (props.variant === 'id') return defaultItemsId\n return defaultItemsCreatedAt\n})\n\nconst onItemClick = (item: DatatableOrderingOption) => {\n modelValue.value = item.id\n}\n\nconst paginationUpdateDefault = (found: DatatableOrderingOption) => {\n if (!found.sortBy) {\n pagination.value = { ...pagination.value, ...{ sortBy: null, descending: true } }\n emit('sortByChange', found)\n }\n pagination.value.sortBy = found.sortBy\n emit('sortByChange', found)\n}\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n const found = options.value.find((option) => {\n return option.id === newValue\n })\n if (isUndefined(found)) {\n return\n }\n if (isUndefined(props.paginationUpdateCustomCb)) {\n paginationUpdateDefault(found)\n return\n }\n props.paginationUpdateCustomCb(found, pagination)\n})\n\nwatch(\n pagination,\n (newValue, oldValue) => {\n if (newValue.sortBy?.key === oldValue?.sortBy?.key && newValue.sortBy?.order === oldValue?.sortBy?.order) {\n return\n }\n const found = options.value.find((option) => {\n return newValue.sortBy?.key === option.sortBy?.key && newValue.sortBy?.order === option.sortBy?.order\n })\n if (isUndefined(found)) {\n return\n }\n modelValue.value = found.id\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div class=\"d-flex align-center justify-center\">\n <div class=\"text-caption mr-1\">\n {{ t('common.system.datatable.ordering.title') }}:\n </div>\n <VBtn\n variant=\"text\"\n rounded=\"xl\"\n size=\"small\"\n append-icon=\"mdi-chevron-down\"\n >\n {{ activeTitle }}\n <VMenu\n activator=\"parent\"\n location=\"bottom\"\n close-on-content-click\n >\n <VList\n density=\"compact\"\n class=\"pa-0\"\n >\n <VListItem\n v-for=\"item in options\"\n :key=\"item.id\"\n @click=\"onItemClick(item)\"\n >\n <VListItemTitle :class=\"{ 'font-weight-bold': item.id === modelValue }\">\n {{ t(item.titleT) }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { isNull, isUndefined } from '@/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { DatatablePaginationKey } from '@/labs/filters/filterInjectionKeys'\nimport { useThrottleFn } from '@vueuse/core'\n\nwithDefaults(\n defineProps<{\n itemsPerPageOptions?: number[]\n hideRecordsPerPage?: boolean\n }>(),\n {\n itemsPerPageOptions: () => [10, 25, 50],\n hideRecordsPerPage: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst lastPage = computed(() => {\n return Math.ceil(pagination.value.totalCount / pagination.value.rowsPerPage)\n})\n\nconst displayedFrom = computed(() => {\n return pagination.value.page * pagination.value.rowsPerPage - pagination.value.rowsPerPage + 1\n})\n\nconst displayedTo = computed(() => {\n return (\n pagination.value.page * pagination.value.rowsPerPage -\n pagination.value.rowsPerPage +\n pagination.value.currentViewCount\n )\n})\n\nconst disabledFirstAndPrev = computed(() => {\n return pagination.value.page === 1\n})\n\nconst disabledLast = computed(() => {\n return !isNull(pagination.value.hasNextPage) || pagination.value.page === lastPage.value\n})\n\nconst disabledNext = computed(() => {\n return (\n (isNull(pagination.value.hasNextPage) && pagination.value.page === lastPage.value) ||\n pagination.value.hasNextPage === false\n )\n})\n\nconst computedTotalCountText = computed(() => {\n if (!isNull(pagination.value.hasNextPage)) {\n return pagination.value.hasNextPage ? displayedTo.value + 1 + '+' : displayedTo.value\n }\n return pagination.value.totalCount\n})\n\nwatch(\n () => pagination.value.rowsPerPage,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n pagination.value.page = 1\n emit('change')\n }\n }\n)\n\nwatch(\n () => pagination.value.page,\n (newValue, oldValue) => {\n if (newValue !== oldValue) {\n emit('change')\n }\n }\n)\n\nconst onClickFirst = useThrottleFn(() => {\n pagination.value.page = 1\n}, 300)\n\nconst onClickLast = useThrottleFn(() => {\n pagination.value.page = lastPage.value\n}, 300)\n\nconst onClickPrev = useThrottleFn(() => {\n pagination.value.page = pagination.value.page - 1\n}, 300)\n\nconst onClickNext = useThrottleFn(() => {\n pagination.value.page = pagination.value.page + 1\n}, 300)\n</script>\n\n<template>\n <div class=\"anzu-data-footer\">\n <div\n v-if=\"!hideRecordsPerPage\"\n class=\"anzu-data-footer__page-limit\"\n >\n {{ t('common.system.datatable.itemsPerPage') }}:\n <VBtnToggle\n v-model=\"pagination.rowsPerPage\"\n class=\"ml-2\"\n density=\"compact\"\n mandatory\n data-cy=\"table-size\"\n >\n <VBtn\n v-for=\"item in itemsPerPageOptions\"\n :key=\"item\"\n :color=\"item === pagination.rowsPerPage ? 'secondary' : ''\"\n :value=\"item\"\n density=\"compact\"\n size=\"small\"\n variant=\"text\"\n >\n {{ item }}\n </VBtn>\n </VBtnToggle>\n </div>\n <div class=\"anzu-data-footer__pagination\">\n {{ displayedFrom }} - {{ displayedTo }} {{ t('common.system.datatable.from') }} {{ computedTotalCountText }}\n </div>\n <div class=\"anzu-data-footer__icons-before\">\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-page-first\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickFirst\"\n />\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-chevron-left\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickPrev\"\n />\n </div>\n <div class=\"current-page\">\n <span>{{ pagination.page }}</span>\n </div>\n <div class=\"anzu-data-footer__icons-after\">\n <VBtn\n :disabled=\"disabledNext\"\n icon=\"mdi-chevron-right\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickNext\"\n />\n <VBtn\n :disabled=\"disabledLast\"\n icon=\"mdi-page-last\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickLast\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.anzu-data-footer {\n margin-top: 10px;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n font-size: 0.75rem;\n padding: 0 8px;\n\n > div.current-page {\n padding-left: 10px;\n padding-right: 10px;\n user-select: none;\n min-width: 40px;\n display: flex;\n text-align: center;\n align-items: center;\n justify-content: center;\n }\n\n &__page-limit {\n display: flex;\n align-items: center;\n flex: 0 0 0;\n justify-content: flex-end;\n white-space: nowrap;\n margin-right: 14px;\n }\n\n &__pagination {\n display: block;\n text-align: center;\n margin: 0 32px 0 24px;\n }\n}\n</style>\n","import { AnzuApiResponseCodeError, isAnzuApiResponseCodeError } from '@/model/error/AnzuApiResponseCodeError'\nimport { AnzuApiValidationError, axiosErrorResponseHasValidationData } from '@/model/error/AnzuApiValidationError'\nimport { replaceUrlParameters, type UrlParams } from '@/services/api/apiHelper'\nimport { isValidHTTPStatus } from '@/utils/response'\nimport axios, { type AxiosRequestConfig } from 'axios'\nimport { AnzuApiForbiddenError, axiosErrorResponseIsForbidden } from '@/model/error/AnzuApiForbiddenError'\nimport { AnzuFatalError } from '@/model/error/AnzuFatalError'\nimport {\n AnzuApiForbiddenOperationError,\n axiosErrorResponseHasForbiddenOperationData,\n} from '@/model/error/AnzuApiForbiddenOperationError'\nimport { HTTP_STATUS_NO_CONTENT } from '@/composables/statusCodes'\nimport {\n AnzuApiDependencyExistsError,\n axiosErrorResponseHasDependencyExistsData,\n} from '@/model/error/AnzuApiDependencyExistsError'\nimport type { DocId, IntegerId } from '@/types/common'\nimport { AnzuApiTimeoutError, axiosErrorIsTimeout } from '@/model/error/AnzuApiTimeoutError'\nimport { AnzuApiAxiosError } from '@/model/error/AnzuApiAxiosError'\nimport { isDefined, isUndefined } from '@/utils/common'\nimport type { AxiosClientFn } from '@/labs/api/client'\nimport { useApiQueryBuilder } from '@/labs/api/useApiQueryBuilder'\n\nexport type UseApiFetchByIdsParams = {\n client: AxiosClientFn\n system: string\n entity: string\n urlTemplate?: string\n urlParams?: UrlParams\n options?: AxiosRequestConfig\n isSearchApi?: boolean\n field?: string\n}\n\nexport type FetchByIdsParams = {\n urlTemplateOverride?: string\n urlParamsOverride?: UrlParams\n}\n\n/**\n * @template T Type used for request payload, by default same as Response type\n * @template R Response type override, optional\n */\nconst generateByIdsApiQuery = (ids: IntegerId[] | DocId[], isSearchApi: boolean, field = 'id'): string => {\n const { querySetLimit, querySetOffset, querySetOrder, queryBuild, queryAddFilter, queryAdd } = useApiQueryBuilder()\n const limit = ids.length // todo add batch fetch\n querySetLimit(limit)\n querySetOffset(1, limit)\n querySetOrder(field, false)\n if (isSearchApi) queryAdd(field, ids.join(','))\n else queryAddFilter('in', field, ids.join(','))\n\n return queryBuild()\n}\n\n/**\n * @deprecated Use object params form:\n * useApiFetchByIds({ client, system, entity, urlTemplate, urlParams, options, isSearchApi, field })\n */\nexport function useApiFetchByIds<R>(\n client: AxiosClientFn,\n system: string,\n entity: string,\n urlTemplate?: string,\n urlParams?: UrlParams,\n options?: AxiosRequestConfig,\n isSearchApi?: boolean,\n field?: string\n): UseApiFetchByIdsReturnType<R>\n\nexport function useApiFetchByIds<R>(params: UseApiFetchByIdsParams): UseApiFetchByIdsReturnType<R>\n\nexport function useApiFetchByIds<R>(\n clientOrParams: AxiosClientFn | UseApiFetchByIdsParams,\n system?: string,\n entity?: string,\n urlTemplate?: string,\n urlParams?: UrlParams,\n options?: AxiosRequestConfig,\n isSearchApi?: boolean,\n field?: string\n): UseApiFetchByIdsReturnType<R> {\n let resolvedClient: AxiosClientFn\n let resolvedSystem: string\n let resolvedEntity: string\n let resolvedUrlTemplate: string | undefined\n let resolvedUrlParams: UrlParams | undefined\n let resolvedOptions: AxiosRequestConfig\n let resolvedIsSearchApi: boolean\n let resolvedField: string\n\n if (typeof clientOrParams === 'function') {\n resolvedClient = clientOrParams\n resolvedSystem = system!\n resolvedEntity = entity!\n resolvedUrlTemplate = urlTemplate\n resolvedUrlParams = urlParams\n resolvedOptions = options ?? {}\n resolvedIsSearchApi = isSearchApi ?? false\n resolvedField = field ?? 'id'\n } else {\n resolvedClient = clientOrParams.client\n resolvedSystem = clientOrParams.system\n resolvedEntity = clientOrParams.entity\n resolvedUrlTemplate = clientOrParams.urlTemplate\n resolvedUrlParams = clientOrParams.urlParams\n resolvedOptions = clientOrParams.options ?? {}\n resolvedIsSearchApi = clientOrParams.isSearchApi ?? false\n resolvedField = clientOrParams.field ?? 'id'\n }\n\n let abortController: AbortController | null = null\n\n const executeFetch = async (\n ids: DocId[] | IntegerId[],\n urlTemplateOverrideOrParams: string | FetchByIdsParams | undefined = undefined,\n urlParamsOverride: UrlParams | undefined = undefined\n ): Promise<R> => {\n abortController = new AbortController()\n\n let resolvedUrlTemplateOverride: string | undefined\n let resolvedUrlParamsOverride: UrlParams | undefined\n\n if (typeof urlTemplateOverrideOrParams === 'object' && urlTemplateOverrideOrParams !== null) {\n resolvedUrlTemplateOverride = urlTemplateOverrideOrParams.urlTemplateOverride\n resolvedUrlParamsOverride = urlTemplateOverrideOrParams.urlParamsOverride\n } else {\n resolvedUrlTemplateOverride = urlTemplateOverrideOrParams\n resolvedUrlParamsOverride = urlParamsOverride\n }\n\n try {\n const params = isDefined(resolvedUrlParamsOverride) ? resolvedUrlParamsOverride : resolvedUrlParams\n const template = isDefined(resolvedUrlTemplateOverride) ? resolvedUrlTemplateOverride : resolvedUrlTemplate\n if (isUndefined(template)) throw new Error('Url template is undefined')\n const url =\n (isUndefined(params) ? template : replaceUrlParameters(template, params)) +\n generateByIdsApiQuery(ids, resolvedIsSearchApi, resolvedField)\n\n const res = await resolvedClient().get(url, {\n ...resolvedOptions,\n signal: abortController.signal,\n })\n\n if (!isValidHTTPStatus(res.status)) {\n throw new AnzuApiResponseCodeError(res.status)\n }\n\n if (res.data?.data) {\n return res.data.data as R\n }\n\n if (res.status === HTTP_STATUS_NO_CONTENT) {\n return [] as R\n }\n\n throw new AnzuFatalError()\n } catch (err: any) {\n if (err instanceof DOMException && err.name === 'AbortError') {\n return [] as R\n }\n\n if (isAnzuApiResponseCodeError(err)) {\n throw err\n }\n\n if (axiosErrorResponseIsForbidden(err)) {\n throw new AnzuApiForbiddenError(err, err.config?.url)\n }\n\n if (axiosErrorResponseHasValidationData(err)) {\n throw new AnzuApiValidationError(err, resolvedSystem, resolvedEntity, err)\n }\n\n if (axiosErrorResponseHasDependencyExistsData(err)) {\n throw new AnzuApiDependencyExistsError(err, resolvedSystem, resolvedEntity, err)\n }\n\n if (axiosErrorResponseHasForbiddenOperationData(err)) {\n throw new AnzuApiForbiddenOperationError(err, err)\n }\n\n if (axiosErrorIsTimeout(err)) {\n throw new AnzuApiTimeoutError(err)\n }\n\n if (axios.isAxiosError(err)) {\n console.error('Axios error: ' + resolvedUrlTemplate, err.cause)\n throw new AnzuApiAxiosError(err)\n }\n\n console.error('AnzuFatalError: ', err)\n throw new AnzuFatalError(err)\n } finally {\n abortController = null\n }\n }\n\n const abortFetch = () => {\n if (abortController) {\n abortController.abort()\n }\n }\n\n return {\n executeFetch,\n abortFetch,\n }\n}\n\ninterface ExecuteFetchByIdsFn<R> {\n /** @deprecated Use object params form: executeFetch(ids, { urlTemplateOverride, urlParamsOverride }) */\n (ids: DocId[] | IntegerId[], urlTemplateOverride?: string, urlParamsOverride?: UrlParams): Promise<R>\n (ids: DocId[] | IntegerId[], params?: FetchByIdsParams): Promise<R>\n}\n\nexport type UseApiFetchByIdsReturnType<R> = {\n executeFetch: ExecuteFetchByIdsFn<R>\n abortFetch: () => void\n}\n","import { AnzuApiResponseCodeError, isAnzuApiResponseCodeError } from '@/model/error/AnzuApiResponseCodeError'\nimport { AnzuApiValidationError, axiosErrorResponseHasValidationData } from '@/model/error/AnzuApiValidationError'\nimport { replaceUrlParameters, type UrlParams } from '@/services/api/apiHelper'\nimport { isDefined, isUndefined } from '@/utils/common'\nimport { isValidHTTPStatus } from '@/utils/response'\nimport axios, { type AxiosRequestConfig } from 'axios'\nimport { AnzuApiForbiddenError, axiosErrorResponseIsForbidden } from '@/model/error/AnzuApiForbiddenError'\nimport { AnzuFatalError } from '@/model/error/AnzuFatalError'\nimport type { ApiInfiniteResponseList, ApiResponseList } from '@/types/ApiResponse'\nimport { isApiInfiniteResponseList, isApiResponseList } from '@/types/ApiResponse'\nimport {\n AnzuApiForbiddenOperationError,\n axiosErrorResponseHasForbiddenOperationData,\n} from '@/model/error/AnzuApiForbiddenOperationError'\nimport { HTTP_STATUS_NO_CONTENT } from '@/composables/statusCodes'\nimport {\n AnzuApiDependencyExistsError,\n axiosErrorResponseHasDependencyExistsData,\n} from '@/model/error/AnzuApiDependencyExistsError'\nimport { generateListQuery } from '@/labs/api/useApiFetchList'\nimport { AnzuApiTimeoutError, axiosErrorIsTimeout } from '@/model/error/AnzuApiTimeoutError'\nimport { AnzuApiAxiosError } from '@/model/error/AnzuApiAxiosError'\nimport type { FilterConfig, FilterData } from '@/labs/filters/filterFactory'\nimport { ref } from 'vue'\nimport { usePagination as usePagination } from '@/labs/filters/pagination'\nimport { SortOrder } from '@/composables/system/datatableColumns'\nimport type { AxiosClientFn } from '@/labs/api/client'\n\nexport type UseApiFetchListBatchParams = {\n client: AxiosClientFn\n system: string\n entity: string\n urlTemplate?: string\n urlParams?: UrlParams\n options?: AxiosRequestConfig\n}\n\nexport type FetchListBatchParams = {\n urlTemplateOverride?: string\n urlParamsOverride?: UrlParams\n sortBy?: string\n sortDesc?: boolean\n batchSize?: number\n forceElastic?: boolean\n}\n\n/**\n * @template R Response type override\n * @deprecated Use object params form:\n * useApiFetchListBatch({ client, system, entity, urlTemplate, urlParams, options })\n */\nexport function useApiFetchListBatch<R>(\n client: AxiosClientFn,\n system: string,\n entity: string,\n urlTemplate?: string,\n urlParams?: UrlParams,\n options?: AxiosRequestConfig\n): UseApiFetchListBatchReturnType<R>\n\n/**\n * @template R Response type override\n */\nexport function useApiFetchListBatch<R>(params: UseApiFetchListBatchParams): UseApiFetchListBatchReturnType<R>\n\nexport function useApiFetchListBatch<R>(\n clientOrParams: AxiosClientFn | UseApiFetchListBatchParams,\n system?: string,\n entity?: string,\n urlTemplate?: string,\n urlParams?: UrlParams,\n options?: AxiosRequestConfig\n): UseApiFetchListBatchReturnType<R> {\n let resolvedClient: AxiosClientFn\n let resolvedSystem: string\n let resolvedEntity: string\n let resolvedUrlTemplate: string | undefined\n let resolvedUrlParams: UrlParams | undefined\n let resolvedOptions: AxiosRequestConfig\n\n if (typeof clientOrParams === 'function') {\n resolvedClient = clientOrParams\n resolvedSystem = system!\n resolvedEntity = entity!\n resolvedUrlTemplate = urlTemplate\n resolvedUrlParams = urlParams\n resolvedOptions = options ?? {}\n } else {\n resolvedClient = clientOrParams.client\n resolvedSystem = clientOrParams.system\n resolvedEntity = clientOrParams.entity\n resolvedUrlTemplate = clientOrParams.urlTemplate\n resolvedUrlParams = clientOrParams.urlParams\n resolvedOptions = clientOrParams.options ?? {}\n }\n\n let abortController: AbortController | null = null\n\n const executeFetch = async (\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n urlTemplateOverrideOrParams: string | FetchListBatchParams | undefined = undefined,\n urlParamsOverride: UrlParams | undefined = undefined,\n sortBy = 'id',\n sortDesc = true,\n batchSize = 100,\n forceElastic = false\n ): Promise<R> => {\n abortController = new AbortController()\n\n let resolvedUrlTemplateOverride: string | undefined\n let resolvedUrlParamsOverride: UrlParams | undefined\n let resolvedSortBy: string\n let resolvedSortDesc: boolean\n let resolvedBatchSize: number\n let resolvedForceElastic: boolean\n\n if (typeof urlTemplateOverrideOrParams === 'object' && urlTemplateOverrideOrParams !== null) {\n resolvedUrlTemplateOverride = urlTemplateOverrideOrParams.urlTemplateOverride\n resolvedUrlParamsOverride = urlTemplateOverrideOrParams.urlParamsOverride\n resolvedSortBy = urlTemplateOverrideOrParams.sortBy ?? 'id'\n resolvedSortDesc = urlTemplateOverrideOrParams.sortDesc ?? true\n resolvedBatchSize = urlTemplateOverrideOrParams.batchSize ?? 100\n resolvedForceElastic = urlTemplateOverrideOrParams.forceElastic ?? false\n } else {\n resolvedUrlTemplateOverride = urlTemplateOverrideOrParams\n resolvedUrlParamsOverride = urlParamsOverride\n resolvedSortBy = sortBy\n resolvedSortDesc = sortDesc\n resolvedBatchSize = batchSize\n resolvedForceElastic = forceElastic\n }\n\n try {\n const searchApi = filterConfig.general.elastic || resolvedForceElastic ? '/search' : ''\n const params = isDefined(resolvedUrlParamsOverride) ? resolvedUrlParamsOverride : resolvedUrlParams\n const template = isDefined(resolvedUrlTemplateOverride) ? resolvedUrlTemplateOverride : resolvedUrlTemplate\n if (isUndefined(template)) throw new Error('Url template is undefined')\n const { pagination } = usePagination(resolvedSortBy, resolvedSortDesc ? SortOrder.Desc : SortOrder.Asc, {\n rowsPerPage: resolvedBatchSize,\n })\n const url = (isUndefined(params) ? template : replaceUrlParameters(template, params)) + searchApi\n const results = [] as unknown as R\n\n // First page request\n const res = await resolvedClient().get(url + generateListQuery(pagination, filterData, filterConfig), {\n ...resolvedOptions,\n signal: abortController.signal,\n })\n\n if (!isValidHTTPStatus(res.status)) {\n throw new AnzuApiResponseCodeError(res.status)\n }\n\n if (res.data) {\n const resData = res.data as unknown as ApiResponseList<R> | ApiInfiniteResponseList<R>\n // @ts-ignore\n results.push(...resData.data)\n\n if (isApiInfiniteResponseList(resData)) {\n pagination.value.hasNextPage = resData.hasNextPage\n\n // Handle pagination for infinite lists\n while (pagination.value.hasNextPage) {\n pagination.value.page++\n const nextPageResponse = await resolvedClient().get(\n url + generateListQuery(pagination, filterData, filterConfig),\n {\n ...resolvedOptions,\n signal: abortController.signal,\n }\n )\n const nextPageData = nextPageResponse.data\n // @ts-ignore\n results.push(...nextPageData.data)\n pagination.value.hasNextPage = nextPageData.hasNextPage\n }\n } else if (isApiResponseList(resData)) {\n pagination.value.totalCount = resData.totalCount\n\n if (pagination.value.totalCount <= pagination.value.rowsPerPage) {\n return results as R\n }\n\n // Handle pagination for regular lists - fetch all remaining pages in parallel\n const promises: Promise<any>[] = []\n const numPages = Math.ceil(pagination.value.totalCount / pagination.value.rowsPerPage)\n\n for (let i = 1; i < numPages; i++) {\n // Start from 1 since we already fetched page 0\n const pageCopy = { ...pagination.value, page: i + 1 }\n const paginationRef = ref(pageCopy)\n promises.push(\n resolvedClient().get(url + generateListQuery(paginationRef, filterData, filterConfig), {\n ...resolvedOptions,\n signal: abortController.signal,\n })\n )\n }\n\n const allResponses = await Promise.all(promises)\n allResponses.forEach((pageResponse) => {\n // @ts-ignore\n results.push(...pageResponse.data.data)\n })\n }\n\n return results as R\n }\n\n if (res.status === HTTP_STATUS_NO_CONTENT) {\n return [] as R\n }\n\n throw new AnzuFatalError()\n } catch (err: any) {\n if (err instanceof DOMException && err.name === 'AbortError') {\n return [] as R\n }\n\n if (isAnzuApiResponseCodeError(err)) {\n throw err\n }\n\n if (axiosErrorResponseIsForbidden(err)) {\n throw new AnzuApiForbiddenError(err, err.config?.url)\n }\n\n if (axiosErrorResponseHasValidationData(err)) {\n throw new AnzuApiValidationError(err, resolvedSystem, resolvedEntity, err)\n }\n\n if (axiosErrorResponseHasDependencyExistsData(err)) {\n throw new AnzuApiDependencyExistsError(err, resolvedSystem, resolvedEntity, err)\n }\n\n if (axiosErrorResponseHasForbiddenOperationData(err)) {\n throw new AnzuApiForbiddenOperationError(err, err)\n }\n\n if (axiosErrorIsTimeout(err)) {\n throw new AnzuApiTimeoutError(err)\n }\n\n if (axios.isAxiosError(err)) {\n console.error('Axios error: ' + resolvedUrlTemplate, err.cause)\n throw new AnzuApiAxiosError(err)\n }\n\n console.error('AnzuFatalError: ', err)\n throw new AnzuFatalError(err)\n } finally {\n abortController = null\n }\n }\n\n const abortFetch = () => {\n if (abortController) {\n abortController.abort()\n }\n }\n\n return {\n executeFetch,\n abortFetch,\n }\n}\n\ninterface ExecuteFetchListBatchFn<R> {\n /**\n * @deprecated Use object params form:\n * executeFetch(filterData, filterConfig,\n * { urlTemplateOverride, urlParamsOverride, sortBy, sortDesc, batchSize, forceElastic })\n */\n (\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n urlTemplateOverride?: string,\n urlParamsOverride?: UrlParams,\n sortBy?: string,\n sortDesc?: boolean,\n batchSize?: number,\n forceElastic?: boolean\n ): Promise<R>\n (filterData: FilterData<any>, filterConfig: FilterConfig<any>, params?: FetchListBatchParams): Promise<R>\n}\n\nexport type UseApiFetchListBatchReturnType<R> = {\n executeFetch: ExecuteFetchListBatchFn<R>\n abortFetch: () => void\n}\n","import type { AxiosInstance } from 'axios'\nimport type { JobBase } from '@/types/Job'\nimport { apiFetchOne } from '@/services/api/apiFetchOne'\nimport { apiCreateOne } from '@/services/api/apiCreateOne'\nimport { apiDeleteOne } from '@/services/api/apiDeleteOne'\nimport { stringToKebabCase } from '@/utils/string'\nimport { useApiFetchList } from '@/labs/api/useApiFetchList'\n\nconst END_POINT = '/adm/v1/job'\nexport const ENTITY = 'job'\n\nexport function useJobApi<JobType extends JobBase = JobBase>(client: () => AxiosInstance, system: string) {\n const useFetchJobList = () => useApiFetchList<JobType[]>(client, system, ENTITY, END_POINT)\n\n const fetchJob = (id: number) => apiFetchOne<JobType>(client, END_POINT + '/:id', { id }, system, ENTITY)\n\n const createJob = (data: JobType) => {\n const type = stringToKebabCase(data._resourceName)\n .slice(4) // remove \"job-\" prefix\n .replace('-kind-', '-kind/') // replace \"-kind-\" with \"-kind/\" if the needle is found\n\n return apiCreateOne<JobType>(client, data, END_POINT + '/:type', { type }, system, ENTITY)\n }\n\n const deleteJob = (id: number) => apiDeleteOne<JobType>(client, END_POINT + '/:id', { id }, system, ENTITY)\n\n return {\n useFetchJobList,\n fetchJob,\n createJob,\n deleteJob,\n }\n}\n","import {\n type ColumnConfig,\n type ColumnInternalValues,\n DATETIME_AUTO_LABEL_TRACKING,\n type StoredData,\n} from '@/composables/system/datatableColumns'\nimport { computed, onMounted, type Ref, watch } from 'vue'\nimport { i18n } from '@/plugins/i18n'\nimport { isArray, isBoolean, isObject, isString, isUndefined } from '@/utils/common'\n\nconst defaultColumn: ColumnInternalValues = {\n key: '',\n title: undefined,\n sortable: false,\n fixed: false,\n}\n\ninterface DatatableColumnsConfigMoreOptions {\n storeColumnsLocalStorage: string | boolean // false to disable, string to override store key\n disableActions: boolean\n customI18n: any\n showExpand: boolean\n}\n\nconst DatatableColumnsConfigMoreOptionsDefault = {\n storeColumnsLocalStorage: true,\n disableActions: false,\n customI18n: undefined,\n showExpand: false,\n}\n\nexport function createDatatableColumnsConfig(\n config: ColumnConfig[],\n columnsHidden: Ref<Array<string>>,\n system: string,\n subject: string,\n moreOptions: Partial<DatatableColumnsConfigMoreOptions> = {}\n) {\n const options = { ...DatatableColumnsConfigMoreOptionsDefault, ...moreOptions }\n const localI18n = options.customI18n ?? i18n\n const { t } = localI18n.global || localI18n\n\n let storeKey: undefined | string = undefined\n if (isString(options.storeColumnsLocalStorage)) {\n storeKey = options.storeColumnsLocalStorage\n } else if (isBoolean(options.storeColumnsLocalStorage) && true === options.storeColumnsLocalStorage) {\n storeKey = 'table_' + system + '_' + subject\n }\n\n const columnsAll = config.map((item) => {\n const obj = { ...defaultColumn, ...item }\n if (!isUndefined(obj.title)) {\n // do not modify\n } else if (isUndefined(obj.title) && DATETIME_AUTO_LABEL_TRACKING.includes(obj.key)) {\n obj.title = t('common.model.tracking.' + obj.key)\n } else if (isUndefined(obj.title) && system && subject) {\n obj.title = t(system + '.' + subject + '.model.' + obj.key)\n } else {\n obj.title = ''\n }\n return obj\n })\n\n const columnsVisible = computed(() => {\n const columns: any = []\n if (options.showExpand) columns.push({ key: 'data-table-expand', sortable: false })\n columnsAll.forEach((column) => {\n if (!columnsHidden.value.includes(column.key)) {\n columns.push(column)\n }\n })\n if (!options.disableActions) columns.push({ key: 'actions', sortable: false, fixed: 'end' })\n return columns\n })\n\n const loadStoredColumns = () => {\n if (!storeKey || !localStorage) return\n const stored = localStorage.getItem(storeKey)\n if (!stored) return\n const storedData = JSON.parse(stored) as StoredData\n if (!isObject(storedData)) return\n if (!isArray(storedData.hidden)) return\n columnsHidden.value = storedData.hidden as string[]\n }\n\n const storeColumns = (columns: string[]) => {\n if (!storeKey || !localStorage) return\n localStorage.setItem(storeKey, JSON.stringify({ hidden: columns }))\n }\n\n onMounted(() => {\n loadStoredColumns()\n })\n\n watch(columnsHidden, (newValue) => {\n storeColumns(newValue)\n })\n\n return {\n columnsAll,\n columnsVisible,\n columnsHidden,\n }\n}\n","import { type DatatableOrderingOption, type DatatableSortBy } from '@/composables/system/datatableColumns'\nimport type { Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useAlerts } from '@/composables/system/alerts'\nimport { type FilterConfig, type FilterData, useFilterHelpers } from '@/labs/filters/filterFactory'\nimport { createDatatableColumnsConfig } from '@/labs/filters/datatableColumns'\nimport { type Pagination, usePagination } from '@/labs/filters/pagination'\nimport type { UrlParams } from '@/services/api/apiHelper'\nimport { useDebounceFn } from '@vueuse/core'\nimport { isNull } from '@/utils/common'\n\nexport function useSubjectSelect<TItem>(\n datatableConfig: any,\n datatableHiddenColumns: any,\n system: string,\n subject: string,\n executeFetch: (\n pagination: Ref<Pagination>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n urlTemplateOverride?: string | undefined,\n urlParamsOverride?: UrlParams | undefined,\n forceElastic?: boolean\n ) => Promise<TItem[]>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n filterSortBy: DatatableSortBy | null = null,\n urlTemplateOverride: string | undefined = undefined,\n urlParamsOverride: UrlParams | undefined = undefined,\n forceElastic: boolean = false,\n enableActions: boolean = false\n) {\n const filterTouched: Ref<boolean> = ref(false)\n const items: Ref<Array<TItem>> = ref([])\n const selected: Ref<Array<TItem>> = ref([])\n const loading = ref(false)\n const { pagination, setSortBy, incrementPage } = usePagination(\n isNull(filterSortBy) ? null : filterSortBy.key,\n filterSortBy?.order\n )\n\n const { resetFilter, submitFilter } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n })\n const { showErrorsDefault } = useAlerts()\n\n const { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n datatableConfig,\n datatableHiddenColumns,\n system,\n subject,\n { storeColumnsLocalStorage: false, disableActions: !enableActions }\n )\n\n const onOpen = () => {\n resetState()\n getListDebounced()\n }\n\n const sortByChange = (option: DatatableOrderingOption) => {\n setSortBy(option.sortBy)\n getListDebounced()\n }\n\n const onFetchNextPage = async () => {\n loading.value = true\n incrementPage()\n try {\n const res = (await executeFetch(\n pagination,\n filterData,\n filterConfig,\n urlTemplateOverride,\n urlParamsOverride,\n forceElastic\n )) as TItem[]\n items.value.push(...res)\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const resetState = () => {\n items.value = []\n selected.value = []\n }\n\n const getList = async () => {\n loading.value = true\n try {\n items.value = (await executeFetch(\n pagination,\n filterData,\n filterConfig,\n urlTemplateOverride,\n urlParamsOverride,\n forceElastic\n )) as TItem[]\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const getListDebounced = useDebounceFn(async () => {\n await getList()\n })\n\n const onRowClick = (event: Event) => {\n const eventTarget = event.target as HTMLElement | null\n if (!eventTarget || (eventTarget.tagName === 'INPUT' && (eventTarget as HTMLInputElement).type === 'checkbox')) {\n return\n }\n const parent = eventTarget.closest('.v-data-table__tr')\n if (!parent || !parent.classList.contains('v-data-table__tr')) return\n const firstTd = parent.firstElementChild\n if (!firstTd || !firstTd.classList.contains('v-data-table__td')) return\n const input = firstTd.querySelector('input')\n if (!input) return\n input.click()\n }\n\n return {\n items,\n selected,\n pagination,\n columnsVisible,\n columnsHidden,\n columnsAll,\n filterTouched,\n loading,\n onRowClick,\n onFetchNextPage,\n onOpen,\n sortByChange,\n getList: getListDebounced,\n resetFilter: () => resetFilter(pagination, getListDebounced),\n submitFilter: () => submitFilter(pagination, getListDebounced),\n }\n}\n","<script lang=\"ts\" setup generic=\"TItem\">\nimport { computed, onMounted, ref, toRaw, withModifiers } from 'vue'\nimport { isNull, isUndefined } from '@/utils/common'\nimport ADialogToolbar from '@/components/ADialogToolbar.vue'\nimport { useI18n } from 'vue-i18n'\nimport type { Pagination } from '@/labs/filters/pagination'\nimport ADatatablePagination from '@/labs/filters/ADatatablePagination.vue'\n\nconst props = withDefaults(\n defineProps<{\n selectedItems: Array<TItem>\n pagination: Pagination\n loading?: boolean\n minCount?: number\n maxCount?: number\n modelValue?: boolean | undefined // dialog\n dialogTitleT?: string\n paginationMode?: 'standard' | 'more'\n autoOpen?: boolean\n }>(),\n {\n loading: false,\n minCount: 1,\n maxCount: 1,\n modelValue: undefined,\n dialogTitleT: 'common.subjectSelect.texts.title',\n paginationMode: 'standard',\n autoOpen: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n (e: 'update:pagination', data: Pagination): void\n (e: 'onOpen'): void\n (e: 'onPageChange'): void\n (e: 'onConfirm', data: Array<TItem>): void\n (e: 'onFetchNextPage'): void\n}>()\n\nconst dialogLocal = ref(false)\nconst dialog = computed({\n get() {\n if (isUndefined(props.modelValue)) return dialogLocal.value\n return props.modelValue\n },\n set(newValue: boolean) {\n dialogLocal.value = newValue\n emit('update:modelValue', newValue)\n },\n})\n\nconst paginationComputed = computed({\n get: () => props.pagination,\n set: (newValue) => {\n emit('update:pagination', { ...toRaw(newValue) })\n },\n})\n\nconst sidebarLeft = ref(true)\n\nconst { t } = useI18n()\n\nconst selectedItemsCount = computed(() => {\n return props.selectedItems.length\n})\n\nconst disabledSubmit = computed(() => {\n return selectedItemsCount.value < props.minCount || selectedItemsCount.value > props.maxCount\n})\n\nconst onOpen = () => {\n emit('onOpen')\n sidebarLeft.value = true\n dialog.value = true\n}\n\nconst toggleSidebar = () => {\n sidebarLeft.value = !sidebarLeft.value\n}\n\nconst onClose = () => {\n dialog.value = false\n}\n\nconst onConfirm = () => {\n emit(\n 'onConfirm',\n props.selectedItems.map((item) => toRaw(item))\n )\n onClose()\n}\n\nconst fetchNextPage = () => {\n emit('onFetchNextPage')\n}\n\nconst onPageChange = () => {\n emit('onPageChange')\n}\n\nconst lastPage = computed(() => {\n return Math.ceil(paginationComputed.value.totalCount / paginationComputed.value.rowsPerPage)\n})\n\nconst hasNextPage = computed(() => {\n return !(\n (isNull(paginationComputed.value.hasNextPage) && paginationComputed.value.page === lastPage.value) ||\n paginationComputed.value.hasNextPage === false\n )\n})\n\nconst autoloadOnIntersect = (isIntersecting: boolean) => {\n if (isIntersecting && hasNextPage.value && !props.loading) {\n fetchNextPage()\n }\n}\n\nonMounted(() => {\n if (props.autoOpen) {\n onOpen()\n }\n})\n\ndefineExpose({\n open: onOpen,\n})\n</script>\n\n<template>\n <slot\n name=\"activator\"\n :props=\"{ onClick: withModifiers(() => onOpen(), ['stop']) }\"\n />\n <VDialog\n v-bind=\"$attrs\"\n :model-value=\"dialog\"\n fullscreen\n class=\"subject-select\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n >\n <VCard\n v-if=\"dialog\"\n class=\"subject-select__card\"\n >\n <ADialogToolbar\n class=\"subject-select__toolbar system-border-b\"\n @on-cancel=\"onClose\"\n >\n <slot name=\"title\">\n {{ t(dialogTitleT) }}\n </slot>\n </ADialogToolbar>\n <VToolbar\n density=\"compact\"\n color=\"transparent\"\n :height=\"46\"\n elevation=\"0\"\n class=\"system-border-b subject-select__second-bar\"\n >\n <slot name=\"second-bar\">\n <div class=\"d-flex flex-column w-100 px-1 align-center\">\n <div class=\"d-flex justify-space-between w-100 align-center\">\n <div class=\"d-flex align-center\">\n <VBtn\n icon\n :width=\"30\"\n :height=\"30\"\n @click=\"toggleSidebar\"\n >\n <VIcon\n icon=\"mdi-tune\"\n :size=\"16\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t('common.subjectSelect.filter.toggle') }}\n </VTooltip>\n </VBtn>\n <slot name=\"second-bar-left\" />\n </div>\n <div class=\"d-flex align-center\">\n <slot name=\"second-bar-right\" />\n </div>\n </div>\n </div>\n </slot>\n </VToolbar>\n <div\n class=\"subject-select__main\"\n :class=\"{ 'subject-select__main--sidebar-active': sidebarLeft }\"\n >\n <div class=\"subject-select__sidebar system-border-r\">\n <div class=\"subject-select-filter\">\n <slot name=\"filter\" />\n </div>\n </div>\n <div class=\"subject-select__content\">\n <slot name=\"content\" />\n <div\n v-if=\"paginationMode === 'more'\"\n class=\"d-flex w-100 align-center justify-center pa-4\"\n >\n <ABtnSecondary\n v-show=\"hasNextPage || loading\"\n v-intersect.quiet=\"autoloadOnIntersect\"\n :loading=\"loading\"\n size=\"small\"\n @click=\"fetchNextPage\"\n >\n <slot name=\"button-confirm-title\">\n {{ t('common.button.loadMore') }}\n </slot>\n </ABtnSecondary>\n </div>\n <ADatatablePagination\n v-else\n v-model=\"paginationComputed\"\n @change=\"onPageChange\"\n />\n </div>\n </div>\n <div class=\"subject-select__actions system-border-t\">\n <div v-if=\"minCount === maxCount\">\n {{ t('common.subjectSelect.texts.pickExactCount', { count: minCount, selected: selectedItemsCount }) }}\n </div>\n <div v-else>\n {{\n t('common.subjectSelect.texts.pickRangeCount', {\n minCount: minCount,\n maxCount: maxCount,\n selected: selectedItemsCount,\n })\n }}\n </div>\n <VSpacer />\n <ABtnPrimary\n :disabled=\"disabledSubmit\"\n @click.stop=\"onConfirm\"\n >\n <slot name=\"button-confirm-title\">\n {{ t('common.button.confirm') }}\n </slot>\n </ABtnPrimary>\n </div>\n </VCard>\n </VDialog>\n</template>\n"],"names":["props","__props","emit","__emit","modelValue","_useModel","pagination","inject","DatatablePaginationKey","isUndefined","t","useI18n","defaultItemsCreatedAt","SortOrder","defaultItemsId","defaultItemsMostRelevant","SORT_BY_SCORE","activeTitle","computed","found","options","item","onItemClick","paginationUpdateDefault","watch","newValue","oldValue","option","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","_unref","_createVNode","_component_VBtn","_createTextVNode","_component_VMenu","_component_VList","_Fragment","_renderList","_createBlock","_component_VListItem","$event","_component_VListItemTitle","_normalizeClass","lastPage","displayedFrom","displayedTo","disabledFirstAndPrev","disabledLast","isNull","disabledNext","computedTotalCountText","onClickFirst","useThrottleFn","onClickLast","onClickPrev","onClickNext","_component_VBtnToggle","_cache","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","generateByIdsApiQuery","ids","isSearchApi","field","querySetLimit","querySetOffset","querySetOrder","queryBuild","queryAddFilter","queryAdd","useApiQueryBuilder","limit","useApiFetchByIds","clientOrParams","system","entity","urlTemplate","urlParams","resolvedClient","resolvedSystem","resolvedEntity","resolvedUrlTemplate","resolvedUrlParams","resolvedOptions","resolvedIsSearchApi","resolvedField","abortController","urlTemplateOverrideOrParams","urlParamsOverride","resolvedUrlTemplateOverride","resolvedUrlParamsOverride","params","isDefined","template","url","replaceUrlParameters","res","isValidHTTPStatus","AnzuApiResponseCodeError","HTTP_STATUS_NO_CONTENT","AnzuFatalError","err","isAnzuApiResponseCodeError","axiosErrorResponseIsForbidden","AnzuApiForbiddenError","axiosErrorResponseHasValidationData","AnzuApiValidationError","axiosErrorResponseHasDependencyExistsData","AnzuApiDependencyExistsError","axiosErrorResponseHasForbiddenOperationData","AnzuApiForbiddenOperationError","axiosErrorIsTimeout","AnzuApiTimeoutError","axios","AnzuApiAxiosError","useApiFetchListBatch","filterData","filterConfig","sortBy","sortDesc","batchSize","forceElastic","resolvedSortBy","resolvedSortDesc","resolvedBatchSize","resolvedForceElastic","searchApi","usePagination","results","generateListQuery","resData","isApiInfiniteResponseList","nextPageData","isApiResponseList","promises","numPages","i","pageCopy","paginationRef","ref","pageResponse","END_POINT","ENTITY","useJobApi","client","useApiFetchList","id","apiFetchOne","data","type","stringToKebabCase","apiCreateOne","apiDeleteOne","defaultColumn","DatatableColumnsConfigMoreOptionsDefault","createDatatableColumnsConfig","config","columnsHidden","subject","moreOptions","localI18n","i18n","storeKey","isString","isBoolean","columnsAll","obj","DATETIME_AUTO_LABEL_TRACKING","columnsVisible","columns","column","loadStoredColumns","stored","storedData","isObject","isArray","storeColumns","onMounted","useSubjectSelect","datatableConfig","datatableHiddenColumns","executeFetch","filterSortBy","urlTemplateOverride","enableActions","filterTouched","items","selected","loading","setSortBy","incrementPage","resetFilter","submitFilter","useFilterHelpers","showErrorsDefault","useAlerts","onOpen","resetState","getListDebounced","sortByChange","onFetchNextPage","e","getList","useDebounceFn","event","eventTarget","parent","firstTd","input","dialogLocal","dialog","paginationComputed","toRaw","sidebarLeft","selectedItemsCount","disabledSubmit","toggleSidebar","onClose","onConfirm","fetchNextPage","onPageChange","hasNextPage","autoloadOnIntersect","isIntersecting","__expose","_renderSlot","_ctx","withModifiers","_component_VDialog","_mergeProps","_component_VCard","ADialogToolbar","_component_VToolbar","_component_VIcon","_component_VTooltip","_hoisted_7","_hoisted_8","_component_ABtnSecondary","_vShow","ADatatablePagination","_hoisted_9","_hoisted_10","_component_VSpacer","_component_ABtnPrimary"],"mappings":"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"}
@@ -0,0 +1,452 @@
1
+ function Wt(w, S) {
2
+ for (var _ = 0; _ < S.length; _++) {
3
+ const h = S[_];
4
+ if (typeof h != "string" && !Array.isArray(h)) {
5
+ for (const d in h)
6
+ if (d !== "default" && !(d in w)) {
7
+ const T = Object.getOwnPropertyDescriptor(h, d);
8
+ T && Object.defineProperty(w, d, T.get ? T : {
9
+ enumerable: !0,
10
+ get: () => h[d]
11
+ });
12
+ }
13
+ }
14
+ }
15
+ return Object.freeze(Object.defineProperty(w, Symbol.toStringTag, { value: "Module" }));
16
+ }
17
+ var B = { exports: {} }, ft;
18
+ function Ft() {
19
+ return ft || (ft = 1, (function(w) {
20
+ (function() {
21
+ function S(t, n, e) {
22
+ return t.call.apply(t.bind, arguments);
23
+ }
24
+ function _(t, n, e) {
25
+ if (!t) throw Error();
26
+ if (2 < arguments.length) {
27
+ var i = Array.prototype.slice.call(arguments, 2);
28
+ return function() {
29
+ var o = Array.prototype.slice.call(arguments);
30
+ return Array.prototype.unshift.apply(o, i), t.apply(n, o);
31
+ };
32
+ }
33
+ return function() {
34
+ return t.apply(n, arguments);
35
+ };
36
+ }
37
+ function h(t, n, e) {
38
+ return h = Function.prototype.bind && Function.prototype.bind.toString().indexOf("native code") != -1 ? S : _, h.apply(null, arguments);
39
+ }
40
+ var d = Date.now || function() {
41
+ return +/* @__PURE__ */ new Date();
42
+ };
43
+ function T(t, n) {
44
+ this.a = t, this.o = n || t, this.c = this.o.document;
45
+ }
46
+ var ut = !!window.FontFace;
47
+ function W(t, n, e, i) {
48
+ if (n = t.c.createElement(n), e) for (var o in e) e.hasOwnProperty(o) && (o == "style" ? n.style.cssText = e[o] : n.setAttribute(o, e[o]));
49
+ return i && n.appendChild(t.c.createTextNode(i)), n;
50
+ }
51
+ function D(t, n, e) {
52
+ t = t.c.getElementsByTagName(n)[0], t || (t = document.documentElement), t.insertBefore(e, t.lastChild);
53
+ }
54
+ function E(t) {
55
+ t.parentNode && t.parentNode.removeChild(t);
56
+ }
57
+ function y(t, n, e) {
58
+ n = n || [], e = e || [];
59
+ for (var i = t.className.split(/\s+/), o = 0; o < n.length; o += 1) {
60
+ for (var s = !1, r = 0; r < i.length; r += 1) if (n[o] === i[r]) {
61
+ s = !0;
62
+ break;
63
+ }
64
+ s || i.push(n[o]);
65
+ }
66
+ for (n = [], o = 0; o < i.length; o += 1) {
67
+ for (s = !1, r = 0; r < e.length; r += 1) if (i[o] === e[r]) {
68
+ s = !0;
69
+ break;
70
+ }
71
+ s || n.push(i[o]);
72
+ }
73
+ t.className = n.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, "");
74
+ }
75
+ function q(t, n) {
76
+ for (var e = t.className.split(/\s+/), i = 0, o = e.length; i < o; i++) if (e[i] == n) return !0;
77
+ return !1;
78
+ }
79
+ function ct(t) {
80
+ return t.o.location.hostname || t.a.location.hostname;
81
+ }
82
+ function L(t, n, e) {
83
+ function i() {
84
+ a && o && s && (a(r), a = null);
85
+ }
86
+ n = W(t, "link", { rel: "stylesheet", href: n, media: "all" });
87
+ var o = !1, s = !0, r = null, a = e || null;
88
+ ut ? (n.onload = function() {
89
+ o = !0, i();
90
+ }, n.onerror = function() {
91
+ o = !0, r = Error("Stylesheet failed to load"), i();
92
+ }) : setTimeout(function() {
93
+ o = !0, i();
94
+ }, 0), D(t, "head", n);
95
+ }
96
+ function F(t, n, e, i) {
97
+ var o = t.c.getElementsByTagName("head")[0];
98
+ if (o) {
99
+ var s = W(t, "script", { src: n }), r = !1;
100
+ return s.onload = s.onreadystatechange = function() {
101
+ r || this.readyState && this.readyState != "loaded" && this.readyState != "complete" || (r = !0, e && e(null), s.onload = s.onreadystatechange = null, s.parentNode.tagName == "HEAD" && o.removeChild(s));
102
+ }, o.appendChild(s), setTimeout(function() {
103
+ r || (r = !0, e && e(Error("Script load timeout")));
104
+ }, i || 5e3), s;
105
+ }
106
+ return null;
107
+ }
108
+ function $() {
109
+ this.a = 0, this.c = null;
110
+ }
111
+ function z(t) {
112
+ return t.a++, function() {
113
+ t.a--, M(t);
114
+ };
115
+ }
116
+ function H(t, n) {
117
+ t.c = n, M(t);
118
+ }
119
+ function M(t) {
120
+ t.a == 0 && t.c && (t.c(), t.c = null);
121
+ }
122
+ function G(t) {
123
+ this.a = t || "-";
124
+ }
125
+ G.prototype.c = function(t) {
126
+ for (var n = [], e = 0; e < arguments.length; e++) n.push(arguments[e].replace(/[\W_]+/g, "").toLowerCase());
127
+ return n.join(this.a);
128
+ };
129
+ function g(t, n) {
130
+ this.c = t, this.f = 4, this.a = "n";
131
+ var e = (n || "n4").match(/^([nio])([1-9])$/i);
132
+ e && (this.a = e[1], this.f = parseInt(e[2], 10));
133
+ }
134
+ function ht(t) {
135
+ return K(t) + " " + (t.f + "00") + " 300px " + R(t.c);
136
+ }
137
+ function R(t) {
138
+ var n = [];
139
+ t = t.split(/,\s*/);
140
+ for (var e = 0; e < t.length; e++) {
141
+ var i = t[e].replace(/['"]/g, "");
142
+ i.indexOf(" ") != -1 || /^\d/.test(i) ? n.push("'" + i + "'") : n.push(i);
143
+ }
144
+ return n.join(",");
145
+ }
146
+ function p(t) {
147
+ return t.a + t.f;
148
+ }
149
+ function K(t) {
150
+ var n = "normal";
151
+ return t.a === "o" ? n = "oblique" : t.a === "i" && (n = "italic"), n;
152
+ }
153
+ function lt(t) {
154
+ var n = 4, e = "n", i = null;
155
+ return t && ((i = t.match(/(normal|oblique|italic)/i)) && i[1] && (e = i[1].substr(0, 1).toLowerCase()), (i = t.match(/([1-9]00|normal|bold)/i)) && i[1] && (/bold/i.test(i[1]) ? n = 7 : /[1-9]00/.test(i[1]) && (n = parseInt(i[1].substr(0, 1), 10)))), e + n;
156
+ }
157
+ function pt(t, n) {
158
+ this.c = t, this.f = t.o.document.documentElement, this.h = n, this.a = new G("-"), this.j = n.events !== !1, this.g = n.classes !== !1;
159
+ }
160
+ function gt(t) {
161
+ t.g && y(t.f, [t.a.c("wf", "loading")]), x(t, "loading");
162
+ }
163
+ function U(t) {
164
+ if (t.g) {
165
+ var n = q(t.f, t.a.c("wf", "active")), e = [], i = [t.a.c("wf", "loading")];
166
+ n || e.push(t.a.c("wf", "inactive")), y(t.f, e, i);
167
+ }
168
+ x(t, "inactive");
169
+ }
170
+ function x(t, n, e) {
171
+ t.j && t.h[n] && (e ? t.h[n](e.c, p(e)) : t.h[n]());
172
+ }
173
+ function vt() {
174
+ this.c = {};
175
+ }
176
+ function dt(t, n, e) {
177
+ var i = [], o;
178
+ for (o in n) if (n.hasOwnProperty(o)) {
179
+ var s = t.c[o];
180
+ s && i.push(s(n[o], e));
181
+ }
182
+ return i;
183
+ }
184
+ function b(t, n) {
185
+ this.c = t, this.f = n, this.a = W(this.c, "span", { "aria-hidden": "true" }, this.f);
186
+ }
187
+ function A(t) {
188
+ D(t.c, "body", t.a);
189
+ }
190
+ function C(t) {
191
+ return "display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:" + R(t.c) + ";" + ("font-style:" + K(t) + ";font-weight:" + (t.f + "00") + ";");
192
+ }
193
+ function V(t, n, e, i, o, s) {
194
+ this.g = t, this.j = n, this.a = i, this.c = e, this.f = o || 3e3, this.h = s || void 0;
195
+ }
196
+ V.prototype.start = function() {
197
+ var t = this.c.o.document, n = this, e = d(), i = new Promise(function(r, a) {
198
+ function f() {
199
+ d() - e >= n.f ? a() : t.fonts.load(ht(n.a), n.h).then(function(u) {
200
+ 1 <= u.length ? r() : setTimeout(f, 25);
201
+ }, function() {
202
+ a();
203
+ });
204
+ }
205
+ f();
206
+ }), o = null, s = new Promise(function(r, a) {
207
+ o = setTimeout(a, n.f);
208
+ });
209
+ Promise.race([s, i]).then(function() {
210
+ o && (clearTimeout(o), o = null), n.g(n.a);
211
+ }, function() {
212
+ n.j(n.a);
213
+ });
214
+ };
215
+ function X(t, n, e, i, o, s, r) {
216
+ this.v = t, this.B = n, this.c = e, this.a = i, this.s = r || "BESbswy", this.f = {}, this.w = o || 3e3, this.u = s || null, this.m = this.j = this.h = this.g = null, this.g = new b(this.c, this.s), this.h = new b(this.c, this.s), this.j = new b(this.c, this.s), this.m = new b(this.c, this.s), t = new g(this.a.c + ",serif", p(this.a)), t = C(t), this.g.a.style.cssText = t, t = new g(this.a.c + ",sans-serif", p(this.a)), t = C(t), this.h.a.style.cssText = t, t = new g("serif", p(this.a)), t = C(t), this.j.a.style.cssText = t, t = new g("sans-serif", p(this.a)), t = C(t), this.m.a.style.cssText = t, A(this.g), A(this.h), A(this.j), A(this.m);
217
+ }
218
+ var N = { D: "serif", C: "sans-serif" }, P = null;
219
+ function J() {
220
+ if (P === null) {
221
+ var t = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);
222
+ P = !!t && (536 > parseInt(t[1], 10) || parseInt(t[1], 10) === 536 && 11 >= parseInt(t[2], 10));
223
+ }
224
+ return P;
225
+ }
226
+ X.prototype.start = function() {
227
+ this.f.serif = this.j.a.offsetWidth, this.f["sans-serif"] = this.m.a.offsetWidth, this.A = d(), Y(this);
228
+ };
229
+ function Q(t, n, e) {
230
+ for (var i in N) if (N.hasOwnProperty(i) && n === t.f[N[i]] && e === t.f[N[i]]) return !0;
231
+ return !1;
232
+ }
233
+ function Y(t) {
234
+ var n = t.g.a.offsetWidth, e = t.h.a.offsetWidth, i;
235
+ (i = n === t.f.serif && e === t.f["sans-serif"]) || (i = J() && Q(t, n, e)), i ? d() - t.A >= t.w ? J() && Q(t, n, e) && (t.u === null || t.u.hasOwnProperty(t.a.c)) ? I(t, t.v) : I(t, t.B) : mt(t) : I(t, t.v);
236
+ }
237
+ function mt(t) {
238
+ setTimeout(h(function() {
239
+ Y(this);
240
+ }, t), 50);
241
+ }
242
+ function I(t, n) {
243
+ setTimeout(h(function() {
244
+ E(this.g.a), E(this.h.a), E(this.j.a), E(this.m.a), n(this.a);
245
+ }, t), 0);
246
+ }
247
+ function k(t, n, e) {
248
+ this.c = t, this.a = n, this.f = 0, this.m = this.j = !1, this.s = e;
249
+ }
250
+ var O = null;
251
+ k.prototype.g = function(t) {
252
+ var n = this.a;
253
+ n.g && y(n.f, [n.a.c("wf", t.c, p(t).toString(), "active")], [n.a.c("wf", t.c, p(t).toString(), "loading"), n.a.c("wf", t.c, p(t).toString(), "inactive")]), x(n, "fontactive", t), this.m = !0, Z(this);
254
+ }, k.prototype.h = function(t) {
255
+ var n = this.a;
256
+ if (n.g) {
257
+ var e = q(n.f, n.a.c("wf", t.c, p(t).toString(), "active")), i = [], o = [n.a.c("wf", t.c, p(t).toString(), "loading")];
258
+ e || i.push(n.a.c("wf", t.c, p(t).toString(), "inactive")), y(n.f, i, o);
259
+ }
260
+ x(n, "fontinactive", t), Z(this);
261
+ };
262
+ function Z(t) {
263
+ --t.f == 0 && t.j && (t.m ? (t = t.a, t.g && y(t.f, [t.a.c("wf", "active")], [t.a.c("wf", "loading"), t.a.c("wf", "inactive")]), x(t, "active")) : U(t.a));
264
+ }
265
+ function tt(t) {
266
+ this.j = t, this.a = new vt(), this.h = 0, this.f = this.g = !0;
267
+ }
268
+ tt.prototype.load = function(t) {
269
+ this.c = new T(this.j, t.context || this.j), this.g = t.events !== !1, this.f = t.classes !== !1, yt(this, new pt(this.c, t), t);
270
+ };
271
+ function wt(t, n, e, i, o) {
272
+ var s = --t.h == 0;
273
+ (t.f || t.g) && setTimeout(function() {
274
+ var r = o || null, a = i || null || {};
275
+ if (e.length === 0 && s) U(n.a);
276
+ else {
277
+ n.f += e.length, s && (n.j = s);
278
+ var f, u = [];
279
+ for (f = 0; f < e.length; f++) {
280
+ var c = e[f], l = a[c.c], v = n.a, j = c;
281
+ if (v.g && y(v.f, [v.a.c("wf", j.c, p(j).toString(), "loading")]), x(v, "fontloading", j), v = null, O === null) if (window.FontFace) {
282
+ var j = /Gecko.*Firefox\/(\d+)/.exec(window.navigator.userAgent), Ot = /OS X.*Version\/10\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor);
283
+ O = j ? 42 < parseInt(j[1], 10) : !Ot;
284
+ } else O = !1;
285
+ O ? v = new V(h(n.g, n), h(n.h, n), n.c, c, n.s, l) : v = new X(h(n.g, n), h(n.h, n), n.c, c, n.s, r, l), u.push(v);
286
+ }
287
+ for (f = 0; f < u.length; f++) u[f].start();
288
+ }
289
+ }, 0);
290
+ }
291
+ function yt(t, n, e) {
292
+ var o = [], i = e.timeout;
293
+ gt(n);
294
+ var o = dt(t.a, e, t.c), s = new k(t.c, n, i);
295
+ for (t.h = o.length, n = 0, e = o.length; n < e; n++) o[n].load(function(r, a, f) {
296
+ wt(t, s, r, a, f);
297
+ });
298
+ }
299
+ function nt(t, n) {
300
+ this.c = t, this.a = n;
301
+ }
302
+ nt.prototype.load = function(t) {
303
+ function n() {
304
+ if (s["__mti_fntLst" + i]) {
305
+ var r = s["__mti_fntLst" + i](), a = [], f;
306
+ if (r) for (var u = 0; u < r.length; u++) {
307
+ var c = r[u].fontfamily;
308
+ r[u].fontStyle != null && r[u].fontWeight != null ? (f = r[u].fontStyle + r[u].fontWeight, a.push(new g(c, f))) : a.push(new g(c));
309
+ }
310
+ t(a);
311
+ } else setTimeout(function() {
312
+ n();
313
+ }, 50);
314
+ }
315
+ var e = this, i = e.a.projectId, o = e.a.version;
316
+ if (i) {
317
+ var s = e.c.o;
318
+ F(this.c, (e.a.api || "https://fast.fonts.net/jsapi") + "/" + i + ".js" + (o ? "?v=" + o : ""), function(r) {
319
+ r ? t([]) : (s["__MonotypeConfiguration__" + i] = function() {
320
+ return e.a;
321
+ }, n());
322
+ }).id = "__MonotypeAPIScript__" + i;
323
+ } else t([]);
324
+ };
325
+ function it(t, n) {
326
+ this.c = t, this.a = n;
327
+ }
328
+ it.prototype.load = function(t) {
329
+ var n, e, i = this.a.urls || [], o = this.a.families || [], s = this.a.testStrings || {}, r = new $();
330
+ for (n = 0, e = i.length; n < e; n++) L(this.c, i[n], z(r));
331
+ var a = [];
332
+ for (n = 0, e = o.length; n < e; n++) if (i = o[n].split(":"), i[1]) for (var f = i[1].split(","), u = 0; u < f.length; u += 1) a.push(new g(i[0], f[u]));
333
+ else a.push(new g(i[0]));
334
+ H(r, function() {
335
+ t(a, s);
336
+ });
337
+ };
338
+ function xt(t, n) {
339
+ t ? this.c = t : this.c = jt, this.a = [], this.f = [], this.g = n || "";
340
+ }
341
+ var jt = "https://fonts.googleapis.com/css";
342
+ function _t(t, n) {
343
+ for (var e = n.length, i = 0; i < e; i++) {
344
+ var o = n[i].split(":");
345
+ o.length == 3 && t.f.push(o.pop());
346
+ var s = "";
347
+ o.length == 2 && o[1] != "" && (s = ":"), t.a.push(o.join(s));
348
+ }
349
+ }
350
+ function Tt(t) {
351
+ if (t.a.length == 0) throw Error("No fonts to load!");
352
+ if (t.c.indexOf("kit=") != -1) return t.c;
353
+ for (var n = t.a.length, e = [], i = 0; i < n; i++) e.push(t.a[i].replace(/ /g, "+"));
354
+ return n = t.c + "?family=" + e.join("%7C"), 0 < t.f.length && (n += "&subset=" + t.f.join(",")), 0 < t.g.length && (n += "&text=" + encodeURIComponent(t.g)), n;
355
+ }
356
+ function St(t) {
357
+ this.f = t, this.a = [], this.c = {};
358
+ }
359
+ var et = { latin: "BESbswy", "latin-ext": "çöüğş", cyrillic: "йяЖ", greek: "αβΣ", khmer: "កខគ", Hanuman: "កខគ" }, Et = { thin: "1", extralight: "2", "extra-light": "2", ultralight: "2", "ultra-light": "2", light: "3", regular: "4", book: "4", medium: "5", "semi-bold": "6", semibold: "6", "demi-bold": "6", demibold: "6", bold: "7", "extra-bold": "8", extrabold: "8", "ultra-bold": "8", ultrabold: "8", black: "9", heavy: "9", l: "3", r: "4", b: "7" }, bt = { i: "i", italic: "i", n: "n", normal: "n" }, At = /^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;
360
+ function Ct(t) {
361
+ for (var n = t.f.length, e = 0; e < n; e++) {
362
+ var i = t.f[e].split(":"), o = i[0].replace(/\+/g, " "), s = ["n4"];
363
+ if (2 <= i.length) {
364
+ var r, a = i[1];
365
+ if (r = [], a) for (var a = a.split(","), f = a.length, u = 0; u < f; u++) {
366
+ var c;
367
+ if (c = a[u], c.match(/^[\w-]+$/)) {
368
+ var l = At.exec(c.toLowerCase());
369
+ if (l == null) c = "";
370
+ else {
371
+ if (c = l[2], c = c == null || c == "" ? "n" : bt[c], l = l[1], l == null || l == "") l = "4";
372
+ else var v = Et[l], l = v || (isNaN(l) ? "4" : l.substr(0, 1));
373
+ c = [c, l].join("");
374
+ }
375
+ } else c = "";
376
+ c && r.push(c);
377
+ }
378
+ 0 < r.length && (s = r), i.length == 3 && (i = i[2], r = [], i = i ? i.split(",") : r, 0 < i.length && (i = et[i[0]]) && (t.c[o] = i));
379
+ }
380
+ for (t.c[o] || (i = et[o]) && (t.c[o] = i), i = 0; i < s.length; i += 1) t.a.push(new g(o, s[i]));
381
+ }
382
+ }
383
+ function ot(t, n) {
384
+ this.c = t, this.a = n;
385
+ }
386
+ var Nt = { Arimo: !0, Cousine: !0, Tinos: !0 };
387
+ ot.prototype.load = function(t) {
388
+ var n = new $(), e = this.c, i = new xt(this.a.api, this.a.text), o = this.a.families;
389
+ _t(i, o);
390
+ var s = new St(o);
391
+ Ct(s), L(e, Tt(i), z(n)), H(n, function() {
392
+ t(s.a, s.c, Nt);
393
+ });
394
+ };
395
+ function st(t, n) {
396
+ this.c = t, this.a = n;
397
+ }
398
+ st.prototype.load = function(t) {
399
+ var n = this.a.id, e = this.c.o;
400
+ n ? F(this.c, (this.a.api || "https://use.typekit.net") + "/" + n + ".js", function(i) {
401
+ if (i) t([]);
402
+ else if (e.Typekit && e.Typekit.config && e.Typekit.config.fn) {
403
+ i = e.Typekit.config.fn;
404
+ for (var o = [], s = 0; s < i.length; s += 2) for (var r = i[s], a = i[s + 1], f = 0; f < a.length; f++) o.push(new g(r, a[f]));
405
+ try {
406
+ e.Typekit.load({ events: !1, classes: !1, async: !0 });
407
+ } catch {
408
+ }
409
+ t(o);
410
+ }
411
+ }, 2e3) : t([]);
412
+ };
413
+ function rt(t, n) {
414
+ this.c = t, this.f = n, this.a = [];
415
+ }
416
+ rt.prototype.load = function(t) {
417
+ var n = this.f.id, e = this.c.o, i = this;
418
+ n ? (e.__webfontfontdeckmodule__ || (e.__webfontfontdeckmodule__ = {}), e.__webfontfontdeckmodule__[n] = function(o, s) {
419
+ for (var r = 0, a = s.fonts.length; r < a; ++r) {
420
+ var f = s.fonts[r];
421
+ i.a.push(new g(f.name, lt("font-weight:" + f.weight + ";font-style:" + f.style)));
422
+ }
423
+ t(i.a);
424
+ }, F(this.c, (this.f.api || "https://f.fontdeck.com/s/css/js/") + ct(this.c) + "/" + n + ".js", function(o) {
425
+ o && t([]);
426
+ })) : t([]);
427
+ };
428
+ var m = new tt(window);
429
+ m.a.c.custom = function(t, n) {
430
+ return new it(n, t);
431
+ }, m.a.c.fontdeck = function(t, n) {
432
+ return new rt(n, t);
433
+ }, m.a.c.monotype = function(t, n) {
434
+ return new nt(n, t);
435
+ }, m.a.c.typekit = function(t, n) {
436
+ return new st(n, t);
437
+ }, m.a.c.google = function(t, n) {
438
+ return new ot(n, t);
439
+ };
440
+ var at = { load: h(m.load, m) };
441
+ w.exports ? w.exports = at : (window.WebFont = at, window.WebFontConfig && m.load(window.WebFontConfig));
442
+ })();
443
+ })(B)), B.exports;
444
+ }
445
+ var Pt = Ft();
446
+ const It = /* @__PURE__ */ Wt({
447
+ __proto__: null
448
+ }, [Pt]);
449
+ export {
450
+ It as w
451
+ };
452
+ //# sourceMappingURL=webfontloader-DeB77L0f.mjs.map