@wix/bex-core 2.282.0 → 2.287.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 (70) hide show
  1. package/dist/cjs/assets/locale/messages_cs.json +3 -3
  2. package/dist/cjs/assets/locale/messages_da.json +3 -3
  3. package/dist/cjs/assets/locale/messages_de.json +3 -3
  4. package/dist/cjs/assets/locale/messages_en.json +7 -7
  5. package/dist/cjs/assets/locale/messages_es.json +3 -3
  6. package/dist/cjs/assets/locale/messages_fr.json +3 -3
  7. package/dist/cjs/assets/locale/messages_hi.json +19 -19
  8. package/dist/cjs/assets/locale/messages_id.json +3 -3
  9. package/dist/cjs/assets/locale/messages_it.json +3 -3
  10. package/dist/cjs/assets/locale/messages_ja.json +3 -3
  11. package/dist/cjs/assets/locale/messages_ko.json +3 -3
  12. package/dist/cjs/assets/locale/messages_nl.json +3 -3
  13. package/dist/cjs/assets/locale/messages_no.json +3 -3
  14. package/dist/cjs/assets/locale/messages_pl.json +3 -3
  15. package/dist/cjs/assets/locale/messages_pt.json +3 -3
  16. package/dist/cjs/assets/locale/messages_ru.json +3 -3
  17. package/dist/cjs/assets/locale/messages_sv.json +3 -3
  18. package/dist/cjs/assets/locale/messages_th.json +3 -3
  19. package/dist/cjs/assets/locale/messages_tr.json +3 -3
  20. package/dist/cjs/assets/locale/messages_uk.json +3 -3
  21. package/dist/cjs/assets/locale/messages_vi.json +3 -3
  22. package/dist/cjs/assets/locale/messages_visuale2e.json +3 -0
  23. package/dist/cjs/assets/locale/messages_zh.json +3 -3
  24. package/dist/cjs/state/CollectionOptimisticActions.js +4 -2
  25. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  26. package/dist/cjs/state/CollectionOptimisticPatch.js +2 -0
  27. package/dist/cjs/state/CollectionOptimisticPatch.js.map +1 -1
  28. package/dist/cjs/state/CollectionState.js.map +1 -1
  29. package/dist/cjs/state/OptimisticActions.js.map +1 -1
  30. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +25 -1
  31. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  32. package/dist/esm/assets/locale/messages_cs.json +3 -3
  33. package/dist/esm/assets/locale/messages_da.json +3 -3
  34. package/dist/esm/assets/locale/messages_de.json +3 -3
  35. package/dist/esm/assets/locale/messages_en.json +7 -7
  36. package/dist/esm/assets/locale/messages_es.json +3 -3
  37. package/dist/esm/assets/locale/messages_fr.json +3 -3
  38. package/dist/esm/assets/locale/messages_hi.json +19 -19
  39. package/dist/esm/assets/locale/messages_id.json +3 -3
  40. package/dist/esm/assets/locale/messages_it.json +3 -3
  41. package/dist/esm/assets/locale/messages_ja.json +3 -3
  42. package/dist/esm/assets/locale/messages_ko.json +3 -3
  43. package/dist/esm/assets/locale/messages_nl.json +3 -3
  44. package/dist/esm/assets/locale/messages_no.json +3 -3
  45. package/dist/esm/assets/locale/messages_pl.json +3 -3
  46. package/dist/esm/assets/locale/messages_pt.json +3 -3
  47. package/dist/esm/assets/locale/messages_ru.json +3 -3
  48. package/dist/esm/assets/locale/messages_sv.json +3 -3
  49. package/dist/esm/assets/locale/messages_th.json +3 -3
  50. package/dist/esm/assets/locale/messages_tr.json +3 -3
  51. package/dist/esm/assets/locale/messages_uk.json +3 -3
  52. package/dist/esm/assets/locale/messages_vi.json +3 -3
  53. package/dist/esm/assets/locale/messages_visuale2e.json +3 -0
  54. package/dist/esm/assets/locale/messages_zh.json +3 -3
  55. package/dist/esm/state/CollectionOptimisticActions.js +2 -1
  56. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  57. package/dist/esm/state/CollectionOptimisticPatch.js +1 -0
  58. package/dist/esm/state/CollectionOptimisticPatch.js.map +1 -1
  59. package/dist/esm/state/CollectionState.js.map +1 -1
  60. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +23 -1
  61. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  62. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  63. package/dist/types/state/CollectionOptimisticPatch.d.ts +2 -0
  64. package/dist/types/state/CollectionOptimisticPatch.d.ts.map +1 -1
  65. package/dist/types/state/CollectionState.d.ts +1 -0
  66. package/dist/types/state/CollectionState.d.ts.map +1 -1
  67. package/dist/types/state/OptimisticActions.d.ts +6 -0
  68. package/dist/types/state/OptimisticActions.d.ts.map +1 -1
  69. package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
  70. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_model","require","_core","_mobx","_events","_QueryState","_QueryResultState","_BulkSelectState","_PromisesState","_Pagination","_PaginationMode","_TaskState","_util","_TransitionState","_FetchTotalState","MAX_RETRIES","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","rest","fetchData","Promise","resolve","requestAnimationFrame","action","err","events","errorMonitor","console","error","OfflineError","handled","onError","captureException","getCurrentQuery","invalidate","_resetReactQuery","updateStatus","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","type","initTask","runOnce","TransitionState","lodash","persistQueryToUrl","toExtendedFields","hooks","makeObservable","bound","clearAndMoveToPage","refreshAllPages","sort","init","setInitialPage","initialFetch","totalPages","computed","hasAvailableItems","showInitialLoader","showRefreshLoader","showEmptyState","showErrorState","resetFiltersAndRefresh","observable","ref","clearResultBeforeRefresh","scrollableContent","searchInputRef","_commonDynamicBiParams","fqdn","deferInitialLoading","queryCache","errorHandler","history","fetchErrorMessage","itemKey","itemName","translate","initDependencies","showToast","remove","defaultRetry","failureCount","_this$errorHandler","reportRetryAttempt","defaultQueryOptions","queryFn","_queryFn","keepPreviousData","suspense","enabled","retry","retryDelay","staleTime","refetchOnMount","retryOnMount","queryOptions","queryClient","QueryClient","defaultOptions","queries","queryObserver","QueryObserver","QueryState","limit","undefined","refreshOnColumnsChange","_paginationModeRef","paginationModeRef","current","paginationMode","_paginationMode","PaginationMode","selectionConsistencyMode","QueryResultState","toComputed","fetchTotal","FetchTotalState","collection","fetchesHistory","bulkSelect","BulkSelectState","disableAutoSelectAllCount","useNewSelectAllLogic","scrollToTop","_this$scrollableConte","scrollTo","top","left","initialPage","initialPromises","addPromise","animationFramePromise","_runSort","clearResult","emit","moveToFirstPage","scheduleSort","whenNotIdle","debounce","_runSearch","onSearch","onSearchResults","searchEndListeners","resetToDefaults","onResultUpdated","scheduleSearch","setOptions","options","maybeTotal","hasNext","setQueryData","_getProcessedResult","unprocessedPages","unprocessedTotal","currentItemsMap","beforeAddNewPagesListeners","processedPages","pages","listener","processedTotal","_getProcessedTotal","beforeSetTotalListeners","_addToFetchesHistory","offset","push","itemsKeys","flatMap","p","item","queryPageInfo","reactQuery","data","filter","d","lastPage","_keyedItemsMap","addPages","unprocessed","processed","setTotals","setSupportTotal","setHasNext","setCursor","fn","args","isIdle","isFetching","getOptimisticResult","queryStatus","then","catch","isStale","fetchListeners","_totals","Math","ceil","totalStatus","fetchedLastPage","fetchNextPage","minLoaderTime","wait","min","max","fetchPromise","timeoutId","maxWaitPromise","setTimeout","minWaitPromise","race","clearTimeout","clear","initialCursor","fetchAndReplaceResult","queryLookup","Object","assign","filtersKey","findAll","q","col","multiple","forceDirection","origin","changeSort","slice","value","changeValue","clearSearch","changeItem","newItem","changeItems","newItems","changeResult","rollback","addItem","addItems","refreshCurrentPage","noInvalidate","beforeUpdateResult","currentPage","promises","lastPagePromise","pageQuery","id","_pageQuery$state$data","results","all","resetFilters","emitEvents","resetCustomFiltersAndRefresh","resetCustomFilters","onInitialPageFetched","prevQuery","beforeInitialFetchListeners","f","skipInitialFetch","skipFilterListeners","on","onOnlineStateChange","disposers","_registerQueryEvents","subscribe","_this$initDependencie","call","off","disposer","idle","addEventListener","opts","refreshPromises","_this$scrollableConte2","behavior","reaction","fieldsKeyHash","getItem","key","keyedItem","get","getKeyedItem","getKeyedItemByIndex","index","keyedItems","addRefreshPromise","createPromise","_query$sort","_query$sort2","currentFilters","JSON","stringify","currentSortOrder","filteredListSize","initialItems","size","numSortedColumns","isLoading","isLoadingPromises","Boolean","isEmpty","topNotification","_topNotification","text","t","set","show","exports"],"sources":["../../../src/state/CollectionState.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n ComputedQueryFull,\n DataResultKeyed,\n DataResultRaw,\n Filter,\n FiltersKey,\n FiltersMap,\n Fqdn,\n KeyedItem,\n OnResultUpdated,\n PatternsErrorHandler,\n QueryOptions,\n QueryResultStatus,\n queryStatus,\n ShowToast,\n SortOrder,\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 { addEventListener, OfflineError, TypedEmitter } from '../util';\nimport { OnlineState } from './OnlineState';\nimport { TransitionState } from './TransitionState';\nimport { Sortable } from './SortState';\nimport { CollectionOptimisticActions } from './CollectionOptimisticActions';\nimport { FetchTotalState } from './FetchTotalState';\n\nconst MAX_RETRIES = 3;\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 triggerReachBottomListener: () => unknown;\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 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\n/**\n * Hooks for extending or customizing the lifecycle of a collection state.\n *\n * Unlike regular events (which are fire-and-forget), hooks can return a value\n * that is consumed by the process they are part of. This allows business logic\n * to influence behavior at specific points in the flow.\n */\nexport interface CollectionStateHooks {\n beforeInitialFetch: (params: {\n isStale: boolean;\n }) => unknown | Promise<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 errorHandler: PatternsErrorHandler | undefined;\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 fetchTotal?: (query: ComputedQuery<F>) => Promise<number>;\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 readonly hooks?: TypedEmitter<CollectionStateHooks>;\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 * Reference to the search input element to allow programmatic focus\n */\n searchInputRef?: { focus: () => void } | null;\n\n /**\n * [ComputedQuery](./?path=/story/common-types--computedquery) instance. Holds all the relevant variables to query the server API with.\n */\n originQuery: ComputedQueryFull<F>;\n\n /**\n * Status of the query. Contains boolean flags of `isIdle`, `isError`, `isLoading`, `isFetching`, `isSuccess`.\n * The difference between `isLoading` and `isFetching` is that `isLoading` is true during the initial query, `isFetching` is true during the next queries.\n * @external\n */\n status: QueryResultStatus<DataResultKeyed<T>, unknown>;\n\n /**\n * The total number of items, as was returned from the last query.\n * @external\n */\n total: number;\n\n /**\n * All the keyed items of the collection\n * @external\n */\n keyedItems: KeyedItem<T>[];\n\n /**\n * Get an item object according to its key\n * @external\n * @param key The key of the wanted item\n * @returns The wanted item\n */\n getItem(key: string): T | undefined | null;\n}\n\nexport class CollectionState<T, F extends FiltersMap = FiltersMap>\n implements CollectionStatePublicAPI<T, F>\n{\n readonly query: QueryState<F>;\n readonly _paginationModeRef;\n private readonly _paginationMode: PaginationMode<T, F>;\n readonly selectionConsistencyMode: 'preserve' | 'clear';\n readonly result: QueryResultState<T, F>;\n readonly fetchesHistory: {\n itemsKeys: string[];\n queryPageInfo: {\n page: number;\n cursor: string | null | undefined;\n offset: number;\n };\n }[];\n readonly bulkSelect: BulkSelectState<T>;\n scrollableContent?: ScrollableContent | null = null;\n searchInputRef?: { focus: () => void } | null = null;\n readonly errorMonitor: ErrorMonitor;\n readonly errorHandler;\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 readonly hooks;\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 this.hooks =\n params.hooks ??\n (new EventEmitter() as TypedEmitter<CollectionStateHooks>);\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 searchInputRef: 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 this.errorMonitor = params.errorMonitor;\n this.errorHandler = params.errorHandler;\n this.onlineState = params.onlineState;\n this.history = params.history;\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 // Default retry function: retry up to 3 times\n const defaultRetry = (failureCount: number, error: unknown) => {\n if (failureCount < MAX_RETRIES) {\n this.errorHandler?.reportRetryAttempt?.(error);\n return true;\n }\n\n return false;\n };\n\n const defaultQueryOptions = {\n queryFn: action(() => this._queryFn(this.query.asComputed)),\n keepPreviousData: true,\n suspense: false,\n enabled: false,\n retry: defaultRetry,\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 defaultQueryOptions,\n );\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 fetchTotal: params.fetchTotal\n ? new FetchTotalState<T, F>({\n collection: this,\n queryCache: this.queryCache,\n fetchTotal: params.fetchTotal,\n })\n : undefined,\n });\n\n this._resetReactQuery();\n\n this.fetchesHistory = [];\n\n this.bulkSelect = new BulkSelectState<T>({\n disableAutoSelectAllCount: params.disableAutoSelectAllCount,\n useNewSelectAllLogic: params.useNewSelectAllLogic,\n collection: this,\n scrollToTop: () => {\n this.scrollableContent?.scrollTo({\n top: 0,\n left: 0,\n });\n },\n });\n\n 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 ...rest\n } = await this.fetchData(computedQuery);\n\n return {\n items,\n total,\n available,\n cursor,\n ...rest,\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 hasNext,\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 hasNext,\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\n _currentQueryPromise?: Promise<void>;\n\n getCurrentQuery() {\n const query = this.queryObserver.getCurrentQuery();\n return query as unknown as Query<T>;\n }\n\n get paginationMode() {\n return this._paginationMode;\n }\n\n _getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap,\n }: {\n unprocessedPages: T[][];\n unprocessedTotal: number;\n currentItemsMap: Map<string, KeyedItem<T>>;\n }) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeAddNewPagesListeners = emitter.listeners('beforeAddNewPages');\n\n const processedPages = beforeAddNewPagesListeners.reduce(\n (pages, listener) =>\n listener({\n pages,\n currentItemsMap,\n originQuery,\n }),\n unprocessedPages,\n );\n\n const processedTotal = this._getProcessedTotal(unprocessedTotal);\n\n return {\n processedPages,\n processedTotal,\n };\n }\n\n _getProcessedTotal(unprocessedTotal: number) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeSetTotalListeners = emitter.listeners('beforeSetTotal');\n return beforeSetTotalListeners.reduce(\n (total, listener) =>\n listener({\n total,\n originQuery,\n }),\n unprocessedTotal,\n );\n }\n\n _addToFetchesHistory(newPages: DataResultKeyed<T>[]) {\n const { page, cursor, offset } = this.query.asComputed;\n\n this.fetchesHistory.push({\n itemsKeys: newPages\n .flatMap((p) => p.items)\n .map((item) => this.itemKey(item)),\n queryPageInfo: {\n page,\n cursor,\n offset,\n },\n });\n }\n\n updateResult(queries: Query<T>[]) {\n const { result, paginationMode, emitter } = this;\n\n const newPages = queries\n .map((reactQuery) => reactQuery.state.data)\n .filter((d): d is DataResultKeyed<T> => d != null);\n\n this.updateStatus();\n\n if (newPages.length) {\n emitter.emit('beforeResultUpdated');\n\n const lastPage = newPages[newPages.length - 1];\n const { available, cursor, hasNext } = lastPage;\n\n const unprocessedTotal = lastPage.total ?? lastPage.items.length;\n const unprocessedPages = newPages.map((data) => data.items);\n\n const { processedPages, processedTotal } = this._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: result._keyedItemsMap,\n });\n\n result.addPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n this._addToFetchesHistory(newPages);\n\n result.setSupportTotal(lastPage.total != null);\n result.setHasNext(hasNext);\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 totalStatus() {\n return this.result.totalStatus;\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 }\n this._resetReactQuery();\n this.clearResultBeforeRefresh();\n return this.moveToFirstPage({ onResultUpdated });\n }\n\n sort(\n col: Sortable,\n {\n clearResult,\n multiple,\n forceDirection,\n }: {\n clearResult?: boolean;\n multiple?: boolean;\n forceDirection?: SortOrder;\n } = {},\n ) {\n const { query, emitter } = this;\n\n emitter.emit('beforeSortStart', {\n origin: 'ColumnHeader',\n });\n\n query.sort.changeSort(col, {\n multiple,\n forceDirection,\n });\n\n emitter.emit('sortStart', { col });\n\n return this.scheduleSort({\n clearResult,\n multiple,\n forceDirection,\n });\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 addItem(newItem: T) {\n return this.addItems([newItem]);\n }\n\n addItems(newItems: T[]) {\n const changeResult = this.result.addItems(newItems);\n this.invalidate();\n return changeResult.rollback;\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 hooks,\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 this._resetReactQuery();\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n this.lifecycleState = 'refresh';\n const isStale = prevQuery.isStale();\n const beforeInitialFetchListeners = hooks.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({\n skipInitialFetch,\n skipFilterListeners,\n }: { skipInitialFetch?: boolean; skipFilterListeners?: 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({ skipFilterListeners }),\n this._registerQueryEvents(),\n result.init(),\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","_FetchTotalState","MAX_RETRIES","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","rest","fetchData","Promise","resolve","requestAnimationFrame","action","err","events","errorMonitor","console","error","OfflineError","handled","onError","captureException","getCurrentQuery","invalidate","_resetReactQuery","updateStatus","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","type","initTask","runOnce","TransitionState","lodash","persistQueryToUrl","toExtendedFields","hooks","makeObservable","bound","clearAndMoveToPage","refreshAllPages","sort","init","setInitialPage","initialFetch","totalPages","computed","hasAvailableItems","showInitialLoader","showRefreshLoader","showEmptyState","showErrorState","resetFiltersAndRefresh","observable","ref","clearResultBeforeRefresh","scrollableContent","searchInputRef","_commonDynamicBiParams","fqdn","deferInitialLoading","queryCache","errorHandler","history","fetchErrorMessage","itemKey","itemName","translate","initDependencies","showToast","remove","defaultRetry","failureCount","_this$errorHandler","reportRetryAttempt","defaultQueryOptions","queryFn","_queryFn","keepPreviousData","suspense","enabled","retry","retryDelay","staleTime","refetchOnMount","retryOnMount","queryOptions","queryClient","QueryClient","defaultOptions","queries","queryObserver","QueryObserver","QueryState","limit","undefined","refreshOnColumnsChange","_paginationModeRef","paginationModeRef","current","paginationMode","_paginationMode","PaginationMode","selectionConsistencyMode","QueryResultState","toComputed","fetchTotal","FetchTotalState","collection","fetchesHistory","bulkSelect","BulkSelectState","disableAutoSelectAllCount","useNewSelectAllLogic","scrollToTop","_this$scrollableConte","scrollTo","top","left","initialPage","initialPromises","addPromise","animationFramePromise","_runSort","clearResult","emit","moveToFirstPage","scheduleSort","whenNotIdle","debounce","_runSearch","onSearch","onSearchResults","searchEndListeners","resetToDefaults","onResultUpdated","scheduleSearch","setOptions","options","maybeTotal","hasNext","setQueryData","_getProcessedResult","unprocessedPages","unprocessedTotal","currentItemsMap","beforeAddNewPagesListeners","processedPages","pages","listener","processedTotal","_getProcessedTotal","beforeSetTotalListeners","_addToFetchesHistory","offset","push","itemsKeys","flatMap","p","item","queryPageInfo","reactQuery","data","filter","d","lastPage","_keyedItemsMap","addPages","unprocessed","processed","setTotals","setSupportTotal","setHasNext","setCursor","fn","args","isIdle","isFetching","getOptimisticResult","queryStatus","then","catch","isStale","fetchListeners","_totals","Math","ceil","totalStatus","fetchedLastPage","fetchNextPage","minLoaderTime","wait","min","max","fetchPromise","timeoutId","maxWaitPromise","setTimeout","minWaitPromise","race","clearTimeout","clear","initialCursor","fetchAndReplaceResult","queryLookup","Object","assign","filtersKey","findAll","q","col","multiple","forceDirection","origin","changeSort","slice","value","changeValue","clearSearch","changeItem","newItem","changeItems","newItems","changeResult","rollback","addItem","addItems","refreshCurrentPage","noInvalidate","beforeUpdateResult","currentPage","promises","lastPagePromise","pageQuery","id","_pageQuery$state$data","results","all","resetFilters","emitEvents","resetCustomFiltersAndRefresh","resetCustomFilters","onInitialPageFetched","prevQuery","beforeInitialFetchListeners","f","skipInitialFetch","skipFilterListeners","on","onOnlineStateChange","disposers","_registerQueryEvents","subscribe","_this$initDependencie","call","off","disposer","idle","addEventListener","opts","refreshPromises","_this$scrollableConte2","behavior","reaction","fieldsKeyHash","getItem","key","keyedItem","get","getKeyedItem","getKeyedItemByIndex","index","keyedItems","addRefreshPromise","createPromise","_query$sort","_query$sort2","currentFilters","JSON","stringify","currentSortOrder","filteredListSize","initialItems","size","numSortedColumns","isLoading","isLoadingPromises","Boolean","isEmpty","topNotification","_topNotification","text","t","set","show","exports"],"sources":["../../../src/state/CollectionState.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n ComputedQueryFull,\n DataResultKeyed,\n DataResultRaw,\n Filter,\n FiltersKey,\n FiltersMap,\n Fqdn,\n KeyedItem,\n OnResultUpdated,\n PatternsErrorHandler,\n QueryOptions,\n QueryResultStatus,\n queryStatus,\n ShowToast,\n SortOrder,\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 { addEventListener, OfflineError, TypedEmitter } from '../util';\nimport { OnlineState } from './OnlineState';\nimport { TransitionState } from './TransitionState';\nimport { Sortable } from './SortState';\nimport { CollectionOptimisticActions } from './CollectionOptimisticActions';\nimport { FetchTotalState } from './FetchTotalState';\n\nconst MAX_RETRIES = 3;\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 triggerReachBottomListener: () => unknown;\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 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\n/**\n * Hooks for extending or customizing the lifecycle of a collection state.\n *\n * Unlike regular events (which are fire-and-forget), hooks can return a value\n * that is consumed by the process they are part of. This allows business logic\n * to influence behavior at specific points in the flow.\n */\nexport interface CollectionStateHooks {\n beforeInitialFetch: (params: {\n isStale: boolean;\n }) => unknown | Promise<unknown>;\n}\n\ninterface ScrollableContent {\n scrollTo: (options: ScrollToOptions) => void;\n scrollTop: number;\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 errorHandler: PatternsErrorHandler | undefined;\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 fetchTotal?: (query: ComputedQuery<F>) => Promise<number>;\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 readonly hooks?: TypedEmitter<CollectionStateHooks>;\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 * Reference to the search input element to allow programmatic focus\n */\n searchInputRef?: { focus: () => void } | null;\n\n /**\n * [ComputedQuery](./?path=/story/common-types--computedquery) instance. Holds all the relevant variables to query the server API with.\n */\n originQuery: ComputedQueryFull<F>;\n\n /**\n * Status of the query. Contains boolean flags of `isIdle`, `isError`, `isLoading`, `isFetching`, `isSuccess`.\n * The difference between `isLoading` and `isFetching` is that `isLoading` is true during the initial query, `isFetching` is true during the next queries.\n * @external\n */\n status: QueryResultStatus<DataResultKeyed<T>, unknown>;\n\n /**\n * The total number of items, as was returned from the last query.\n * @external\n */\n total: number;\n\n /**\n * All the keyed items of the collection\n * @external\n */\n keyedItems: KeyedItem<T>[];\n\n /**\n * Get an item object according to its key\n * @external\n * @param key The key of the wanted item\n * @returns The wanted item\n */\n getItem(key: string): T | undefined | null;\n}\n\nexport class CollectionState<T, F extends FiltersMap = FiltersMap>\n implements CollectionStatePublicAPI<T, F>\n{\n readonly query: QueryState<F>;\n readonly _paginationModeRef;\n private readonly _paginationMode: PaginationMode<T, F>;\n readonly selectionConsistencyMode: 'preserve' | 'clear';\n readonly result: QueryResultState<T, F>;\n readonly fetchesHistory: {\n itemsKeys: string[];\n queryPageInfo: {\n page: number;\n cursor: string | null | undefined;\n offset: number;\n };\n }[];\n readonly bulkSelect: BulkSelectState<T>;\n scrollableContent?: ScrollableContent | null = null;\n searchInputRef?: { focus: () => void } | null = null;\n readonly errorMonitor: ErrorMonitor;\n readonly errorHandler;\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 readonly hooks;\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 this.hooks =\n params.hooks ??\n (new EventEmitter() as TypedEmitter<CollectionStateHooks>);\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 searchInputRef: 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 this.errorMonitor = params.errorMonitor;\n this.errorHandler = params.errorHandler;\n this.onlineState = params.onlineState;\n this.history = params.history;\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 // Default retry function: retry up to 3 times\n const defaultRetry = (failureCount: number, error: unknown) => {\n if (failureCount < MAX_RETRIES) {\n this.errorHandler?.reportRetryAttempt?.(error);\n return true;\n }\n\n return false;\n };\n\n const defaultQueryOptions = {\n queryFn: action(() => this._queryFn(this.query.asComputed)),\n keepPreviousData: true,\n suspense: false,\n enabled: false,\n retry: defaultRetry,\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 defaultQueryOptions,\n );\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 fetchTotal: params.fetchTotal\n ? new FetchTotalState<T, F>({\n collection: this,\n queryCache: this.queryCache,\n fetchTotal: params.fetchTotal,\n })\n : undefined,\n });\n\n this._resetReactQuery();\n\n this.fetchesHistory = [];\n\n this.bulkSelect = new BulkSelectState<T>({\n disableAutoSelectAllCount: params.disableAutoSelectAllCount,\n useNewSelectAllLogic: params.useNewSelectAllLogic,\n collection: this,\n scrollToTop: () => {\n this.scrollableContent?.scrollTo({\n top: 0,\n left: 0,\n });\n },\n });\n\n 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 ...rest\n } = await this.fetchData(computedQuery);\n\n return {\n items,\n total,\n available,\n cursor,\n ...rest,\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 hasNext,\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 hasNext,\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\n _currentQueryPromise?: Promise<void>;\n\n getCurrentQuery() {\n const query = this.queryObserver.getCurrentQuery();\n return query as unknown as Query<T>;\n }\n\n get paginationMode() {\n return this._paginationMode;\n }\n\n _getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap,\n }: {\n unprocessedPages: T[][];\n unprocessedTotal: number;\n currentItemsMap: Map<string, KeyedItem<T>>;\n }) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeAddNewPagesListeners = emitter.listeners('beforeAddNewPages');\n\n const processedPages = beforeAddNewPagesListeners.reduce(\n (pages, listener) =>\n listener({\n pages,\n currentItemsMap,\n originQuery,\n }),\n unprocessedPages,\n );\n\n const processedTotal = this._getProcessedTotal(unprocessedTotal);\n\n return {\n processedPages,\n processedTotal,\n };\n }\n\n _getProcessedTotal(unprocessedTotal: number) {\n const { emitter, result } = this;\n const { originQuery } = result;\n\n const beforeSetTotalListeners = emitter.listeners('beforeSetTotal');\n return beforeSetTotalListeners.reduce(\n (total, listener) =>\n listener({\n total,\n originQuery,\n }),\n unprocessedTotal,\n );\n }\n\n _addToFetchesHistory(newPages: DataResultKeyed<T>[]) {\n const { page, cursor, offset } = this.query.asComputed;\n\n this.fetchesHistory.push({\n itemsKeys: newPages\n .flatMap((p) => p.items)\n .map((item) => this.itemKey(item)),\n queryPageInfo: {\n page,\n cursor,\n offset,\n },\n });\n }\n\n updateResult(queries: Query<T>[]) {\n const { result, paginationMode, emitter } = this;\n\n const newPages = queries\n .map((reactQuery) => reactQuery.state.data)\n .filter((d): d is DataResultKeyed<T> => d != null);\n\n this.updateStatus();\n\n if (newPages.length) {\n emitter.emit('beforeResultUpdated');\n\n const lastPage = newPages[newPages.length - 1];\n const { available, cursor, hasNext } = lastPage;\n\n const unprocessedTotal = lastPage.total ?? lastPage.items.length;\n const unprocessedPages = newPages.map((data) => data.items);\n\n const { processedPages, processedTotal } = this._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: result._keyedItemsMap,\n });\n\n result.addPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n this._addToFetchesHistory(newPages);\n\n result.setSupportTotal(lastPage.total != null);\n result.setHasNext(hasNext);\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 totalStatus() {\n return this.result.totalStatus;\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 }\n this._resetReactQuery();\n this.clearResultBeforeRefresh();\n return this.moveToFirstPage({ onResultUpdated });\n }\n\n sort(\n col: Sortable,\n {\n clearResult,\n multiple,\n forceDirection,\n }: {\n clearResult?: boolean;\n multiple?: boolean;\n forceDirection?: SortOrder;\n } = {},\n ) {\n const { query, emitter } = this;\n\n emitter.emit('beforeSortStart', {\n origin: 'ColumnHeader',\n });\n\n query.sort.changeSort(col, {\n multiple,\n forceDirection,\n });\n\n emitter.emit('sortStart', { col });\n\n return this.scheduleSort({\n clearResult,\n multiple,\n forceDirection,\n });\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 addItem(newItem: T) {\n return this.addItems([newItem]);\n }\n\n addItems(newItems: T[]) {\n const changeResult = this.result.addItems(newItems);\n this.invalidate();\n return changeResult.rollback;\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 hooks,\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 this._resetReactQuery();\n\n pagination.page = 1;\n pagination.cursor = initialCursor;\n\n this.lifecycleState = 'refresh';\n const isStale = prevQuery.isStale();\n const beforeInitialFetchListeners = hooks.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({\n skipInitialFetch,\n skipFilterListeners,\n }: { skipInitialFetch?: boolean; skipFilterListeners?: 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({ skipFilterListeners }),\n this._registerQueryEvents(),\n result.init(),\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 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/state/OptimisticActions.ts"],"sourcesContent":["import { ToastConfig } from '../model';\nimport { EventuallyUpdated } from './CollectionOptimisticExecutor';\nimport { DeepPartial } from '../types/DeepPartial';\n\nexport interface OptimisticActionBasis {\n /**\n * Determines whether to display an undo toast before calling the server action.\n * @default false\n * @external\n */\n showUndoToast?: boolean;\n /**\n * Determines whether to display a toast after clicking on undo.\n * @default false\n * @external\n */\n showUndoSuccessToast?: boolean;\n /**\n * Callback function triggered when the user clicks on the undo button.\n * @external\n */\n onUndo?: () => void;\n /**\n * Function to generate error toast to show in case the server fails to perform the action.\n * @external\n */\n errorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) => ToastConfig | string;\n /**\n * Callback function triggered when an error occurs.\n * @external\n */\n onError?: (err: unknown) => void;\n /**\n * Callback function to retry the action.\n * @deprecated Use the prop `errorToast={(err, {retry}) => { action:{onClick: () {retry();} }}}` instead.\n */\n onTryAgain?: () => void | Promise<void>;\n /**\n * Toast message or configuration to show on successful action.\n * @external\n */\n successToast?: ToastConfig | string;\n /**\n * Indicates when the server is eventually updated.\n * Possible values:\n * - submit: Server updates immediately after the submission promise resolves.\n * - number: Server updates after a specified timeout (in milliseconds).\n * - Promise: Server updates after a forwarded promise resolves.\n * @default submit\n * @external\n */\n updateServerAfter?: EventuallyUpdated;\n}\n\nexport interface CreateManyParams<T> extends OptimisticActionBasis {\n /**\n * Function to submit the creation operation.\n * @param items - The items to create.\n */\n submit: (items: T[]) => Promise<T[] | null | undefined | void>;\n}\n\nexport interface UpdateManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n * @param items - The items to update.\n */\n submit: (items: T[]) => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n\n /**\n * Partial data to patch the items with.\n */\n patch?: DeepPartial<T>;\n}\n\nexport interface UpdateAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n */\n submit: () => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface DeleteManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n * @param items - The items to delete.\n */\n submit: (items: T[]) => Promise<R>;\n}\n\nexport interface DeleteAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n */\n submit: () => Promise<R>;\n}\n\nexport interface OptimisticActions<T> {\n /**\n * Creates a single item in the collection.\n * @param item - The item to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createOne(item: T, params: CreateManyParams<T>): void;\n /**\n * Creates multiple items in the collection.\n * @param items - The items to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createMany(items: T[], params: CreateManyParams<T>): void;\n\n updateMany<R>(items: T[], params: UpdateManyParams<T, R>): void;\n updateOne<R>(item: T, params: UpdateManyParams<T, R>): void;\n updateAll<R>(\n patchOrFn: (item: T) => Partial<T>,\n params: UpdateAllParams<R>,\n ): void;\n\n deleteMany<R>(items: T[], params: DeleteManyParams<T, R>): void;\n deleteOne<R>(item: T, params: DeleteManyParams<T, R>): void;\n deleteAll<R>(params: UpdateAllParams<R>): void;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/state/OptimisticActions.ts"],"sourcesContent":["import { ToastConfig } from '../model';\nimport { EventuallyUpdated } from './CollectionOptimisticExecutor';\nimport { DeepPartial } from '../types/DeepPartial';\n\nexport interface OptimisticActionBasis {\n /**\n * Determines whether to display an undo toast before calling the server action.\n * @default false\n * @external\n */\n showUndoToast?: boolean;\n /**\n * Determines whether to display a toast after clicking on undo.\n * @default false\n * @external\n */\n showUndoSuccessToast?: boolean;\n /**\n * Callback function triggered when the user clicks on the undo button.\n * @external\n */\n onUndo?: () => void;\n /**\n * Function to generate error toast to show in case the server fails to perform the action.\n * @external\n */\n errorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) => ToastConfig | string;\n /**\n * Callback function triggered when an error occurs.\n * @external\n */\n onError?: (err: unknown) => void;\n /**\n * Callback function to retry the action.\n * @deprecated Use the prop `errorToast={(err, {retry}) => { action:{onClick: () {retry();} }}}` instead.\n */\n onTryAgain?: () => void | Promise<void>;\n /**\n * Toast message or configuration to show on successful action.\n * @external\n */\n successToast?: ToastConfig | string;\n /**\n * Indicates when the server is eventually updated.\n * Possible values:\n * - submit: Server updates immediately after the submission promise resolves.\n * - number: Server updates after a specified timeout (in milliseconds).\n * - Promise: Server updates after a forwarded promise resolves.\n * @default submit\n * @external\n */\n updateServerAfter?: EventuallyUpdated;\n}\n\nexport interface CreateManyParams<T> extends OptimisticActionBasis {\n /**\n * Function to submit the creation operation.\n * @param items - The items to create.\n */\n submit: (items: T[]) => Promise<T[] | null | undefined | void>;\n /**\n * The key of the item after which to insert the created items.\n * If not provided, items are inserted at the beginning.\n * @external\n */\n afterItemKey?: string;\n}\n\nexport interface UpdateManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n * @param items - The items to update.\n */\n submit: (items: T[]) => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n\n /**\n * Partial data to patch the items with.\n */\n patch?: DeepPartial<T>;\n}\n\nexport interface UpdateAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n */\n submit: () => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface DeleteManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n * @param items - The items to delete.\n */\n submit: (items: T[]) => Promise<R>;\n}\n\nexport interface DeleteAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n */\n submit: () => Promise<R>;\n}\n\nexport interface OptimisticActions<T> {\n /**\n * Creates a single item in the collection.\n * @param item - The item to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createOne(item: T, params: CreateManyParams<T>): void;\n /**\n * Creates multiple items in the collection.\n * @param items - The items to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createMany(items: T[], params: CreateManyParams<T>): void;\n\n updateMany<R>(items: T[], params: UpdateManyParams<T, R>): void;\n updateOne<R>(item: T, params: UpdateManyParams<T, R>): void;\n updateAll<R>(\n patchOrFn: (item: T) => Partial<T>,\n params: UpdateAllParams<R>,\n ): void;\n\n deleteMany<R>(items: T[], params: DeleteManyParams<T, R>): void;\n deleteOne<R>(item: T, params: DeleteManyParams<T, R>): void;\n deleteAll<R>(params: UpdateAllParams<R>): void;\n}\n"],"mappings":"","ignoreList":[]}
@@ -66,6 +66,30 @@ function mergePatchedItems(toMerge, {
66
66
  });
67
67
  }
68
68
  }
69
- return Array.from(pageWithPatchedItemsMap.values());
69
+ const result = Array.from(pageWithPatchedItemsMap.values());
70
+
71
+ // Reposition created items that specify afterItemKey
72
+ for (const [key, {
73
+ optimisticPatch
74
+ }] of toMerge.created.entries()) {
75
+ if (optimisticPatch.afterItemKey == null) {
76
+ continue;
77
+ }
78
+ const currentIdx = result.findIndex(e => itemKey(e.item) === key);
79
+ if (currentIdx === -1) {
80
+ continue;
81
+ }
82
+ const anchorIdx = result.findIndex(e => itemKey(e.item) === optimisticPatch.afterItemKey);
83
+ if (anchorIdx !== -1) {
84
+ // Anchor found on this page — reposition after it
85
+ const [entry] = result.splice(currentIdx, 1);
86
+ const newAnchorIdx = result.findIndex(e => itemKey(e.item) === optimisticPatch.afterItemKey);
87
+ result.splice(newAnchorIdx + 1, 0, entry);
88
+ } else {
89
+ // Anchor not on this page — remove (it belongs on the anchor's page)
90
+ result.splice(currentIdx, 1);
91
+ }
92
+ }
93
+ return result;
70
94
  }
71
95
  //# sourceMappingURL=mergePatchedItems.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","created","keys","has","delete","toInsert","orderByItem","values"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n if (!itemPredicate(item)) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const key of toMerge.created.keys()) {\n if (pageWithPatchedItemsMapTmp.has(key)) {\n pageWithPatchedItemsMap.set(key, {\n item: pageWithPatchedItemsMapTmp.get(key)!.item,\n });\n pageWithPatchedItemsMapTmp.delete(key);\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n return Array.from(pageWithPatchedItemsMap.values());\n}\n"],"mappings":";;;;AAGO,SAASA,iBAAiBA,CAC/BC,OAGC,EACD;EACEC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC;AAOF,CAAC,EACD;EACA,MAAMC,YAAY,GAAGL,OAAO,CAACM,GAAG;;EAEhC;EACA,MAAMC,0BAA0B,GAAG,IAAIC,GAAG,CAGxC,CAAC;EAEH,KAAK,MAAM,CAACC,GAAG,EAAE;IAAEC,IAAI;IAAEC;EAAgB,CAAC,CAAC,IAAIC,KAAK,CAACC,IAAI,CACvDR,YAAY,CAACS,OAAO,CAAC,CACvB,CAAC,EAAE;IACD,MAAM;MAAEC,YAAY;MAAEC;IAAc,CAAC,GAAGL,eAAe;IACvD,MAAMM,YAAY,GAAGD,aAAa,CAACE,GAAG,CAACT,GAAG,CAAC;IAC3C;IACA;IACA,IACE,CAACN,MAAM,CAACgB,MAAM,IACdJ,YAAY,IACZE,YAAY,IAAI,IAAI,IACpBb,aAAa,CAACa,YAAY,CAAC,EAC3B;MACA;IACF;IAEA,IAAI,CAACb,aAAa,CAACM,IAAI,CAAC,EAAE;MACxB;IACF;IAEAH,0BAA0B,CAACa,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC/C;;EAEA;EACA,MAAMW,uBAAuB,GAAG,IAAIb,GAAG,CAGrC,CAAC;EAEH,KAAK,MAAMC,GAAG,IAAIT,OAAO,CAACsB,OAAO,CAACC,IAAI,CAAC,CAAC,EAAE;IACxC,IAAIhB,0BAA0B,CAACiB,GAAG,CAACf,GAAG,CAAC,EAAE;MACvCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAC/BC,IAAI,EAAEH,0BAA0B,CAACW,GAAG,CAACT,GAAG,CAAC,CAAEC;MAC7C,CAAC,CAAC;MACFH,0BAA0B,CAACkB,MAAM,CAAChB,GAAG,CAAC;IACxC;EACF;EAEA,KAAK,MAAM,CAACA,GAAG,EAAE;IAAEC;EAAK,CAAC,CAAC,IAAIE,KAAK,CAACC,IAAI,CACtCN,0BAA0B,CAACO,OAAO,CAAC,CACrC,CAAC,EAAE;IACDO,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC5C;EAEA,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvB,MAAMQ,GAAG,GAAGP,OAAO,CAACQ,IAAI,CAAC;IACzB,MAAMgB,QAAQ,GAAGrB,YAAY,CAACa,GAAG,CAACT,GAAG,CAAC;IAEtC,IAAIiB,QAAQ,IAAIA,QAAQ,CAACf,eAAe,CAACI,YAAY,EAAE;MACrDM,uBAAuB,CAACI,MAAM,CAAChB,GAAG,CAAC;MACnCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAC/BC,IAAI,EAAEgB,QAAQ,CAAChB,IAAI;QACnBiB,WAAW,EAAEjB;MACf,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI,CAACgB,QAAQ,EAAE;MACpBL,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAAEC;MAAK,CAAC,CAAC;IAC5C;EACF;EAEA,OAAOE,KAAK,CAACC,IAAI,CAACQ,uBAAuB,CAACO,MAAM,CAAC,CAAC,CAAC;AACrD","ignoreList":[]}
1
+ {"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","created","keys","has","delete","toInsert","orderByItem","result","values","afterItemKey","currentIdx","findIndex","e","anchorIdx","entry","splice","newAnchorIdx"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n if (!itemPredicate(item)) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const key of toMerge.created.keys()) {\n if (pageWithPatchedItemsMapTmp.has(key)) {\n pageWithPatchedItemsMap.set(key, {\n item: pageWithPatchedItemsMapTmp.get(key)!.item,\n });\n pageWithPatchedItemsMapTmp.delete(key);\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n const result = Array.from(pageWithPatchedItemsMap.values());\n\n // Reposition created items that specify afterItemKey\n for (const [key, { optimisticPatch }] of toMerge.created.entries()) {\n if (optimisticPatch.afterItemKey == null) {\n continue;\n }\n\n const currentIdx = result.findIndex((e) => itemKey(e.item) === key);\n if (currentIdx === -1) {\n continue;\n }\n\n const anchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n if (anchorIdx !== -1) {\n // Anchor found on this page — reposition after it\n const [entry] = result.splice(currentIdx, 1);\n const newAnchorIdx = result.findIndex(\n (e) => itemKey(e.item) === optimisticPatch.afterItemKey,\n );\n result.splice(newAnchorIdx + 1, 0, entry);\n } else {\n // Anchor not on this page — remove (it belongs on the anchor's page)\n result.splice(currentIdx, 1);\n }\n }\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -237,7 +237,7 @@
237
237
  "cairo.filtersPanel.date.title": "Datum",
238
238
  "cairo.manageView.setAsDefault.reset.success.toast": "Výchozí zobrazení bylo obnoveno.",
239
239
  "cairo.customFieldsWidget.entityPage.title": "Vlastní pole",
240
- "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Clear start date",
240
+ "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Vymazat datum zahájení",
241
241
  "cairo.tags.manageTags.modal.toast.delete.success.asLabels": "Štítek byl odstraněn.",
242
242
  "cairo.customFields.addCustomField.CTA": "Přidat pole",
243
243
  "cairo.customFields.addCustomField.modal.fieldType": "Typ pole",
@@ -532,7 +532,7 @@
532
532
  "cairo.tags.manageTags.modal.subtitle.asLabels": "Upravovat, odstraňovat a vytvářet štítky.",
533
533
  "cairo.tags.manageTags.modal.emptyState.body.asLabels": "Štítky vám pomáhají filtrovat a organizovat položky.",
534
534
  "cairo.table.custom-columns.hidden.disabled.tooltip": "Tento sloupec nelze skrýt.",
535
- "cairo.filtersPanel.header.closeButton.ariaLabel": "Close",
535
+ "cairo.filtersPanel.header.closeButton.ariaLabel": "Zavřít",
536
536
  "cairo.customFields.updateDataExtension.invalid-namespace.error": "Kvůli technickým potížím na naší straně nebylo možné aktualizovat vlastní pole.",
537
537
  "cairo.filterOperator.startsWith": "Začíná na",
538
538
  "cairo.tags.loadTags.error.title.asLabels": "Nepodařilo se nám načíst vaše štítky",
@@ -623,7 +623,7 @@
623
623
  "cairo.table.listView": "Seznam",
624
624
  "cairo.tags.manageTags.modal.emptyState.title.asLabels": "Vytvořit nový štítek",
625
625
  "cairo.passiveEmptyState.subtitle": "Až budete mít nějaké položky, uvidíte je zde.",
626
- "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Clear end date",
626
+ "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Vymazat datum Konec",
627
627
  "cairo.customFields.tpaSection.tooltip": "Toto jsou pole vytvořená aplikací nainstalovanou na vašem webu.",
628
628
  "cairo.tags.collectionPage.popover.loadTags.error.body": "Tagy se nepodařilo načíst kvůli technickým potížím na naší straně.",
629
629
  "cairo.table.advanced-sorting.button.cta": "Třídit",
@@ -237,7 +237,7 @@
237
237
  "cairo.filtersPanel.date.title": "Dato",
238
238
  "cairo.manageView.setAsDefault.reset.success.toast": "Din standardvisning blev nulstillet.",
239
239
  "cairo.customFieldsWidget.entityPage.title": "Tilpassede felter",
240
- "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Clear start date",
240
+ "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Ryd Startdato",
241
241
  "cairo.tags.manageTags.modal.toast.delete.success.asLabels": "Etiket slettet.",
242
242
  "cairo.customFields.addCustomField.CTA": "Tilføj felt",
243
243
  "cairo.customFields.addCustomField.modal.fieldType": "Felttype",
@@ -532,7 +532,7 @@
532
532
  "cairo.tags.manageTags.modal.subtitle.asLabels": "Rediger, fjern og opret etiketter.",
533
533
  "cairo.tags.manageTags.modal.emptyState.body.asLabels": "Etiketter hjælper dig med at filtrere og organisere dine elementer.",
534
534
  "cairo.table.custom-columns.hidden.disabled.tooltip": "Denne kolonne kan ikke skjules.",
535
- "cairo.filtersPanel.header.closeButton.ariaLabel": "Close",
535
+ "cairo.filtersPanel.header.closeButton.ariaLabel": "Luk",
536
536
  "cairo.customFields.updateDataExtension.invalid-namespace.error": "Vi kan ikke opdatere et tilpasset felt på grund af et teknisk problem hos os.",
537
537
  "cairo.filterOperator.startsWith": "begynder med",
538
538
  "cairo.tags.loadTags.error.title.asLabels": "Vi kunne ikke indlæse dine etiketter",
@@ -623,7 +623,7 @@
623
623
  "cairo.table.listView": "Listevisning",
624
624
  "cairo.tags.manageTags.modal.emptyState.title.asLabels": "Opret en ny etiket",
625
625
  "cairo.passiveEmptyState.subtitle": "Når der er elementer, kan du se dem her.",
626
- "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Clear end date",
626
+ "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Ryd slutdato",
627
627
  "cairo.customFields.tpaSection.tooltip": "Disse felter er oprettet af en app, der er installeret på din hjemmeside.",
628
628
  "cairo.tags.collectionPage.popover.loadTags.error.body": "Kunne ikke indlæse tags på grund af et teknisk problem hos os.",
629
629
  "cairo.table.advanced-sorting.button.cta": "Sortér",
@@ -237,7 +237,7 @@
237
237
  "cairo.filtersPanel.date.title": "Datum",
238
238
  "cairo.manageView.setAsDefault.reset.success.toast": "Deine Standardansicht wurde zurückgesetzt.",
239
239
  "cairo.customFieldsWidget.entityPage.title": "Individuelle Felder",
240
- "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Clear start date",
240
+ "cairo.filtersPanel.date.from.clearButton.ariaLabel": "Startdatum löschen",
241
241
  "cairo.tags.manageTags.modal.toast.delete.success.asLabels": "Label wurde gelöscht.",
242
242
  "cairo.customFields.addCustomField.CTA": "Feld hinzufügen",
243
243
  "cairo.customFields.addCustomField.modal.fieldType": "Feldtyp",
@@ -532,7 +532,7 @@
532
532
  "cairo.tags.manageTags.modal.subtitle.asLabels": "Bearbeite, entferne und erstelle Labels.",
533
533
  "cairo.tags.manageTags.modal.emptyState.body.asLabels": "Labels helfen dir beim Filtern und Ordnen deiner Elemente.",
534
534
  "cairo.table.custom-columns.hidden.disabled.tooltip": "Diese Spalte kann nicht ausgeblendet werden.",
535
- "cairo.filtersPanel.header.closeButton.ariaLabel": "Close",
535
+ "cairo.filtersPanel.header.closeButton.ariaLabel": "Schließen",
536
536
  "cairo.customFields.updateDataExtension.invalid-namespace.error": "Wegen eines technischen Problems kann das benutzerdefiniertes Feld nicht aktualisiert werden.",
537
537
  "cairo.filterOperator.startsWith": "Beginnt mit",
538
538
  "cairo.tags.loadTags.error.title.asLabels": "Labels wurden nicht geladen",
@@ -623,7 +623,7 @@
623
623
  "cairo.table.listView": "Listenansicht",
624
624
  "cairo.tags.manageTags.modal.emptyState.title.asLabels": "Neues Label erstellen",
625
625
  "cairo.passiveEmptyState.subtitle": "Sobald Elemente hinzugefügt wurden, siehst du diese hier.",
626
- "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Clear end date",
626
+ "cairo.filtersPanel.date.to.clearButton.ariaLabel": "Enddatum löschen",
627
627
  "cairo.customFields.tpaSection.tooltip": "Dies sind Felder, die von einer auf deiner Website installierten App erstellt wurden.",
628
628
  "cairo.tags.collectionPage.popover.loadTags.error.body": "Wegen technischer Probleme wurden die Tags nicht geladen.",
629
629
  "cairo.table.advanced-sorting.button.cta": "Sortieren",