@wix/bex-core 2.37.0 → 2.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/assets/locale/messages_cs.json +1 -0
- package/dist/cjs/assets/locale/messages_da.json +1 -0
- package/dist/cjs/assets/locale/messages_de.json +1 -0
- package/dist/cjs/assets/locale/messages_en.json +2 -1
- package/dist/cjs/assets/locale/messages_es.json +1 -0
- package/dist/cjs/assets/locale/messages_fr.json +1 -0
- package/dist/cjs/assets/locale/messages_hi.json +1 -0
- package/dist/cjs/assets/locale/messages_id.json +1 -0
- package/dist/cjs/assets/locale/messages_it.json +1 -0
- package/dist/cjs/assets/locale/messages_ja.json +1 -0
- package/dist/cjs/assets/locale/messages_ko.json +1 -0
- package/dist/cjs/assets/locale/messages_nl.json +1 -0
- package/dist/cjs/assets/locale/messages_no.json +1 -0
- package/dist/cjs/assets/locale/messages_pl.json +1 -0
- package/dist/cjs/assets/locale/messages_pt.json +1 -0
- package/dist/cjs/assets/locale/messages_ru.json +1 -0
- package/dist/cjs/assets/locale/messages_sv.json +1 -0
- package/dist/cjs/assets/locale/messages_th.json +1 -0
- package/dist/cjs/assets/locale/messages_tr.json +1 -0
- package/dist/cjs/assets/locale/messages_uk.json +1 -0
- package/dist/cjs/assets/locale/messages_vi.json +1 -0
- package/dist/cjs/assets/locale/messages_zh.json +1 -0
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/state/CollectionState.js +16 -7
- package/dist/cjs/state/CollectionState.js.map +1 -1
- package/dist/esm/assets/locale/messages_cs.json +1 -0
- package/dist/esm/assets/locale/messages_da.json +1 -0
- package/dist/esm/assets/locale/messages_de.json +1 -0
- package/dist/esm/assets/locale/messages_en.json +2 -1
- package/dist/esm/assets/locale/messages_es.json +1 -0
- package/dist/esm/assets/locale/messages_fr.json +1 -0
- package/dist/esm/assets/locale/messages_hi.json +1 -0
- package/dist/esm/assets/locale/messages_id.json +1 -0
- package/dist/esm/assets/locale/messages_it.json +1 -0
- package/dist/esm/assets/locale/messages_ja.json +1 -0
- package/dist/esm/assets/locale/messages_ko.json +1 -0
- package/dist/esm/assets/locale/messages_nl.json +1 -0
- package/dist/esm/assets/locale/messages_no.json +1 -0
- package/dist/esm/assets/locale/messages_pl.json +1 -0
- package/dist/esm/assets/locale/messages_pt.json +1 -0
- package/dist/esm/assets/locale/messages_ru.json +1 -0
- package/dist/esm/assets/locale/messages_sv.json +1 -0
- package/dist/esm/assets/locale/messages_th.json +1 -0
- package/dist/esm/assets/locale/messages_tr.json +1 -0
- package/dist/esm/assets/locale/messages_uk.json +1 -0
- package/dist/esm/assets/locale/messages_vi.json +1 -0
- package/dist/esm/assets/locale/messages_zh.json +1 -0
- package/dist/esm/state/CollectionState.js +14 -4
- package/dist/esm/state/CollectionState.js.map +1 -1
- package/dist/types/services/translations.d.ts +1 -1
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/state/CollectionState.d.ts +2 -0
- package/dist/types/state/CollectionState.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_model","require","_core","_mobx","_events","_QueryState","_QueryResultState","_BulkSelectState","_PromisesState","_Pagination","_PaginationMode","_TaskState","_util","_TransitionState","CollectionState","queryKeyOptions","query","queryKey","_queryKey","asComputed","originQuery","result","status","isOnline","onlineState","optimisticActions","_optimisticActions","process","env","NODE_ENV","Error","constructor","params","_defineProperty2","default","EventEmitter","PromisesState","TaskState","queryName","filters","rawFilters","search","hasActiveFilters","hasNonPersistentActiveFilters","nonPersistentFiltersKey","columns","computedQuery","items","total","available","cursor","fetchData","fetchesHistory","push","itemsKeys","map","item","itemKey","queryPageInfo","page","Promise","resolve","requestAnimationFrame","action","err","events","errorMonitor","console","error","OfflineError","handled","onError","captureException","getCurrentQuery","invalidate","_resetReactQuery","updateStatus","message","fetchErrorMessage","showToast","type","biName","onNewPageAdded","onNewPageStart","emitter","isError","pagination","nextPage","lifecycleState","onNewPageAddedListeners","listeners","l","maybeOnNewPageAdded","promise","currentQuery","onResultListeners","fetch","runInAction","_currentQueryPromise","updateResultInfo","updateResult","forEach","newPages","onNewPageAddedParams","totalNewItems","reduce","agg","length","focusManager","isFocused","fetchNextPageIfNeeded","clearResultAndMoveToStart","force","_recoverIfError","state","isPaused","dispatch","initTask","runOnce","TransitionState","lodash","persistQueryToUrl","toExtendedFields","makeObservable","bound","clearAndMoveToPage","refreshAllPages","sort","init","setInitialPage","initialFetch","totalPages","computed","hasAvailableItems","showInitialLoader","showRefreshLoader","showEmptyState","showErrorState","resetFiltersAndRefresh","observable","ref","clearResultBeforeRefresh","scrollableContent","_commonDynamicBiParams","fqdn","deferInitialLoading","queryCache","itemName","translate","initDependencies","remove","QueryState","limit","history","undefined","refreshOnColumnsChange","_paginationModeRef","paginationModeRef","current","paginationMode","_paginationMode","PaginationMode","selectionConsistencyMode","QueryResultState","toComputed","bulkSelect","BulkSelectState","disableAutoSelectAllCount","useNewSelectAllLogic","collection","scrollToTop","_this$scrollableConte","scrollTo","top","left","defaultQueryOptions","queryFn","_queryFn","keepPreviousData","suspense","enabled","retryDelay","staleTime","refetchOnMount","retryOnMount","queryOptions","queryClient","QueryClient","defaultOptions","queries","queryObserver","QueryObserver","retry","failureCount","shouldRedirectToLogin","initialPage","initialPromises","addPromise","animationFramePromise","_runSort","clearResult","emit","moveToFirstPage","scheduleSort","whenNotIdle","debounce","_runSearch","onSearch","onSearchResults","searchEndListeners","resetToDefaults","onResultUpdated","scheduleSearch","setOptions","options","maybeTotal","setQueryData","_getProcessedResult","unprocessedPages","unprocessedTotal","currentItemsMap","beforeAddNewPagesListeners","processedPages","pages","listener","processedTotal","_getProcessedTotal","beforeSetTotalListeners","reactQuery","data","filter","d","lastPage","_keyedItemsMap","addPages","unprocessed","processed","setTotals","setSupportTotal","setCursor","fn","args","isIdle","isFetching","getOptimisticResult","queryStatus","then","catch","isStale","fetchListeners","_totals","Math","ceil","fetchedLastPage","fetchNextPage","minLoaderTime","wait","min","max","fetchPromise","timeoutId","maxWaitPromise","setTimeout","minWaitPromise","race","clearTimeout","clear","initialCursor","fetchAndReplaceResult","queryLookup","Object","assign","filtersKey","findAll","q","col","origin","changeSort","multiple","slice","value","changeValue","clearSearch","changeItem","newItem","changeItems","newItems","changeResult","rollback","refreshCurrentPage","noInvalidate","beforeUpdateResult","currentPage","promises","lastPagePromise","pageQuery","id","_pageQuery$state$data","results","all","resetFilters","emitEvents","resetCustomFiltersAndRefresh","resetCustomFilters","onInitialPageFetched","prevQuery","beforeInitialFetchListeners","f","skipInitialFetch","on","onOnlineStateChange","disposers","_registerQueryEvents","subscribe","_this$initDependencie","call","off","disposer","idle","addEventListener","opts","refreshPromises","_this$scrollableConte2","behavior","reaction","fieldsKeyHash","getItem","key","keyedItem","get","getKeyedItem","getKeyedItemByIndex","index","keyedItems","addRefreshPromise","createPromise","_query$sort","_query$sort2","currentFilters","JSON","stringify","currentSortOrder","filteredListSize","initialItems","size","numSortedColumns","isLoading","isLoadingPromises","Boolean","isEmpty","topNotification","_topNotification","text","t","set","show","exports"],"sources":["../../../src/state/CollectionState.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n ComputedQueryFull,\n DataResultKeyed,\n DataResultRaw,\n Filter,\n FiltersKey,\n FiltersMap,\n Fqdn,\n KeyedItem,\n OnResultUpdated,\n QueryOptions,\n QueryResultStatus,\n queryStatus,\n ShowToast,\n} from '../model';\nimport {\n Query as ReactQuery,\n QueryCache,\n QueryClient,\n QueryObserver,\n} from 'react-query/core';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { History } from 'history';\nimport { QueryState } from './QueryState';\nimport { QueryResultState } from './QueryResultState';\nimport { BulkSelectState } from './BulkSelectState';\nimport { PromisesState } from './PromisesState';\nimport { initialCursor } from './Pagination';\nimport { PaginationMode, PaginationModeRef } from './PaginationMode';\nimport { TaskState } from './TaskState';\nimport {\n ErrorMonitor,\n ExtendedFields,\n PartialLodash,\n Translate,\n} from '../services';\nimport {\n addEventListener,\n OfflineError,\n shouldRedirectToLogin,\n TypedEmitter,\n} from '../util';\nimport { OnlineState } from './OnlineState';\nimport { TransitionState } from './TransitionState';\nimport { Sortable } from './SortState';\nimport { CollectionOptimisticActions } from './CollectionOptimisticActions';\n\ntype Query<T> = Omit<ReactQuery<DataResultKeyed<T>>, 'promise' | 'dispatch'> & {\n promise?: Promise<unknown>;\n dispatch: (action: { type: string; error: unknown }) => void;\n};\n\nexport interface CollectionStateEvents<T, F extends FiltersMap> {\n beforeAddNewPages: (params: {\n pages: T[][];\n currentItemsMap: Map<string, KeyedItem<T>>;\n originQuery: ComputedQueryFull<F>;\n }) => T[][];\n beforeSetTotal: (params: {\n total: number;\n originQuery: ComputedQuery<F>;\n }) => number;\n resultUpdated: () => unknown;\n beforeResultUpdated: () => unknown;\n ready: () => unknown;\n beforeInitialFetch: (params: { isStale: boolean }) => unknown;\n collectionLayout: () => unknown;\n fetch: (params: { isStale: boolean }) => void | undefined | (() => unknown);\n refresh: (params: { isStale: boolean }) => unknown;\n refreshCurrentPage: () => unknown;\n refreshAllPages: () => unknown;\n refreshUpdateResult: () => unknown;\n searchStart: () => () => unknown;\n search: (params: { clearResult?: boolean }) => unknown;\n clearSearch: () => unknown;\n newPageStart: () => (params: {\n totalNewItems: number;\n newPages: DataResultKeyed<T>[];\n }) => unknown;\n beforeSortStart: (params: {\n origin?: 'SidePanel' | 'ColumnHeader';\n }) => unknown;\n sortStart: (params: { col: { id: string } }) => unknown;\n sort: (params: { clearResult?: boolean }) => unknown;\n beforeClearFilters: (params: { origin: string }) => unknown;\n}\n\ninterface ScrollableContent {\n scrollTo: (options: ScrollToOptions) => void;\n}\n\nexport interface CollectionStateParams<T, F extends FiltersMap> {\n readonly queryCache: QueryCache;\n readonly queryName: string;\n readonly fqdn?: Fqdn;\n readonly filters: F;\n readonly search?: Filter<string>;\n readonly errorMonitor: ErrorMonitor;\n readonly onlineState: OnlineState;\n readonly history: History;\n readonly showToast?: ShowToast;\n readonly translate: Translate;\n readonly itemKey: (item: T) => string;\n readonly toExtendedFields?: (item: T) => ExtendedFields | undefined | null;\n readonly initDependencies?: () => Promise<unknown>;\n\n readonly fetchData: (query: ComputedQuery<F>) => Promise<DataResultRaw<T>>;\n readonly fetchErrorMessage: (params: {\n err: unknown;\n isOnline: boolean;\n }) => string | null | undefined;\n readonly itemName: (item: T) => string;\n readonly deferInitialLoading?: boolean;\n readonly events?: CollectionEvents<F>;\n readonly persistQueryToUrl?: boolean;\n readonly refreshOnColumnsChange?: boolean;\n readonly limit?: number;\n readonly initialPage?: DataResultRaw<T>;\n readonly queryOptions?: QueryOptions;\n readonly paginationMode?: 'cursor' | 'offset';\n readonly paginationModeRef?: PaginationModeRef;\n readonly selectionConsistencyMode?: 'preserve' | 'clear';\n readonly disableAutoSelectAllCount?: boolean;\n readonly useNewSelectAllLogic?: boolean;\n readonly lodash: PartialLodash;\n}\n\nexport interface CollectionStatePublicAPI<T, F extends FiltersMap> {\n /**\n * Invalidates all cache records for this collection.<br>\n * Optional parameters:<br>\n * `filters` - Clears only a specific part of the cache, for example: `invalidate({ filters: { status: ['active'] } })`\n * @external\n */\n invalidate(params?: {\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): void;\n\n /**\n * Invalidates cache and refreshes all previously fetched pages, without showing a loading indication.<br>\n * Optional parameters:<br>\n * - `beforeUpdateResult` - A callback function that will be called before updating the result.<br>\n * - `filters` - Invalidates only a specific part of the cache, for example: `refreshAllPages({ filters: { status: ['active'] } })`.\n * @external\n */\n refreshAllPages(params?: {\n beforeUpdateResult?: () => unknown;\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): Promise<void>;\n\n /**\n * Invalidates cache and refreshes current page, without showing a loading indication.<br>\n * Optional parameters:<br>\n * - `noInvalidate` - Refreshes current page without invalidating cache.\n * @external\n */\n refreshCurrentPage(params?: { noInvalidate?: boolean }): Promise<void>;\n\n /**\n * Clears all data from the collection and goes back to the first page and refreshes the first page data, while showing a loading indication.<br>\n * Optional parameters:<br>\n * - `force` - Invalidates the cache and resets react-query observer.\n * - `filters` - Clears only a specific part of the cache, for example: `invalidate({ filters: { status: ['active'] } })`\n * @external\n */\n clearResultAndMoveToStart(params?: {\n force?: boolean;\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): Promise<void>;\n\n /**\n * Triggers retry when collection fails to load\n * @external\n */\n retryErrorState(): void;\n\n /**\n * [BulkSelectState](./?path=/story/common-state--bulkselectstate)\n * @external\n */\n bulkSelect: BulkSelectState<T>;\n\n /**\n * [ComputedQuery](./?path=/story/common-types--computedquery) instance. Holds all the relevant variables to query the server API with.\n */\n originQuery: ComputedQueryFull<F>;\n\n /**\n * Status of the query. Contains boolean flags of `isIdle`, `isError`, `isLoading`, `isFetching`, `isSuccess`.\n * The difference between `isLoading` and `isFetching` is that `isLoading` is true during the initial query, `isFetching` is true during the next queries.\n * @external\n */\n status: QueryResultStatus<DataResultKeyed<T>, unknown>;\n\n /**\n * The total number of items, as was returned from the last query.\n * @external\n */\n total: number;\n\n /**\n * All the keyed items of the collection\n * @external\n */\n keyedItems: KeyedItem<T>[];\n\n /**\n * Get an item object according to its key\n * @external\n * @param key The key of the wanted item\n * @returns The wanted item\n */\n getItem(key: string): T | undefined | null;\n}\n\nexport class CollectionState<T, F extends FiltersMap = FiltersMap>\n implements CollectionStatePublicAPI<T, F>\n{\n readonly query: QueryState<F>;\n readonly _paginationModeRef;\n private readonly _paginationMode: PaginationMode<T, F>;\n readonly selectionConsistencyMode: 'preserve' | 'clear';\n readonly result: QueryResultState<T, F>;\n readonly fetchesHistory: {\n itemsKeys: string[];\n queryPageInfo: { page: number; cursor: string | null | undefined };\n }[];\n readonly bulkSelect: BulkSelectState<T>;\n scrollableContent?: ScrollableContent | null = null;\n readonly errorMonitor: ErrorMonitor;\n\n readonly queryCache: QueryCache;\n readonly queryClient: QueryClient;\n\n readonly queryObserver: QueryObserver<DataResultKeyed<T>>;\n readonly queryName;\n readonly fqdn;\n readonly fetchErrorMessage: CollectionStateParams<T, F>['fetchErrorMessage'];\n readonly itemName: CollectionStateParams<T, F>['itemName'];\n readonly itemKey: CollectionStateParams<T, F>['itemKey'];\n readonly toExtendedFields?;\n readonly translate: Translate;\n readonly fetchData: CollectionStateParams<T, F>['fetchData'];\n readonly lodash;\n\n readonly deferInitialLoading?: boolean;\n readonly persistQueryToUrl;\n\n _optimisticActions?: CollectionOptimisticActions<T, F>;\n beforeSetData?: () => void | Promise<unknown>;\n readonly showToast: ShowToast;\n\n readonly events: CollectionEvents<F>;\n readonly emitter = new EventEmitter() as TypedEmitter<\n CollectionStateEvents<T, F>\n >;\n\n readonly onlineState: OnlineState;\n readonly history: History;\n\n readonly initDependencies?: () => Promise<unknown>;\n readonly initialPromises = new PromisesState();\n readonly refreshPromises = new PromisesState();\n\n readonly initTask = new TaskState();\n\n /**\n * Possible flows:\n * result->refresh, refresh->result, result->fetchMore, fetchMore->result, refresh->refresh, fetchMore->fetchMore\n */\n lifecycleState: 'result' | 'refresh' | 'fetchMore' = 'result';\n\n _queryKey = (asComputed: ComputedQueryFull<F>) => {\n const { queryName } = this;\n const {\n filters,\n rawFilters,\n search,\n hasActiveFilters,\n hasNonPersistentActiveFilters,\n nonPersistentFiltersKey,\n columns,\n // Pick only properties relevant to `queryKey` uniqueness\n ...computedQuery\n } = asComputed;\n\n return [queryName, computedQuery] as const;\n };\n\n get queryKeyOptions() {\n const { query } = this;\n return {\n queryKey: this._queryKey(query.asComputed),\n };\n }\n\n get originQuery() {\n return this.result.originQuery;\n }\n\n get status() {\n return this.result.status;\n }\n\n isOnline() {\n return this.onlineState.isOnline;\n }\n\n get optimisticActions() {\n if (\n this._optimisticActions == null &&\n process.env.NODE_ENV !== 'production'\n ) {\n throw new Error('optimisticActions is not initialized');\n }\n return this._optimisticActions as CollectionOptimisticActions<T, F>;\n }\n\n constructor(params: CollectionStateParams<T, F>) {\n this.lodash = params.lodash;\n this.persistQueryToUrl = params.persistQueryToUrl;\n this.toExtendedFields = params.toExtendedFields;\n makeObservable(this, {\n fetchNextPageIfNeeded: action.bound,\n clearAndMoveToPage: action.bound,\n clearResultAndMoveToStart: action.bound,\n refreshAllPages: action.bound,\n updateStatus: action.bound,\n updateResult: action.bound,\n search: action,\n sort: action,\n fetch: action,\n init: action,\n setInitialPage: action,\n initialFetch: action,\n totalPages: computed,\n hasAvailableItems: computed,\n showInitialLoader: computed,\n showRefreshLoader: computed,\n showEmptyState: computed,\n showErrorState: computed,\n resetFiltersAndRefresh: action.bound,\n lifecycleState: observable.ref,\n clearResultBeforeRefresh: action,\n scrollableContent: observable.ref,\n _commonDynamicBiParams: action,\n });\n\n this.queryName = params.queryName;\n this.fqdn = params.fqdn;\n this.deferInitialLoading = params.deferInitialLoading;\n this.queryCache = params.queryCache;\n\n this.fetchErrorMessage = params.fetchErrorMessage;\n this.itemKey = params.itemKey;\n this.itemName = params.itemName;\n this.translate = params.translate;\n this.fetchData = params.fetchData;\n this.events = params.events ?? {};\n\n this.initDependencies = params.initDependencies;\n\n this.showToast = params.showToast ?? (() => ({ remove: () => {} }));\n\n this.query = new QueryState({\n filters: params.filters,\n search: params.search,\n limit: params.limit,\n history: params.persistQueryToUrl ? params.history : undefined,\n refreshOnColumnsChange: params.refreshOnColumnsChange,\n });\n\n this._paginationModeRef =\n params.paginationModeRef ??\n ({ current: params.paginationMode } as PaginationModeRef);\n\n this._paginationMode = new PaginationMode(this);\n\n this.selectionConsistencyMode =\n params.selectionConsistencyMode ?? 'preserve';\n\n this.result = new QueryResultState<T, F>({\n itemKey: params.itemKey,\n originQuery: this.query.toComputed(),\n });\n\n this.fetchesHistory = [];\n\n this.bulkSelect = new BulkSelectState<T>({\n disableAutoSelectAllCount: params.disableAutoSelectAllCount,\n useNewSelectAllLogic: params.useNewSelectAllLogic,\n collection: this,\n scrollToTop: () => {\n this.scrollableContent?.scrollTo({\n top: 0,\n left: 0,\n });\n },\n });\n\n this.errorMonitor = params.errorMonitor;\n this.onlineState = params.onlineState;\n this.history = params.history;\n\n const defaultQueryOptions = {\n queryFn: action(() => this._queryFn(this.query.asComputed)),\n keepPreviousData: true,\n suspense: false,\n enabled: false,\n retryDelay: 200,\n staleTime: 120000,\n onError: this.onError,\n refetchOnMount: false,\n retryOnMount: false,\n ...params.queryOptions,\n };\n\n this.queryClient = new QueryClient({\n queryCache: this.queryCache,\n defaultOptions: {\n queries: defaultQueryOptions,\n },\n });\n\n this.queryObserver = new QueryObserver<DataResultKeyed<T>>(\n this.queryClient,\n {\n retry: (failureCount, error) => {\n if (\n shouldRedirectToLogin(error, failureCount > 2 && this.isOnline())\n ) {\n return false;\n }\n return failureCount < 3;\n },\n ...defaultQueryOptions,\n },\n );\n\n this._resetReactQuery();\n\n if (params.initialPage) {\n this.setInitialPage(params.initialPage);\n }\n\n if (params.deferInitialLoading) {\n this.initialPromises.addPromise(this.animationFramePromise);\n }\n\n this._runSort = action(({ clearResult }: { clearResult?: boolean }) => {\n this.emitter.emit('sort', { clearResult });\n if (clearResult) {\n this.clearResultBeforeRefresh();\n }\n return this.moveToFirstPage();\n });\n\n this.scheduleSort = this.whenNotIdle(\n this.lodash.debounce(this._runSort, 300),\n );\n\n this._runSearch = action(async (clearResult?: boolean) => {\n const {\n events: { onSearch, onSearchResults },\n emitter,\n query,\n } = this;\n\n const searchEndListeners = emitter\n .listeners('searchStart')\n .map((l) => l());\n onSearch?.({\n query: query.asComputed,\n });\n emitter.emit('search', { clearResult });\n\n if (clearResult) {\n this.clearResultBeforeRefresh();\n }\n\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n return this.moveToFirstPage({\n onResultUpdated: (params) => {\n searchEndListeners.forEach((l) => l());\n onSearchResults?.(params);\n },\n });\n });\n\n this.scheduleSearch = this.lodash.debounce(this._runSearch, 300);\n }\n\n _resetReactQuery() {\n this.queryObserver.setOptions(\n {\n ...this.queryObserver.options,\n ...this.queryKeyOptions,\n enabled: false,\n },\n {\n onError: true,\n },\n );\n }\n\n _queryFn = async (\n computedQuery: ComputedQuery<F>,\n ): Promise<DataResultKeyed<T>> => {\n const {\n items,\n total,\n available = null,\n cursor = null,\n } = await this.fetchData(computedQuery);\n\n this.fetchesHistory.push({\n itemsKeys: items.map((item) => this.itemKey(item)),\n queryPageInfo: { page: computedQuery.page, cursor: computedQuery.cursor },\n });\n\n return {\n items,\n total,\n available,\n cursor,\n };\n };\n\n scheduleSort;\n private readonly scheduleSearch;\n readonly _runSearch;\n readonly _runSort;\n\n setInitialPage(initialPage: DataResultRaw<T>) {\n const {\n items,\n total: maybeTotal,\n available = null,\n cursor = null,\n } = initialPage;\n\n const total = maybeTotal ?? items.length;\n\n this.queryClient.setQueryData<DataResultKeyed<T>>(\n this.queryKeyOptions.queryKey,\n {\n items,\n total,\n available,\n cursor,\n },\n );\n }\n\n animationFramePromise = () =>\n new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n });\n\n onError = action((err: unknown) => {\n if (err == null) {\n return;\n }\n\n const { onlineState, events, errorMonitor } = this;\n console.error(err);\n\n const { isOnline } = onlineState;\n\n if (!(err instanceof OfflineError)) {\n const handled = events.onError?.({\n err,\n isOnline,\n });\n\n if (!handled) {\n errorMonitor.captureException(err);\n }\n }\n\n this.getCurrentQuery().invalidate();\n this._resetReactQuery();\n this.updateStatus();\n\n // online manager is responsible for showing offline toast message\n const message = isOnline\n ? this.fetchErrorMessage({\n err,\n isOnline,\n })\n : null;\n\n if (message) {\n this.showToast({\n type: 'ERROR' as any,\n message,\n biName: 'cairo-fetch-error',\n });\n }\n });\n\n _currentQueryPromise?: Promise<void>;\n\n getCurrentQuery() {\n const query = this.queryObserver.getCurrentQuery();\n return query as unknown as Query<T>;\n }\n\n get paginationMode() {\n return this._paginationMode;\n }\n\n _getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap,\n }: {\n unprocessedPages: T[][];\n unprocessedTotal: number;\n currentItemsMap: Map<string, KeyedItem<T>>;\n }) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeAddNewPagesListeners = emitter.listeners('beforeAddNewPages');\n\n const processedPages = beforeAddNewPagesListeners.reduce(\n (pages, listener) =>\n listener({\n pages,\n currentItemsMap,\n originQuery,\n }),\n unprocessedPages,\n );\n\n const processedTotal = this._getProcessedTotal(unprocessedTotal);\n\n return {\n processedPages,\n processedTotal,\n };\n }\n\n _getProcessedTotal(unprocessedTotal: number) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeSetTotalListeners = emitter.listeners('beforeSetTotal');\n return beforeSetTotalListeners.reduce(\n (total, listener) =>\n listener({\n total,\n originQuery,\n }),\n unprocessedTotal,\n );\n }\n\n updateResult(queries: Query<T>[]) {\n const { result, paginationMode, emitter } = this;\n\n const newPages = queries\n .map((reactQuery) => reactQuery.state.data)\n .filter((d): d is DataResultKeyed<T> => d != null);\n\n this.updateStatus();\n\n if (newPages.length) {\n emitter.emit('beforeResultUpdated');\n\n const lastPage = newPages[newPages.length - 1];\n const { available, cursor } = lastPage;\n\n const unprocessedTotal = lastPage.total ?? lastPage.items.length;\n const unprocessedPages = newPages.map((data) => data.items);\n\n const { processedPages, processedTotal } = this._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: result._keyedItemsMap,\n });\n\n result.addPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n result.setSupportTotal(lastPage.total != null);\n\n paginationMode.setCursor(cursor);\n if (available != null) {\n result.available = available;\n }\n this.lifecycleState = 'result';\n\n emitter.emit('resultUpdated');\n\n return {\n newPages,\n };\n }\n\n return null;\n }\n\n whenNotIdle(fn: (...args: any[]) => unknown) {\n return (...args: any[]) => {\n if (this.result.status.isIdle) {\n return;\n }\n\n fn(...args);\n };\n }\n\n updateStatus() {\n const { queryObserver, result, query } = this;\n const { status, error, isFetching } = queryObserver.getOptimisticResult(\n queryObserver.options,\n );\n\n result.status = {\n ...queryStatus[status],\n isFetching,\n error,\n } as QueryResultStatus<DataResultKeyed<T>, unknown>;\n result.originQuery = query.asComputed;\n }\n\n fetch() {\n const { queryObserver, onlineState, emitter } = this;\n\n queryObserver.setOptions(\n {\n ...queryObserver.options,\n ...this.queryKeyOptions,\n enabled: true,\n },\n {\n onError: true,\n },\n );\n\n const currentQuery = this.getCurrentQuery();\n this._currentQueryPromise = new Promise<void>((resolve) => {\n if (currentQuery.promise) {\n currentQuery.promise.then(() => resolve()).catch(() => resolve());\n } else {\n resolve();\n }\n });\n\n const isStale = currentQuery.isStale();\n\n const fetchListeners = emitter.listeners('fetch');\n const onResultListeners = fetchListeners.map((l) => l({ isStale }));\n\n if (!onlineState.isOnline) {\n currentQuery.dispatch({\n type: 'error',\n error: new OfflineError('CollectionState.fetch: offline'),\n });\n }\n\n this.updateStatus();\n\n return {\n currentQuery,\n isStale,\n onResultListeners,\n promise: this._currentQueryPromise,\n };\n }\n\n get totalPages() {\n const {\n result: {\n _totals: { unprocessed: total },\n },\n query: {\n pagination: { limit },\n },\n } = this;\n return Math.ceil(total / limit);\n }\n\n get total() {\n return this.result.total;\n }\n\n get fetchedLastPage() {\n const {\n paginationMode: { fetchedLastPage },\n } = this;\n return fetchedLastPage;\n }\n\n private readonly fetchNextPage = action(async () => {\n const {\n query,\n result,\n events: { onNewPageAdded, onNewPageStart },\n emitter,\n } = this;\n // if current page has an error, do not skip to next page\n if (!result.status.isError) {\n query.pagination.nextPage();\n }\n\n this.lifecycleState = 'fetchMore';\n\n const onNewPageAddedListeners = emitter\n .listeners('newPageStart')\n .map((l) => l());\n const maybeOnNewPageAdded = onNewPageStart?.({\n query: query.asComputed,\n });\n\n const { promise, currentQuery, onResultListeners } = this.fetch();\n await promise;\n\n runInAction(() => {\n if (promise === this._currentQueryPromise) {\n const updateResultInfo = this.updateResult([currentQuery]);\n\n onResultListeners.forEach((l) => l?.());\n\n if (updateResultInfo) {\n const { newPages } = updateResultInfo;\n const onNewPageAddedParams = {\n totalNewItems: newPages.reduce(\n (agg, page) => agg + page.items.length,\n 0,\n ),\n newPages,\n query: result.originQuery,\n result: result.asComputed,\n };\n onNewPageAddedListeners.forEach((l) => l(onNewPageAddedParams));\n if (maybeOnNewPageAdded != null) {\n maybeOnNewPageAdded(onNewPageAddedParams);\n }\n onNewPageAdded?.(onNewPageAddedParams);\n }\n }\n });\n });\n\n async fetchNextPageIfNeeded() {\n const { result, fetchedLastPage, lifecycleState } = this;\n if (\n lifecycleState !== 'refresh' &&\n !result.status.isFetching &&\n !fetchedLastPage\n ) {\n await this.fetchNextPage();\n }\n }\n\n // for rendering only a single page (<PaginationTable />)\n async clearAndMoveToPage(\n page: number,\n options: { wait?: { min: number; max: number } } = {},\n ) {\n let minLoaderTime = 0;\n const { wait = { min: 200, max: 500 } } = options;\n const {\n query,\n result,\n events: { onNewPageStart },\n } = this;\n const { pagination } = query;\n pagination.page = page;\n\n const maybeOnNewPageAdded = onNewPageStart?.({\n query: query.asComputed,\n });\n\n const { promise, currentQuery, onResultListeners } = this.fetch();\n const fetchPromise = promise;\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const maxWaitPromise = new Promise<void>((resolve) => {\n timeoutId = setTimeout(() => {\n // timeoutId was not cleared yet, start showing a loader and set minimal time for the loader to show\n minLoaderTime = wait.min;\n this.clearResultBeforeRefresh();\n resolve();\n }, wait.max);\n });\n\n // minimal time to wait (usually scrolling to top time) before applying the new result\n const minWaitPromise = new Promise((resolve) => {\n setTimeout(resolve, wait.min);\n });\n\n await Promise.race([maxWaitPromise, fetchPromise]);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n if (minLoaderTime) {\n await new Promise((resolve) => setTimeout(resolve, minLoaderTime));\n }\n\n await minWaitPromise;\n await fetchPromise;\n\n if (promise === this._currentQueryPromise) {\n runInAction(() => {\n result.clear();\n const updateResultInfo = this.updateResult([currentQuery]);\n onResultListeners.forEach((l) => l?.());\n if (updateResultInfo) {\n const { newPages } = updateResultInfo;\n if (maybeOnNewPageAdded != null) {\n maybeOnNewPageAdded({\n totalNewItems: newPages.reduce(\n (agg, page) => agg + page.items.length,\n 0,\n ),\n query: result.originQuery,\n result: result.asComputed,\n });\n }\n }\n });\n }\n }\n\n clearResultBeforeRefresh() {\n const { result } = this;\n this.lifecycleState = 'refresh';\n result.clear();\n }\n\n async moveToFirstPage({\n onResultUpdated,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n } = {}) {\n const {\n query: { pagination },\n } = this;\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n await this.fetchAndReplaceResult({ onResultUpdated });\n }\n\n invalidate({ filters }: { filters?: FiltersKey<F> } = {}) {\n const { queryCache, queryName } = this;\n const queryLookup = {};\n if (filters) {\n Object.assign(queryLookup, {\n filtersKey: filters,\n });\n }\n\n queryCache\n .findAll({ queryKey: [queryName, queryLookup] })\n .forEach((q) => q.invalidate());\n }\n\n clearResultAndMoveToStart({\n onResultUpdated,\n force,\n filters,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n force?: boolean;\n filters?: FiltersKey<F>;\n } = {}) {\n if (force) {\n this.invalidate({ filters });\n this._resetReactQuery();\n }\n this.clearResultBeforeRefresh();\n return this.moveToFirstPage({ onResultUpdated });\n }\n\n sort(\n col: Sortable,\n params: {\n clearResult?: boolean;\n multiple?: boolean;\n } = {},\n ) {\n const { query, emitter } = this;\n\n emitter.emit('beforeSortStart', {\n origin: 'ColumnHeader',\n });\n\n query.sort.changeSort(col, { multiple: params.multiple });\n\n emitter.emit('sortStart', { col });\n\n return this.scheduleSort(params);\n }\n\n async fetchAndReplaceResult({\n onResultUpdated,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n } = {}) {\n const { result, query, emitter } = this;\n\n const { promise, currentQuery, isStale, onResultListeners } = this.fetch();\n // page=1 means starting over, i.e refresh\n if (query.pagination.page === 1) {\n emitter.emit('refresh', { isStale });\n }\n\n await promise;\n\n if (promise === this._currentQueryPromise) {\n runInAction(() => {\n result.slice(0, query.pagination.page - 1);\n this.emitter.emit('refreshUpdateResult');\n this.updateResult([currentQuery]);\n onResultListeners.forEach((l) => l?.());\n onResultUpdated?.({\n query: result.originQuery,\n result: result.asComputed,\n });\n });\n }\n\n return currentQuery;\n }\n\n search(\n value: string,\n { force, clearResult }: { force?: boolean; clearResult?: boolean } = {},\n ) {\n const { query } = this;\n const { search } = query;\n if (force || value !== search.value) {\n search.changeValue(value);\n this.scheduleSearch(clearResult);\n }\n }\n\n clearSearch() {\n const {\n query,\n events: { onSearchResults },\n emitter,\n } = this;\n const { search } = query;\n if (search.value === '') {\n return;\n }\n\n search.changeValue('');\n emitter.emit('clearSearch');\n\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n return this.clearResultAndMoveToStart({ onResultUpdated: onSearchResults });\n }\n\n get filters() {\n return this.query.filters;\n }\n\n changeItem(newItem: T) {\n return this.changeItems([newItem]);\n }\n\n changeItems(newItems: T[]) {\n const changeResult = this.result.changeItems(newItems);\n\n if (changeResult != null) {\n this.invalidate();\n\n return changeResult.rollback;\n }\n\n return undefined;\n }\n\n async refreshCurrentPage({ noInvalidate }: { noInvalidate?: boolean } = {}) {\n const { emitter } = this;\n\n if (!noInvalidate) {\n this.invalidate();\n }\n\n this._resetReactQuery();\n emitter.emit('refreshCurrentPage');\n\n await this.fetchAndReplaceResult();\n }\n\n async refreshAllPages({\n beforeUpdateResult,\n filters,\n }: {\n beforeUpdateResult?: () => unknown;\n filters?: FiltersKey<F>;\n } = {}) {\n const { query, result, paginationMode, emitter } = this;\n const { pagination } = query;\n const { page: currentPage } = pagination;\n\n this.invalidate({ filters });\n\n const promises: Promise<Query<T>>[] = [];\n\n pagination.cursor = initialCursor;\n\n emitter.emit('refreshAllPages');\n emitter.emit('refresh', { isStale: true }); // Because of invalidation above, all queries are now stale\n\n let lastPagePromise = undefined as Promise<unknown> | undefined;\n\n for (let page = 1; page <= currentPage; page++) {\n pagination.page = page;\n this._resetReactQuery();\n const { currentQuery: pageQuery, promise } = this.fetch();\n if (pageQuery.promise) {\n if (paginationMode.id === 'cursor') {\n await pageQuery.promise;\n runInAction(\n () => (pagination.cursor = pageQuery.state.data?.cursor ?? null),\n );\n }\n promises.push(pageQuery.promise.then(() => pageQuery));\n }\n\n if (page === currentPage) {\n lastPagePromise = promise;\n }\n }\n\n this.updateStatus();\n\n const results = await Promise.all(promises);\n\n runInAction(() => {\n beforeUpdateResult?.();\n if (lastPagePromise === this._currentQueryPromise) {\n result.slice(currentPage);\n this.emitter.emit('refreshUpdateResult');\n this.updateResult(results);\n }\n });\n }\n\n get hasAvailableItems() {\n return this.result.hasAvailableItems;\n }\n\n resetFiltersAndRefresh() {\n const { query } = this;\n query.resetFilters({ emitEvents: ['change', 'refresh'] });\n }\n\n resetCustomFiltersAndRefresh() {\n const { query } = this;\n query.resetCustomFilters({ emitEvents: ['change', 'refresh'] });\n }\n\n async initialFetch() {\n const {\n result,\n events: { onInitialPageFetched },\n emitter,\n query: { pagination },\n } = this;\n\n const prevQuery = this.getCurrentQuery();\n\n if (!result.status.isIdle && !result.status.isError) {\n return prevQuery.promise;\n }\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n this.lifecycleState = 'refresh';\n const isStale = prevQuery.isStale();\n const beforeInitialFetchListeners = emitter.listeners('beforeInitialFetch');\n await Promise.all(beforeInitialFetchListeners.map((f) => f({ isStale })));\n\n // reset paging state again for any possible edge case caused by external side effect while waiting `beforeInitialFetchListeners`\n runInAction(() => {\n pagination.page = 1;\n pagination.cursor = initialCursor;\n this.lifecycleState = 'refresh';\n });\n\n const currentQuery = await this.fetchAndReplaceResult();\n await currentQuery.promise;\n this.emitter.emit('ready');\n runInAction(() => {\n const { total, available } = result;\n onInitialPageFetched?.({\n result: {\n total,\n available: available ?? 0,\n },\n query: result.originQuery,\n });\n });\n }\n\n _recoverIfError = action(() => {\n const { onlineState } = this;\n const { focusManager } = onlineState;\n\n if (\n focusManager.isFocused() &&\n onlineState.isOnline &&\n this.result.status.isError\n ) {\n if (this.lifecycleState === 'fetchMore') {\n // error state is not shown, fetch next page\n this.fetchNextPageIfNeeded();\n } else {\n // error state is shown, move to start\n this.clearResultAndMoveToStart({ force: true });\n }\n }\n });\n\n onOnlineStateChange = (isOnline: boolean) => {\n const currentQuery = this.getCurrentQuery();\n\n if (isOnline) {\n this._recoverIfError();\n } else if (!isOnline && currentQuery.state.isPaused) {\n currentQuery.dispatch({\n type: 'error',\n error: new OfflineError('CollectionState.onOnlineStateChange: offline'),\n });\n this.updateStatus();\n }\n };\n\n retryErrorState = action(() => {\n const { initTask } = this;\n\n if (initTask.status.isError) {\n initTask.runOnce();\n } else {\n this.clearResultAndMoveToStart();\n }\n });\n\n init({ skipInitialFetch }: { skipInitialFetch?: boolean } = {}) {\n const { bulkSelect, onlineState, query, initTask, result } = this;\n const { focusManager } = onlineState;\n\n result.originQuery = query.asComputed;\n\n onlineState.events.on('change', this.onOnlineStateChange);\n\n const disposers = [\n query.init(),\n this._registerQueryEvents(),\n bulkSelect.init(),\n // react-query considers \"mounted\" only if listeners are subscribed\n this.queryObserver.subscribe(() => {}),\n focusManager.subscribe(this._recoverIfError),\n ];\n\n initTask.runOnce(async () => {\n await Promise.all([\n skipInitialFetch ? null : this.initialFetch(),\n this.initDependencies?.(),\n ]);\n });\n\n return action(() => {\n onlineState.events.off('change', this.onOnlineStateChange);\n disposers.forEach((disposer) => disposer());\n initTask.status = {\n ...queryStatus.idle,\n };\n });\n }\n\n _registerQueryEvents() {\n const { query } = this;\n const disposers = [\n addEventListener(query.events, 'refresh', (opts) => {\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n if (this.deferInitialLoading) {\n this.refreshPromises.addPromise(this.animationFramePromise);\n }\n\n if (opts?.clearResult !== false) {\n this.clearResultBeforeRefresh();\n } else {\n this.scrollableContent?.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n this.moveToFirstPage();\n }),\n addEventListener(query.events, 'scheduleRefresh', (opts) => {\n this.scheduleSearch(opts?.clearResult);\n }),\n ...(query.refreshOnColumnsChange\n ? [\n reaction(\n () => query.fieldsKeyHash,\n () => {\n this.clearResultBeforeRefresh();\n this.moveToFirstPage();\n },\n ),\n ]\n : []),\n ];\n\n return () => {\n disposers.forEach((d) => d());\n };\n }\n\n getItem(key: string): T | undefined | null {\n const keyedItem = this.result.get(key);\n return keyedItem?.item;\n }\n\n getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n return this.result.get(key);\n }\n\n getKeyedItemByIndex(index: number): KeyedItem<T> | null {\n return this.result.keyedItems[index];\n }\n\n get keyedItems() {\n return this.result.keyedItems;\n }\n\n addRefreshPromise<P>(createPromise: () => Promise<P>) {\n return this.refreshPromises.addPromise(createPromise);\n }\n\n _commonDynamicBiParams(query = this.result.originQuery): {\n currentFilters?: string;\n currentSortOrder?: string;\n filteredListSize?: number;\n initialItems?: number;\n numSortedColumns?: number;\n csid?: string;\n } {\n const { result, fqdn } = this;\n\n return {\n ...fqdn,\n currentFilters: JSON.stringify(query.filtersKey),\n currentSortOrder: query.sort?.length\n ? JSON.stringify(query.sort)\n : undefined,\n filteredListSize: result.total,\n initialItems: result.size,\n numSortedColumns: query.sort?.length,\n };\n }\n\n get showInitialLoader() {\n const {\n initTask: {\n status: { isLoading },\n },\n initialPromises: { isLoadingPromises },\n } = this;\n return isLoading || isLoadingPromises;\n }\n\n get showRefreshLoader() {\n const {\n refreshPromises: { isLoadingPromises },\n result: { status },\n lifecycleState,\n } = this;\n return (\n isLoadingPromises ||\n Boolean(status.isFetching && lifecycleState === 'refresh')\n );\n }\n\n get showEmptyState() {\n const {\n lifecycleState,\n result: { isEmpty },\n } = this;\n return lifecycleState === 'result' && isEmpty;\n }\n\n get showErrorState() {\n const {\n result: { status },\n lifecycleState,\n } = this;\n return (\n !status.isFetching && status.isError && lifecycleState !== 'fetchMore'\n );\n }\n\n _topNotification = new TransitionState<string | null>();\n\n get topNotification(): {\n text: string | null | undefined;\n readonly show: boolean;\n } {\n const { _topNotification } = this;\n return {\n set text(t: string | null | undefined) {\n _topNotification.set(t);\n },\n get text() {\n return runInAction(() => _topNotification.data);\n },\n get show() {\n return runInAction(() => _topNotification.show);\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_model","require","_core","_mobx","_events","_QueryState","_QueryResultState","_BulkSelectState","_PromisesState","_Pagination","_PaginationMode","_TaskState","_util","_TransitionState","CollectionState","queryKeyOptions","query","queryKey","_queryKey","asComputed","originQuery","result","status","isOnline","onlineState","optimisticActions","_optimisticActions","process","env","NODE_ENV","Error","constructor","params","_defineProperty2","default","EventEmitter","PromisesState","TaskState","queryName","filters","rawFilters","search","hasActiveFilters","hasNonPersistentActiveFilters","nonPersistentFiltersKey","columns","computedQuery","items","total","available","cursor","fetchData","Promise","resolve","requestAnimationFrame","action","err","events","errorMonitor","console","error","OfflineError","handled","onError","captureException","getCurrentQuery","invalidate","_resetReactQuery","updateStatus","message","fetchErrorMessage","showToast","type","biName","onNewPageAdded","onNewPageStart","emitter","isError","pagination","nextPage","lifecycleState","onNewPageAddedListeners","listeners","map","l","maybeOnNewPageAdded","promise","currentQuery","onResultListeners","fetch","runInAction","_currentQueryPromise","updateResultInfo","updateResult","forEach","newPages","onNewPageAddedParams","totalNewItems","reduce","agg","page","length","focusManager","isFocused","fetchNextPageIfNeeded","clearResultAndMoveToStart","force","_recoverIfError","state","isPaused","dispatch","initTask","runOnce","TransitionState","lodash","persistQueryToUrl","toExtendedFields","makeObservable","bound","clearAndMoveToPage","refreshAllPages","sort","init","setInitialPage","initialFetch","totalPages","computed","hasAvailableItems","showInitialLoader","showRefreshLoader","showEmptyState","showErrorState","resetFiltersAndRefresh","observable","ref","clearResultBeforeRefresh","scrollableContent","_commonDynamicBiParams","fqdn","deferInitialLoading","queryCache","itemKey","itemName","translate","initDependencies","remove","QueryState","limit","history","undefined","refreshOnColumnsChange","_paginationModeRef","paginationModeRef","current","paginationMode","_paginationMode","PaginationMode","selectionConsistencyMode","QueryResultState","toComputed","fetchesHistory","bulkSelect","BulkSelectState","disableAutoSelectAllCount","useNewSelectAllLogic","collection","scrollToTop","_this$scrollableConte","scrollTo","top","left","defaultQueryOptions","queryFn","_queryFn","keepPreviousData","suspense","enabled","retryDelay","staleTime","refetchOnMount","retryOnMount","queryOptions","queryClient","QueryClient","defaultOptions","queries","queryObserver","QueryObserver","retry","failureCount","shouldRedirectToLogin","initialPage","initialPromises","addPromise","animationFramePromise","_runSort","clearResult","emit","moveToFirstPage","scheduleSort","whenNotIdle","debounce","_runSearch","onSearch","onSearchResults","searchEndListeners","resetToDefaults","onResultUpdated","scheduleSearch","setOptions","options","maybeTotal","setQueryData","_getProcessedResult","unprocessedPages","unprocessedTotal","currentItemsMap","beforeAddNewPagesListeners","processedPages","pages","listener","processedTotal","_getProcessedTotal","beforeSetTotalListeners","_addToFetchesHistory","offset","push","itemsKeys","flatMap","p","item","queryPageInfo","reactQuery","data","filter","d","lastPage","_keyedItemsMap","addPages","unprocessed","processed","setTotals","setSupportTotal","setCursor","fn","args","isIdle","isFetching","getOptimisticResult","queryStatus","then","catch","isStale","fetchListeners","_totals","Math","ceil","fetchedLastPage","fetchNextPage","minLoaderTime","wait","min","max","fetchPromise","timeoutId","maxWaitPromise","setTimeout","minWaitPromise","race","clearTimeout","clear","initialCursor","fetchAndReplaceResult","queryLookup","Object","assign","filtersKey","findAll","q","col","origin","changeSort","multiple","slice","value","changeValue","clearSearch","changeItem","newItem","changeItems","newItems","changeResult","rollback","refreshCurrentPage","noInvalidate","beforeUpdateResult","currentPage","promises","lastPagePromise","pageQuery","id","_pageQuery$state$data","results","all","resetFilters","emitEvents","resetCustomFiltersAndRefresh","resetCustomFilters","onInitialPageFetched","prevQuery","beforeInitialFetchListeners","f","skipInitialFetch","on","onOnlineStateChange","disposers","_registerQueryEvents","subscribe","_this$initDependencie","call","off","disposer","idle","addEventListener","opts","refreshPromises","_this$scrollableConte2","behavior","reaction","fieldsKeyHash","getItem","key","keyedItem","get","getKeyedItem","getKeyedItemByIndex","index","keyedItems","addRefreshPromise","createPromise","_query$sort","_query$sort2","currentFilters","JSON","stringify","currentSortOrder","filteredListSize","initialItems","size","numSortedColumns","isLoading","isLoadingPromises","Boolean","isEmpty","topNotification","_topNotification","text","t","set","show","exports"],"sources":["../../../src/state/CollectionState.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n ComputedQueryFull,\n DataResultKeyed,\n DataResultRaw,\n Filter,\n FiltersKey,\n FiltersMap,\n Fqdn,\n KeyedItem,\n OnResultUpdated,\n QueryOptions,\n QueryResultStatus,\n queryStatus,\n ShowToast,\n} from '../model';\nimport {\n Query as ReactQuery,\n QueryCache,\n QueryClient,\n QueryObserver,\n} from 'react-query/core';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { History } from 'history';\nimport { QueryState } from './QueryState';\nimport { QueryResultState } from './QueryResultState';\nimport { BulkSelectState } from './BulkSelectState';\nimport { PromisesState } from './PromisesState';\nimport { initialCursor } from './Pagination';\nimport { PaginationMode, PaginationModeRef } from './PaginationMode';\nimport { TaskState } from './TaskState';\nimport {\n ErrorMonitor,\n ExtendedFields,\n PartialLodash,\n Translate,\n} from '../services';\nimport {\n addEventListener,\n OfflineError,\n shouldRedirectToLogin,\n TypedEmitter,\n} from '../util';\nimport { OnlineState } from './OnlineState';\nimport { TransitionState } from './TransitionState';\nimport { Sortable } from './SortState';\nimport { CollectionOptimisticActions } from './CollectionOptimisticActions';\n\ntype Query<T> = Omit<ReactQuery<DataResultKeyed<T>>, 'promise' | 'dispatch'> & {\n promise?: Promise<unknown>;\n dispatch: (action: { type: string; error: unknown }) => void;\n};\n\nexport interface CollectionStateEvents<T, F extends FiltersMap> {\n beforeAddNewPages: (params: {\n pages: T[][];\n currentItemsMap: Map<string, KeyedItem<T>>;\n originQuery: ComputedQueryFull<F>;\n }) => T[][];\n beforeSetTotal: (params: {\n total: number;\n originQuery: ComputedQuery<F>;\n }) => number;\n resultUpdated: () => unknown;\n beforeResultUpdated: () => unknown;\n ready: () => unknown;\n beforeInitialFetch: (params: { isStale: boolean }) => unknown;\n collectionLayout: () => unknown;\n fetch: (params: { isStale: boolean }) => void | undefined | (() => unknown);\n refresh: (params: { isStale: boolean }) => unknown;\n refreshCurrentPage: () => unknown;\n refreshAllPages: () => unknown;\n refreshUpdateResult: () => unknown;\n searchStart: () => () => unknown;\n search: (params: { clearResult?: boolean }) => unknown;\n clearSearch: () => unknown;\n newPageStart: () => (params: {\n totalNewItems: number;\n newPages: DataResultKeyed<T>[];\n }) => unknown;\n beforeSortStart: (params: {\n origin?: 'SidePanel' | 'ColumnHeader';\n }) => unknown;\n sortStart: (params: { col: { id: string } }) => unknown;\n sort: (params: { clearResult?: boolean }) => unknown;\n beforeClearFilters: (params: { origin: string }) => unknown;\n}\n\ninterface ScrollableContent {\n scrollTo: (options: ScrollToOptions) => void;\n}\n\nexport interface CollectionStateParams<T, F extends FiltersMap> {\n readonly queryCache: QueryCache;\n readonly queryName: string;\n readonly fqdn?: Fqdn;\n readonly filters: F;\n readonly search?: Filter<string>;\n readonly errorMonitor: ErrorMonitor;\n readonly onlineState: OnlineState;\n readonly history: History;\n readonly showToast?: ShowToast;\n readonly translate: Translate;\n readonly itemKey: (item: T) => string;\n readonly toExtendedFields?: (item: T) => ExtendedFields | undefined | null;\n readonly initDependencies?: () => Promise<unknown>;\n\n readonly fetchData: (query: ComputedQuery<F>) => Promise<DataResultRaw<T>>;\n readonly fetchErrorMessage: (params: {\n err: unknown;\n isOnline: boolean;\n }) => string | null | undefined;\n readonly itemName: (item: T) => string;\n readonly deferInitialLoading?: boolean;\n readonly events?: CollectionEvents<F>;\n readonly persistQueryToUrl?: boolean;\n readonly refreshOnColumnsChange?: boolean;\n readonly limit?: number;\n readonly initialPage?: DataResultRaw<T>;\n readonly queryOptions?: QueryOptions;\n readonly paginationMode?: 'cursor' | 'offset';\n readonly paginationModeRef?: PaginationModeRef;\n readonly selectionConsistencyMode?: 'preserve' | 'clear';\n readonly disableAutoSelectAllCount?: boolean;\n readonly useNewSelectAllLogic?: boolean;\n readonly lodash: PartialLodash;\n}\n\nexport interface CollectionStatePublicAPI<T, F extends FiltersMap> {\n /**\n * Invalidates all cache records for this collection.<br>\n * Optional parameters:<br>\n * `filters` - Clears only a specific part of the cache, for example: `invalidate({ filters: { status: ['active'] } })`\n * @external\n */\n invalidate(params?: {\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): void;\n\n /**\n * Invalidates cache and refreshes all previously fetched pages, without showing a loading indication.<br>\n * Optional parameters:<br>\n * - `beforeUpdateResult` - A callback function that will be called before updating the result.<br>\n * - `filters` - Invalidates only a specific part of the cache, for example: `refreshAllPages({ filters: { status: ['active'] } })`.\n * @external\n */\n refreshAllPages(params?: {\n beforeUpdateResult?: () => unknown;\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): Promise<void>;\n\n /**\n * Invalidates cache and refreshes current page, without showing a loading indication.<br>\n * Optional parameters:<br>\n * - `noInvalidate` - Refreshes current page without invalidating cache.\n * @external\n */\n refreshCurrentPage(params?: { noInvalidate?: boolean }): Promise<void>;\n\n /**\n * Clears all data from the collection and goes back to the first page and refreshes the first page data, while showing a loading indication.<br>\n * Optional parameters:<br>\n * - `force` - Invalidates the cache and resets react-query observer.\n * - `filters` - Clears only a specific part of the cache, for example: `invalidate({ filters: { status: ['active'] } })`\n * @external\n */\n clearResultAndMoveToStart(params?: {\n force?: boolean;\n filters?: { [P in keyof F]?: string[] | undefined | null };\n }): Promise<void>;\n\n /**\n * Triggers retry when collection fails to load\n * @external\n */\n retryErrorState(): void;\n\n /**\n * [BulkSelectState](./?path=/story/common-state--bulkselectstate)\n * @external\n */\n bulkSelect: BulkSelectState<T>;\n\n /**\n * [ComputedQuery](./?path=/story/common-types--computedquery) instance. Holds all the relevant variables to query the server API with.\n */\n originQuery: ComputedQueryFull<F>;\n\n /**\n * Status of the query. Contains boolean flags of `isIdle`, `isError`, `isLoading`, `isFetching`, `isSuccess`.\n * The difference between `isLoading` and `isFetching` is that `isLoading` is true during the initial query, `isFetching` is true during the next queries.\n * @external\n */\n status: QueryResultStatus<DataResultKeyed<T>, unknown>;\n\n /**\n * The total number of items, as was returned from the last query.\n * @external\n */\n total: number;\n\n /**\n * All the keyed items of the collection\n * @external\n */\n keyedItems: KeyedItem<T>[];\n\n /**\n * Get an item object according to its key\n * @external\n * @param key The key of the wanted item\n * @returns The wanted item\n */\n getItem(key: string): T | undefined | null;\n}\n\nexport class CollectionState<T, F extends FiltersMap = FiltersMap>\n implements CollectionStatePublicAPI<T, F>\n{\n readonly query: QueryState<F>;\n readonly _paginationModeRef;\n private readonly _paginationMode: PaginationMode<T, F>;\n readonly selectionConsistencyMode: 'preserve' | 'clear';\n readonly result: QueryResultState<T, F>;\n readonly fetchesHistory: {\n itemsKeys: string[];\n queryPageInfo: {\n page: number;\n cursor: string | null | undefined;\n offset: number;\n };\n }[];\n readonly bulkSelect: BulkSelectState<T>;\n scrollableContent?: ScrollableContent | null = null;\n readonly errorMonitor: ErrorMonitor;\n\n readonly queryCache: QueryCache;\n readonly queryClient: QueryClient;\n\n readonly queryObserver: QueryObserver<DataResultKeyed<T>>;\n readonly queryName;\n readonly fqdn;\n readonly fetchErrorMessage: CollectionStateParams<T, F>['fetchErrorMessage'];\n readonly itemName: CollectionStateParams<T, F>['itemName'];\n readonly itemKey: CollectionStateParams<T, F>['itemKey'];\n readonly toExtendedFields?;\n readonly translate: Translate;\n readonly fetchData: CollectionStateParams<T, F>['fetchData'];\n readonly lodash;\n\n readonly deferInitialLoading?: boolean;\n readonly persistQueryToUrl;\n\n _optimisticActions?: CollectionOptimisticActions<T, F>;\n beforeSetData?: () => void | Promise<unknown>;\n readonly showToast: ShowToast;\n\n readonly events: CollectionEvents<F>;\n readonly emitter = new EventEmitter() as TypedEmitter<\n CollectionStateEvents<T, F>\n >;\n\n readonly onlineState: OnlineState;\n readonly history: History;\n\n readonly initDependencies?: () => Promise<unknown>;\n readonly initialPromises = new PromisesState();\n readonly refreshPromises = new PromisesState();\n\n readonly initTask = new TaskState();\n\n /**\n * Possible flows:\n * result->refresh, refresh->result, result->fetchMore, fetchMore->result, refresh->refresh, fetchMore->fetchMore\n */\n lifecycleState: 'result' | 'refresh' | 'fetchMore' = 'result';\n\n _queryKey = (asComputed: ComputedQueryFull<F>) => {\n const { queryName } = this;\n const {\n filters,\n rawFilters,\n search,\n hasActiveFilters,\n hasNonPersistentActiveFilters,\n nonPersistentFiltersKey,\n columns,\n // Pick only properties relevant to `queryKey` uniqueness\n ...computedQuery\n } = asComputed;\n\n return [queryName, computedQuery] as const;\n };\n\n get queryKeyOptions() {\n const { query } = this;\n return {\n queryKey: this._queryKey(query.asComputed),\n };\n }\n\n get originQuery() {\n return this.result.originQuery;\n }\n\n get status() {\n return this.result.status;\n }\n\n isOnline() {\n return this.onlineState.isOnline;\n }\n\n get optimisticActions() {\n if (\n this._optimisticActions == null &&\n process.env.NODE_ENV !== 'production'\n ) {\n throw new Error('optimisticActions is not initialized');\n }\n return this._optimisticActions as CollectionOptimisticActions<T, F>;\n }\n\n constructor(params: CollectionStateParams<T, F>) {\n this.lodash = params.lodash;\n this.persistQueryToUrl = params.persistQueryToUrl;\n this.toExtendedFields = params.toExtendedFields;\n makeObservable(this, {\n fetchNextPageIfNeeded: action.bound,\n clearAndMoveToPage: action.bound,\n clearResultAndMoveToStart: action.bound,\n refreshAllPages: action.bound,\n updateStatus: action.bound,\n updateResult: action.bound,\n search: action,\n sort: action,\n fetch: action,\n init: action,\n setInitialPage: action,\n initialFetch: action,\n totalPages: computed,\n hasAvailableItems: computed,\n showInitialLoader: computed,\n showRefreshLoader: computed,\n showEmptyState: computed,\n showErrorState: computed,\n resetFiltersAndRefresh: action.bound,\n lifecycleState: observable.ref,\n clearResultBeforeRefresh: action,\n scrollableContent: observable.ref,\n _commonDynamicBiParams: action,\n });\n\n this.queryName = params.queryName;\n this.fqdn = params.fqdn;\n this.deferInitialLoading = params.deferInitialLoading;\n this.queryCache = params.queryCache;\n\n this.fetchErrorMessage = params.fetchErrorMessage;\n this.itemKey = params.itemKey;\n this.itemName = params.itemName;\n this.translate = params.translate;\n this.fetchData = params.fetchData;\n this.events = params.events ?? {};\n\n this.initDependencies = params.initDependencies;\n\n this.showToast = params.showToast ?? (() => ({ remove: () => {} }));\n\n this.query = new QueryState({\n filters: params.filters,\n search: params.search,\n limit: params.limit,\n history: params.persistQueryToUrl ? params.history : undefined,\n refreshOnColumnsChange: params.refreshOnColumnsChange,\n });\n\n this._paginationModeRef =\n params.paginationModeRef ??\n ({ current: params.paginationMode } as PaginationModeRef);\n\n this._paginationMode = new PaginationMode(this);\n\n this.selectionConsistencyMode =\n params.selectionConsistencyMode ?? 'preserve';\n\n this.result = new QueryResultState<T, F>({\n itemKey: params.itemKey,\n originQuery: this.query.toComputed(),\n });\n\n this.fetchesHistory = [];\n\n this.bulkSelect = new BulkSelectState<T>({\n disableAutoSelectAllCount: params.disableAutoSelectAllCount,\n useNewSelectAllLogic: params.useNewSelectAllLogic,\n collection: this,\n scrollToTop: () => {\n this.scrollableContent?.scrollTo({\n top: 0,\n left: 0,\n });\n },\n });\n\n this.errorMonitor = params.errorMonitor;\n this.onlineState = params.onlineState;\n this.history = params.history;\n\n const defaultQueryOptions = {\n queryFn: action(() => this._queryFn(this.query.asComputed)),\n keepPreviousData: true,\n suspense: false,\n enabled: false,\n retryDelay: 200,\n staleTime: 120000,\n onError: this.onError,\n refetchOnMount: false,\n retryOnMount: false,\n ...params.queryOptions,\n };\n\n this.queryClient = new QueryClient({\n queryCache: this.queryCache,\n defaultOptions: {\n queries: defaultQueryOptions,\n },\n });\n\n this.queryObserver = new QueryObserver<DataResultKeyed<T>>(\n this.queryClient,\n {\n retry: (failureCount, error) => {\n if (\n shouldRedirectToLogin(error, failureCount > 2 && this.isOnline())\n ) {\n return false;\n }\n return failureCount < 3;\n },\n ...defaultQueryOptions,\n },\n );\n\n this._resetReactQuery();\n\n if (params.initialPage) {\n this.setInitialPage(params.initialPage);\n }\n\n if (params.deferInitialLoading) {\n this.initialPromises.addPromise(this.animationFramePromise);\n }\n\n this._runSort = action(({ clearResult }: { clearResult?: boolean }) => {\n this.emitter.emit('sort', { clearResult });\n if (clearResult) {\n this.clearResultBeforeRefresh();\n }\n return this.moveToFirstPage();\n });\n\n this.scheduleSort = this.whenNotIdle(\n this.lodash.debounce(this._runSort, 300),\n );\n\n this._runSearch = action(async (clearResult?: boolean) => {\n const {\n events: { onSearch, onSearchResults },\n emitter,\n query,\n } = this;\n\n const searchEndListeners = emitter\n .listeners('searchStart')\n .map((l) => l());\n onSearch?.({\n query: query.asComputed,\n });\n emitter.emit('search', { clearResult });\n\n if (clearResult) {\n this.clearResultBeforeRefresh();\n }\n\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n return this.moveToFirstPage({\n onResultUpdated: (params) => {\n searchEndListeners.forEach((l) => l());\n onSearchResults?.(params);\n },\n });\n });\n\n this.scheduleSearch = this.lodash.debounce(this._runSearch, 300);\n }\n\n _resetReactQuery() {\n this.queryObserver.setOptions(\n {\n ...this.queryObserver.options,\n ...this.queryKeyOptions,\n enabled: false,\n },\n {\n onError: true,\n },\n );\n }\n\n _queryFn = async (\n computedQuery: ComputedQuery<F>,\n ): Promise<DataResultKeyed<T>> => {\n const {\n items,\n total,\n available = null,\n cursor = null,\n } = await this.fetchData(computedQuery);\n\n return {\n items,\n total,\n available,\n cursor,\n };\n };\n\n scheduleSort;\n private readonly scheduleSearch;\n readonly _runSearch;\n readonly _runSort;\n\n setInitialPage(initialPage: DataResultRaw<T>) {\n const {\n items,\n total: maybeTotal,\n available = null,\n cursor = null,\n } = initialPage;\n\n const total = maybeTotal ?? items.length;\n\n this.queryClient.setQueryData<DataResultKeyed<T>>(\n this.queryKeyOptions.queryKey,\n {\n items,\n total,\n available,\n cursor,\n },\n );\n }\n\n animationFramePromise = () =>\n new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n });\n\n onError = action((err: unknown) => {\n if (err == null) {\n return;\n }\n\n const { onlineState, events, errorMonitor } = this;\n console.error(err);\n\n const { isOnline } = onlineState;\n\n if (!(err instanceof OfflineError)) {\n const handled = events.onError?.({\n err,\n isOnline,\n });\n\n if (!handled) {\n errorMonitor.captureException(err);\n }\n }\n\n this.getCurrentQuery().invalidate();\n this._resetReactQuery();\n this.updateStatus();\n\n // online manager is responsible for showing offline toast message\n const message = isOnline\n ? this.fetchErrorMessage({\n err,\n isOnline,\n })\n : null;\n\n if (message) {\n this.showToast({\n type: 'ERROR' as any,\n message,\n biName: 'cairo-fetch-error',\n });\n }\n });\n\n _currentQueryPromise?: Promise<void>;\n\n getCurrentQuery() {\n const query = this.queryObserver.getCurrentQuery();\n return query as unknown as Query<T>;\n }\n\n get paginationMode() {\n return this._paginationMode;\n }\n\n _getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap,\n }: {\n unprocessedPages: T[][];\n unprocessedTotal: number;\n currentItemsMap: Map<string, KeyedItem<T>>;\n }) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeAddNewPagesListeners = emitter.listeners('beforeAddNewPages');\n\n const processedPages = beforeAddNewPagesListeners.reduce(\n (pages, listener) =>\n listener({\n pages,\n currentItemsMap,\n originQuery,\n }),\n unprocessedPages,\n );\n\n const processedTotal = this._getProcessedTotal(unprocessedTotal);\n\n return {\n processedPages,\n processedTotal,\n };\n }\n\n _getProcessedTotal(unprocessedTotal: number) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeSetTotalListeners = emitter.listeners('beforeSetTotal');\n return beforeSetTotalListeners.reduce(\n (total, listener) =>\n listener({\n total,\n originQuery,\n }),\n unprocessedTotal,\n );\n }\n\n _addToFetchesHistory(newPages: DataResultKeyed<T>[]) {\n const { page, cursor, offset } = this.query.asComputed;\n\n this.fetchesHistory.push({\n itemsKeys: newPages\n .flatMap((p) => p.items)\n .map((item) => this.itemKey(item)),\n queryPageInfo: {\n page,\n cursor,\n offset,\n },\n });\n }\n\n updateResult(queries: Query<T>[]) {\n const { result, paginationMode, emitter } = this;\n\n const newPages = queries\n .map((reactQuery) => reactQuery.state.data)\n .filter((d): d is DataResultKeyed<T> => d != null);\n\n this.updateStatus();\n\n if (newPages.length) {\n emitter.emit('beforeResultUpdated');\n\n const lastPage = newPages[newPages.length - 1];\n const { available, cursor } = lastPage;\n\n const unprocessedTotal = lastPage.total ?? lastPage.items.length;\n const unprocessedPages = newPages.map((data) => data.items);\n\n const { processedPages, processedTotal } = this._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: result._keyedItemsMap,\n });\n\n result.addPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n this._addToFetchesHistory(newPages);\n\n result.setSupportTotal(lastPage.total != null);\n\n paginationMode.setCursor(cursor);\n if (available != null) {\n result.available = available;\n }\n this.lifecycleState = 'result';\n\n emitter.emit('resultUpdated');\n\n return {\n newPages,\n };\n }\n\n return null;\n }\n\n whenNotIdle(fn: (...args: any[]) => unknown) {\n return (...args: any[]) => {\n if (this.result.status.isIdle) {\n return;\n }\n\n fn(...args);\n };\n }\n\n updateStatus() {\n const { queryObserver, result, query } = this;\n const { status, error, isFetching } = queryObserver.getOptimisticResult(\n queryObserver.options,\n );\n\n result.status = {\n ...queryStatus[status],\n isFetching,\n error,\n } as QueryResultStatus<DataResultKeyed<T>, unknown>;\n result.originQuery = query.asComputed;\n }\n\n fetch() {\n const { queryObserver, onlineState, emitter } = this;\n\n queryObserver.setOptions(\n {\n ...queryObserver.options,\n ...this.queryKeyOptions,\n enabled: true,\n },\n {\n onError: true,\n },\n );\n\n const currentQuery = this.getCurrentQuery();\n this._currentQueryPromise = new Promise<void>((resolve) => {\n if (currentQuery.promise) {\n currentQuery.promise.then(() => resolve()).catch(() => resolve());\n } else {\n resolve();\n }\n });\n\n const isStale = currentQuery.isStale();\n\n const fetchListeners = emitter.listeners('fetch');\n const onResultListeners = fetchListeners.map((l) => l({ isStale }));\n\n if (!onlineState.isOnline) {\n currentQuery.dispatch({\n type: 'error',\n error: new OfflineError('CollectionState.fetch: offline'),\n });\n }\n\n this.updateStatus();\n\n return {\n currentQuery,\n isStale,\n onResultListeners,\n promise: this._currentQueryPromise,\n };\n }\n\n get totalPages() {\n const {\n result: {\n _totals: { unprocessed: total },\n },\n query: {\n pagination: { limit },\n },\n } = this;\n return Math.ceil(total / limit);\n }\n\n get total() {\n return this.result.total;\n }\n\n get fetchedLastPage() {\n const {\n paginationMode: { fetchedLastPage },\n } = this;\n return fetchedLastPage;\n }\n\n private readonly fetchNextPage = action(async () => {\n const {\n query,\n result,\n events: { onNewPageAdded, onNewPageStart },\n emitter,\n } = this;\n // if current page has an error, do not skip to next page\n if (!result.status.isError) {\n query.pagination.nextPage();\n }\n\n this.lifecycleState = 'fetchMore';\n\n const onNewPageAddedListeners = emitter\n .listeners('newPageStart')\n .map((l) => l());\n const maybeOnNewPageAdded = onNewPageStart?.({\n query: query.asComputed,\n });\n\n const { promise, currentQuery, onResultListeners } = this.fetch();\n await promise;\n\n runInAction(() => {\n if (promise === this._currentQueryPromise) {\n const updateResultInfo = this.updateResult([currentQuery]);\n\n onResultListeners.forEach((l) => l?.());\n\n if (updateResultInfo) {\n const { newPages } = updateResultInfo;\n const onNewPageAddedParams = {\n totalNewItems: newPages.reduce(\n (agg, page) => agg + page.items.length,\n 0,\n ),\n newPages,\n query: result.originQuery,\n result: result.asComputed,\n };\n onNewPageAddedListeners.forEach((l) => l(onNewPageAddedParams));\n if (maybeOnNewPageAdded != null) {\n maybeOnNewPageAdded(onNewPageAddedParams);\n }\n onNewPageAdded?.(onNewPageAddedParams);\n }\n }\n });\n });\n\n async fetchNextPageIfNeeded() {\n const { result, fetchedLastPage, lifecycleState } = this;\n if (\n lifecycleState !== 'refresh' &&\n !result.status.isFetching &&\n !fetchedLastPage\n ) {\n await this.fetchNextPage();\n }\n }\n\n // for rendering only a single page (<PaginationTable />)\n async clearAndMoveToPage(\n page: number,\n options: { wait?: { min: number; max: number } } = {},\n ) {\n let minLoaderTime = 0;\n const { wait = { min: 200, max: 500 } } = options;\n const {\n query,\n result,\n events: { onNewPageStart },\n } = this;\n const { pagination } = query;\n pagination.page = page;\n\n const maybeOnNewPageAdded = onNewPageStart?.({\n query: query.asComputed,\n });\n\n const { promise, currentQuery, onResultListeners } = this.fetch();\n const fetchPromise = promise;\n\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const maxWaitPromise = new Promise<void>((resolve) => {\n timeoutId = setTimeout(() => {\n // timeoutId was not cleared yet, start showing a loader and set minimal time for the loader to show\n minLoaderTime = wait.min;\n this.clearResultBeforeRefresh();\n resolve();\n }, wait.max);\n });\n\n // minimal time to wait (usually scrolling to top time) before applying the new result\n const minWaitPromise = new Promise((resolve) => {\n setTimeout(resolve, wait.min);\n });\n\n await Promise.race([maxWaitPromise, fetchPromise]);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n if (minLoaderTime) {\n await new Promise((resolve) => setTimeout(resolve, minLoaderTime));\n }\n\n await minWaitPromise;\n await fetchPromise;\n\n if (promise === this._currentQueryPromise) {\n runInAction(() => {\n result.clear();\n const updateResultInfo = this.updateResult([currentQuery]);\n onResultListeners.forEach((l) => l?.());\n if (updateResultInfo) {\n const { newPages } = updateResultInfo;\n if (maybeOnNewPageAdded != null) {\n maybeOnNewPageAdded({\n totalNewItems: newPages.reduce(\n (agg, page) => agg + page.items.length,\n 0,\n ),\n query: result.originQuery,\n result: result.asComputed,\n });\n }\n }\n });\n }\n }\n\n clearResultBeforeRefresh() {\n const { result } = this;\n this.lifecycleState = 'refresh';\n result.clear();\n }\n\n async moveToFirstPage({\n onResultUpdated,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n } = {}) {\n const {\n query: { pagination },\n } = this;\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n await this.fetchAndReplaceResult({ onResultUpdated });\n }\n\n invalidate({ filters }: { filters?: FiltersKey<F> } = {}) {\n const { queryCache, queryName } = this;\n const queryLookup = {};\n if (filters) {\n Object.assign(queryLookup, {\n filtersKey: filters,\n });\n }\n\n queryCache\n .findAll({ queryKey: [queryName, queryLookup] })\n .forEach((q) => q.invalidate());\n }\n\n clearResultAndMoveToStart({\n onResultUpdated,\n force,\n filters,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n force?: boolean;\n filters?: FiltersKey<F>;\n } = {}) {\n if (force) {\n this.invalidate({ filters });\n this._resetReactQuery();\n }\n this.clearResultBeforeRefresh();\n return this.moveToFirstPage({ onResultUpdated });\n }\n\n sort(\n col: Sortable,\n params: {\n clearResult?: boolean;\n multiple?: boolean;\n } = {},\n ) {\n const { query, emitter } = this;\n\n emitter.emit('beforeSortStart', {\n origin: 'ColumnHeader',\n });\n\n query.sort.changeSort(col, { multiple: params.multiple });\n\n emitter.emit('sortStart', { col });\n\n return this.scheduleSort(params);\n }\n\n async fetchAndReplaceResult({\n onResultUpdated,\n }: {\n onResultUpdated?: OnResultUpdated<F>;\n } = {}) {\n const { result, query, emitter } = this;\n\n const { promise, currentQuery, isStale, onResultListeners } = this.fetch();\n // page=1 means starting over, i.e refresh\n if (query.pagination.page === 1) {\n emitter.emit('refresh', { isStale });\n }\n\n await promise;\n\n if (promise === this._currentQueryPromise) {\n runInAction(() => {\n result.slice(0, query.pagination.page - 1);\n this.emitter.emit('refreshUpdateResult');\n this.updateResult([currentQuery]);\n onResultListeners.forEach((l) => l?.());\n onResultUpdated?.({\n query: result.originQuery,\n result: result.asComputed,\n });\n });\n }\n\n return currentQuery;\n }\n\n search(\n value: string,\n { force, clearResult }: { force?: boolean; clearResult?: boolean } = {},\n ) {\n const { query } = this;\n const { search } = query;\n if (force || value !== search.value) {\n search.changeValue(value);\n this.scheduleSearch(clearResult);\n }\n }\n\n clearSearch() {\n const {\n query,\n events: { onSearchResults },\n emitter,\n } = this;\n const { search } = query;\n if (search.value === '') {\n return;\n }\n\n search.changeValue('');\n emitter.emit('clearSearch');\n\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n return this.clearResultAndMoveToStart({ onResultUpdated: onSearchResults });\n }\n\n get filters() {\n return this.query.filters;\n }\n\n changeItem(newItem: T) {\n return this.changeItems([newItem]);\n }\n\n changeItems(newItems: T[]) {\n const changeResult = this.result.changeItems(newItems);\n\n if (changeResult != null) {\n this.invalidate();\n\n return changeResult.rollback;\n }\n\n return undefined;\n }\n\n async refreshCurrentPage({ noInvalidate }: { noInvalidate?: boolean } = {}) {\n const { emitter } = this;\n\n if (!noInvalidate) {\n this.invalidate();\n }\n\n this._resetReactQuery();\n emitter.emit('refreshCurrentPage');\n\n await this.fetchAndReplaceResult();\n }\n\n async refreshAllPages({\n beforeUpdateResult,\n filters,\n }: {\n beforeUpdateResult?: () => unknown;\n filters?: FiltersKey<F>;\n } = {}) {\n const { query, result, paginationMode, emitter } = this;\n const { pagination } = query;\n const { page: currentPage } = pagination;\n\n this.invalidate({ filters });\n\n const promises: Promise<Query<T>>[] = [];\n\n pagination.cursor = initialCursor;\n\n emitter.emit('refreshAllPages');\n emitter.emit('refresh', { isStale: true }); // Because of invalidation above, all queries are now stale\n\n let lastPagePromise = undefined as Promise<unknown> | undefined;\n\n for (let page = 1; page <= currentPage; page++) {\n pagination.page = page;\n this._resetReactQuery();\n const { currentQuery: pageQuery, promise } = this.fetch();\n if (pageQuery.promise) {\n if (paginationMode.id === 'cursor') {\n await pageQuery.promise;\n runInAction(\n () => (pagination.cursor = pageQuery.state.data?.cursor ?? null),\n );\n }\n promises.push(pageQuery.promise.then(() => pageQuery));\n }\n\n if (page === currentPage) {\n lastPagePromise = promise;\n }\n }\n\n this.updateStatus();\n\n const results = await Promise.all(promises);\n\n runInAction(() => {\n beforeUpdateResult?.();\n if (lastPagePromise === this._currentQueryPromise) {\n result.slice(currentPage);\n this.emitter.emit('refreshUpdateResult');\n this.updateResult(results);\n }\n });\n }\n\n get hasAvailableItems() {\n return this.result.hasAvailableItems;\n }\n\n resetFiltersAndRefresh() {\n const { query } = this;\n query.resetFilters({ emitEvents: ['change', 'refresh'] });\n }\n\n resetCustomFiltersAndRefresh() {\n const { query } = this;\n query.resetCustomFilters({ emitEvents: ['change', 'refresh'] });\n }\n\n async initialFetch() {\n const {\n result,\n events: { onInitialPageFetched },\n emitter,\n query: { pagination },\n } = this;\n\n const prevQuery = this.getCurrentQuery();\n\n if (!result.status.isIdle && !result.status.isError) {\n return prevQuery.promise;\n }\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n this.lifecycleState = 'refresh';\n const isStale = prevQuery.isStale();\n const beforeInitialFetchListeners = emitter.listeners('beforeInitialFetch');\n await Promise.all(beforeInitialFetchListeners.map((f) => f({ isStale })));\n\n // reset paging state again for any possible edge case caused by external side effect while waiting `beforeInitialFetchListeners`\n runInAction(() => {\n pagination.page = 1;\n pagination.cursor = initialCursor;\n this.lifecycleState = 'refresh';\n });\n\n const currentQuery = await this.fetchAndReplaceResult();\n await currentQuery.promise;\n this.emitter.emit('ready');\n runInAction(() => {\n const { total, available } = result;\n onInitialPageFetched?.({\n result: {\n total,\n available: available ?? 0,\n },\n query: result.originQuery,\n });\n });\n }\n\n _recoverIfError = action(() => {\n const { onlineState } = this;\n const { focusManager } = onlineState;\n\n if (\n focusManager.isFocused() &&\n onlineState.isOnline &&\n this.result.status.isError\n ) {\n if (this.lifecycleState === 'fetchMore') {\n // error state is not shown, fetch next page\n this.fetchNextPageIfNeeded();\n } else {\n // error state is shown, move to start\n this.clearResultAndMoveToStart({ force: true });\n }\n }\n });\n\n onOnlineStateChange = (isOnline: boolean) => {\n const currentQuery = this.getCurrentQuery();\n\n if (isOnline) {\n this._recoverIfError();\n } else if (!isOnline && currentQuery.state.isPaused) {\n currentQuery.dispatch({\n type: 'error',\n error: new OfflineError('CollectionState.onOnlineStateChange: offline'),\n });\n this.updateStatus();\n }\n };\n\n retryErrorState = action(() => {\n const { initTask } = this;\n\n if (initTask.status.isError) {\n initTask.runOnce();\n } else {\n this.clearResultAndMoveToStart();\n }\n });\n\n init({ skipInitialFetch }: { skipInitialFetch?: boolean } = {}) {\n const { bulkSelect, onlineState, query, initTask, result } = this;\n const { focusManager } = onlineState;\n\n result.originQuery = query.asComputed;\n\n onlineState.events.on('change', this.onOnlineStateChange);\n\n const disposers = [\n query.init(),\n this._registerQueryEvents(),\n bulkSelect.init(),\n // react-query considers \"mounted\" only if listeners are subscribed\n this.queryObserver.subscribe(() => {}),\n focusManager.subscribe(this._recoverIfError),\n ];\n\n initTask.runOnce(async () => {\n await Promise.all([\n skipInitialFetch ? null : this.initialFetch(),\n this.initDependencies?.(),\n ]);\n });\n\n return action(() => {\n onlineState.events.off('change', this.onOnlineStateChange);\n disposers.forEach((disposer) => disposer());\n initTask.status = {\n ...queryStatus.idle,\n };\n });\n }\n\n _registerQueryEvents() {\n const { query } = this;\n const disposers = [\n addEventListener(query.events, 'refresh', (opts) => {\n if (this.selectionConsistencyMode === 'clear') {\n this.bulkSelect.resetToDefaults();\n }\n\n if (this.deferInitialLoading) {\n this.refreshPromises.addPromise(this.animationFramePromise);\n }\n\n if (opts?.clearResult !== false) {\n this.clearResultBeforeRefresh();\n } else {\n this.scrollableContent?.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n this.moveToFirstPage();\n }),\n addEventListener(query.events, 'scheduleRefresh', (opts) => {\n this.scheduleSearch(opts?.clearResult);\n }),\n ...(query.refreshOnColumnsChange\n ? [\n reaction(\n () => query.fieldsKeyHash,\n () => {\n this.clearResultBeforeRefresh();\n this.moveToFirstPage();\n },\n ),\n ]\n : []),\n ];\n\n return () => {\n disposers.forEach((d) => d());\n };\n }\n\n getItem(key: string): T | undefined | null {\n const keyedItem = this.result.get(key);\n return keyedItem?.item;\n }\n\n getKeyedItem(key: string): KeyedItem<T> | undefined | null {\n return this.result.get(key);\n }\n\n getKeyedItemByIndex(index: number): KeyedItem<T> | null {\n return this.result.keyedItems[index];\n }\n\n get keyedItems() {\n return this.result.keyedItems;\n }\n\n addRefreshPromise<P>(createPromise: () => Promise<P>) {\n return this.refreshPromises.addPromise(createPromise);\n }\n\n _commonDynamicBiParams(query = this.result.originQuery): {\n currentFilters?: string;\n currentSortOrder?: string;\n filteredListSize?: number;\n initialItems?: number;\n numSortedColumns?: number;\n csid?: string;\n } {\n const { result, fqdn } = this;\n\n return {\n ...fqdn,\n currentFilters: JSON.stringify(query.filtersKey),\n currentSortOrder: query.sort?.length\n ? JSON.stringify(query.sort)\n : undefined,\n filteredListSize: result.total,\n initialItems: result.size,\n numSortedColumns: query.sort?.length,\n };\n }\n\n get showInitialLoader() {\n const {\n initTask: {\n status: { isLoading },\n },\n initialPromises: { isLoadingPromises },\n } = this;\n return isLoading || isLoadingPromises;\n }\n\n get showRefreshLoader() {\n const {\n refreshPromises: { isLoadingPromises },\n result: { status },\n lifecycleState,\n } = this;\n return (\n isLoadingPromises ||\n Boolean(status.isFetching && lifecycleState === 'refresh')\n );\n }\n\n get showEmptyState() {\n const {\n lifecycleState,\n result: { isEmpty },\n } = this;\n return lifecycleState === 'result' && isEmpty;\n }\n\n get showErrorState() {\n const {\n result: { status },\n lifecycleState,\n } = this;\n return (\n !status.isFetching && status.isError && lifecycleState !== 'fetchMore'\n );\n }\n\n _topNotification = new TransitionState<string | null>();\n\n get topNotification(): {\n text: string | null | undefined;\n readonly show: boolean;\n } {\n const { _topNotification } = this;\n return {\n set text(t: string | null | undefined) {\n _topNotification.set(t);\n },\n get text() {\n return runInAction(() => _topNotification.data);\n },\n get show() {\n return runInAction(() => _topNotification.show);\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Zrušit export?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Zjistit více",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Zpět",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Toto pole a informace, které v něm byly shromážděny, budou archivovány a nelze je obnovit.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Upgradujte pomocí plánu",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Číslo (desetinné)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Annuller eksporten?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Læs mere",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuller",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Dette felt og de oplysninger, der er indsamlet til det, arkiveres og kan ikke gendannes.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Opgrader med et abonnement",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Tal (decimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Exportieren abbrechen?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Mehr erfahren",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Abbrechen",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Dieses Feld und die dazugehörigen Informationen werden archiviert und können nicht wiederhergestellt werden.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Auf ein Website-Paket upgraden",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Zahl (dezimal)",
|
|
@@ -434,5 +434,6 @@
|
|
|
434
434
|
"cairo.updatedView.collectionPage.toast.cta": "Refresh View",
|
|
435
435
|
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
436
436
|
"cairo.subtitle.learnMore": "Learn more",
|
|
437
|
-
"cairo.tags.creationLimitReached.error": "Unable to create
|
|
437
|
+
"cairo.tags.creationLimitReached.error": "Unable to create more than 100 tags.",
|
|
438
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit."
|
|
438
439
|
}
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "¿Cancelar la exportación?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Leer más",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancelar",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Este campo y la información recopilada en él se archivarán y no se podrán restaurar.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Haz Upgrade con un plan",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Número (decimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Annuler l'exportation ?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "En savoir plus",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuler",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Ce champ et les informations qui y sont collectées seront archivés et ne pourront pas être restaurés.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Booster avec un forfait",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Nombre (décimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "क्या निर्यात रद्द करें?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "और अधिक जानें",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancel",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "यह फ़ील्ड और इसमें एकत्र की गई जानकारी संग्रहीत की जाएगी और इसे बहाल नहीं किया जा सकता।",
|
|
346
347
|
"cairo.emptyState.premium.title": "Upgrade to a plan",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Number (decimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Batalkan ekspor?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Pelajari selengkapnya",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Batal",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Kolom ini dan informasi yang dikumpulkan ke dalamnya akan diarsipkan dan tidak dapat dipulihkan.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Upgrade dengan paket",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Angka (desimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Annullare l'esportazione?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Scopri di più",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annulla",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Questo campo e le informazioni che ha raccolto saranno archiviate e non potrai ripristinarle.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Fai l'upgrade con un pacchetto",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Numero (decimale)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "エクスポートをキャンセルしますか?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "詳しくはこちら",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "キャンセル",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "この項目および収集された情報はアーカイブされ、復元することはできません。",
|
|
346
347
|
"cairo.emptyState.premium.title": "プランでアップグレード",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "数字(10進数)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "내보내기 취소",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "자세히 보기",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "취소",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "입력란 및 수집된 정보가 보관 처리되며 보관 후에는 복구할 수 없습니다.",
|
|
346
347
|
"cairo.emptyState.premium.title": "플랜으로 업그레이드하기",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "숫자(소수)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Export annuleren?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Lees meer",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuleren",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Dit veld en de daarin verzamelde informatie wordt gearchiveerd en kan niet hersteld worden.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Upgrade met een pakket",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Getal (decimaal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Vil du avbryte eksporten?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Finn ut mer",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Avbryt",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Dette feltet og informasjonen som samles inn til det, vil bli arkivert og kan ikke gjenopprettes.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Oppgrader med en pakke",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Tall (desimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Anulować eksportowanie?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Dowiedz się więcej",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Anuluj",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "To pole i zebrane w nim informacje zostaną zarchiwizowane i nie będzie można ich przywrócić.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Przejdź na wyższy plan",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Liczba (dziesiętna)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Cancelar a exportação?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Saiba mais",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancelar",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Este campo e as informações coletadas nele serão arquivados e não poderão ser restaurados.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Faça upgrade com um plano",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Número (decimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Отменить экспорт?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Подробнее",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Отменить",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Это поле и информация в нем будут архивированы и не могут быть восстановлены.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Перейдите на премиум-план",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Число (десятичное)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Avbryt exporten?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": " Läs mer",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Avbryt",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Det här fältet och den insamlade informationen kommer att arkiveras och kan inte återställas.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Uppgradera med ett paket",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Siffra (decimal)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "ยกเลิกการส่งออกข้อมูลหรือไม่",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "ศึกษาเพิ่มเติม",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "ยกเลิก",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "ช่องข้อมูลนี้และข้อมูลที่เก็บไว้จะถูกเก็บถาวรและกู้คืนไม่ได้",
|
|
346
347
|
"cairo.emptyState.premium.title": "อัปเกรดแพ็กเกจเว็บไซต์",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "ตัวเลข (ทศนิยม)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Dışa Aktarma İptal Edilsin mi?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Daha Fazla Bilgi",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "İptal",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Bu alan ve alanda toplanan bilgiler arşivlenecek ve geri yüklenemeyecek.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Sitenizi Bir Paket ile Yükseltin",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Sayı (ondalık)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Скасувати експорт?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Дізнатися більше",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Скасувати",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Це поле та зібрана в ньому інформація заархівуються без можливості відновлення.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Перейдіть на Преміум",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Число (десяткове)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "Hủy xuất?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "Tìm hiểu thêm",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "Hủy",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "Trường này và thông tin thu thập vào trường này sẽ được lưu trữ và không thể khôi phục được.",
|
|
346
347
|
"cairo.emptyState.premium.title": "Nâng cấp bằng gói",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "Số (thập phân)",
|
|
@@ -342,6 +342,7 @@
|
|
|
342
342
|
"cairo.export.cancelTheExport": "是否取消匯出?",
|
|
343
343
|
"cairo.customFields.addCustomField.modal.PII.learnMore": "了解更多",
|
|
344
344
|
"cairo.tags.manageTags.modal.list.input.cancel.CTA": "取消",
|
|
345
|
+
"cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
345
346
|
"cairo.customFields.archive.modal.description": "此欄位及收集到的資訊將被封存,且無法還原。",
|
|
346
347
|
"cairo.emptyState.premium.title": "透過方案升級",
|
|
347
348
|
"cairo.customFields.fieldType.numberDecimal": "數字(小數)",
|