@wix/bex-core 2.291.0 → 2.293.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 (108) hide show
  1. package/dist/cjs/assets/locale/messages_ar.json +497 -3
  2. package/dist/cjs/assets/locale/messages_bg.json +497 -3
  3. package/dist/cjs/assets/locale/messages_ca.json +497 -3
  4. package/dist/cjs/assets/locale/messages_cs.json +25 -0
  5. package/dist/cjs/assets/locale/messages_da.json +25 -0
  6. package/dist/cjs/assets/locale/messages_de.json +25 -0
  7. package/dist/cjs/assets/locale/messages_el.json +497 -3
  8. package/dist/cjs/assets/locale/messages_en.json +635 -618
  9. package/dist/cjs/assets/locale/messages_es.json +25 -0
  10. package/dist/cjs/assets/locale/messages_fi.json +497 -3
  11. package/dist/cjs/assets/locale/messages_fr.json +25 -0
  12. package/dist/cjs/assets/locale/messages_he.json +497 -3
  13. package/dist/cjs/assets/locale/messages_hi.json +25 -0
  14. package/dist/cjs/assets/locale/messages_hu.json +497 -3
  15. package/dist/cjs/assets/locale/messages_id.json +25 -0
  16. package/dist/cjs/assets/locale/messages_it.json +25 -0
  17. package/dist/cjs/assets/locale/messages_ja.json +25 -0
  18. package/dist/cjs/assets/locale/messages_ko.json +25 -0
  19. package/dist/cjs/assets/locale/messages_lt.json +497 -3
  20. package/dist/cjs/assets/locale/messages_ms.json +497 -3
  21. package/dist/cjs/assets/locale/messages_nl.json +25 -0
  22. package/dist/cjs/assets/locale/messages_no.json +25 -0
  23. package/dist/cjs/assets/locale/messages_pl.json +25 -0
  24. package/dist/cjs/assets/locale/messages_pt.json +25 -0
  25. package/dist/cjs/assets/locale/messages_ro.json +497 -3
  26. package/dist/cjs/assets/locale/messages_ru.json +25 -0
  27. package/dist/cjs/assets/locale/messages_sk.json +497 -3
  28. package/dist/cjs/assets/locale/messages_sl.json +497 -3
  29. package/dist/cjs/assets/locale/messages_sv.json +25 -0
  30. package/dist/cjs/assets/locale/messages_th.json +25 -0
  31. package/dist/cjs/assets/locale/messages_tl.json +497 -3
  32. package/dist/cjs/assets/locale/messages_tr.json +25 -0
  33. package/dist/cjs/assets/locale/messages_uk.json +25 -0
  34. package/dist/cjs/assets/locale/messages_vi.json +25 -0
  35. package/dist/cjs/assets/locale/messages_zh.json +25 -0
  36. package/dist/cjs/assets/locale/version_file +1 -0
  37. package/dist/cjs/services/fetchTranslations.js +4 -1
  38. package/dist/cjs/services/fetchTranslations.js.map +1 -1
  39. package/dist/cjs/services/translations.js.map +1 -1
  40. package/dist/cjs/services/translationsImportsMap.js +0 -2
  41. package/dist/cjs/services/translationsImportsMap.js.map +1 -1
  42. package/dist/cjs/state/CollectionState.js.map +1 -1
  43. package/dist/cjs/state/DataExtensionState.js +4 -2
  44. package/dist/cjs/state/DataExtensionState.js.map +1 -1
  45. package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
  46. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +7 -1
  47. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  48. package/dist/esm/assets/locale/messages_ar.json +496 -2
  49. package/dist/esm/assets/locale/messages_bg.json +496 -2
  50. package/dist/esm/assets/locale/messages_ca.json +496 -2
  51. package/dist/esm/assets/locale/messages_cs.json +25 -0
  52. package/dist/esm/assets/locale/messages_da.json +25 -0
  53. package/dist/esm/assets/locale/messages_de.json +25 -0
  54. package/dist/esm/assets/locale/messages_el.json +496 -2
  55. package/dist/esm/assets/locale/messages_en.json +635 -618
  56. package/dist/esm/assets/locale/messages_es.json +25 -0
  57. package/dist/esm/assets/locale/messages_fi.json +496 -2
  58. package/dist/esm/assets/locale/messages_fr.json +25 -0
  59. package/dist/esm/assets/locale/messages_he.json +496 -2
  60. package/dist/esm/assets/locale/messages_hi.json +25 -0
  61. package/dist/esm/assets/locale/messages_hu.json +496 -2
  62. package/dist/esm/assets/locale/messages_id.json +25 -0
  63. package/dist/esm/assets/locale/messages_it.json +25 -0
  64. package/dist/esm/assets/locale/messages_ja.json +25 -0
  65. package/dist/esm/assets/locale/messages_ko.json +25 -0
  66. package/dist/esm/assets/locale/messages_lt.json +496 -2
  67. package/dist/esm/assets/locale/messages_ms.json +496 -2
  68. package/dist/esm/assets/locale/messages_nl.json +25 -0
  69. package/dist/esm/assets/locale/messages_no.json +25 -0
  70. package/dist/esm/assets/locale/messages_pl.json +25 -0
  71. package/dist/esm/assets/locale/messages_pt.json +25 -0
  72. package/dist/esm/assets/locale/messages_ro.json +496 -2
  73. package/dist/esm/assets/locale/messages_ru.json +25 -0
  74. package/dist/esm/assets/locale/messages_sk.json +496 -2
  75. package/dist/esm/assets/locale/messages_sl.json +496 -2
  76. package/dist/esm/assets/locale/messages_sv.json +25 -0
  77. package/dist/esm/assets/locale/messages_th.json +25 -0
  78. package/dist/esm/assets/locale/messages_tl.json +496 -2
  79. package/dist/esm/assets/locale/messages_tr.json +25 -0
  80. package/dist/esm/assets/locale/messages_uk.json +25 -0
  81. package/dist/esm/assets/locale/messages_vi.json +25 -0
  82. package/dist/esm/assets/locale/messages_zh.json +25 -0
  83. package/dist/esm/assets/locale/version_file +1 -0
  84. package/dist/esm/services/fetchTranslations.js +4 -1
  85. package/dist/esm/services/fetchTranslations.js.map +1 -1
  86. package/dist/esm/services/translationsImportsMap.js +0 -4
  87. package/dist/esm/services/translationsImportsMap.js.map +1 -1
  88. package/dist/esm/state/CollectionState.js.map +1 -1
  89. package/dist/esm/state/DataExtensionState.js +3 -1
  90. package/dist/esm/state/DataExtensionState.js.map +1 -1
  91. package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
  92. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +7 -1
  93. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  94. package/dist/types/services/fetchTranslations.d.ts.map +1 -1
  95. package/dist/types/services/translations.d.ts +145 -142
  96. package/dist/types/services/translations.d.ts.map +1 -1
  97. package/dist/types/services/translationsImportsMap.d.ts +0 -2
  98. package/dist/types/services/translationsImportsMap.d.ts.map +1 -1
  99. package/dist/types/state/CollectionState.d.ts +1 -0
  100. package/dist/types/state/CollectionState.d.ts.map +1 -1
  101. package/dist/types/state/DataExtensionState.d.ts.map +1 -1
  102. package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -1
  103. package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
  104. package/package.json +4 -3
  105. /package/dist/cjs/assets/{locale → visual-e2e-locale}/messages_visuale2e.json +0 -0
  106. /package/dist/cjs/assets/{locale → visual-e2e-locale}/messages_visuale2e_ja.json +0 -0
  107. /package/dist/esm/assets/{locale → visual-e2e-locale}/messages_visuale2e.json +0 -0
  108. /package/dist/esm/assets/{locale → visual-e2e-locale}/messages_visuale2e_ja.json +0 -0
@@ -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 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
+ {"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 getBoundingClientRect: () => DOMRect;\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":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAmBA,IAAAC,KAAA,GAAAD,OAAA;AAMA,IAAAE,KAAA,GAAAF,OAAA;AAQA,IAAAG,OAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AAOA,IAAAW,KAAA,GAAAX,OAAA;AAEA,IAAAY,gBAAA,GAAAZ,OAAA;AAGA,IAAAa,gBAAA,GAAAb,OAAA;AAEA,MAAMc,WAAW,GAAG,CAAC;;AA0CrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAiJO,MAAMC,eAAe,CAE5B;EA+EE,IAAIC,eAAeA,CAAA,EAAG;IACpB,MAAM;MAAEC;IAAM,CAAC,GAAG,IAAI;IACtB,OAAO;MACLC,QAAQ,EAAE,IAAI,CAACC,SAAS,CAACF,KAAK,CAACG,UAAU;IAC3C,CAAC;EACH;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,MAAM,CAACD,WAAW;EAChC;EAEA,IAAIE,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACD,MAAM,CAACC,MAAM;EAC3B;EAEAC,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACC,WAAW,CAACD,QAAQ;EAClC;EAEA,IAAIE,iBAAiBA,CAAA,EAAG;IACtB,IACE,IAAI,CAACC,kBAAkB,IAAI,IAAI,IAC/BC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EACrC;MACA,MAAM,IAAIC,KAAK,CAAC,sCAAsC,CAAC;IACzD;IACA,OAAO,IAAI,CAACJ,kBAAkB;EAChC;EAEAK,WAAWA,CAACC,MAAmC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,6BA7FF,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA,0BACH,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,mBA0BjC,IAAIC,oBAAY,CAAC,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BASV,IAAIE,4BAAa,CAAC,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,2BACnB,IAAIE,4BAAa,CAAC,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,oBAE1B,IAAIG,oBAAS,CAAC,CAAC;IAEnC;AACF;AACA;AACA;IAHE,IAAAJ,gBAAA,CAAAC,OAAA,0BAIqD,QAAQ;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBAEhDf,UAAgC,IAAK;MAChD,MAAM;QAAEmB;MAAU,CAAC,GAAG,IAAI;MAC1B,MAAM;QACJC,OAAO;QACPC,UAAU;QACVC,MAAM;QACNC,gBAAgB;QAChBC,6BAA6B;QAC7BC,uBAAuB;QACvBC,OAAO;QACP;QACA,GAAGC;MACL,CAAC,GAAG3B,UAAU;MAEd,OAAO,CAACmB,SAAS,EAAEQ,aAAa,CAAC;IACnC,CAAC;IAAA,IAAAb,gBAAA,CAAAC,OAAA,oBAyOU,MACTY,aAA+B,IACC;MAChC,MAAM;QACJC,KAAK;QACLC,KAAK;QACLC,SAAS,GAAG,IAAI;QAChBC,MAAM,GAAG,IAAI;QACb,GAAGC;MACL,CAAC,GAAG,MAAM,IAAI,CAACC,SAAS,CAACN,aAAa,CAAC;MAEvC,OAAO;QACLC,KAAK;QACLC,KAAK;QACLC,SAAS;QACTC,MAAM;QACN,GAAGC;MACL,CAAC;IACH,CAAC;IAAA,IAAAlB,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iCA8BuB,MACtB,IAAImB,OAAO,CAAQC,OAAO,IAAK;MAC7BC,qBAAqB,CAAC,MAAM;QAC1BA,qBAAqB,CAAC,MAAM;UAC1BD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAAA,IAAArB,gBAAA,CAAAC,OAAA,mBAEM,IAAAsB,YAAM,EAAEC,GAAY,IAAK;MACjC,IAAIA,GAAG,IAAI,IAAI,EAAE;QACf;MACF;MAEA,MAAM;QAAEjC,WAAW;QAAEkC,MAAM;QAAEC;MAAa,CAAC,GAAG,IAAI;MAClDC,OAAO,CAACC,KAAK,CAACJ,GAAG,CAAC;MAElB,MAAM;QAAElC;MAAS,CAAC,GAAGC,WAAW;MAEhC,IAAI,EAAEiC,GAAG,YAAYK,kBAAY,CAAC,EAAE;QAClC,MAAMC,OAAO,GAAGL,MAAM,CAACM,OAAO,oBAAdN,MAAM,CAACM,OAAO,CAAG;UAC/BP,GAAG;UACHlC;QACF,CAAC,CAAC;QAEF,IAAI,CAACwC,OAAO,EAAE;UACZJ,YAAY,CAACM,gBAAgB,CAACR,GAAG,CAAC;QACpC;MACF;MAEA,IAAI,CAACS,eAAe,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;MACnC,IAAI,CAACC,gBAAgB,CAAC,CAAC;MACvB,IAAI,CAACC,YAAY,CAAC,CAAC;IACrB,CAAC,CAAC;IAAA,IAAApC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,yBAkO+B,IAAAsB,YAAM,EAAC,YAAY;MAClD,MAAM;QACJxC,KAAK;QACLK,MAAM;QACNqC,MAAM,EAAE;UAAEY,cAAc;UAAEC;QAAe,CAAC;QAC1CC;MACF,CAAC,GAAG,IAAI;MACR;MACA,IAAI,CAACnD,MAAM,CAACC,MAAM,CAACmD,OAAO,EAAE;QAC1BzD,KAAK,CAAC0D,UAAU,CAACC,QAAQ,CAAC,CAAC;MAC7B;MAEA,IAAI,CAACC,cAAc,GAAG,WAAW;MAEjC,MAAMC,uBAAuB,GAAGL,OAAO,CACpCM,SAAS,CAAC,cAAc,CAAC,CACzBC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;MAClB,MAAMC,mBAAmB,GAAGV,cAAc,oBAAdA,cAAc,CAAG;QAC3CvD,KAAK,EAAEA,KAAK,CAACG;MACf,CAAC,CAAC;MAEF,MAAM;QAAE+D,OAAO;QAAEC,YAAY;QAAEC;MAAkB,CAAC,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;MACjE,MAAMH,OAAO;MAEb,IAAAI,iBAAW,EAAC,MAAM;QAChB,IAAIJ,OAAO,KAAK,IAAI,CAACK,oBAAoB,EAAE;UACzC,MAAMC,gBAAgB,GAAG,IAAI,CAACC,YAAY,CAAC,CAACN,YAAY,CAAC,CAAC;UAE1DC,iBAAiB,CAACM,OAAO,CAAEV,CAAC,IAAKA,CAAC,oBAADA,CAAC,CAAG,CAAC,CAAC;UAEvC,IAAIQ,gBAAgB,EAAE;YACpB,MAAM;cAAEG;YAAS,CAAC,GAAGH,gBAAgB;YACrC,MAAMI,oBAAoB,GAAG;cAC3BC,aAAa,EAAEF,QAAQ,CAACG,MAAM,CAC5B,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,GAAGC,IAAI,CAACjD,KAAK,CAACkD,MAAM,EACtC,CACF,CAAC;cACDN,QAAQ;cACR3E,KAAK,EAAEK,MAAM,CAACD,WAAW;cACzBC,MAAM,EAAEA,MAAM,CAACF;YACjB,CAAC;YACD0D,uBAAuB,CAACa,OAAO,CAAEV,CAAC,IAAKA,CAAC,CAACY,oBAAoB,CAAC,CAAC;YAC/D,IAAIX,mBAAmB,IAAI,IAAI,EAAE;cAC/BA,mBAAmB,CAACW,oBAAoB,CAAC;YAC3C;YACAtB,cAAc,YAAdA,cAAc,CAAGsB,oBAAoB,CAAC;UACxC;QACF;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAAA,IAAA3D,gBAAA,CAAAC,OAAA,2BAwYgB,IAAAsB,YAAM,EAAC,MAAM;MAC7B,MAAM;QAAEhC;MAAY,CAAC,GAAG,IAAI;MAC5B,MAAM;QAAE0E;MAAa,CAAC,GAAG1E,WAAW;MAEpC,IACE0E,YAAY,CAACC,SAAS,CAAC,CAAC,IACxB3E,WAAW,CAACD,QAAQ,IACpB,IAAI,CAACF,MAAM,CAACC,MAAM,CAACmD,OAAO,EAC1B;QACA,IAAI,IAAI,CAACG,cAAc,KAAK,WAAW,EAAE;UACvC;UACA,IAAI,CAACwB,qBAAqB,CAAC,CAAC;QAC9B,CAAC,MAAM;UACL;UACA,IAAI,CAACC,yBAAyB,CAAC;YAAEC,KAAK,EAAE;UAAK,CAAC,CAAC;QACjD;MACF;IACF,CAAC,CAAC;IAAA,IAAArE,gBAAA,CAAAC,OAAA,+BAEqBX,QAAiB,IAAK;MAC3C,MAAM4D,YAAY,GAAG,IAAI,CAACjB,eAAe,CAAC,CAAC;MAE3C,IAAI3C,QAAQ,EAAE;QACZ,IAAI,CAACgF,eAAe,CAAC,CAAC;MACxB,CAAC,MAAM,IAAI,CAAChF,QAAQ,IAAI4D,YAAY,CAACqB,KAAK,CAACC,QAAQ,EAAE;QACnDtB,YAAY,CAACuB,QAAQ,CAAC;UACpBC,IAAI,EAAE,OAAO;UACb9C,KAAK,EAAE,IAAIC,kBAAY,CAAC,8CAA8C;QACxE,CAAC,CAAC;QACF,IAAI,CAACO,YAAY,CAAC,CAAC;MACrB;IACF,CAAC;IAAA,IAAApC,gBAAA,CAAAC,OAAA,2BAEiB,IAAAsB,YAAM,EAAC,MAAM;MAC7B,MAAM;QAAEoD;MAAS,CAAC,GAAG,IAAI;MAEzB,IAAIA,QAAQ,CAACtF,MAAM,CAACmD,OAAO,EAAE;QAC3BmC,QAAQ,CAACC,OAAO,CAAC,CAAC;MACpB,CAAC,MAAM;QACL,IAAI,CAACR,yBAAyB,CAAC,CAAC;MAClC;IACF,CAAC,CAAC;IAAA,IAAApE,gBAAA,CAAAC,OAAA,4BAmKiB,IAAI4E,gCAAe,CAAgB,CAAC;IAjoCrD,IAAI,CAACC,MAAM,GAAG/E,MAAM,CAAC+E,MAAM;IAC3B,IAAI,CAACC,iBAAiB,GAAGhF,MAAM,CAACgF,iBAAiB;IACjD,IAAI,CAACC,gBAAgB,GAAGjF,MAAM,CAACiF,gBAAgB;IAC/C,IAAI,CAACC,KAAK,GACRlF,MAAM,CAACkF,KAAK,IACX,IAAI/E,oBAAY,CAAC,CAAwC;IAC5D,IAAAgF,oBAAc,EAAC,IAAI,EAAE;MACnBf,qBAAqB,EAAE5C,YAAM,CAAC4D,KAAK;MACnCC,kBAAkB,EAAE7D,YAAM,CAAC4D,KAAK;MAChCf,yBAAyB,EAAE7C,YAAM,CAAC4D,KAAK;MACvCE,eAAe,EAAE9D,YAAM,CAAC4D,KAAK;MAC7B/C,YAAY,EAAEb,YAAM,CAAC4D,KAAK;MAC1B3B,YAAY,EAAEjC,YAAM,CAAC4D,KAAK;MAC1B3E,MAAM,EAAEe,YAAM;MACd+D,IAAI,EAAE/D,YAAM;MACZ6B,KAAK,EAAE7B,YAAM;MACbgE,IAAI,EAAEhE,YAAM;MACZiE,cAAc,EAAEjE,YAAM;MACtBkE,YAAY,EAAElE,YAAM;MACpBmE,UAAU,EAAEC,cAAQ;MACpBC,iBAAiB,EAAED,cAAQ;MAC3BE,iBAAiB,EAAEF,cAAQ;MAC3BG,iBAAiB,EAAEH,cAAQ;MAC3BI,cAAc,EAAEJ,cAAQ;MACxBK,cAAc,EAAEL,cAAQ;MACxBM,sBAAsB,EAAE1E,YAAM,CAAC4D,KAAK;MACpCxC,cAAc,EAAEuD,gBAAU,CAACC,GAAG;MAC9BC,wBAAwB,EAAE7E,YAAM;MAChC8E,iBAAiB,EAAEH,gBAAU,CAACC,GAAG;MACjCG,cAAc,EAAEJ,gBAAU,CAACC,GAAG;MAC9BI,sBAAsB,EAAEhF;IAC1B,CAAC,CAAC;IAEF,IAAI,CAAClB,SAAS,GAAGN,MAAM,CAACM,SAAS;IACjC,IAAI,CAACmG,IAAI,GAAGzG,MAAM,CAACyG,IAAI;IACvB,IAAI,CAACC,mBAAmB,GAAG1G,MAAM,CAAC0G,mBAAmB;IACrD,IAAI,CAACC,UAAU,GAAG3G,MAAM,CAAC2G,UAAU;IACnC,IAAI,CAAChF,YAAY,GAAG3B,MAAM,CAAC2B,YAAY;IACvC,IAAI,CAACiF,YAAY,GAAG5G,MAAM,CAAC4G,YAAY;IACvC,IAAI,CAACpH,WAAW,GAAGQ,MAAM,CAACR,WAAW;IACrC,IAAI,CAACqH,OAAO,GAAG7G,MAAM,CAAC6G,OAAO;IAE7B,IAAI,CAACC,iBAAiB,GAAG9G,MAAM,CAAC8G,iBAAiB;IACjD,IAAI,CAACC,OAAO,GAAG/G,MAAM,CAAC+G,OAAO;IAC7B,IAAI,CAACC,QAAQ,GAAGhH,MAAM,CAACgH,QAAQ;IAC/B,IAAI,CAACC,SAAS,GAAGjH,MAAM,CAACiH,SAAS;IACjC,IAAI,CAAC7F,SAAS,GAAGpB,MAAM,CAACoB,SAAS;IACjC,IAAI,CAACM,MAAM,GAAG1B,MAAM,CAAC0B,MAAM,IAAI,CAAC,CAAC;IAEjC,IAAI,CAACwF,gBAAgB,GAAGlH,MAAM,CAACkH,gBAAgB;IAE/C,IAAI,CAACC,SAAS,GAAGnH,MAAM,CAACmH,SAAS,KAAK,OAAO;MAAEC,MAAM,EAAEA,CAAA,KAAM,CAAC;IAAE,CAAC,CAAC,CAAC;;IAEnE;IACA,MAAMC,YAAY,GAAGA,CAACC,YAAoB,EAAEzF,KAAc,KAAK;MAC7D,IAAIyF,YAAY,GAAGzI,WAAW,EAAE;QAAA,IAAA0I,kBAAA;QAC9B,CAAAA,kBAAA,OAAI,CAACX,YAAY,aAAjBW,kBAAA,CAAmBC,kBAAkB,YAArCD,kBAAA,CAAmBC,kBAAkB,CAAG3F,KAAK,CAAC;QAC9C,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd,CAAC;IAED,MAAM4F,mBAAmB,GAAG;MAC1BC,OAAO,EAAE,IAAAlG,YAAM,EAAC,MAAM,IAAI,CAACmG,QAAQ,CAAC,IAAI,CAAC3I,KAAK,CAACG,UAAU,CAAC,CAAC;MAC3DyI,gBAAgB,EAAE,IAAI;MACtBC,QAAQ,EAAE,KAAK;MACfC,OAAO,EAAE,KAAK;MACdC,KAAK,EAAEV,YAAY;MACnBW,UAAU,EAAE,GAAG;MACfC,SAAS,EAAE,MAAM;MACjBjG,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBkG,cAAc,EAAE,KAAK;MACrBC,YAAY,EAAE,KAAK;MACnB,GAAGnI,MAAM,CAACoI;IACZ,CAAC;IAED,IAAI,CAACC,WAAW,GAAG,IAAIC,iBAAW,CAAC;MACjC3B,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B4B,cAAc,EAAE;QACdC,OAAO,EAAEf;MACX;IACF,CAAC,CAAC;IAEF,IAAI,CAACgB,aAAa,GAAG,IAAIC,mBAAa,CACpC,IAAI,CAACL,WAAW,EAChBZ,mBACF,CAAC;IAED,IAAI,CAACzI,KAAK,GAAG,IAAI2J,sBAAU,CAAC;MAC1BpI,OAAO,EAAEP,MAAM,CAACO,OAAO;MACvBE,MAAM,EAAET,MAAM,CAACS,MAAM;MACrBmI,KAAK,EAAE5I,MAAM,CAAC4I,KAAK;MACnB/B,OAAO,EAAE7G,MAAM,CAACgF,iBAAiB,GAAGhF,MAAM,CAAC6G,OAAO,GAAGgC,SAAS;MAC9DC,sBAAsB,EAAE9I,MAAM,CAAC8I;IACjC,CAAC,CAAC;IAEF,IAAI,CAACC,kBAAkB,GACrB/I,MAAM,CAACgJ,iBAAiB,IACvB;MAAEC,OAAO,EAAEjJ,MAAM,CAACkJ;IAAe,CAAuB;IAE3D,IAAI,CAACC,eAAe,GAAG,IAAIC,8BAAc,CAAC,IAAI,CAAC;IAE/C,IAAI,CAACC,wBAAwB,GAC3BrJ,MAAM,CAACqJ,wBAAwB,IAAI,UAAU;IAE/C,IAAI,CAAChK,MAAM,GAAG,IAAIiK,kCAAgB,CAAO;MACvCvC,OAAO,EAAE/G,MAAM,CAAC+G,OAAO;MACvB3H,WAAW,EAAE,IAAI,CAACJ,KAAK,CAACuK,UAAU,CAAC,CAAC;MACpCC,UAAU,EAAExJ,MAAM,CAACwJ,UAAU,GACzB,IAAIC,gCAAe,CAAO;QACxBC,UAAU,EAAE,IAAI;QAChB/C,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3B6C,UAAU,EAAExJ,MAAM,CAACwJ;MACrB,CAAC,CAAC,GACFX;IACN,CAAC,CAAC;IAEF,IAAI,CAACzG,gBAAgB,CAAC,CAAC;IAEvB,IAAI,CAACuH,cAAc,GAAG,EAAE;IAExB,IAAI,CAACC,UAAU,GAAG,IAAIC,gCAAe,CAAI;MACvCC,yBAAyB,EAAE9J,MAAM,CAAC8J,yBAAyB;MAC3DC,oBAAoB,EAAE/J,MAAM,CAAC+J,oBAAoB;MACjDL,UAAU,EAAE,IAAI;MAChBM,WAAW,EAAEA,CAAA,KAAM;QAAA,IAAAC,qBAAA;QACjB,CAAAA,qBAAA,OAAI,CAAC3D,iBAAiB,aAAtB2D,qBAAA,CAAwBC,QAAQ,CAAC;UAC/BC,GAAG,EAAE,CAAC;UACNC,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,IAAIpK,MAAM,CAACqK,WAAW,EAAE;MACtB,IAAI,CAAC5E,cAAc,CAACzF,MAAM,CAACqK,WAAW,CAAC;IACzC;IAEA,IAAIrK,MAAM,CAAC0G,mBAAmB,EAAE;MAC9B,IAAI,CAAC4D,eAAe,CAACC,UAAU,CAAC,IAAI,CAACC,qBAAqB,CAAC;IAC7D;IAEA,IAAI,CAACC,QAAQ,GAAG,IAAAjJ,YAAM,EAAC,CAAC;MAAEkJ;IAAuC,CAAC,KAAK;MACrE,IAAI,CAAClI,OAAO,CAACmI,IAAI,CAAC,MAAM,EAAE;QAAED;MAAY,CAAC,CAAC;MAC1C,IAAIA,WAAW,EAAE;QACf,IAAI,CAACrE,wBAAwB,CAAC,CAAC;MACjC;MACA,OAAO,IAAI,CAACuE,eAAe,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,IAAI,CAACC,YAAY,GAAG,IAAI,CAACC,WAAW,CAClC,IAAI,CAAC/F,MAAM,CAACgG,QAAQ,CAAC,IAAI,CAACN,QAAQ,EAAE,GAAG,CACzC,CAAC;IAED,IAAI,CAACO,UAAU,GAAG,IAAAxJ,YAAM,EAAC,MAAOkJ,WAAqB,IAAK;MACxD,MAAM;QACJhJ,MAAM,EAAE;UAAEuJ,QAAQ;UAAEC;QAAgB,CAAC;QACrC1I,OAAO;QACPxD;MACF,CAAC,GAAG,IAAI;MAER,MAAMmM,kBAAkB,GAAG3I,OAAO,CAC/BM,SAAS,CAAC,aAAa,CAAC,CACxBC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;MAClBiI,QAAQ,YAARA,QAAQ,CAAG;QACTjM,KAAK,EAAEA,KAAK,CAACG;MACf,CAAC,CAAC;MACFqD,OAAO,CAACmI,IAAI,CAAC,QAAQ,EAAE;QAAED;MAAY,CAAC,CAAC;MAEvC,IAAIA,WAAW,EAAE;QACf,IAAI,CAACrE,wBAAwB,CAAC,CAAC;MACjC;MAEA,IAAI,IAAI,CAACgD,wBAAwB,KAAK,OAAO,EAAE;QAC7C,IAAI,CAACO,UAAU,CAACwB,eAAe,CAAC,CAAC;MACnC;MAEA,OAAO,IAAI,CAACR,eAAe,CAAC;QAC1BS,eAAe,EAAGrL,MAAM,IAAK;UAC3BmL,kBAAkB,CAACzH,OAAO,CAAEV,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtCkI,eAAe,YAAfA,eAAe,CAAGlL,MAAM,CAAC;QAC3B;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAACsL,cAAc,GAAG,IAAI,CAACvG,MAAM,CAACgG,QAAQ,CAAC,IAAI,CAACC,UAAU,EAAE,GAAG,CAAC;EAClE;EAEA5I,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACqG,aAAa,CAAC8C,UAAU,CAC3B;MACE,GAAG,IAAI,CAAC9C,aAAa,CAAC+C,OAAO;MAC7B,GAAG,IAAI,CAACzM,eAAe;MACvB+I,OAAO,EAAE;IACX,CAAC,EACD;MACE9F,OAAO,EAAE;IACX,CACF,CAAC;EACH;EA2BAyD,cAAcA,CAAC4E,WAA6B,EAAE;IAC5C,MAAM;MACJtJ,KAAK;MACLC,KAAK,EAAEyK,UAAU;MACjBxK,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,IAAI;MACbwK;IACF,CAAC,GAAGrB,WAAW;IAEf,MAAMrJ,KAAK,GAAGyK,UAAU,IAAI1K,KAAK,CAACkD,MAAM;IAExC,IAAI,CAACoE,WAAW,CAACsD,YAAY,CAC3B,IAAI,CAAC5M,eAAe,CAACE,QAAQ,EAC7B;MACE8B,KAAK;MACLC,KAAK;MACLC,SAAS;MACTC,MAAM;MACNwK;IACF,CACF,CAAC;EACH;EAuCAxJ,eAAeA,CAAA,EAAG;IAChB,MAAMlD,KAAK,GAAG,IAAI,CAACyJ,aAAa,CAACvG,eAAe,CAAC,CAAC;IAClD,OAAOlD,KAAK;EACd;EAEA,IAAIkK,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEAyC,mBAAmBA,CAAC;IAClBC,gBAAgB;IAChBC,gBAAgB;IAChBC;EAKF,CAAC,EAAE;IACD,MAAM;MAAEvJ,OAAO;MAAEnD;IAAO,CAAC,GAAG,IAAI;IAChC,MAAM;MAAED;IAAY,CAAC,GAAGC,MAAM;IAE9B,MAAM2M,0BAA0B,GAAGxJ,OAAO,CAACM,SAAS,CAAC,mBAAmB,CAAC;IAEzE,MAAMmJ,cAAc,GAAGD,0BAA0B,CAAClI,MAAM,CACtD,CAACoI,KAAK,EAAEC,QAAQ,KACdA,QAAQ,CAAC;MACPD,KAAK;MACLH,eAAe;MACf3M;IACF,CAAC,CAAC,EACJyM,gBACF,CAAC;IAED,MAAMO,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACP,gBAAgB,CAAC;IAEhE,OAAO;MACLG,cAAc;MACdG;IACF,CAAC;EACH;EAEAC,kBAAkBA,CAACP,gBAAwB,EAAE;IAC3C,MAAM;MAAEtJ,OAAO;MAAEnD;IAAO,CAAC,GAAG,IAAI;IAChC,MAAM;MAAED;IAAY,CAAC,GAAGC,MAAM;IAE9B,MAAMiN,uBAAuB,GAAG9J,OAAO,CAACM,SAAS,CAAC,gBAAgB,CAAC;IACnE,OAAOwJ,uBAAuB,CAACxI,MAAM,CACnC,CAAC9C,KAAK,EAAEmL,QAAQ,KACdA,QAAQ,CAAC;MACPnL,KAAK;MACL5B;IACF,CAAC,CAAC,EACJ0M,gBACF,CAAC;EACH;EAEAS,oBAAoBA,CAAC5I,QAA8B,EAAE;IACnD,MAAM;MAAEK,IAAI;MAAE9C,MAAM;MAAEsL;IAAO,CAAC,GAAG,IAAI,CAACxN,KAAK,CAACG,UAAU;IAEtD,IAAI,CAACwK,cAAc,CAAC8C,IAAI,CAAC;MACvBC,SAAS,EAAE/I,QAAQ,CAChBgJ,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC7L,KAAK,CAAC,CACvBgC,GAAG,CAAE8J,IAAI,IAAK,IAAI,CAAC9F,OAAO,CAAC8F,IAAI,CAAC,CAAC;MACpCC,aAAa,EAAE;QACb9I,IAAI;QACJ9C,MAAM;QACNsL;MACF;IACF,CAAC,CAAC;EACJ;EAEA/I,YAAYA,CAAC+E,OAAmB,EAAE;IAChC,MAAM;MAAEnJ,MAAM;MAAE6J,cAAc;MAAE1G;IAAQ,CAAC,GAAG,IAAI;IAEhD,MAAMmB,QAAQ,GAAG6E,OAAO,CACrBzF,GAAG,CAAEgK,UAAU,IAAKA,UAAU,CAACvI,KAAK,CAACwI,IAAI,CAAC,CAC1CC,MAAM,CAAEC,CAAC,IAA8BA,CAAC,IAAI,IAAI,CAAC;IAEpD,IAAI,CAAC7K,YAAY,CAAC,CAAC;IAEnB,IAAIsB,QAAQ,CAACM,MAAM,EAAE;MACnBzB,OAAO,CAACmI,IAAI,CAAC,qBAAqB,CAAC;MAEnC,MAAMwC,QAAQ,GAAGxJ,QAAQ,CAACA,QAAQ,CAACM,MAAM,GAAG,CAAC,CAAC;MAC9C,MAAM;QAAEhD,SAAS;QAAEC,MAAM;QAAEwK;MAAQ,CAAC,GAAGyB,QAAQ;MAE/C,MAAMrB,gBAAgB,GAAGqB,QAAQ,CAACnM,KAAK,IAAImM,QAAQ,CAACpM,KAAK,CAACkD,MAAM;MAChE,MAAM4H,gBAAgB,GAAGlI,QAAQ,CAACZ,GAAG,CAAEiK,IAAI,IAAKA,IAAI,CAACjM,KAAK,CAAC;MAE3D,MAAM;QAAEkL,cAAc;QAAEG;MAAe,CAAC,GAAG,IAAI,CAACR,mBAAmB,CAAC;QAClEC,gBAAgB;QAChBC,gBAAgB;QAChBC,eAAe,EAAE1M,MAAM,CAAC+N;MAC1B,CAAC,CAAC;MAEF/N,MAAM,CAACgO,QAAQ,CAAC;QACdC,WAAW,EAAEzB,gBAAgB;QAC7B0B,SAAS,EAAEtB;MACb,CAAC,CAAC;MAEF5M,MAAM,CAACmO,SAAS,CAAC;QACfF,WAAW,EAAExB,gBAAgB;QAC7ByB,SAAS,EAAEnB;MACb,CAAC,CAAC;MAEF,IAAI,CAACG,oBAAoB,CAAC5I,QAAQ,CAAC;MAEnCtE,MAAM,CAACoO,eAAe,CAACN,QAAQ,CAACnM,KAAK,IAAI,IAAI,CAAC;MAC9C3B,MAAM,CAACqO,UAAU,CAAChC,OAAO,CAAC;MAE1BxC,cAAc,CAACyE,SAAS,CAACzM,MAAM,CAAC;MAChC,IAAID,SAAS,IAAI,IAAI,EAAE;QACrB5B,MAAM,CAAC4B,SAAS,GAAGA,SAAS;MAC9B;MACA,IAAI,CAAC2B,cAAc,GAAG,QAAQ;MAE9BJ,OAAO,CAACmI,IAAI,CAAC,eAAe,CAAC;MAE7B,OAAO;QACLhH;MACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb;EAEAmH,WAAWA,CAAC8C,EAA+B,EAAE;IAC3C,OAAO,CAAC,GAAGC,IAAW,KAAK;MACzB,IAAI,IAAI,CAACxO,MAAM,CAACC,MAAM,CAACwO,MAAM,EAAE;QAC7B;MACF;MAEAF,EAAE,CAAC,GAAGC,IAAI,CAAC;IACb,CAAC;EACH;EAEAxL,YAAYA,CAAA,EAAG;IACb,MAAM;MAAEoG,aAAa;MAAEpJ,MAAM;MAAEL;IAAM,CAAC,GAAG,IAAI;IAC7C,MAAM;MAAEM,MAAM;MAAEuC,KAAK;MAAEkM;IAAW,CAAC,GAAGtF,aAAa,CAACuF,mBAAmB,CACrEvF,aAAa,CAAC+C,OAChB,CAAC;IAEDnM,MAAM,CAACC,MAAM,GAAG;MACd,GAAG2O,kBAAW,CAAC3O,MAAM,CAAC;MACtByO,UAAU;MACVlM;IACF,CAAmD;IACnDxC,MAAM,CAACD,WAAW,GAAGJ,KAAK,CAACG,UAAU;EACvC;EAEAkE,KAAKA,CAAA,EAAG;IACN,MAAM;MAAEoF,aAAa;MAAEjJ,WAAW;MAAEgD;IAAQ,CAAC,GAAG,IAAI;IAEpDiG,aAAa,CAAC8C,UAAU,CACtB;MACE,GAAG9C,aAAa,CAAC+C,OAAO;MACxB,GAAG,IAAI,CAACzM,eAAe;MACvB+I,OAAO,EAAE;IACX,CAAC,EACD;MACE9F,OAAO,EAAE;IACX,CACF,CAAC;IAED,MAAMmB,YAAY,GAAG,IAAI,CAACjB,eAAe,CAAC,CAAC;IAC3C,IAAI,CAACqB,oBAAoB,GAAG,IAAIlC,OAAO,CAAQC,OAAO,IAAK;MACzD,IAAI6B,YAAY,CAACD,OAAO,EAAE;QACxBC,YAAY,CAACD,OAAO,CAACgL,IAAI,CAAC,MAAM5M,OAAO,CAAC,CAAC,CAAC,CAAC6M,KAAK,CAAC,MAAM7M,OAAO,CAAC,CAAC,CAAC;MACnE,CAAC,MAAM;QACLA,OAAO,CAAC,CAAC;MACX;IACF,CAAC,CAAC;IAEF,MAAM8M,OAAO,GAAGjL,YAAY,CAACiL,OAAO,CAAC,CAAC;IAEtC,MAAMC,cAAc,GAAG7L,OAAO,CAACM,SAAS,CAAC,OAAO,CAAC;IACjD,MAAMM,iBAAiB,GAAGiL,cAAc,CAACtL,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC;MAAEoL;IAAQ,CAAC,CAAC,CAAC;IAEnE,IAAI,CAAC5O,WAAW,CAACD,QAAQ,EAAE;MACzB4D,YAAY,CAACuB,QAAQ,CAAC;QACpBC,IAAI,EAAE,OAAO;QACb9C,KAAK,EAAE,IAAIC,kBAAY,CAAC,gCAAgC;MAC1D,CAAC,CAAC;IACJ;IAEA,IAAI,CAACO,YAAY,CAAC,CAAC;IAEnB,OAAO;MACLc,YAAY;MACZiL,OAAO;MACPhL,iBAAiB;MACjBF,OAAO,EAAE,IAAI,CAACK;IAChB,CAAC;EACH;EAEA,IAAIoC,UAAUA,CAAA,EAAG;IACf,MAAM;MACJtG,MAAM,EAAE;QACNiP,OAAO,EAAE;UAAEhB,WAAW,EAAEtM;QAAM;MAChC,CAAC;MACDhC,KAAK,EAAE;QACL0D,UAAU,EAAE;UAAEkG;QAAM;MACtB;IACF,CAAC,GAAG,IAAI;IACR,OAAO2F,IAAI,CAACC,IAAI,CAACxN,KAAK,GAAG4H,KAAK,CAAC;EACjC;EAEA,IAAI5H,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC3B,MAAM,CAAC2B,KAAK;EAC1B;EAEA,IAAIyN,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACpP,MAAM,CAACoP,WAAW;EAChC;EAEA,IAAIC,eAAeA,CAAA,EAAG;IACpB,MAAM;MACJxF,cAAc,EAAE;QAAEwF;MAAgB;IACpC,CAAC,GAAG,IAAI;IACR,OAAOA,eAAe;EACxB;EAqDA,MAAMtK,qBAAqBA,CAAA,EAAG;IAC5B,MAAM;MAAE/E,MAAM;MAAEqP,eAAe;MAAE9L;IAAe,CAAC,GAAG,IAAI;IACxD,IACEA,cAAc,KAAK,SAAS,IAC5B,CAACvD,MAAM,CAACC,MAAM,CAACyO,UAAU,IACzB,CAACW,eAAe,EAChB;MACA,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC;IAC5B;EACF;;EAEA;EACA,MAAMtJ,kBAAkBA,CACtBrB,IAAY,EACZwH,OAAgD,GAAG,CAAC,CAAC,EACrD;IACA,IAAIoD,aAAa,GAAG,CAAC;IACrB,MAAM;MAAEC,IAAI,GAAG;QAAEC,GAAG,EAAE,GAAG;QAAEC,GAAG,EAAE;MAAI;IAAE,CAAC,GAAGvD,OAAO;IACjD,MAAM;MACJxM,KAAK;MACLK,MAAM;MACNqC,MAAM,EAAE;QAAEa;MAAe;IAC3B,CAAC,GAAG,IAAI;IACR,MAAM;MAAEG;IAAW,CAAC,GAAG1D,KAAK;IAC5B0D,UAAU,CAACsB,IAAI,GAAGA,IAAI;IAEtB,MAAMf,mBAAmB,GAAGV,cAAc,oBAAdA,cAAc,CAAG;MAC3CvD,KAAK,EAAEA,KAAK,CAACG;IACf,CAAC,CAAC;IAEF,MAAM;MAAE+D,OAAO;MAAEC,YAAY;MAAEC;IAAkB,CAAC,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;IACjE,MAAM2L,YAAY,GAAG9L,OAAO;IAE5B,IAAI+L,SAA+C,GAAG,IAAI;IAE1D,MAAMC,cAAc,GAAG,IAAI7N,OAAO,CAAQC,OAAO,IAAK;MACpD2N,SAAS,GAAGE,UAAU,CAAC,MAAM;QAC3B;QACAP,aAAa,GAAGC,IAAI,CAACC,GAAG;QACxB,IAAI,CAACzI,wBAAwB,CAAC,CAAC;QAC/B/E,OAAO,CAAC,CAAC;MACX,CAAC,EAAEuN,IAAI,CAACE,GAAG,CAAC;IACd,CAAC,CAAC;;IAEF;IACA,MAAMK,cAAc,GAAG,IAAI/N,OAAO,CAAEC,OAAO,IAAK;MAC9C6N,UAAU,CAAC7N,OAAO,EAAEuN,IAAI,CAACC,GAAG,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAMzN,OAAO,CAACgO,IAAI,CAAC,CAACH,cAAc,EAAEF,YAAY,CAAC,CAAC;IAElD,IAAIC,SAAS,IAAI,IAAI,EAAE;MACrBK,YAAY,CAACL,SAAS,CAAC;IACzB;IAEA,IAAIL,aAAa,EAAE;MACjB,MAAM,IAAIvN,OAAO,CAAEC,OAAO,IAAK6N,UAAU,CAAC7N,OAAO,EAAEsN,aAAa,CAAC,CAAC;IACpE;IAEA,MAAMQ,cAAc;IACpB,MAAMJ,YAAY;IAElB,IAAI9L,OAAO,KAAK,IAAI,CAACK,oBAAoB,EAAE;MACzC,IAAAD,iBAAW,EAAC,MAAM;QAChBjE,MAAM,CAACkQ,KAAK,CAAC,CAAC;QACd,MAAM/L,gBAAgB,GAAG,IAAI,CAACC,YAAY,CAAC,CAACN,YAAY,CAAC,CAAC;QAC1DC,iBAAiB,CAACM,OAAO,CAAEV,CAAC,IAAKA,CAAC,oBAADA,CAAC,CAAG,CAAC,CAAC;QACvC,IAAIQ,gBAAgB,EAAE;UACpB,MAAM;YAAEG;UAAS,CAAC,GAAGH,gBAAgB;UACrC,IAAIP,mBAAmB,IAAI,IAAI,EAAE;YAC/BA,mBAAmB,CAAC;cAClBY,aAAa,EAAEF,QAAQ,CAACG,MAAM,CAC5B,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,GAAGC,IAAI,CAACjD,KAAK,CAACkD,MAAM,EACtC,CACF,CAAC;cACDjF,KAAK,EAAEK,MAAM,CAACD,WAAW;cACzBC,MAAM,EAAEA,MAAM,CAACF;YACjB,CAAC,CAAC;UACJ;QACF;MACF,CAAC,CAAC;IACJ;EACF;EAEAkH,wBAAwBA,CAAA,EAAG;IACzB,MAAM;MAAEhH;IAAO,CAAC,GAAG,IAAI;IACvB,IAAI,CAACuD,cAAc,GAAG,SAAS;IAC/BvD,MAAM,CAACkQ,KAAK,CAAC,CAAC;EAChB;EAEA,MAAM3E,eAAeA,CAAC;IACpBS;EAGF,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,MAAM;MACJrM,KAAK,EAAE;QAAE0D;MAAW;IACtB,CAAC,GAAG,IAAI;IAERA,UAAU,CAACsB,IAAI,GAAG,CAAC;IACnBtB,UAAU,CAACxB,MAAM,GAAGsO,yBAAa;IAEjC,MAAM,IAAI,CAACC,qBAAqB,CAAC;MAAEpE;IAAgB,CAAC,CAAC;EACvD;EAEAlJ,UAAUA,CAAC;IAAE5B;EAAqC,CAAC,GAAG,CAAC,CAAC,EAAE;IACxD,MAAM;MAAEoG,UAAU;MAAErG;IAAU,CAAC,GAAG,IAAI;IACtC,MAAMoP,WAAW,GAAG,CAAC,CAAC;IACtB,IAAInP,OAAO,EAAE;MACXoP,MAAM,CAACC,MAAM,CAACF,WAAW,EAAE;QACzBG,UAAU,EAAEtP;MACd,CAAC,CAAC;IACJ;IAEAoG,UAAU,CACPmJ,OAAO,CAAC;MAAE7Q,QAAQ,EAAE,CAACqB,SAAS,EAAEoP,WAAW;IAAE,CAAC,CAAC,CAC/ChM,OAAO,CAAEqM,CAAC,IAAKA,CAAC,CAAC5N,UAAU,CAAC,CAAC,CAAC;EACnC;EAEAkC,yBAAyBA,CAAC;IACxBgH,eAAe;IACf/G,KAAK;IACL/D;EAKF,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,IAAI+D,KAAK,EAAE;MACT,IAAI,CAACnC,UAAU,CAAC;QAAE5B;MAAQ,CAAC,CAAC;IAC9B;IACA,IAAI,CAAC6B,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACiE,wBAAwB,CAAC,CAAC;IAC/B,OAAO,IAAI,CAACuE,eAAe,CAAC;MAAES;IAAgB,CAAC,CAAC;EAClD;EAEA9F,IAAIA,CACFyK,GAAa,EACb;IACEtF,WAAW;IACXuF,QAAQ;IACRC;EAKF,CAAC,GAAG,CAAC,CAAC,EACN;IACA,MAAM;MAAElR,KAAK;MAAEwD;IAAQ,CAAC,GAAG,IAAI;IAE/BA,OAAO,CAACmI,IAAI,CAAC,iBAAiB,EAAE;MAC9BwF,MAAM,EAAE;IACV,CAAC,CAAC;IAEFnR,KAAK,CAACuG,IAAI,CAAC6K,UAAU,CAACJ,GAAG,EAAE;MACzBC,QAAQ;MACRC;IACF,CAAC,CAAC;IAEF1N,OAAO,CAACmI,IAAI,CAAC,WAAW,EAAE;MAAEqF;IAAI,CAAC,CAAC;IAElC,OAAO,IAAI,CAACnF,YAAY,CAAC;MACvBH,WAAW;MACXuF,QAAQ;MACRC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMT,qBAAqBA,CAAC;IAC1BpE;EAGF,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,MAAM;MAAEhM,MAAM;MAAEL,KAAK;MAAEwD;IAAQ,CAAC,GAAG,IAAI;IAEvC,MAAM;MAAEU,OAAO;MAAEC,YAAY;MAAEiL,OAAO;MAAEhL;IAAkB,CAAC,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;IAC1E;IACA,IAAIrE,KAAK,CAAC0D,UAAU,CAACsB,IAAI,KAAK,CAAC,EAAE;MAC/BxB,OAAO,CAACmI,IAAI,CAAC,SAAS,EAAE;QAAEyD;MAAQ,CAAC,CAAC;IACtC;IAEA,MAAMlL,OAAO;IAEb,IAAIA,OAAO,KAAK,IAAI,CAACK,oBAAoB,EAAE;MACzC,IAAAD,iBAAW,EAAC,MAAM;QAChBjE,MAAM,CAACgR,KAAK,CAAC,CAAC,EAAErR,KAAK,CAAC0D,UAAU,CAACsB,IAAI,GAAG,CAAC,CAAC;QAC1C,IAAI,CAACxB,OAAO,CAACmI,IAAI,CAAC,qBAAqB,CAAC;QACxC,IAAI,CAAClH,YAAY,CAAC,CAACN,YAAY,CAAC,CAAC;QACjCC,iBAAiB,CAACM,OAAO,CAAEV,CAAC,IAAKA,CAAC,oBAADA,CAAC,CAAG,CAAC,CAAC;QACvCqI,eAAe,YAAfA,eAAe,CAAG;UAChBrM,KAAK,EAAEK,MAAM,CAACD,WAAW;UACzBC,MAAM,EAAEA,MAAM,CAACF;QACjB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEA,OAAOgE,YAAY;EACrB;EAEA1C,MAAMA,CACJ6P,KAAa,EACb;IAAEhM,KAAK;IAAEoG;EAAwD,CAAC,GAAG,CAAC,CAAC,EACvE;IACA,MAAM;MAAE1L;IAAM,CAAC,GAAG,IAAI;IACtB,MAAM;MAAEyB;IAAO,CAAC,GAAGzB,KAAK;IACxB,IAAIsF,KAAK,IAAIgM,KAAK,KAAK7P,MAAM,CAAC6P,KAAK,EAAE;MACnC7P,MAAM,CAAC8P,WAAW,CAACD,KAAK,CAAC;MACzB,IAAI,CAAChF,cAAc,CAACZ,WAAW,CAAC;IAClC;EACF;EAEA8F,WAAWA,CAAA,EAAG;IACZ,MAAM;MACJxR,KAAK;MACL0C,MAAM,EAAE;QAAEwJ;MAAgB,CAAC;MAC3B1I;IACF,CAAC,GAAG,IAAI;IACR,MAAM;MAAE/B;IAAO,CAAC,GAAGzB,KAAK;IACxB,IAAIyB,MAAM,CAAC6P,KAAK,KAAK,EAAE,EAAE;MACvB;IACF;IAEA7P,MAAM,CAAC8P,WAAW,CAAC,EAAE,CAAC;IACtB/N,OAAO,CAACmI,IAAI,CAAC,aAAa,CAAC;IAE3B,IAAI,IAAI,CAACtB,wBAAwB,KAAK,OAAO,EAAE;MAC7C,IAAI,CAACO,UAAU,CAACwB,eAAe,CAAC,CAAC;IACnC;IAEA,OAAO,IAAI,CAAC/G,yBAAyB,CAAC;MAAEgH,eAAe,EAAEH;IAAgB,CAAC,CAAC;EAC7E;EAEA,IAAI3K,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACvB,KAAK,CAACuB,OAAO;EAC3B;EAEAkQ,UAAUA,CAACC,OAAU,EAAE;IACrB,OAAO,IAAI,CAACC,WAAW,CAAC,CAACD,OAAO,CAAC,CAAC;EACpC;EAEAC,WAAWA,CAACC,QAAa,EAAE;IACzB,MAAMC,YAAY,GAAG,IAAI,CAACxR,MAAM,CAACsR,WAAW,CAACC,QAAQ,CAAC;IAEtD,IAAIC,YAAY,IAAI,IAAI,EAAE;MACxB,IAAI,CAAC1O,UAAU,CAAC,CAAC;MAEjB,OAAO0O,YAAY,CAACC,QAAQ;IAC9B;IAEA,OAAOjI,SAAS;EAClB;EAEAkI,OAAOA,CAACL,OAAU,EAAE;IAClB,OAAO,IAAI,CAACM,QAAQ,CAAC,CAACN,OAAO,CAAC,CAAC;EACjC;EAEAM,QAAQA,CAACJ,QAAa,EAAE;IACtB,MAAMC,YAAY,GAAG,IAAI,CAACxR,MAAM,CAAC2R,QAAQ,CAACJ,QAAQ,CAAC;IACnD,IAAI,CAACzO,UAAU,CAAC,CAAC;IACjB,OAAO0O,YAAY,CAACC,QAAQ;EAC9B;EAEA,MAAMG,kBAAkBA,CAAC;IAAEC;EAAyC,CAAC,GAAG,CAAC,CAAC,EAAE;IAC1E,MAAM;MAAE1O;IAAQ,CAAC,GAAG,IAAI;IAExB,IAAI,CAAC0O,YAAY,EAAE;MACjB,IAAI,CAAC/O,UAAU,CAAC,CAAC;IACnB;IAEA,IAAI,CAACC,gBAAgB,CAAC,CAAC;IACvBI,OAAO,CAACmI,IAAI,CAAC,oBAAoB,CAAC;IAElC,MAAM,IAAI,CAAC8E,qBAAqB,CAAC,CAAC;EACpC;EAEA,MAAMnK,eAAeA,CAAC;IACpB6L,kBAAkB;IAClB5Q;EAIF,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,MAAM;MAAEvB,KAAK;MAAEK,MAAM;MAAE6J,cAAc;MAAE1G;IAAQ,CAAC,GAAG,IAAI;IACvD,MAAM;MAAEE;IAAW,CAAC,GAAG1D,KAAK;IAC5B,MAAM;MAAEgF,IAAI,EAAEoN;IAAY,CAAC,GAAG1O,UAAU;IAExC,IAAI,CAACP,UAAU,CAAC;MAAE5B;IAAQ,CAAC,CAAC;IAE5B,MAAM8Q,QAA6B,GAAG,EAAE;IAExC3O,UAAU,CAACxB,MAAM,GAAGsO,yBAAa;IAEjChN,OAAO,CAACmI,IAAI,CAAC,iBAAiB,CAAC;IAC/BnI,OAAO,CAACmI,IAAI,CAAC,SAAS,EAAE;MAAEyD,OAAO,EAAE;IAAK,CAAC,CAAC,CAAC,CAAC;;IAE5C,IAAIkD,eAAe,GAAGzI,SAAyC;IAE/D,KAAK,IAAI7E,IAAI,GAAG,CAAC,EAAEA,IAAI,IAAIoN,WAAW,EAAEpN,IAAI,EAAE,EAAE;MAC9CtB,UAAU,CAACsB,IAAI,GAAGA,IAAI;MACtB,IAAI,CAAC5B,gBAAgB,CAAC,CAAC;MACvB,MAAM;QAAEe,YAAY,EAAEoO,SAAS;QAAErO;MAAQ,CAAC,GAAG,IAAI,CAACG,KAAK,CAAC,CAAC;MACzD,IAAIkO,SAAS,CAACrO,OAAO,EAAE;QACrB,IAAIgG,cAAc,CAACsI,EAAE,KAAK,QAAQ,EAAE;UAClC,MAAMD,SAAS,CAACrO,OAAO;UACvB,IAAAI,iBAAW,EACT;YAAA,IAAAmO,qBAAA;YAAA,OAAO/O,UAAU,CAACxB,MAAM,GAAG,EAAAuQ,qBAAA,GAAAF,SAAS,CAAC/M,KAAK,CAACwI,IAAI,qBAApByE,qBAAA,CAAsBvQ,MAAM,KAAI,IAAI;UAAA,CACjE,CAAC;QACH;QACAmQ,QAAQ,CAAC5E,IAAI,CAAC8E,SAAS,CAACrO,OAAO,CAACgL,IAAI,CAAC,MAAMqD,SAAS,CAAC,CAAC;MACxD;MAEA,IAAIvN,IAAI,KAAKoN,WAAW,EAAE;QACxBE,eAAe,GAAGpO,OAAO;MAC3B;IACF;IAEA,IAAI,CAACb,YAAY,CAAC,CAAC;IAEnB,MAAMqP,OAAO,GAAG,MAAMrQ,OAAO,CAACsQ,GAAG,CAACN,QAAQ,CAAC;IAE3C,IAAA/N,iBAAW,EAAC,MAAM;MAChB6N,kBAAkB,YAAlBA,kBAAkB,CAAG,CAAC;MACtB,IAAIG,eAAe,KAAK,IAAI,CAAC/N,oBAAoB,EAAE;QACjDlE,MAAM,CAACgR,KAAK,CAACe,WAAW,CAAC;QACzB,IAAI,CAAC5O,OAAO,CAACmI,IAAI,CAAC,qBAAqB,CAAC;QACxC,IAAI,CAAClH,YAAY,CAACiO,OAAO,CAAC;MAC5B;IACF,CAAC,CAAC;EACJ;EAEA,IAAI7L,iBAAiBA,CAAA,EAAG;IACtB,OAAO,IAAI,CAACxG,MAAM,CAACwG,iBAAiB;EACtC;EAEAK,sBAAsBA,CAAA,EAAG;IACvB,MAAM;MAAElH;IAAM,CAAC,GAAG,IAAI;IACtBA,KAAK,CAAC4S,YAAY,CAAC;MAAEC,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS;IAAE,CAAC,CAAC;EAC3D;EAEAC,4BAA4BA,CAAA,EAAG;IAC7B,MAAM;MAAE9S;IAAM,CAAC,GAAG,IAAI;IACtBA,KAAK,CAAC+S,kBAAkB,CAAC;MAAEF,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS;IAAE,CAAC,CAAC;EACjE;EAEA,MAAMnM,YAAYA,CAAA,EAAG;IACnB,MAAM;MACJrG,MAAM;MACNqC,MAAM,EAAE;QAAEsQ;MAAqB,CAAC;MAChC9M,KAAK;MACLlG,KAAK,EAAE;QAAE0D;MAAW;IACtB,CAAC,GAAG,IAAI;IAER,MAAMuP,SAAS,GAAG,IAAI,CAAC/P,eAAe,CAAC,CAAC;IAExC,IAAI,CAAC7C,MAAM,CAACC,MAAM,CAACwO,MAAM,IAAI,CAACzO,MAAM,CAACC,MAAM,CAACmD,OAAO,EAAE;MACnD,OAAOwP,SAAS,CAAC/O,OAAO;IAC1B;IAEA,IAAI,CAACd,gBAAgB,CAAC,CAAC;IAEvBM,UAAU,CAACsB,IAAI,GAAG,CAAC;IACnBtB,UAAU,CAACxB,MAAM,GAAGsO,yBAAa;IAEjC,IAAI,CAAC5M,cAAc,GAAG,SAAS;IAC/B,MAAMwL,OAAO,GAAG6D,SAAS,CAAC7D,OAAO,CAAC,CAAC;IACnC,MAAM8D,2BAA2B,GAAGhN,KAAK,CAACpC,SAAS,CAAC,oBAAoB,CAAC;IACzE,MAAMzB,OAAO,CAACsQ,GAAG,CAACO,2BAA2B,CAACnP,GAAG,CAAEoP,CAAC,IAAKA,CAAC,CAAC;MAAE/D;IAAQ,CAAC,CAAC,CAAC,CAAC;;IAEzE;IACA,IAAA9K,iBAAW,EAAC,MAAM;MAChBZ,UAAU,CAACsB,IAAI,GAAG,CAAC;MACnBtB,UAAU,CAACxB,MAAM,GAAGsO,yBAAa;MACjC,IAAI,CAAC5M,cAAc,GAAG,SAAS;IACjC,CAAC,CAAC;IAEF,MAAMO,YAAY,GAAG,MAAM,IAAI,CAACsM,qBAAqB,CAAC,CAAC;IACvD,MAAMtM,YAAY,CAACD,OAAO;IAC1B,IAAI,CAACV,OAAO,CAACmI,IAAI,CAAC,OAAO,CAAC;IAC1B,IAAArH,iBAAW,EAAC,MAAM;MAChB,MAAM;QAAEtC,KAAK;QAAEC;MAAU,CAAC,GAAG5B,MAAM;MACnC2S,oBAAoB,YAApBA,oBAAoB,CAAG;QACrB3S,MAAM,EAAE;UACN2B,KAAK;UACLC,SAAS,EAAEA,SAAS,IAAI;QAC1B,CAAC;QACDjC,KAAK,EAAEK,MAAM,CAACD;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EA6CAoG,IAAIA,CAAC;IACH4M,gBAAgB;IAChBC;EAC6D,CAAC,GAAG,CAAC,CAAC,EAAE;IACrE,MAAM;MAAEzI,UAAU;MAAEpK,WAAW;MAAER,KAAK;MAAE4F,QAAQ;MAAEvF;IAAO,CAAC,GAAG,IAAI;IACjE,MAAM;MAAE6E;IAAa,CAAC,GAAG1E,WAAW;IAEpCH,MAAM,CAACD,WAAW,GAAGJ,KAAK,CAACG,UAAU;IAErCK,WAAW,CAACkC,MAAM,CAAC4Q,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACC,mBAAmB,CAAC;IAEzD,MAAMC,SAAS,GAAG,CAChBxT,KAAK,CAACwG,IAAI,CAAC;MAAE6M;IAAoB,CAAC,CAAC,EACnC,IAAI,CAACI,oBAAoB,CAAC,CAAC,EAC3BpT,MAAM,CAACmG,IAAI,CAAC,CAAC,EACboE,UAAU,CAACpE,IAAI,CAAC,CAAC;IACjB;IACA,IAAI,CAACiD,aAAa,CAACiK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EACtCxO,YAAY,CAACwO,SAAS,CAAC,IAAI,CAACnO,eAAe,CAAC,CAC7C;IAEDK,QAAQ,CAACC,OAAO,CAAC,YAAY;MAAA,IAAA8N,qBAAA;MAC3B,MAAMtR,OAAO,CAACsQ,GAAG,CAAC,CAChBS,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC1M,YAAY,CAAC,CAAC,GAAAiN,qBAAA,GAC7C,IAAI,CAACzL,gBAAgB,qBAArByL,qBAAA,CAAAC,IAAA,KAAwB,CAAC,CAC1B,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAApR,YAAM,EAAC,MAAM;MAClBhC,WAAW,CAACkC,MAAM,CAACmR,GAAG,CAAC,QAAQ,EAAE,IAAI,CAACN,mBAAmB,CAAC;MAC1DC,SAAS,CAAC9O,OAAO,CAAEoP,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;MAC3ClO,QAAQ,CAACtF,MAAM,GAAG;QAChB,GAAG2O,kBAAW,CAAC8E;MACjB,CAAC;IACH,CAAC,CAAC;EACJ;EAEAN,oBAAoBA,CAAA,EAAG;IACrB,MAAM;MAAEzT;IAAM,CAAC,GAAG,IAAI;IACtB,MAAMwT,SAAS,GAAG,CAChB,IAAAQ,sBAAgB,EAAChU,KAAK,CAAC0C,MAAM,EAAE,SAAS,EAAGuR,IAAI,IAAK;MAClD,IAAI,IAAI,CAAC5J,wBAAwB,KAAK,OAAO,EAAE;QAC7C,IAAI,CAACO,UAAU,CAACwB,eAAe,CAAC,CAAC;MACnC;MAEA,IAAI,IAAI,CAAC1E,mBAAmB,EAAE;QAC5B,IAAI,CAACwM,eAAe,CAAC3I,UAAU,CAAC,IAAI,CAACC,qBAAqB,CAAC;MAC7D;MAEA,IAAI,CAAAyI,IAAI,oBAAJA,IAAI,CAAEvI,WAAW,MAAK,KAAK,EAAE;QAC/B,IAAI,CAACrE,wBAAwB,CAAC,CAAC;MACjC,CAAC,MAAM;QAAA,IAAA8M,sBAAA;QACL,CAAAA,sBAAA,OAAI,CAAC7M,iBAAiB,aAAtB6M,sBAAA,CAAwBjJ,QAAQ,CAAC;UAAEC,GAAG,EAAE,CAAC;UAAEiJ,QAAQ,EAAE;QAAS,CAAC,CAAC;MAClE;MAEA,IAAI,CAACxI,eAAe,CAAC,CAAC;IACxB,CAAC,CAAC,EACF,IAAAoI,sBAAgB,EAAChU,KAAK,CAAC0C,MAAM,EAAE,iBAAiB,EAAGuR,IAAI,IAAK;MAC1D,IAAI,CAAC3H,cAAc,CAAC2H,IAAI,oBAAJA,IAAI,CAAEvI,WAAW,CAAC;IACxC,CAAC,CAAC,EACF,IAAI1L,KAAK,CAAC8J,sBAAsB,GAC5B,CACE,IAAAuK,cAAQ,EACN,MAAMrU,KAAK,CAACsU,aAAa,EACzB,MAAM;MACJ,IAAI,CAACjN,wBAAwB,CAAC,CAAC;MAC/B,IAAI,CAACuE,eAAe,CAAC,CAAC;IACxB,CACF,CAAC,CACF,GACD,EAAE,CAAC,CACR;IAED,OAAO,MAAM;MACX4H,SAAS,CAAC9O,OAAO,CAAEwJ,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;EACH;EAEAqG,OAAOA,CAACC,GAAW,EAAwB;IACzC,MAAMC,SAAS,GAAG,IAAI,CAACpU,MAAM,CAACqU,GAAG,CAACF,GAAG,CAAC;IACtC,OAAOC,SAAS,oBAATA,SAAS,CAAE5G,IAAI;EACxB;EAEA8G,YAAYA,CAACH,GAAW,EAAmC;IACzD,OAAO,IAAI,CAACnU,MAAM,CAACqU,GAAG,CAACF,GAAG,CAAC;EAC7B;EAEAI,mBAAmBA,CAACC,KAAa,EAAuB;IACtD,OAAO,IAAI,CAACxU,MAAM,CAACyU,UAAU,CAACD,KAAK,CAAC;EACtC;EAEA,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACzU,MAAM,CAACyU,UAAU;EAC/B;EAEAC,iBAAiBA,CAAIC,aAA+B,EAAE;IACpD,OAAO,IAAI,CAACd,eAAe,CAAC3I,UAAU,CAACyJ,aAAa,CAAC;EACvD;EAEAxN,sBAAsBA,CAACxH,KAAK,GAAG,IAAI,CAACK,MAAM,CAACD,WAAW,EAOpD;IAAA,IAAA6U,WAAA,EAAAC,YAAA;IACA,MAAM;MAAE7U,MAAM;MAAEoH;IAAK,CAAC,GAAG,IAAI;IAE7B,OAAO;MACL,GAAGA,IAAI;MACP0N,cAAc,EAAEC,IAAI,CAACC,SAAS,CAACrV,KAAK,CAAC6Q,UAAU,CAAC;MAChDyE,gBAAgB,EAAE,CAAAL,WAAA,GAAAjV,KAAK,CAACuG,IAAI,aAAV0O,WAAA,CAAYhQ,MAAM,GAChCmQ,IAAI,CAACC,SAAS,CAACrV,KAAK,CAACuG,IAAI,CAAC,GAC1BsD,SAAS;MACb0L,gBAAgB,EAAElV,MAAM,CAAC2B,KAAK;MAC9BwT,YAAY,EAAEnV,MAAM,CAACoV,IAAI;MACzBC,gBAAgB,GAAAR,YAAA,GAAElV,KAAK,CAACuG,IAAI,qBAAV2O,YAAA,CAAYjQ;IAChC,CAAC;EACH;EAEA,IAAI6B,iBAAiBA,CAAA,EAAG;IACtB,MAAM;MACJlB,QAAQ,EAAE;QACRtF,MAAM,EAAE;UAAEqV;QAAU;MACtB,CAAC;MACDrK,eAAe,EAAE;QAAEsK;MAAkB;IACvC,CAAC,GAAG,IAAI;IACR,OAAOD,SAAS,IAAIC,iBAAiB;EACvC;EAEA,IAAI7O,iBAAiBA,CAAA,EAAG;IACtB,MAAM;MACJmN,eAAe,EAAE;QAAE0B;MAAkB,CAAC;MACtCvV,MAAM,EAAE;QAAEC;MAAO,CAAC;MAClBsD;IACF,CAAC,GAAG,IAAI;IACR,OACEgS,iBAAiB,IACjBC,OAAO,CAACvV,MAAM,CAACyO,UAAU,IAAInL,cAAc,KAAK,SAAS,CAAC;EAE9D;EAEA,IAAIoD,cAAcA,CAAA,EAAG;IACnB,MAAM;MACJpD,cAAc;MACdvD,MAAM,EAAE;QAAEyV;MAAQ;IACpB,CAAC,GAAG,IAAI;IACR,OAAOlS,cAAc,KAAK,QAAQ,IAAIkS,OAAO;EAC/C;EAEA,IAAI7O,cAAcA,CAAA,EAAG;IACnB,MAAM;MACJ5G,MAAM,EAAE;QAAEC;MAAO,CAAC;MAClBsD;IACF,CAAC,GAAG,IAAI;IACR,OACE,CAACtD,MAAM,CAACyO,UAAU,IAAIzO,MAAM,CAACmD,OAAO,IAAIG,cAAc,KAAK,WAAW;EAE1E;EAIA,IAAImS,eAAeA,CAAA,EAGjB;IACA,MAAM;MAAEC;IAAiB,CAAC,GAAG,IAAI;IACjC,OAAO;MACL,IAAIC,IAAIA,CAACC,CAA4B,EAAE;QACrCF,gBAAgB,CAACG,GAAG,CAACD,CAAC,CAAC;MACzB,CAAC;MACD,IAAID,IAAIA,CAAA,EAAG;QACT,OAAO,IAAA3R,iBAAW,EAAC,MAAM0R,gBAAgB,CAAChI,IAAI,CAAC;MACjD,CAAC;MACD,IAAIoI,IAAIA,CAAA,EAAG;QACT,OAAO,IAAA9R,iBAAW,EAAC,MAAM0R,gBAAgB,CAACI,IAAI,CAAC;MACjD;IACF,CAAC;EACH;AACF;AAACC,OAAA,CAAAvW,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -313,10 +313,12 @@ class DataExtensionState {
313
313
  if (!schema) {
314
314
  return {};
315
315
  }
316
+ const isAppNamespace = namespace !== userFieldsNamespace;
316
317
  const fields = this.getAvailableCustomFieldsInSchema(((_schema$jsonSchema = schema.jsonSchema) == null ? void 0 : _schema$jsonSchema.properties) || {}, {
317
318
  editable: false,
318
- owner: namespace === userFieldsNamespace ? 'user' : 'app',
319
- namespace
319
+ owner: isAppNamespace ? 'app' : 'user',
320
+ namespace,
321
+ requiredPermissions: isAppNamespace ? ['users'] : undefined
320
322
  });
321
323
  return {
322
324
  schema,
@@ -1 +1 @@
1
- {"version":3,"names":["_services","require","_TaskState","_mobx","_util","_DataExtensionField","_ConditionalModalState","_DeleteFieldModalState","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MAX_CUSTOM_FIELDS","exports","DataExtensionState","fqdnString","fqdnToString","fqdn","isFqdnValid","resource","undefined","constructor","params","_defineProperty2","TaskState","ConditionalModalState","container","disableUserDefinedWriting","filterable","enableArchive","closeSidePanel","_extensionPoint","extensionPoint","dataExtensionService","DataExtensionSchemaService","containsPii","defaultPermissions","deleteFieldModal","DeleteFieldModalState","dataExtension","reportBi","createBILogger","componentType","makeObservable","allUserCustomFields","computed","allAppsCustomFields","allCustomFields","archivedItems","shouldDisplayArchive","filterableCustomFields","availableUserCustomFields","availableAppsCustomFields","availableCustomFields","isReachedMaxCustomFields","disableAddCustomField","disableAddCustomFieldContent","_dataExtensionSchemasBase","observable","ref","_dataExtensionSchemas","userSchema","appSchemas","_upsertSchema","action","isArchivedPanelOpen","openArchivedPanel","closeArchivedPanel","openDeleteConfirmModal","hasWritePermissions","_hasWritePermissions","user","permissions","includes","translate","max","getArchiveSuccessToastMessage","fieldName","selectedField","getArchiveSuccessToastAction","text","uiType","onClick","_this$openArchivedPan","getFieldOperationsService","_fieldOperationsService","_fieldOperationsServicePromise","Promise","resolve","then","module","self","DataExtensionFieldOperationsService","extractFieldValuesFromSchema","bind","upsertSchema","archiveField","id","origin","service","restoreField","deleteField","fieldId","_customField$xWixPi","customField","toCustomField","type","title","read","write","isPiiField","enabled","readApps","readUsers","writeApps","writeUsers","toCustomType","name","key","Boolean","_toCustomField","schema","editable","owner","namespace","_schema$xWixPii","label","maxLength","options","enum","properties","isPii","isSupportedFieldType","getAvailableCustomFieldsInSchema","requiredPermissions","filteredFields","keys","filter","field","isAllowedType","isPermitted","includesAllReadPermissions","sorted","sort","a","b","aVal","Date","bVal","isNaN","valueOf","map","_this$userSchema","jsonSchema","_this$appSchemas","reduce","prev","getAvailableCustomFieldsForApp","getSchemaAndFieldsByNamespace","_schema$jsonSchema","userFieldsNamespace","find","s","fields","appSchema","_appSchema$jsonSchema","_this$userSchema2","_this$appSchemas2","_appSchema$jsonSchema2","concat","_userSchema$jsonSchem","_properties$key","_properties$key2","length","allNamespaces","_this$userSchema3","init","initTask","runOnce","fetchSchemas","newSchema","index","findIndex","dataExtensionSchemas","runInAction","deleteConfirmModal","open"],"sources":["../../../src/state/DataExtensionState.ts"],"sourcesContent":["import {\n CustomField,\n CustomFieldOwner,\n CustomFieldType,\n DataExtensionField,\n DataExtensionPermission,\n DataExtensionSchemaService,\n DataExtensionType,\n ReportBI,\n} from '../services';\nimport type { DataExtensionFieldOperationsService } from '../services/DataExtensionFieldOperationsService';\nimport { TaskState } from './TaskState';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { Fqdn } from '../model';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { CustomFieldForm } from './CustomFieldModalState';\nimport type { DataExtensionSchema } from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport { fqdnToString } from '../util';\nimport { includesAllReadPermissions } from './DataExtension/DataExtensionField';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { DeleteFieldModalState } from './DeleteFieldModalState';\n\nexport interface DataExtensionStateParams {\n container: WixPatternsContainer;\n closeSidePanel?: () => unknown;\n fqdn: Fqdn;\n}\nexport interface DefaultPermissionsConfig {\n installedApps?: {\n hide?: boolean;\n defaultRead?: boolean;\n defaultWrite?: boolean;\n };\n siteVisitors?: {\n hide?: boolean;\n defaultRead?: boolean;\n defaultWrite?: boolean;\n };\n}\n\nexport interface DataExtensionOverrides {\n disableUserDefinedWriting?: boolean;\n containsPii?: boolean;\n filterable?: boolean;\n /**\n * When set to true, will disable \"Manage custom fields\" action in the page actions menu.\n */\n disableDefaultPageAction?: boolean;\n extensionPoint?: string;\n defaultPermissions?: DefaultPermissionsConfig;\n /**\n * When set to true, will enable the \"Archived Fields\" button in the custom columns panel.\n */\n enableArchive?: boolean;\n}\n\nexport const MAX_CUSTOM_FIELDS = 50;\n\n/**\n * Manages data extension schemas and custom fields for a collection\n */\nexport class DataExtensionState {\n readonly dataExtensionService: DataExtensionSchemaService;\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n _hasWritePermissions?: boolean;\n readonly closeSidePanel;\n readonly fqdn;\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n get isFqdnValid() {\n return this.fqdn.resource !== undefined;\n }\n\n _dataExtensionSchemasBase: DataExtensionSchema[] = [];\n containsPii?: boolean;\n defaultPermissions?: DefaultPermissionsConfig;\n readonly disableUserDefinedWriting;\n readonly filterable;\n readonly enableArchive?: boolean;\n isArchivedPanelOpen: boolean = false;\n\n // Lazy-loaded service for field operations (archive/restore/delete)\n private _fieldOperationsService?: DataExtensionFieldOperationsService;\n private _fieldOperationsServicePromise?: Promise<DataExtensionFieldOperationsService>;\n\n readonly deleteConfirmModal = new ConditionalModalState<{\n id: string;\n origin: string;\n }>();\n\n deleteFieldModal?: DeleteFieldModalState;\n\n _extensionPoint;\n\n constructor(\n params: Readonly<DataExtensionStateParams & DataExtensionOverrides>,\n ) {\n this.container = params.container;\n this.disableUserDefinedWriting = params.disableUserDefinedWriting;\n this.filterable = params.filterable;\n this.enableArchive = params.enableArchive ?? true;\n this.closeSidePanel = params.closeSidePanel;\n this.fqdn = params.fqdn;\n this._extensionPoint = params.extensionPoint;\n this.dataExtensionService = new DataExtensionSchemaService(\n params.container,\n );\n\n this.containsPii = params.containsPii;\n this.defaultPermissions = params.defaultPermissions;\n\n // Initialize deleteFieldModal with proper reportBi\n this.deleteFieldModal = new DeleteFieldModalState({\n dataExtension: this,\n reportBi: params.container.createBILogger({\n componentType: 'DataExtension',\n ...params.fqdn,\n }),\n });\n\n makeObservable(this, {\n allUserCustomFields: computed,\n allAppsCustomFields: computed,\n allCustomFields: computed,\n archivedItems: computed,\n shouldDisplayArchive: computed,\n filterableCustomFields: computed,\n availableUserCustomFields: computed,\n availableAppsCustomFields: computed,\n availableCustomFields: computed,\n isReachedMaxCustomFields: computed,\n disableAddCustomField: computed,\n disableAddCustomFieldContent: computed,\n _dataExtensionSchemasBase: observable.ref,\n _dataExtensionSchemas: computed,\n userSchema: computed,\n appSchemas: computed,\n _upsertSchema: action,\n containsPii: observable,\n defaultPermissions: observable,\n isArchivedPanelOpen: observable,\n deleteFieldModal: observable.ref,\n openArchivedPanel: action,\n closeArchivedPanel: action,\n openDeleteConfirmModal: action,\n });\n }\n\n get hasWritePermissions() {\n if (this._hasWritePermissions == null) {\n this._hasWritePermissions = this.container.user.permissions.includes(\n 'DATA_EXTENSION_SCHEMA.WRITE',\n );\n }\n\n return this._hasWritePermissions;\n }\n\n get disableAddCustomField() {\n return !this.hasWritePermissions || this.isReachedMaxCustomFields;\n }\n\n get disableAddCustomFieldContent() {\n if (!this.hasWritePermissions) {\n return this.container.translate(\n 'cairo.customFields.writePermission.tooltip',\n );\n }\n\n if (this.isReachedMaxCustomFields) {\n return this.container.translate('cairo.customFields.maxFields.tooltip', {\n max: MAX_CUSTOM_FIELDS,\n });\n }\n\n return '';\n }\n\n getArchiveSuccessToastMessage(fieldName?: string): string {\n return this.enableArchive && fieldName\n ? this.container.translate(\n 'cairo.customFields.archive.success.toast.enabled',\n { selectedField: fieldName },\n )\n : this.container.translate('cairo.customFields.archive.success.toast');\n }\n\n getArchiveSuccessToastAction() {\n return this.enableArchive\n ? {\n text: this.container.translate(\n 'cairo.customFields.archive.success.toast.CTA',\n ),\n uiType: 'LINK' as const,\n onClick: () => this.openArchivedPanel?.(),\n }\n : undefined;\n }\n\n /**\n * Lazily loads the field operations service to reduce bundle size.\n * Only loads when archive/restore/delete operations are needed.\n */\n private async getFieldOperationsService(): Promise<DataExtensionFieldOperationsService> {\n if (this._fieldOperationsService) {\n return this._fieldOperationsService;\n }\n\n // Reuse the same promise if already loading\n if (this._fieldOperationsServicePromise) {\n return this._fieldOperationsServicePromise;\n }\n\n this._fieldOperationsServicePromise = import(\n '../services/DataExtensionFieldOperationsService'\n ).then((module) => {\n const self = this;\n this._fieldOperationsService =\n new module.DataExtensionFieldOperationsService({\n container: this.container,\n dataExtensionService: this.dataExtensionService,\n get userSchema() {\n return self.userSchema;\n },\n fqdnString: this.fqdnString,\n enableArchive: this.enableArchive,\n extractFieldValuesFromSchema:\n this.extractFieldValuesFromSchema.bind(this),\n upsertSchema: this._upsertSchema.bind(this),\n openArchivedPanel: this.openArchivedPanel.bind(this),\n });\n return this._fieldOperationsService;\n });\n\n return this._fieldOperationsServicePromise;\n }\n\n async archiveField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.archiveField({ id, origin, reportBi });\n }\n\n async restoreField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.restoreField({ id, origin, reportBi });\n }\n\n async deleteField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.deleteField({ id, origin, reportBi });\n }\n\n extractFieldValuesFromSchema(fieldId: string): CustomFieldForm | undefined {\n if (!this.userSchema) {\n return;\n }\n\n const customField = DataExtensionSchemaService.toCustomField(\n this.userSchema,\n fieldId,\n );\n\n if (!customField || !customField.type || !customField.title) {\n return;\n }\n\n const { read, write } = customField['x-wix-permissions'];\n const isPiiField = customField['x-wix-pii']?.enabled;\n const readApps = read?.includes('apps');\n const readUsers = read?.includes('users-of-users');\n const writeApps = write?.includes('apps');\n const writeUsers = write?.includes('users-of-users');\n\n return {\n type: DataExtensionSchemaService.toCustomType(customField),\n name: customField.title,\n key: customField.id,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii: Boolean(isPiiField),\n };\n }\n\n _toCustomField({\n key,\n schema,\n editable,\n owner,\n namespace,\n }: {\n key: string;\n schema: DataExtensionField;\n editable: boolean;\n owner: CustomFieldOwner;\n namespace: string;\n }): CustomField | undefined {\n if (!DataExtensionSchemaService.toCustomType(schema)) {\n return;\n }\n return {\n id: key,\n label: schema?.title || key,\n maxLength: schema?.maxLength,\n options: schema?.enum,\n type: DataExtensionSchemaService.toCustomType(schema) as CustomFieldType,\n editable,\n filterable: schema['x-wix-filterable'],\n owner,\n properties: schema?.properties ?? {},\n namespace,\n isPii: Boolean(schema['x-wix-pii']?.enabled),\n permissions: schema['x-wix-permissions'],\n };\n }\n\n private isSupportedFieldType(type?: string): type is DataExtensionType {\n if (!type) {\n return false;\n }\n return ['string', 'number', 'integer', 'boolean', 'array'].includes(type);\n }\n\n private getAvailableCustomFieldsInSchema(\n properties: {\n [key: string]: DataExtensionField;\n },\n {\n editable,\n requiredPermissions,\n owner,\n namespace,\n }: {\n editable: boolean;\n requiredPermissions?: DataExtensionPermission[];\n owner: CustomFieldOwner;\n namespace: string;\n },\n ): CustomField[] {\n const filteredFields = Object.keys(properties).filter((key) => {\n const field = properties[key];\n const isAllowedType =\n this.isSupportedFieldType(field.type) ||\n (field.type === 'object' && field['x-wix-object-type'] === 'FILE/V1');\n\n const isPermitted =\n requiredPermissions == null ||\n includesAllReadPermissions(field, requiredPermissions);\n\n return !field['x-wix-archived'] && isAllowedType && isPermitted;\n });\n\n const sorted = filteredFields.sort((a, b) => {\n const aVal = new Date(properties[a]['x-wix-created-date']);\n const bVal = new Date(properties[b]['x-wix-created-date']);\n\n if (isNaN(bVal.valueOf()) || isNaN(aVal.valueOf())) {\n return 0;\n }\n\n return aVal.valueOf() - bVal.valueOf();\n });\n\n return sorted\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable,\n owner,\n namespace,\n }),\n )\n .filter(Boolean) as CustomField[];\n }\n\n /**\n * Available custom fields, excluding archived fields\n */\n get availableUserCustomFields(): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n this.userSchema?.jsonSchema?.properties || {};\n return this.getAvailableCustomFieldsInSchema(properties, {\n editable: true,\n owner: 'user',\n namespace: '_user_fields',\n });\n }\n\n get availableAppsCustomFields(): CustomField[] {\n return (\n this.appSchemas?.reduce((prev, schema) => {\n return [...prev, ...this.getAvailableCustomFieldsForApp(schema)];\n }, [] as CustomField[]) ?? []\n );\n }\n\n getSchemaAndFieldsByNamespace(namespace: string) {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n\n const schema = _dataExtensionSchemas.find((s) => s.namespace === namespace);\n\n if (!schema) {\n return {};\n }\n\n const fields = this.getAvailableCustomFieldsInSchema(\n schema.jsonSchema?.properties || {},\n {\n editable: false,\n owner: namespace === userFieldsNamespace ? 'user' : 'app',\n namespace,\n },\n );\n\n return {\n schema,\n fields,\n };\n }\n\n getAvailableCustomFieldsForApp(\n appSchema: DataExtensionSchema,\n ): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n appSchema.jsonSchema?.properties || {};\n\n return this.getAvailableCustomFieldsInSchema(properties, {\n editable: false,\n requiredPermissions: ['users'],\n owner: 'app',\n namespace: appSchema.namespace as string,\n });\n }\n\n get availableCustomFields(): CustomField[] {\n return [\n ...this.availableUserCustomFields,\n ...this.availableAppsCustomFields,\n ];\n }\n\n get allUserCustomFields(): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n this.userSchema?.jsonSchema?.properties || {};\n\n return Object.keys(properties)\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable: true,\n owner: 'user',\n namespace: '_user_fields',\n }),\n )\n .filter(Boolean) as CustomField[];\n }\n\n get allAppsCustomFields(): CustomField[] {\n return (\n this.appSchemas?.reduce((prev, appSchema) => {\n const properties: { [key: string]: DataExtensionField } =\n appSchema?.jsonSchema?.properties || {};\n\n return prev.concat(\n Object.keys(properties)\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable: false,\n owner: 'app',\n namespace: appSchema.namespace as string,\n }),\n )\n .filter(Boolean) as CustomField[],\n );\n }, [] as CustomField[]) ?? []\n );\n }\n\n get allCustomFields(): CustomField[] {\n return [...this.allUserCustomFields, ...this.allAppsCustomFields];\n }\n\n get archivedItems() {\n const userSchema = this.userSchema;\n if (!userSchema?.jsonSchema?.properties) {\n return [];\n }\n\n const properties = userSchema.jsonSchema.properties;\n return Object.keys(properties)\n .filter((key) => properties[key]['x-wix-archived'])\n .map((key) => ({\n ...properties[key],\n id: key,\n label: properties[key]?.title || key,\n isPii: Boolean(properties[key]?.['x-wix-pii']?.enabled),\n }));\n }\n\n get shouldDisplayArchive() {\n return this.enableArchive && this.archivedItems.length > 0;\n }\n\n get filterableCustomFields(): CustomField[] {\n if (!this.filterable) {\n return [];\n }\n\n return this.availableCustomFields.filter((field) => field.filterable);\n }\n\n get isReachedMaxCustomFields() {\n return this.allUserCustomFields.length >= MAX_CUSTOM_FIELDS;\n }\n\n get allNamespaces() {\n return [\n this.userSchema?.namespace,\n ...(this.appSchemas || []).map((schema) => schema.namespace),\n ].filter(Boolean) as string[];\n }\n\n init() {\n const { initTask } = this;\n\n initTask.runOnce(async () => {\n await this.fetchSchemas();\n });\n\n return () => {};\n }\n\n _upsertSchema(newSchema: DataExtensionSchema) {\n const { _dataExtensionSchemasBase } = this;\n\n const index = _dataExtensionSchemasBase.findIndex(\n (schema) => schema.namespace === newSchema?.namespace,\n );\n\n if (index === -1) {\n this._dataExtensionSchemasBase = [\n ..._dataExtensionSchemasBase,\n newSchema,\n ];\n } else {\n this._dataExtensionSchemasBase = _dataExtensionSchemasBase.map((schema) =>\n schema.namespace === newSchema.namespace ? newSchema : schema,\n );\n }\n }\n\n get userSchema() {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n return _dataExtensionSchemas.find(\n (s) => s.namespace === userFieldsNamespace,\n );\n }\n\n get _dataExtensionSchemas() {\n const { _extensionPoint, _dataExtensionSchemasBase } = this;\n return _dataExtensionSchemasBase.filter((s: DataExtensionSchema) =>\n _extensionPoint\n ? s.extensionPoint === _extensionPoint\n : s.extensionPoint == null || s.extensionPoint === 'ROOT',\n );\n }\n\n get appSchemas() {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n return _dataExtensionSchemas.filter(\n (s) => s.namespace !== userFieldsNamespace,\n );\n }\n\n async fetchSchemas() {\n const { dataExtensionService } = this;\n\n if (this.isFqdnValid) {\n const { dataExtensionSchemas } = await dataExtensionService.fetchSchemas(\n this.fqdnString,\n );\n\n runInAction(() => {\n this._dataExtensionSchemasBase = dataExtensionSchemas ?? [];\n });\n }\n }\n\n openArchivedPanel() {\n if (this.enableArchive) {\n this.isArchivedPanelOpen = true;\n }\n }\n\n closeArchivedPanel() {\n this.isArchivedPanelOpen = false;\n }\n\n openDeleteConfirmModal({ id, origin }: { id: string; origin: string }) {\n this.deleteConfirmModal.open({ id, origin });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_services","require","_TaskState","_mobx","_util","_DataExtensionField","_ConditionalModalState","_DeleteFieldModalState","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MAX_CUSTOM_FIELDS","exports","DataExtensionState","fqdnString","fqdnToString","fqdn","isFqdnValid","resource","undefined","constructor","params","_defineProperty2","TaskState","ConditionalModalState","container","disableUserDefinedWriting","filterable","enableArchive","closeSidePanel","_extensionPoint","extensionPoint","dataExtensionService","DataExtensionSchemaService","containsPii","defaultPermissions","deleteFieldModal","DeleteFieldModalState","dataExtension","reportBi","createBILogger","componentType","makeObservable","allUserCustomFields","computed","allAppsCustomFields","allCustomFields","archivedItems","shouldDisplayArchive","filterableCustomFields","availableUserCustomFields","availableAppsCustomFields","availableCustomFields","isReachedMaxCustomFields","disableAddCustomField","disableAddCustomFieldContent","_dataExtensionSchemasBase","observable","ref","_dataExtensionSchemas","userSchema","appSchemas","_upsertSchema","action","isArchivedPanelOpen","openArchivedPanel","closeArchivedPanel","openDeleteConfirmModal","hasWritePermissions","_hasWritePermissions","user","permissions","includes","translate","max","getArchiveSuccessToastMessage","fieldName","selectedField","getArchiveSuccessToastAction","text","uiType","onClick","_this$openArchivedPan","getFieldOperationsService","_fieldOperationsService","_fieldOperationsServicePromise","Promise","resolve","then","module","self","DataExtensionFieldOperationsService","extractFieldValuesFromSchema","bind","upsertSchema","archiveField","id","origin","service","restoreField","deleteField","fieldId","_customField$xWixPi","customField","toCustomField","type","title","read","write","isPiiField","enabled","readApps","readUsers","writeApps","writeUsers","toCustomType","name","key","Boolean","_toCustomField","schema","editable","owner","namespace","_schema$xWixPii","label","maxLength","options","enum","properties","isPii","isSupportedFieldType","getAvailableCustomFieldsInSchema","requiredPermissions","filteredFields","keys","filter","field","isAllowedType","isPermitted","includesAllReadPermissions","sorted","sort","a","b","aVal","Date","bVal","isNaN","valueOf","map","_this$userSchema","jsonSchema","_this$appSchemas","reduce","prev","getAvailableCustomFieldsForApp","getSchemaAndFieldsByNamespace","_schema$jsonSchema","userFieldsNamespace","find","s","isAppNamespace","fields","appSchema","_appSchema$jsonSchema","_this$userSchema2","_this$appSchemas2","_appSchema$jsonSchema2","concat","_userSchema$jsonSchem","_properties$key","_properties$key2","length","allNamespaces","_this$userSchema3","init","initTask","runOnce","fetchSchemas","newSchema","index","findIndex","dataExtensionSchemas","runInAction","deleteConfirmModal","open"],"sources":["../../../src/state/DataExtensionState.ts"],"sourcesContent":["import {\n CustomField,\n CustomFieldOwner,\n CustomFieldType,\n DataExtensionField,\n DataExtensionPermission,\n DataExtensionSchemaService,\n DataExtensionType,\n ReportBI,\n} from '../services';\nimport type { DataExtensionFieldOperationsService } from '../services/DataExtensionFieldOperationsService';\nimport { TaskState } from './TaskState';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { Fqdn } from '../model';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { CustomFieldForm } from './CustomFieldModalState';\nimport type { DataExtensionSchema } from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport { fqdnToString } from '../util';\nimport { includesAllReadPermissions } from './DataExtension/DataExtensionField';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { DeleteFieldModalState } from './DeleteFieldModalState';\n\nexport interface DataExtensionStateParams {\n container: WixPatternsContainer;\n closeSidePanel?: () => unknown;\n fqdn: Fqdn;\n}\nexport interface DefaultPermissionsConfig {\n installedApps?: {\n hide?: boolean;\n defaultRead?: boolean;\n defaultWrite?: boolean;\n };\n siteVisitors?: {\n hide?: boolean;\n defaultRead?: boolean;\n defaultWrite?: boolean;\n };\n}\n\nexport interface DataExtensionOverrides {\n disableUserDefinedWriting?: boolean;\n containsPii?: boolean;\n filterable?: boolean;\n /**\n * When set to true, will disable \"Manage custom fields\" action in the page actions menu.\n */\n disableDefaultPageAction?: boolean;\n extensionPoint?: string;\n defaultPermissions?: DefaultPermissionsConfig;\n /**\n * When set to true, will enable the \"Archived Fields\" button in the custom columns panel.\n */\n enableArchive?: boolean;\n}\n\nexport const MAX_CUSTOM_FIELDS = 50;\n\n/**\n * Manages data extension schemas and custom fields for a collection\n */\nexport class DataExtensionState {\n readonly dataExtensionService: DataExtensionSchemaService;\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n _hasWritePermissions?: boolean;\n readonly closeSidePanel;\n readonly fqdn;\n\n get fqdnString() {\n return fqdnToString(this.fqdn);\n }\n\n get isFqdnValid() {\n return this.fqdn.resource !== undefined;\n }\n\n _dataExtensionSchemasBase: DataExtensionSchema[] = [];\n containsPii?: boolean;\n defaultPermissions?: DefaultPermissionsConfig;\n readonly disableUserDefinedWriting;\n readonly filterable;\n readonly enableArchive?: boolean;\n isArchivedPanelOpen: boolean = false;\n\n // Lazy-loaded service for field operations (archive/restore/delete)\n private _fieldOperationsService?: DataExtensionFieldOperationsService;\n private _fieldOperationsServicePromise?: Promise<DataExtensionFieldOperationsService>;\n\n readonly deleteConfirmModal = new ConditionalModalState<{\n id: string;\n origin: string;\n }>();\n\n deleteFieldModal?: DeleteFieldModalState;\n\n _extensionPoint;\n\n constructor(\n params: Readonly<DataExtensionStateParams & DataExtensionOverrides>,\n ) {\n this.container = params.container;\n this.disableUserDefinedWriting = params.disableUserDefinedWriting;\n this.filterable = params.filterable;\n this.enableArchive = params.enableArchive ?? true;\n this.closeSidePanel = params.closeSidePanel;\n this.fqdn = params.fqdn;\n this._extensionPoint = params.extensionPoint;\n this.dataExtensionService = new DataExtensionSchemaService(\n params.container,\n );\n\n this.containsPii = params.containsPii;\n this.defaultPermissions = params.defaultPermissions;\n\n // Initialize deleteFieldModal with proper reportBi\n this.deleteFieldModal = new DeleteFieldModalState({\n dataExtension: this,\n reportBi: params.container.createBILogger({\n componentType: 'DataExtension',\n ...params.fqdn,\n }),\n });\n\n makeObservable(this, {\n allUserCustomFields: computed,\n allAppsCustomFields: computed,\n allCustomFields: computed,\n archivedItems: computed,\n shouldDisplayArchive: computed,\n filterableCustomFields: computed,\n availableUserCustomFields: computed,\n availableAppsCustomFields: computed,\n availableCustomFields: computed,\n isReachedMaxCustomFields: computed,\n disableAddCustomField: computed,\n disableAddCustomFieldContent: computed,\n _dataExtensionSchemasBase: observable.ref,\n _dataExtensionSchemas: computed,\n userSchema: computed,\n appSchemas: computed,\n _upsertSchema: action,\n containsPii: observable,\n defaultPermissions: observable,\n isArchivedPanelOpen: observable,\n deleteFieldModal: observable.ref,\n openArchivedPanel: action,\n closeArchivedPanel: action,\n openDeleteConfirmModal: action,\n });\n }\n\n get hasWritePermissions() {\n if (this._hasWritePermissions == null) {\n this._hasWritePermissions = this.container.user.permissions.includes(\n 'DATA_EXTENSION_SCHEMA.WRITE',\n );\n }\n\n return this._hasWritePermissions;\n }\n\n get disableAddCustomField() {\n return !this.hasWritePermissions || this.isReachedMaxCustomFields;\n }\n\n get disableAddCustomFieldContent() {\n if (!this.hasWritePermissions) {\n return this.container.translate(\n 'cairo.customFields.writePermission.tooltip',\n );\n }\n\n if (this.isReachedMaxCustomFields) {\n return this.container.translate('cairo.customFields.maxFields.tooltip', {\n max: MAX_CUSTOM_FIELDS,\n });\n }\n\n return '';\n }\n\n getArchiveSuccessToastMessage(fieldName?: string): string {\n return this.enableArchive && fieldName\n ? this.container.translate(\n 'cairo.customFields.archive.success.toast.enabled',\n { selectedField: fieldName },\n )\n : this.container.translate('cairo.customFields.archive.success.toast');\n }\n\n getArchiveSuccessToastAction() {\n return this.enableArchive\n ? {\n text: this.container.translate(\n 'cairo.customFields.archive.success.toast.CTA',\n ),\n uiType: 'LINK' as const,\n onClick: () => this.openArchivedPanel?.(),\n }\n : undefined;\n }\n\n /**\n * Lazily loads the field operations service to reduce bundle size.\n * Only loads when archive/restore/delete operations are needed.\n */\n private async getFieldOperationsService(): Promise<DataExtensionFieldOperationsService> {\n if (this._fieldOperationsService) {\n return this._fieldOperationsService;\n }\n\n // Reuse the same promise if already loading\n if (this._fieldOperationsServicePromise) {\n return this._fieldOperationsServicePromise;\n }\n\n this._fieldOperationsServicePromise = import(\n '../services/DataExtensionFieldOperationsService'\n ).then((module) => {\n const self = this;\n this._fieldOperationsService =\n new module.DataExtensionFieldOperationsService({\n container: this.container,\n dataExtensionService: this.dataExtensionService,\n get userSchema() {\n return self.userSchema;\n },\n fqdnString: this.fqdnString,\n enableArchive: this.enableArchive,\n extractFieldValuesFromSchema:\n this.extractFieldValuesFromSchema.bind(this),\n upsertSchema: this._upsertSchema.bind(this),\n openArchivedPanel: this.openArchivedPanel.bind(this),\n });\n return this._fieldOperationsService;\n });\n\n return this._fieldOperationsServicePromise;\n }\n\n async archiveField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.archiveField({ id, origin, reportBi });\n }\n\n async restoreField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.restoreField({ id, origin, reportBi });\n }\n\n async deleteField({\n id,\n origin,\n reportBi,\n }: {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n }) {\n const service = await this.getFieldOperationsService();\n return service.deleteField({ id, origin, reportBi });\n }\n\n extractFieldValuesFromSchema(fieldId: string): CustomFieldForm | undefined {\n if (!this.userSchema) {\n return;\n }\n\n const customField = DataExtensionSchemaService.toCustomField(\n this.userSchema,\n fieldId,\n );\n\n if (!customField || !customField.type || !customField.title) {\n return;\n }\n\n const { read, write } = customField['x-wix-permissions'];\n const isPiiField = customField['x-wix-pii']?.enabled;\n const readApps = read?.includes('apps');\n const readUsers = read?.includes('users-of-users');\n const writeApps = write?.includes('apps');\n const writeUsers = write?.includes('users-of-users');\n\n return {\n type: DataExtensionSchemaService.toCustomType(customField),\n name: customField.title,\n key: customField.id,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii: Boolean(isPiiField),\n };\n }\n\n _toCustomField({\n key,\n schema,\n editable,\n owner,\n namespace,\n }: {\n key: string;\n schema: DataExtensionField;\n editable: boolean;\n owner: CustomFieldOwner;\n namespace: string;\n }): CustomField | undefined {\n if (!DataExtensionSchemaService.toCustomType(schema)) {\n return;\n }\n return {\n id: key,\n label: schema?.title || key,\n maxLength: schema?.maxLength,\n options: schema?.enum,\n type: DataExtensionSchemaService.toCustomType(schema) as CustomFieldType,\n editable,\n filterable: schema['x-wix-filterable'],\n owner,\n properties: schema?.properties ?? {},\n namespace,\n isPii: Boolean(schema['x-wix-pii']?.enabled),\n permissions: schema['x-wix-permissions'],\n };\n }\n\n private isSupportedFieldType(type?: string): type is DataExtensionType {\n if (!type) {\n return false;\n }\n return ['string', 'number', 'integer', 'boolean', 'array'].includes(type);\n }\n\n private getAvailableCustomFieldsInSchema(\n properties: {\n [key: string]: DataExtensionField;\n },\n {\n editable,\n requiredPermissions,\n owner,\n namespace,\n }: {\n editable: boolean;\n requiredPermissions?: DataExtensionPermission[];\n owner: CustomFieldOwner;\n namespace: string;\n },\n ): CustomField[] {\n const filteredFields = Object.keys(properties).filter((key) => {\n const field = properties[key];\n const isAllowedType =\n this.isSupportedFieldType(field.type) ||\n (field.type === 'object' && field['x-wix-object-type'] === 'FILE/V1');\n\n const isPermitted =\n requiredPermissions == null ||\n includesAllReadPermissions(field, requiredPermissions);\n\n return !field['x-wix-archived'] && isAllowedType && isPermitted;\n });\n\n const sorted = filteredFields.sort((a, b) => {\n const aVal = new Date(properties[a]['x-wix-created-date']);\n const bVal = new Date(properties[b]['x-wix-created-date']);\n\n if (isNaN(bVal.valueOf()) || isNaN(aVal.valueOf())) {\n return 0;\n }\n\n return aVal.valueOf() - bVal.valueOf();\n });\n\n return sorted\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable,\n owner,\n namespace,\n }),\n )\n .filter(Boolean) as CustomField[];\n }\n\n /**\n * Available custom fields, excluding archived fields\n */\n get availableUserCustomFields(): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n this.userSchema?.jsonSchema?.properties || {};\n return this.getAvailableCustomFieldsInSchema(properties, {\n editable: true,\n owner: 'user',\n namespace: '_user_fields',\n });\n }\n\n get availableAppsCustomFields(): CustomField[] {\n return (\n this.appSchemas?.reduce((prev, schema) => {\n return [...prev, ...this.getAvailableCustomFieldsForApp(schema)];\n }, [] as CustomField[]) ?? []\n );\n }\n\n getSchemaAndFieldsByNamespace(namespace: string) {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n\n const schema = _dataExtensionSchemas.find((s) => s.namespace === namespace);\n\n if (!schema) {\n return {};\n }\n\n const isAppNamespace = namespace !== userFieldsNamespace;\n\n const fields = this.getAvailableCustomFieldsInSchema(\n schema.jsonSchema?.properties || {},\n {\n editable: false,\n owner: isAppNamespace ? 'app' : 'user',\n namespace,\n requiredPermissions: isAppNamespace ? ['users'] : undefined,\n },\n );\n\n return {\n schema,\n fields,\n };\n }\n\n getAvailableCustomFieldsForApp(\n appSchema: DataExtensionSchema,\n ): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n appSchema.jsonSchema?.properties || {};\n\n return this.getAvailableCustomFieldsInSchema(properties, {\n editable: false,\n requiredPermissions: ['users'],\n owner: 'app',\n namespace: appSchema.namespace as string,\n });\n }\n\n get availableCustomFields(): CustomField[] {\n return [\n ...this.availableUserCustomFields,\n ...this.availableAppsCustomFields,\n ];\n }\n\n get allUserCustomFields(): CustomField[] {\n const properties: { [key: string]: DataExtensionField } =\n this.userSchema?.jsonSchema?.properties || {};\n\n return Object.keys(properties)\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable: true,\n owner: 'user',\n namespace: '_user_fields',\n }),\n )\n .filter(Boolean) as CustomField[];\n }\n\n get allAppsCustomFields(): CustomField[] {\n return (\n this.appSchemas?.reduce((prev, appSchema) => {\n const properties: { [key: string]: DataExtensionField } =\n appSchema?.jsonSchema?.properties || {};\n\n return prev.concat(\n Object.keys(properties)\n .map((key) =>\n this._toCustomField({\n key,\n schema: properties[key],\n editable: false,\n owner: 'app',\n namespace: appSchema.namespace as string,\n }),\n )\n .filter(Boolean) as CustomField[],\n );\n }, [] as CustomField[]) ?? []\n );\n }\n\n get allCustomFields(): CustomField[] {\n return [...this.allUserCustomFields, ...this.allAppsCustomFields];\n }\n\n get archivedItems() {\n const userSchema = this.userSchema;\n if (!userSchema?.jsonSchema?.properties) {\n return [];\n }\n\n const properties = userSchema.jsonSchema.properties;\n return Object.keys(properties)\n .filter((key) => properties[key]['x-wix-archived'])\n .map((key) => ({\n ...properties[key],\n id: key,\n label: properties[key]?.title || key,\n isPii: Boolean(properties[key]?.['x-wix-pii']?.enabled),\n }));\n }\n\n get shouldDisplayArchive() {\n return this.enableArchive && this.archivedItems.length > 0;\n }\n\n get filterableCustomFields(): CustomField[] {\n if (!this.filterable) {\n return [];\n }\n\n return this.availableCustomFields.filter((field) => field.filterable);\n }\n\n get isReachedMaxCustomFields() {\n return this.allUserCustomFields.length >= MAX_CUSTOM_FIELDS;\n }\n\n get allNamespaces() {\n return [\n this.userSchema?.namespace,\n ...(this.appSchemas || []).map((schema) => schema.namespace),\n ].filter(Boolean) as string[];\n }\n\n init() {\n const { initTask } = this;\n\n initTask.runOnce(async () => {\n await this.fetchSchemas();\n });\n\n return () => {};\n }\n\n _upsertSchema(newSchema: DataExtensionSchema) {\n const { _dataExtensionSchemasBase } = this;\n\n const index = _dataExtensionSchemasBase.findIndex(\n (schema) => schema.namespace === newSchema?.namespace,\n );\n\n if (index === -1) {\n this._dataExtensionSchemasBase = [\n ..._dataExtensionSchemasBase,\n newSchema,\n ];\n } else {\n this._dataExtensionSchemasBase = _dataExtensionSchemasBase.map((schema) =>\n schema.namespace === newSchema.namespace ? newSchema : schema,\n );\n }\n }\n\n get userSchema() {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n return _dataExtensionSchemas.find(\n (s) => s.namespace === userFieldsNamespace,\n );\n }\n\n get _dataExtensionSchemas() {\n const { _extensionPoint, _dataExtensionSchemasBase } = this;\n return _dataExtensionSchemasBase.filter((s: DataExtensionSchema) =>\n _extensionPoint\n ? s.extensionPoint === _extensionPoint\n : s.extensionPoint == null || s.extensionPoint === 'ROOT',\n );\n }\n\n get appSchemas() {\n const {\n _dataExtensionSchemas,\n dataExtensionService: { userFieldsNamespace },\n } = this;\n return _dataExtensionSchemas.filter(\n (s) => s.namespace !== userFieldsNamespace,\n );\n }\n\n async fetchSchemas() {\n const { dataExtensionService } = this;\n\n if (this.isFqdnValid) {\n const { dataExtensionSchemas } = await dataExtensionService.fetchSchemas(\n this.fqdnString,\n );\n\n runInAction(() => {\n this._dataExtensionSchemasBase = dataExtensionSchemas ?? [];\n });\n }\n }\n\n openArchivedPanel() {\n if (this.enableArchive) {\n this.isArchivedPanelOpen = true;\n }\n }\n\n closeArchivedPanel() {\n this.isArchivedPanelOpen = false;\n }\n\n openDeleteConfirmModal({ id, origin }: { id: string; origin: string }) {\n this.deleteConfirmModal.open({ id, origin });\n }\n}\n"],"mappings":"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","ignoreList":[]}