@wix/bex-core 2.25.0 → 2.27.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.
Files changed (58) hide show
  1. package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
  2. package/dist/cjs/assets/locale/messages_cs.json +2 -2
  3. package/dist/cjs/assets/locale/messages_da.json +2 -2
  4. package/dist/cjs/assets/locale/messages_de.json +2 -2
  5. package/dist/cjs/assets/locale/messages_es.json +2 -2
  6. package/dist/cjs/assets/locale/messages_fr.json +2 -2
  7. package/dist/cjs/assets/locale/messages_id.json +2 -2
  8. package/dist/cjs/assets/locale/messages_it.json +2 -2
  9. package/dist/cjs/assets/locale/messages_ja.json +2 -2
  10. package/dist/cjs/assets/locale/messages_ko.json +2 -2
  11. package/dist/cjs/assets/locale/messages_nl.json +2 -2
  12. package/dist/cjs/assets/locale/messages_no.json +2 -2
  13. package/dist/cjs/assets/locale/messages_pl.json +2 -2
  14. package/dist/cjs/assets/locale/messages_pt.json +2 -2
  15. package/dist/cjs/assets/locale/messages_ru.json +2 -2
  16. package/dist/cjs/assets/locale/messages_sv.json +2 -2
  17. package/dist/cjs/assets/locale/messages_th.json +2 -2
  18. package/dist/cjs/assets/locale/messages_tr.json +2 -2
  19. package/dist/cjs/assets/locale/messages_uk.json +4 -4
  20. package/dist/cjs/assets/locale/messages_vi.json +2 -2
  21. package/dist/cjs/assets/locale/messages_visuale2e.json +7 -1
  22. package/dist/cjs/assets/locale/messages_zh.json +2 -2
  23. package/dist/cjs/state/CollectionOptimisticActions.js +2 -5
  24. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  25. package/dist/cjs/state/CollectionOptimisticProcessor.js +2 -6
  26. package/dist/cjs/state/CollectionOptimisticProcessor.js.map +1 -1
  27. package/dist/cjs/state/CollectionState.js.map +1 -1
  28. package/dist/esm/assets/locale/messages_cs.json +2 -2
  29. package/dist/esm/assets/locale/messages_da.json +2 -2
  30. package/dist/esm/assets/locale/messages_de.json +2 -2
  31. package/dist/esm/assets/locale/messages_es.json +2 -2
  32. package/dist/esm/assets/locale/messages_fr.json +2 -2
  33. package/dist/esm/assets/locale/messages_id.json +2 -2
  34. package/dist/esm/assets/locale/messages_it.json +2 -2
  35. package/dist/esm/assets/locale/messages_ja.json +2 -2
  36. package/dist/esm/assets/locale/messages_ko.json +2 -2
  37. package/dist/esm/assets/locale/messages_nl.json +2 -2
  38. package/dist/esm/assets/locale/messages_no.json +2 -2
  39. package/dist/esm/assets/locale/messages_pl.json +2 -2
  40. package/dist/esm/assets/locale/messages_pt.json +2 -2
  41. package/dist/esm/assets/locale/messages_ru.json +2 -2
  42. package/dist/esm/assets/locale/messages_sv.json +2 -2
  43. package/dist/esm/assets/locale/messages_th.json +2 -2
  44. package/dist/esm/assets/locale/messages_tr.json +2 -2
  45. package/dist/esm/assets/locale/messages_uk.json +4 -4
  46. package/dist/esm/assets/locale/messages_vi.json +2 -2
  47. package/dist/esm/assets/locale/messages_visuale2e.json +7 -1
  48. package/dist/esm/assets/locale/messages_zh.json +2 -2
  49. package/dist/esm/state/CollectionOptimisticActions.js +2 -5
  50. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  51. package/dist/esm/state/CollectionOptimisticProcessor.js +2 -6
  52. package/dist/esm/state/CollectionOptimisticProcessor.js.map +1 -1
  53. package/dist/types/InMemoryBackend/InMemoryBackend.d.ts +3 -3
  54. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  55. package/dist/types/state/CollectionOptimisticProcessor.d.ts +1 -1
  56. package/dist/types/state/CollectionOptimisticProcessor.d.ts.map +1 -1
  57. package/dist/types/state/CollectionState.d.ts +1 -1
  58. 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","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","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","push","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","item","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-models--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 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.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 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","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","push","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","item","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 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.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 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":[]}
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Přidat možnost",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Zpět",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Odstranit",
52
- "cairo.updatedView.collectionPage.toast.cta": "Obnovit",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Obnovit stránku",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "Např. Itálie",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Zpět",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Zahodit",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Uložit jako nové zobrazení",
348
348
  "cair.appliedFilters.Apply.CTA": "Použít",
349
349
  "cairo.export.noPermissionsCTA": "Zobrazit role a oprávnění",
350
- "cairo.updatedView.collectionPage.toast.desc": "Změny byly uloženy. Pro použití filtrů stránku obnovte.",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Obnovte stránku, aby se posledních změny zobrazily.",
351
351
  "cairo.search.nothingMatches.text": "Zkuste nové hledání.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Přednastavená zobrazení",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Možnosti",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Tilføj mulighed",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Annuller",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Slet",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Opdater visning",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "fx Italien",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Annuller",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Kassér",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Gem som ny visning",
348
348
  "cair.appliedFilters.Apply.CTA": "Anvend",
349
349
  "cairo.export.noPermissionsCTA": "Gennemse Roller og tilladelser",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Opdater for at opdatere visningen med dine seneste ændringer.",
351
351
  "cairo.search.nothingMatches.text": "Prøv en ny søgning.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Forudindstillede visninger",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Muligheder",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Option hinzufügen",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Abbrechen",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Löschen",
52
- "cairo.updatedView.collectionPage.toast.cta": "Aktualisieren",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Ansicht aktualisieren",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "z. B. Italien",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Abbrechen",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Verwerfen",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Als neue Ansicht speichern",
348
348
  "cair.appliedFilters.Apply.CTA": "Anwenden",
349
349
  "cairo.export.noPermissionsCTA": "Rollen & Berechtigungen ansehen",
350
- "cairo.updatedView.collectionPage.toast.desc": "Änderungen wurden gespeichert. Aktualisiere die Seite, um die Filter anzuwenden.",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Aktualisiere diese Ansicht, um die letzten Änderungen anzusehen.",
351
351
  "cairo.search.nothingMatches.text": "Starte eine neue Suche.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Voreingestellte Ansichten",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Optionen",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Agregar opción",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Cancelar",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Eliminar",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Actualizar vista",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "P. ej., Italia",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Cancelar",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Descartar",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Guardar como vista nueva",
348
348
  "cair.appliedFilters.Apply.CTA": "Aplicar",
349
349
  "cairo.export.noPermissionsCTA": "Ver roles y permisos",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Actualiza la vista para ver los últimos cambios.",
351
351
  "cairo.search.nothingMatches.text": "Realiza una nueva búsqueda.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Vistas preestablecidas",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Opciones",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Ajouter une option",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Annuler",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Supprimer",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Actualiser",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "Ex. Italie",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Annuler",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Ignorer",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Enregistrer en tant que nouvelle vue",
348
348
  "cair.appliedFilters.Apply.CTA": "Appliquer",
349
349
  "cairo.export.noPermissionsCTA": "Voir les rôles et autorisations",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Actualisez la page pour mettre à jour la vue avec vos modifications récentes.",
351
351
  "cairo.search.nothingMatches.text": "Essayez d'effectuer une nouvelle recherche.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Vues prédéfinies",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Options",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Tambahkan Opsi",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Cancel",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Hapus",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Muat Ulang Tampilan",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "mis., Italia",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Batal",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Buang",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Simpan sebagai Tampilan Baru",
348
348
  "cair.appliedFilters.Apply.CTA": "Daftar",
349
349
  "cairo.export.noPermissionsCTA": "Lihat Peran & Izin",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Muat ulang untuk memperbarui tampilan dengan perubahan terbaru Anda.",
351
351
  "cairo.search.nothingMatches.text": "Coba pencarian baru.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Tampilan settingan awal",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Opsi",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Aggiungi opzione",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Annulla",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Elimina",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Aggiorna",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "es.: Italia",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Annulla",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Annulla",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Salva nuova vista",
348
348
  "cair.appliedFilters.Apply.CTA": "Applica",
349
349
  "cairo.export.noPermissionsCTA": "Visualizza ruoli e autorizzazioni",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Ricarica la pagina per aggiornare la visualizzazione con le modifiche recenti.",
351
351
  "cairo.search.nothingMatches.text": "Prova con una nuova ricerca.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Viste predefinite",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Opzioni",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "オプションを追加",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "キャンセル",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "削除する",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "ビューを更新する",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "例:イタリア",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "キャンセル",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "破棄",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "新規ビューとして保存",
348
348
  "cair.appliedFilters.Apply.CTA": "適用する",
349
349
  "cairo.export.noPermissionsCTA": "「役割・権限」ページに移動",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "ページを再読み込みして、ビューを最新情報に更新してください。",
351
351
  "cairo.search.nothingMatches.text": "別のキーワードでもう一度検索してください。",
352
352
  "cairo.viewDropdown.category.predefinedViews": "プリセットビュー",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "オプション",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "옵션 추가",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "취소",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "삭제",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "화면 새로고침",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "예: 이탈리아",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "취소",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "취소",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "새 뷰로 저장",
348
348
  "cair.appliedFilters.Apply.CTA": "적용",
349
349
  "cairo.export.noPermissionsCTA": "역할 및 권한 보기",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "최근 변경사항이 적용된 화면으로 업데이트하려면 새로고침하세요.",
351
351
  "cairo.search.nothingMatches.text": "다른 키워드를 사용해보세요.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "프리셋 뷰",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "옵션",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Optie toevoegen",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Annuleren",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Verwijderen",
52
- "cairo.updatedView.collectionPage.toast.cta": "Vernieuwen",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Weergave vernieuwen",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "Bijv. Italië",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Annuleren",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Negeren",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Als nieuwe weergave opslaan",
348
348
  "cair.appliedFilters.Apply.CTA": "Toepassen",
349
349
  "cairo.export.noPermissionsCTA": "Rollen en toestemmingen bekijken",
350
- "cairo.updatedView.collectionPage.toast.desc": "Wijzigingen zijn opgeslagen. Vernieuw om filters toe te passen.",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Vernieuw om de weergave bij te werken met je recente wijzigingen.",
351
351
  "cairo.search.nothingMatches.text": "Probeer een nieuwe zoekopdracht.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Standaardweergaven",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Opties",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Legg til alternativ",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Avbryt",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Slett",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Oppdater visning",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "f.eks. Italia",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Avbryt",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Forkast",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Lagre som ny visning",
348
348
  "cair.appliedFilters.Apply.CTA": "Anvend",
349
349
  "cairo.export.noPermissionsCTA": "Vis roller og tillatelser",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Oppdater for å se de siste endringene i visningen.",
351
351
  "cairo.search.nothingMatches.text": "Prøv et nytt søk.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Forhåndsinnstilte visninger",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Alternativer",
@@ -49,7 +49,7 @@
49
49
  "cairo.customFields.fieldType.dropdownList.addOption.CTA": "Dodaj opcję",
50
50
  "cairo.dragAndDrop.leaveSite.modal.cancel.CTA": "Anuluj",
51
51
  "cairo.tags.manageTags.modal.deleteModal.delete.CTA": "Usuń",
52
- "cairo.updatedView.collectionPage.toast.cta": "Refresh",
52
+ "cairo.updatedView.collectionPage.toast.cta": "Odśwież widok",
53
53
  "cairo.customFields.fieldType.dropdownList.placeholder": "np. Włochy",
54
54
  "cairo.tags.manageTags.modal.deleteModal.cancel.CTA": "Anuluj",
55
55
  "cairo.dragAndDrop.discardChanges.CTA": "Odrzuć",
@@ -347,7 +347,7 @@
347
347
  "cairo.manageView.saveNewView.CTA": "Zapisz jako nowy widok",
348
348
  "cair.appliedFilters.Apply.CTA": "Zastosuj",
349
349
  "cairo.export.noPermissionsCTA": "Wyświetl role i uprawnienia",
350
- "cairo.updatedView.collectionPage.toast.desc": "Collection was updated, refresh to see updated view",
350
+ "cairo.updatedView.collectionPage.toast.desc": "Odśwież, aby zaktualizować widok i zobaczyć najnowsze zmiany.",
351
351
  "cairo.search.nothingMatches.text": "Rozpocznij nowe wyszukiwanie.",
352
352
  "cairo.viewDropdown.category.predefinedViews": "Widoki predefiniowane",
353
353
  "cairo.customFields.fieldType.dropdownList.inputTitle": "Opcje",