@wix/bex-core 2.45.0 → 2.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cjs/assets/locale/messages_cs.json +1 -0
  2. package/dist/cjs/assets/locale/messages_da.json +1 -0
  3. package/dist/cjs/assets/locale/messages_de.json +1 -0
  4. package/dist/cjs/assets/locale/messages_en.json +2 -1
  5. package/dist/cjs/assets/locale/messages_es.json +1 -0
  6. package/dist/cjs/assets/locale/messages_fr.json +1 -0
  7. package/dist/cjs/assets/locale/messages_hi.json +1 -0
  8. package/dist/cjs/assets/locale/messages_id.json +1 -0
  9. package/dist/cjs/assets/locale/messages_it.json +1 -0
  10. package/dist/cjs/assets/locale/messages_ja.json +1 -0
  11. package/dist/cjs/assets/locale/messages_ko.json +1 -0
  12. package/dist/cjs/assets/locale/messages_nl.json +1 -0
  13. package/dist/cjs/assets/locale/messages_no.json +1 -0
  14. package/dist/cjs/assets/locale/messages_pl.json +1 -0
  15. package/dist/cjs/assets/locale/messages_pt.json +1 -0
  16. package/dist/cjs/assets/locale/messages_ru.json +1 -0
  17. package/dist/cjs/assets/locale/messages_sv.json +1 -0
  18. package/dist/cjs/assets/locale/messages_th.json +1 -0
  19. package/dist/cjs/assets/locale/messages_tr.json +1 -0
  20. package/dist/cjs/assets/locale/messages_uk.json +1 -0
  21. package/dist/cjs/assets/locale/messages_vi.json +1 -0
  22. package/dist/cjs/assets/locale/messages_zh.json +1 -0
  23. package/dist/cjs/services/translations.js.map +1 -1
  24. package/dist/cjs/state/CollectionOptimisticActions.js +8 -0
  25. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  26. package/dist/cjs/state/CollectionOptimisticActionsState.js +1 -0
  27. package/dist/cjs/state/CollectionOptimisticActionsState.js.map +1 -1
  28. package/dist/cjs/state/CollectionPageState/CollectionPageState.js +5 -1
  29. package/dist/cjs/state/CollectionPageState/CollectionPageState.js.map +1 -1
  30. package/dist/cjs/state/QueryResultState.js +15 -12
  31. package/dist/cjs/state/QueryResultState.js.map +1 -1
  32. package/dist/esm/assets/locale/messages_cs.json +1 -0
  33. package/dist/esm/assets/locale/messages_da.json +1 -0
  34. package/dist/esm/assets/locale/messages_de.json +1 -0
  35. package/dist/esm/assets/locale/messages_en.json +2 -1
  36. package/dist/esm/assets/locale/messages_es.json +1 -0
  37. package/dist/esm/assets/locale/messages_fr.json +1 -0
  38. package/dist/esm/assets/locale/messages_hi.json +1 -0
  39. package/dist/esm/assets/locale/messages_id.json +1 -0
  40. package/dist/esm/assets/locale/messages_it.json +1 -0
  41. package/dist/esm/assets/locale/messages_ja.json +1 -0
  42. package/dist/esm/assets/locale/messages_ko.json +1 -0
  43. package/dist/esm/assets/locale/messages_nl.json +1 -0
  44. package/dist/esm/assets/locale/messages_no.json +1 -0
  45. package/dist/esm/assets/locale/messages_pl.json +1 -0
  46. package/dist/esm/assets/locale/messages_pt.json +1 -0
  47. package/dist/esm/assets/locale/messages_ru.json +1 -0
  48. package/dist/esm/assets/locale/messages_sv.json +1 -0
  49. package/dist/esm/assets/locale/messages_th.json +1 -0
  50. package/dist/esm/assets/locale/messages_tr.json +1 -0
  51. package/dist/esm/assets/locale/messages_uk.json +1 -0
  52. package/dist/esm/assets/locale/messages_vi.json +1 -0
  53. package/dist/esm/assets/locale/messages_zh.json +1 -0
  54. package/dist/esm/state/CollectionOptimisticActions.js +7 -0
  55. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  56. package/dist/esm/state/CollectionOptimisticActionsState.js +1 -0
  57. package/dist/esm/state/CollectionOptimisticActionsState.js.map +1 -1
  58. package/dist/esm/state/CollectionPageState/CollectionPageState.js +5 -1
  59. package/dist/esm/state/CollectionPageState/CollectionPageState.js.map +1 -1
  60. package/dist/esm/state/QueryResultState.js +15 -12
  61. package/dist/esm/state/QueryResultState.js.map +1 -1
  62. package/dist/types/services/translations.d.ts +1 -1
  63. package/dist/types/services/translations.d.ts.map +1 -1
  64. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  65. package/dist/types/state/CollectionOptimisticActionsState.d.ts +1 -0
  66. package/dist/types/state/CollectionOptimisticActionsState.d.ts.map +1 -1
  67. package/dist/types/state/CollectionPageState/CollectionPageState.d.ts +1 -1
  68. package/dist/types/state/CollectionPageState/CollectionPageState.d.ts.map +1 -1
  69. package/dist/types/state/QueryResultState.d.ts.map +1 -1
  70. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_CollectionOptimisticActionsState","_CollectionOptimisticProcessor","_CollectionOptimisticPatch","_CollectionOptimisticExecutor","_events","_QueryResultSimulationDefault","_CollectionOptimisticSequenceExecutor","CollectionOptimisticActions","constructor","params","_defineProperty2","default","EventEmitter","action","patch","state","collection","collections","noInvalidate","processors","_commitMode","patches","remove","length","forEach","processorHelpers","commit","invalidate","p","refreshAllPages","events","clearPatch","off","_clearPatch","onRefresh","isStale","once","emit","on","query","sequences","Map","CollectionOptimisticActionsState","source","patchesCache","container","cacheNamespace","resultSimulationDefault","QueryResultSimulationDefault","predicate","orderBy","createdAt","executor","CollectionOptimisticExecutor","batchWait","errorMonitor","showToast","translate","lodash","push","CollectionOptimisticProcessor","optimistic","_optimisticActions","makeObservable","pushPatchAndReprocess","replacePatchAndReprocess","rollback","bound","clear","move","pendingMovePatches","computed","_queryNames","queryName","map","c","hasRunningSequence","Array","from","values","some","s","seq","running","filter","isArray","newPatch","oldPatch","oldPatchIndex","findIndex","createOne","item","createMany","items","itemKey","result","submit","updateServerAfter","onUndo","onTryAgain","onError","optimisticPatchParams","queryCache","queryNames","actionType","patchedItems","originalItems","originalTotal","total","get","selector","has","optimisticPatch","OptimisticPatch","_clearPatchOnNextResultOrUnmount","execute","actions","submitResult","reduce","patchedItemsEntries","key","set","updatedOptimisticPatch","onRollback","eventuallyUpdated","onEventuallyUpdated","updateMany","keepPosition","_result$get","originalItem","enqueueMovePatch","event","filtersKeyHash","_initSequence","CollectionOptimisticSequenceExecutor","err","pendingPatches","_p$move","Error","message","reorderModeCanceledMessage","biName","onClick","sequence","collectionSnapshot","updateOne","updateAll","patchOrFn","originQuery","itemPredicate","updatedAt","Date","deleteMany","deleteOne","deleteAll","initCollection","i","indexOf","splice","init","emitRefresh","emitBeforeResultUpdated","emitter","disposers","reaction","isEmpty","_pages","unprocessed","flatMap","page","allFilteredOut","fetchNextPageIfNeeded","disposer","remaining","exports"],"sources":["../../../src/state/CollectionOptimisticActions.ts"],"sourcesContent":["import { ActionMove, ComputedQuery, FiltersMap, ToastConfig } from '../model';\nimport {\n action,\n computed,\n IObservableArray,\n makeObservable,\n reaction,\n} from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Order } from './QueryResultSimulation';\nimport { CollectionOptimisticActionsState } from './CollectionOptimisticActionsState';\nimport { CollectionOptimisticProcessor } from './CollectionOptimisticProcessor';\nimport {\n OptimisticPatch,\n OptimisticPatchParams,\n} from './CollectionOptimisticPatch';\nimport {\n CollectionOptimisticExecutor,\n EventuallyUpdated,\n} from './CollectionOptimisticExecutor';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { QueryResultSimulationDefault } from './QueryResultSimulationDefault';\nimport { CollectionOptimisticSequenceExecutor } from './CollectionOptimisticSequenceExecutor';\nimport { ModalLayoutProps } from '../services';\nimport { QueryState } from './QueryState';\n\nexport interface OptimisticActionBasis {\n /**\n * Determines whether to display an undo toast before calling the server action.\n * @default false\n * @external\n */\n showUndoToast?: boolean;\n /**\n * Determines whether to display a toast after clicking on undo.\n * @default false\n * @external\n */\n showUndoSuccessToast?: boolean;\n /**\n * Callback function triggered when the user clicks on the undo button.\n * @external\n */\n onUndo?: () => void;\n /**\n * Function to generate error toast to show in case the server fails to perform the action.\n * @external\n */\n errorToast?: (err: unknown) => ToastConfig | string;\n /**\n * Callback function triggered when an error occurs.\n * @external\n */\n onError?: (err: unknown) => void;\n /**\n * Callback function to retry the action.\n * @external\n */\n onTryAgain?: () => void | Promise<void>;\n /**\n * Toast message or configuration to show on successful action.\n * @external\n */\n successToast?: ToastConfig | string;\n /**\n * Indicates when the server is eventually updated.\n * Possible values:\n * - submit: Server updates immediately after the submission promise resolves.\n * - number: Server updates after a specified timeout (in milliseconds).\n * - Promise: Server updates after a forwarded promise resolves.\n * @default submit\n * @external\n */\n updateServerAfter?: EventuallyUpdated;\n}\n\nexport interface UpdateAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n */\n submit: () => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface UpdateManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n * @param items - The items to update.\n */\n submit: (items: T[]) => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface MoveParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the move operation.\n * @param params - The parameters for the move action.\n */\n submit?: (params: ActionMove<T>) => Promise<R>;\n /**\n * Snapshot of the collection before the move operation.\n */\n collectionSnapshot: { [key: string]: string | number | undefined };\n}\n\nexport interface CreateManyParams<T> extends OptimisticActionBasis {\n /**\n * Function to submit the creation operation.\n * @param items - The items to create.\n */\n submit: (items: T[]) => Promise<T[]>;\n}\n\nexport interface DeleteManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n * @param items - The items to delete.\n */\n submit: (items: T[]) => Promise<R>;\n}\n\nexport interface DeleteAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n */\n submit: () => Promise<R>;\n}\n\nexport interface CollectionOptimisticActionsBaseParams<\n T,\n F extends FiltersMap,\n> {\n /**\n * A function that simulates the filtering in the server.\n * The function should return another function that accepts an item, and return a boolean that indicates whether the item passes the query filters or not.\n * @param computedQuery - The computed query object.\n * @external\n */\n readonly predicate?: (\n computedQuery: ComputedQuery<F>,\n ) => (item: T) => boolean;\n /**\n * A function that simulates the ordering of the items in the server.<br>\n * The function should return a list of rules in the form of `{fieldName: string; order: 'asc' | 'desc';}` to order the items by\n * @param computedQuery - The computed query object.\n * @external\n */\n readonly orderBy?: (computedQuery: ComputedQuery<F>) => Order<T>[];\n /**\n * A function to retrieve the creation date of an item.\n * @param item - The item.\n * @external\n */\n readonly createdAt?: (item: T) => Date;\n /**\n * Time to wait before batching multiple `updateMany` calls into a single server call.\n * @default 0\n * @external\n */\n readonly batchWait?: number;\n /**\n * Indicates whether to refresh the current page without invalidating the cache.\n * @external\n */\n readonly noInvalidate?: boolean;\n /**\n * Adds a namespace to the cache key.\n * @external\n */\n readonly cacheNamespace?: string;\n readonly sequences?: Map<string, CollectionOptimisticSequenceExecutor>;\n readonly query?: QueryState<F>;\n}\n\nexport interface CollectionOptimisticActionsParams<T, F extends FiltersMap>\n extends CollectionOptimisticActionsBaseParams<T, F> {\n /**\n * The main collection to reflect changes into.\n * @external\n */\n readonly collection: CollectionState<T, F>;\n /**\n * Additional collections to reflect changes into.\n * @default undefined\n * @external\n */\n readonly collections?: CollectionState<T, F>[];\n /**\n * Container holding patches cache and events emitter.\n * @external\n */\n readonly container: {\n patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n };\n}\n\nexport class CollectionOptimisticActions<T, F extends FiltersMap> {\n readonly collection;\n readonly query;\n readonly collections;\n readonly predicate: (computedQuery: ComputedQuery<F>) => (item: T) => boolean;\n readonly orderBy: (computedQuery: ComputedQuery<F>) => Order<T>[];\n readonly createdAt?: (item: T) => Date;\n readonly events = new EventEmitter() as TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n refresh: (params: { isStale: boolean }) => void;\n unmount: () => void;\n beforeResultUpdated: () => void;\n dragAndDropSequenceError: (params: {\n patches: OptimisticPatch<T>[];\n }) => void;\n dragAndDropSequenceRetry: (params: {\n patches: OptimisticPatch<T>[];\n }) => void;\n }>;\n readonly noInvalidate;\n readonly state;\n readonly processors: CollectionOptimisticProcessor<T, F>[] = [];\n readonly executor: CollectionOptimisticExecutor<OptimisticPatch<T>>;\n readonly sequences;\n readonly resultSimulationDefault;\n readonly reorderModeCanceledMessage = 'REORDER_MODE_CANCELED';\n\n _resumeNavigation: (() => void) | null = null;\n\n _orderByMode: 'orders' | 'moves' = 'orders';\n\n _commitMode = false;\n\n constructor(params: CollectionOptimisticActionsParams<T, F>) {\n this.collection = params.collection;\n this.query = params.query ?? this.collection.query;\n this.collections = params.collections ?? [];\n\n this.sequences =\n params.sequences ??\n new Map<string, CollectionOptimisticSequenceExecutor>();\n\n this.state = new CollectionOptimisticActionsState<T>({\n source: this.collection,\n patchesCache: params.container.patchesCache,\n cacheNamespace: params.cacheNamespace,\n });\n\n this.resultSimulationDefault = new QueryResultSimulationDefault({\n collection: this.collection,\n });\n\n this.predicate = params.predicate ?? this.resultSimulationDefault.predicate;\n this.orderBy = params.orderBy ?? this.resultSimulationDefault.orderBy;\n this.createdAt = params.createdAt;\n this.noInvalidate = params.noInvalidate;\n\n this.executor = new CollectionOptimisticExecutor({\n batchWait: params.batchWait ?? 0,\n errorMonitor: this.collection.errorMonitor,\n showToast: this.collection.showToast,\n translate: this.collection.translate,\n lodash: this.collection.lodash,\n container: params.container,\n });\n\n this.processors.push(\n new CollectionOptimisticProcessor({\n ...params,\n optimistic: this,\n }),\n );\n\n if (params.collections != null) {\n params.collections.forEach((collection) => {\n this.processors.push(\n new CollectionOptimisticProcessor({\n ...params,\n collection,\n optimistic: this,\n }),\n );\n });\n }\n\n this.collection._optimisticActions = this;\n\n makeObservable(this, {\n pushPatchAndReprocess: action,\n replacePatchAndReprocess: action,\n rollback: action.bound,\n clear: action,\n move: action,\n pendingMovePatches: computed,\n });\n }\n\n get _queryNames() {\n return [\n this.collection.queryName,\n ...this.collections.map((c) => c.queryName),\n ];\n }\n\n get hasRunningSequence() {\n return Array.from(this.sequences.values()).some((s) => s.seq.state.running);\n }\n\n get pendingMovePatches() {\n return this.state.patches.filter((p) => p.move);\n }\n\n rollback(patch: OptimisticPatch<T> | OptimisticPatch<T>[]) {\n const { events, state } = this;\n const patches = Array.isArray(patch) ? patch : [patch];\n\n for (const p of patches) {\n state.patches.remove(p);\n }\n\n events.emit('reprocess');\n }\n\n private _clearPatch = action((patch: OptimisticPatch<T>) => {\n const {\n state,\n collection,\n collections,\n noInvalidate,\n processors,\n _commitMode,\n } = this;\n\n if (noInvalidate) {\n return;\n }\n\n state.patches.remove(patch);\n if (_commitMode && !state.patches.length) {\n processors.forEach(({ processorHelpers }) => processorHelpers.commit());\n }\n collection.invalidate();\n collections.forEach((p) => p.refreshAllPages());\n });\n\n _clearPatchOnNextResultOrUnmount = (patch: OptimisticPatch<T>) => {\n const { events } = this;\n\n const clearPatch = () => {\n events.off('unmount', clearPatch);\n this._clearPatch(patch);\n };\n\n const onRefresh = ({ isStale }: { isStale: boolean }) => {\n events.off('refresh', onRefresh);\n\n // clear only when results are not going to come from cache\n if (isStale) {\n events.once('beforeResultUpdated', clearPatch);\n }\n };\n\n events.emit('updated');\n\n if (this._commitMode) {\n this._clearPatch(patch);\n } else {\n // Clear the patch on the next collection result update to eliminate inconsistencies between server state and local patches\n events.on('refresh', onRefresh);\n // since not clearing the patch immediately, clear it on unmount if was not cleared yet\n events.on('unmount', clearPatch);\n }\n };\n\n pushPatchAndReprocess(patch: OptimisticPatch<T> | OptimisticPatch<T>[]) {\n const { state, events } = this;\n const patches = Array.isArray(patch) ? patch : [patch];\n state.patches.push(...patches);\n events.emit('reprocess');\n }\n\n replacePatchAndReprocess(\n newPatch: OptimisticPatch<T>,\n oldPatch: OptimisticPatch<T>,\n ) {\n const { state, events } = this;\n\n const oldPatchIndex = state.patches.findIndex(\n (patch) => patch === oldPatch,\n );\n state.patches[oldPatchIndex] = newPatch;\n events.emit('reprocess');\n }\n\n /**\n * Creates a single item in the collection.\n * @param item - The item to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createOne(item: T, params: CreateManyParams<T>) {\n this.createMany([item], params);\n }\n\n /**\n * Creates multiple items in the collection.\n * @param items - The items to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createMany(items: T[], params: CreateManyParams<T>) {\n const { collection, executor } = this;\n const { itemKey, result } = collection;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n\n const optimisticPatchParams: OptimisticPatchParams<T> = {\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches: this.state.patches,\n actionType: 'createMany',\n patchedItems: new Map(items.map((item) => [itemKey(item), item])),\n originalItems: new Map(),\n originalTotal: result.total,\n patch: (item, { patchedItems }) => patchedItems.get(itemKey(item)),\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n };\n\n const optimisticPatch = new OptimisticPatch<T>(optimisticPatchParams);\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n return executor.execute([optimisticPatch], {\n ...params,\n submit: action(async (actions) => {\n const submitResult = await submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'createMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n );\n\n const updatedOptimisticPatch = new OptimisticPatch({\n ...optimisticPatchParams,\n patchedItems: new Map(\n submitResult.map((item) => [itemKey(item), item]),\n ),\n });\n\n this.replacePatchAndReprocess(updatedOptimisticPatch, optimisticPatch);\n this._clearPatchOnNextResultOrUnmount(updatedOptimisticPatch);\n return submitResult;\n }),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Updates multiple items in the collection.\n * @param items - The items to update.\n * @param params - Additional parameters for the update operation.\n * @external\n */\n updateMany<R>(items: T[], params: UpdateManyParams<T, R>) {\n const { executor, collection } = this;\n const { itemKey, result } = collection;\n const {\n submit,\n updateServerAfter,\n keepPosition,\n onUndo,\n onTryAgain,\n onError,\n } = params;\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches: this.state.patches,\n actionType: 'updateMany',\n keepPosition,\n patchedItems: new Map(items.map((item) => [itemKey(item), item])),\n originalItems: new Map(\n items.map((item) => {\n const key = itemKey(item);\n const originalItem = result.get(itemKey(item))?.item ?? item;\n return [key, originalItem];\n }),\n ),\n originalTotal: result.total,\n patch: (item, { patchedItems }) => patchedItems.get(itemKey(item)),\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n return executor.execute([optimisticPatch], {\n ...params,\n submit: action((actions) =>\n submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'updateMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n ),\n ),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n enqueueMovePatch<R>(\n optimisticPatch: OptimisticPatch<T>,\n params: MoveParams<T, R>,\n ) {\n const { submit, onTryAgain } = params;\n const { collection, state, events } = this;\n const { patches } = state;\n\n const event = optimisticPatch.move;\n\n if (event == null) {\n return;\n }\n\n const { filtersKeyHash } = event;\n\n const _initSequence = () => {\n const { sequences } = this;\n const seq =\n sequences.get(filtersKeyHash) ??\n new CollectionOptimisticSequenceExecutor({\n showToast: collection.showToast,\n translate: collection.translate,\n errorMonitor: collection.errorMonitor,\n onRollback: (err) => {\n const pendingPatches = patches.filter(\n (p) => p.move?.filtersKeyHash === filtersKeyHash,\n );\n this.rollback(pendingPatches);\n\n if (\n err instanceof Error &&\n err.message === this.reorderModeCanceledMessage\n ) {\n executor.seq.clear();\n return;\n }\n\n events.emit('dragAndDropSequenceError', {\n patches: pendingPatches,\n });\n executor.seq.clear();\n return {\n message: collection.translate('cairo.dragAndDrop.error.toast'),\n biName: 'cairo-drag-and-drop-submit-error',\n action: {\n onClick: async () => {\n this.pushPatchAndReprocess(pendingPatches);\n for (const p of pendingPatches) {\n this.enqueueMovePatch(p, params);\n }\n events.emit('dragAndDropSequenceRetry', {\n patches: pendingPatches,\n });\n\n await onTryAgain?.();\n },\n },\n };\n },\n });\n\n if (!sequences.has(filtersKeyHash)) {\n sequences.set(filtersKeyHash, seq);\n }\n\n return seq;\n };\n\n const executor = _initSequence();\n\n executor.sequence({\n submit: () => submit?.(event),\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n });\n }\n\n async move<R>(event: ActionMove<T>, params: MoveParams<T, R>) {\n const { collection, state } = this;\n const { itemKey, result } = collection;\n const { patches } = state;\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches,\n actionType: 'move',\n patchedItems: new Map(),\n originalItems: new Map(),\n originalTotal: result.total,\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n move: event,\n collectionSnapshot: params.collectionSnapshot,\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n this.enqueueMovePatch(optimisticPatch, params);\n }\n\n /**\n * Updates a single item in the collection.\n * @param item - The item to update.\n * @param params - Additional parameters for the operation.\n * @external\n */\n updateOne<R>(item: T, params: UpdateManyParams<T, R>) {\n return this.updateMany([item], params);\n }\n\n /**\n * > `updateAll(fn)` API is not recommended as it's not possible to calculate \"optimistic total\", prefer updateAll(patchObject) API if possible.\n * Updates all items in the collection based on a function or a patch object.\n * @param patchOrFn - A function or a patch object to apply to each item.\n * @param params - Additional parameters for the operation.\n */\n updateAll<R>(\n patchOrFn: (item: T) => Partial<T>,\n params: UpdateAllParams<R>,\n ): void;\n\n /**\n * Updates all items in the collection based on a patch object.\n * @param patch - A patch object to apply to each item.\n * @param params - Additional parameters for the operation.\n * @external\n */\n updateAll<R>(patch: Partial<T>, params: UpdateAllParams<R>): void;\n\n updateAll<R>(\n patchOrFn: ((item: T) => Partial<T>) | Partial<T>,\n params: UpdateAllParams<R>,\n ) {\n const { executor, collection, predicate, createdAt } = this;\n const {\n submit,\n updateServerAfter,\n keepPosition,\n onUndo,\n onTryAgain,\n onError,\n } = params;\n const {\n itemKey,\n result: { originQuery, items, total },\n } = collection;\n\n const itemPredicate = predicate(originQuery);\n\n const updatedAt = new Date();\n\n const { patch, actionType } =\n typeof patchOrFn === 'function'\n ? { actionType: 'updateAll' as const, patch: patchOrFn }\n : {\n actionType: 'updateAllConst' as const,\n patch: (item: T) => ({ ...item, ...patchOrFn }),\n };\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n patches: this.state.patches,\n actionType,\n keepPosition,\n queryNames: this._queryNames,\n patchedItems: new Map(\n items.map((item) => [itemKey(item), { ...item, ...patch(item) }]),\n ),\n originalItems: new Map(items.map((item) => [itemKey(item), item])),\n originalTotal: total,\n selector: (item) =>\n itemPredicate(item) &&\n (createdAt == null || createdAt(item) <= updatedAt),\n patch,\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n executor.execute([optimisticPatch], {\n ...params,\n submit,\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Deletes multiple items from the collection.\n * @param items - An array of items to delete.\n * @param params - Additional parameters for the delete operation.\n * @external\n */\n deleteMany<R>(items: T[], params: DeleteManyParams<T, R>) {\n const { executor, collection } = this;\n const {\n itemKey,\n result: { total },\n } = collection;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n\n const patchedItems = new Map(items.map((item) => [itemKey(item), item]));\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n patches: this.state.patches,\n actionType: 'deleteMany',\n patchedItems,\n queryNames: this._queryNames,\n originalItems: patchedItems,\n originalTotal: total,\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n executor.execute([optimisticPatch], {\n ...params,\n submit: action((actions) =>\n submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'deleteMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n ),\n ),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Deletes a single item from the collection.\n * @param item - The item to delete.\n * @param params - Additional parameters for the operation.\n * @external\n */\n deleteOne<R>(item: T, params: DeleteManyParams<T, R>) {\n return this.deleteMany([item], params);\n }\n\n /**\n * Deletes all items from the collection.\n * @param params - Additional parameters for the operation.\n * @external\n */\n deleteAll<R>(params: UpdateAllParams<R>) {\n const { executor, collection, predicate, createdAt } = this;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n const {\n itemKey,\n result: { originQuery, items, total },\n } = collection;\n\n const itemPredicate = predicate(originQuery);\n\n const updatedAt = new Date();\n\n const patchedItems = new Map(items.map((item) => [itemKey(item), item]));\n\n const optimisticPatch = new OptimisticPatch({\n patches: this.state.patches,\n queryCache: collection.queryCache,\n actionType: 'deleteAll',\n patchedItems,\n queryNames: this._queryNames,\n originalItems: patchedItems,\n originalTotal: total,\n selector: (item) =>\n itemPredicate(item) &&\n (createdAt == null || createdAt(item) <= updatedAt),\n });\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n executor.execute([optimisticPatch], {\n ...params,\n submit,\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n initCollection(collection: CollectionState<T, F>) {\n this.collections.push(collection);\n new CollectionOptimisticProcessor({\n collection,\n optimistic: this,\n orderBy: this.orderBy,\n predicate: this.predicate,\n });\n\n return () => {\n const i = this.collections.indexOf(collection);\n if (i !== -1) {\n this.collections.splice(i, 1);\n }\n };\n }\n\n init() {\n const { collection, events } = this;\n\n const emitRefresh = (params: { isStale: boolean }) => {\n events.emit('refresh', params);\n };\n const emitBeforeResultUpdated = () => events.emit('beforeResultUpdated');\n\n collection.emitter.on('refresh', emitRefresh);\n collection.emitter.on('beforeResultUpdated', emitBeforeResultUpdated);\n\n const disposers = [\n reaction(\n () => {\n const {\n result: { isEmpty, _pages },\n } = collection;\n const unprocessed = _pages.unprocessed.flatMap((page) => page);\n return isEmpty && unprocessed.length > 0;\n },\n (allFilteredOut) => {\n if (allFilteredOut) {\n collection.fetchNextPageIfNeeded();\n }\n },\n ),\n ];\n\n return () => {\n collection.emitter.off('refresh', emitRefresh);\n collection.emitter.off('beforeResultUpdated', emitBeforeResultUpdated);\n disposers.forEach((disposer) => disposer());\n events.emit('unmount');\n };\n }\n\n clear() {\n const { patches } = this.state;\n const remaining = patches.clear();\n for (const patch of remaining) {\n if (!patch.isStale) {\n patches.push(patch);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_CollectionOptimisticActionsState","_CollectionOptimisticProcessor","_CollectionOptimisticPatch","_CollectionOptimisticExecutor","_events","_QueryResultSimulationDefault","_CollectionOptimisticSequenceExecutor","CollectionOptimisticActions","constructor","params","_defineProperty2","default","EventEmitter","action","patch","state","collection","collections","noInvalidate","processors","_commitMode","patches","remove","length","forEach","processorHelpers","commit","invalidate","p","refreshAllPages","events","clearPatch","off","_clearPatch","onRefresh","isStale","once","emit","on","query","sequences","Map","CollectionOptimisticActionsState","source","patchesCache","container","cacheNamespace","resultSimulationDefault","QueryResultSimulationDefault","predicate","orderBy","createdAt","executor","CollectionOptimisticExecutor","batchWait","errorMonitor","showToast","translate","lodash","push","CollectionOptimisticProcessor","optimistic","_optimisticActions","makeObservable","pushPatchAndReprocess","replacePatchAndReprocess","rollback","bound","clear","move","pendingMovePatches","computed","_queryNames","queryName","map","c","hasRunningSequence","Array","from","values","some","s","seq","running","filter","isArray","newPatch","oldPatch","oldPatchIndex","findIndex","createOne","item","createMany","items","itemKey","result","submit","updateServerAfter","onUndo","onTryAgain","onError","optimisticPatchParams","queryCache","queryNames","actionType","patchedItems","originalItems","originalTotal","total","get","selector","has","optimisticPatch","OptimisticPatch","_clearPatchOnNextResultOrUnmount","execute","actions","submitResult","reduce","patchedItemsEntries","key","set","updatedOptimisticPatch","onRollback","eventuallyUpdated","onEventuallyUpdated","updateMany","keepPosition","_result$get","originalItem","enqueueMovePatch","event","filtersKeyHash","_initSequence","CollectionOptimisticSequenceExecutor","err","pendingPatches","_p$move","Error","message","reorderModeCanceledMessage","biName","onClick","sequence","collectionSnapshot","updateOne","updateAll","patchOrFn","originQuery","itemPredicate","updatedAt","Date","deleteMany","deleteOne","deleteAll","initCollection","i","indexOf","splice","init","_patchesBeforeUnmount","emitRefresh","emitBeforeResultUpdated","emitter","disposers","reaction","isEmpty","_pages","unprocessed","flatMap","page","allFilteredOut","fetchNextPageIfNeeded","disposer","toJSON","remaining","exports"],"sources":["../../../src/state/CollectionOptimisticActions.ts"],"sourcesContent":["import { ActionMove, ComputedQuery, FiltersMap, ToastConfig } from '../model';\nimport {\n action,\n computed,\n IObservableArray,\n makeObservable,\n reaction,\n} from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Order } from './QueryResultSimulation';\nimport { CollectionOptimisticActionsState } from './CollectionOptimisticActionsState';\nimport { CollectionOptimisticProcessor } from './CollectionOptimisticProcessor';\nimport {\n OptimisticPatch,\n OptimisticPatchParams,\n} from './CollectionOptimisticPatch';\nimport {\n CollectionOptimisticExecutor,\n EventuallyUpdated,\n} from './CollectionOptimisticExecutor';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { QueryResultSimulationDefault } from './QueryResultSimulationDefault';\nimport { CollectionOptimisticSequenceExecutor } from './CollectionOptimisticSequenceExecutor';\nimport { ModalLayoutProps } from '../services';\nimport { QueryState } from './QueryState';\n\nexport interface OptimisticActionBasis {\n /**\n * Determines whether to display an undo toast before calling the server action.\n * @default false\n * @external\n */\n showUndoToast?: boolean;\n /**\n * Determines whether to display a toast after clicking on undo.\n * @default false\n * @external\n */\n showUndoSuccessToast?: boolean;\n /**\n * Callback function triggered when the user clicks on the undo button.\n * @external\n */\n onUndo?: () => void;\n /**\n * Function to generate error toast to show in case the server fails to perform the action.\n * @external\n */\n errorToast?: (err: unknown) => ToastConfig | string;\n /**\n * Callback function triggered when an error occurs.\n * @external\n */\n onError?: (err: unknown) => void;\n /**\n * Callback function to retry the action.\n * @external\n */\n onTryAgain?: () => void | Promise<void>;\n /**\n * Toast message or configuration to show on successful action.\n * @external\n */\n successToast?: ToastConfig | string;\n /**\n * Indicates when the server is eventually updated.\n * Possible values:\n * - submit: Server updates immediately after the submission promise resolves.\n * - number: Server updates after a specified timeout (in milliseconds).\n * - Promise: Server updates after a forwarded promise resolves.\n * @default submit\n * @external\n */\n updateServerAfter?: EventuallyUpdated;\n}\n\nexport interface UpdateAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n */\n submit: () => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface UpdateManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the update operation.\n * @param items - The items to update.\n */\n submit: (items: T[]) => Promise<R>;\n /**\n * Indicates whether to keep the current position of items after the update.\n */\n keepPosition?: boolean;\n}\n\nexport interface MoveParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the move operation.\n * @param params - The parameters for the move action.\n */\n submit?: (params: ActionMove<T>) => Promise<R>;\n /**\n * Snapshot of the collection before the move operation.\n */\n collectionSnapshot: { [key: string]: string | number | undefined };\n}\n\nexport interface CreateManyParams<T> extends OptimisticActionBasis {\n /**\n * Function to submit the creation operation.\n * @param items - The items to create.\n */\n submit: (items: T[]) => Promise<T[]>;\n}\n\nexport interface DeleteManyParams<T, R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n * @param items - The items to delete.\n */\n submit: (items: T[]) => Promise<R>;\n}\n\nexport interface DeleteAllParams<R> extends OptimisticActionBasis {\n /**\n * Function to submit the deletion operation.\n */\n submit: () => Promise<R>;\n}\n\nexport interface CollectionOptimisticActionsBaseParams<\n T,\n F extends FiltersMap,\n> {\n /**\n * A function that simulates the filtering in the server.\n * The function should return another function that accepts an item, and return a boolean that indicates whether the item passes the query filters or not.\n * @param computedQuery - The computed query object.\n * @external\n */\n readonly predicate?: (\n computedQuery: ComputedQuery<F>,\n ) => (item: T) => boolean;\n /**\n * A function that simulates the ordering of the items in the server.<br>\n * The function should return a list of rules in the form of `{fieldName: string; order: 'asc' | 'desc';}` to order the items by\n * @param computedQuery - The computed query object.\n * @external\n */\n readonly orderBy?: (computedQuery: ComputedQuery<F>) => Order<T>[];\n /**\n * A function to retrieve the creation date of an item.\n * @param item - The item.\n * @external\n */\n readonly createdAt?: (item: T) => Date;\n /**\n * Time to wait before batching multiple `updateMany` calls into a single server call.\n * @default 0\n * @external\n */\n readonly batchWait?: number;\n /**\n * Indicates whether to refresh the current page without invalidating the cache.\n * @external\n */\n readonly noInvalidate?: boolean;\n /**\n * Adds a namespace to the cache key.\n * @external\n */\n readonly cacheNamespace?: string;\n readonly sequences?: Map<string, CollectionOptimisticSequenceExecutor>;\n readonly query?: QueryState<F>;\n}\n\nexport interface CollectionOptimisticActionsParams<T, F extends FiltersMap>\n extends CollectionOptimisticActionsBaseParams<T, F> {\n /**\n * The main collection to reflect changes into.\n * @external\n */\n readonly collection: CollectionState<T, F>;\n /**\n * Additional collections to reflect changes into.\n * @default undefined\n * @external\n */\n readonly collections?: CollectionState<T, F>[];\n /**\n * Container holding patches cache and events emitter.\n * @external\n */\n readonly container: {\n patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n };\n}\n\nexport class CollectionOptimisticActions<T, F extends FiltersMap> {\n readonly collection;\n readonly query;\n readonly collections;\n readonly predicate: (computedQuery: ComputedQuery<F>) => (item: T) => boolean;\n readonly orderBy: (computedQuery: ComputedQuery<F>) => Order<T>[];\n readonly createdAt?: (item: T) => Date;\n readonly events = new EventEmitter() as TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n refresh: (params: { isStale: boolean }) => void;\n unmount: () => void;\n beforeResultUpdated: () => void;\n dragAndDropSequenceError: (params: {\n patches: OptimisticPatch<T>[];\n }) => void;\n dragAndDropSequenceRetry: (params: {\n patches: OptimisticPatch<T>[];\n }) => void;\n }>;\n readonly noInvalidate;\n readonly state;\n readonly processors: CollectionOptimisticProcessor<T, F>[] = [];\n readonly executor: CollectionOptimisticExecutor<OptimisticPatch<T>>;\n readonly sequences;\n readonly resultSimulationDefault;\n readonly reorderModeCanceledMessage = 'REORDER_MODE_CANCELED';\n\n _resumeNavigation: (() => void) | null = null;\n\n _orderByMode: 'orders' | 'moves' = 'orders';\n\n _commitMode = false;\n\n constructor(params: CollectionOptimisticActionsParams<T, F>) {\n this.collection = params.collection;\n this.query = params.query ?? this.collection.query;\n this.collections = params.collections ?? [];\n\n this.sequences =\n params.sequences ??\n new Map<string, CollectionOptimisticSequenceExecutor>();\n\n this.state = new CollectionOptimisticActionsState<T>({\n source: this.collection,\n patchesCache: params.container.patchesCache,\n cacheNamespace: params.cacheNamespace,\n });\n\n this.resultSimulationDefault = new QueryResultSimulationDefault({\n collection: this.collection,\n });\n\n this.predicate = params.predicate ?? this.resultSimulationDefault.predicate;\n this.orderBy = params.orderBy ?? this.resultSimulationDefault.orderBy;\n this.createdAt = params.createdAt;\n this.noInvalidate = params.noInvalidate;\n\n this.executor = new CollectionOptimisticExecutor({\n batchWait: params.batchWait ?? 0,\n errorMonitor: this.collection.errorMonitor,\n showToast: this.collection.showToast,\n translate: this.collection.translate,\n lodash: this.collection.lodash,\n container: params.container,\n });\n\n this.processors.push(\n new CollectionOptimisticProcessor({\n ...params,\n optimistic: this,\n }),\n );\n\n if (params.collections != null) {\n params.collections.forEach((collection) => {\n this.processors.push(\n new CollectionOptimisticProcessor({\n ...params,\n collection,\n optimistic: this,\n }),\n );\n });\n }\n\n this.collection._optimisticActions = this;\n\n makeObservable(this, {\n pushPatchAndReprocess: action,\n replacePatchAndReprocess: action,\n rollback: action.bound,\n clear: action,\n move: action,\n pendingMovePatches: computed,\n });\n }\n\n get _queryNames() {\n return [\n this.collection.queryName,\n ...this.collections.map((c) => c.queryName),\n ];\n }\n\n get hasRunningSequence() {\n return Array.from(this.sequences.values()).some((s) => s.seq.state.running);\n }\n\n get pendingMovePatches() {\n return this.state.patches.filter((p) => p.move);\n }\n\n rollback(patch: OptimisticPatch<T> | OptimisticPatch<T>[]) {\n const { events, state } = this;\n const patches = Array.isArray(patch) ? patch : [patch];\n\n for (const p of patches) {\n state.patches.remove(p);\n }\n\n events.emit('reprocess');\n }\n\n private _clearPatch = action((patch: OptimisticPatch<T>) => {\n const {\n state,\n collection,\n collections,\n noInvalidate,\n processors,\n _commitMode,\n } = this;\n\n if (noInvalidate) {\n return;\n }\n\n state.patches.remove(patch);\n if (_commitMode && !state.patches.length) {\n processors.forEach(({ processorHelpers }) => processorHelpers.commit());\n }\n collection.invalidate();\n collections.forEach((p) => p.refreshAllPages());\n });\n\n _clearPatchOnNextResultOrUnmount = (patch: OptimisticPatch<T>) => {\n const { events } = this;\n\n const clearPatch = () => {\n events.off('unmount', clearPatch);\n this._clearPatch(patch);\n };\n\n const onRefresh = ({ isStale }: { isStale: boolean }) => {\n events.off('refresh', onRefresh);\n\n // clear only when results are not going to come from cache\n if (isStale) {\n events.once('beforeResultUpdated', clearPatch);\n }\n };\n\n events.emit('updated');\n\n if (this._commitMode) {\n this._clearPatch(patch);\n } else {\n // Clear the patch on the next collection result update to eliminate inconsistencies between server state and local patches\n events.on('refresh', onRefresh);\n // since not clearing the patch immediately, clear it on unmount if was not cleared yet\n events.on('unmount', clearPatch);\n }\n };\n\n pushPatchAndReprocess(patch: OptimisticPatch<T> | OptimisticPatch<T>[]) {\n const { state, events } = this;\n const patches = Array.isArray(patch) ? patch : [patch];\n state.patches.push(...patches);\n events.emit('reprocess');\n }\n\n replacePatchAndReprocess(\n newPatch: OptimisticPatch<T>,\n oldPatch: OptimisticPatch<T>,\n ) {\n const { state, events } = this;\n\n const oldPatchIndex = state.patches.findIndex(\n (patch) => patch === oldPatch,\n );\n state.patches[oldPatchIndex] = newPatch;\n events.emit('reprocess');\n }\n\n /**\n * Creates a single item in the collection.\n * @param item - The item to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createOne(item: T, params: CreateManyParams<T>) {\n this.createMany([item], params);\n }\n\n /**\n * Creates multiple items in the collection.\n * @param items - The items to create.\n * @param params - Additional parameters for the operation.\n * @external\n */\n createMany(items: T[], params: CreateManyParams<T>) {\n const { collection, executor } = this;\n const { itemKey, result } = collection;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n\n const optimisticPatchParams: OptimisticPatchParams<T> = {\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches: this.state.patches,\n actionType: 'createMany',\n patchedItems: new Map(items.map((item) => [itemKey(item), item])),\n originalItems: new Map(),\n originalTotal: result.total,\n patch: (item, { patchedItems }) => patchedItems.get(itemKey(item)),\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n };\n\n const optimisticPatch = new OptimisticPatch<T>(optimisticPatchParams);\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n return executor.execute([optimisticPatch], {\n ...params,\n submit: action(async (actions) => {\n const submitResult = await submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'createMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n );\n\n const updatedOptimisticPatch = new OptimisticPatch({\n ...optimisticPatchParams,\n patchedItems: new Map(\n submitResult.map((item) => [itemKey(item), item]),\n ),\n });\n\n this.replacePatchAndReprocess(updatedOptimisticPatch, optimisticPatch);\n this._clearPatchOnNextResultOrUnmount(updatedOptimisticPatch);\n return submitResult;\n }),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Updates multiple items in the collection.\n * @param items - The items to update.\n * @param params - Additional parameters for the update operation.\n * @external\n */\n updateMany<R>(items: T[], params: UpdateManyParams<T, R>) {\n const { executor, collection } = this;\n const { itemKey, result } = collection;\n const {\n submit,\n updateServerAfter,\n keepPosition,\n onUndo,\n onTryAgain,\n onError,\n } = params;\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches: this.state.patches,\n actionType: 'updateMany',\n keepPosition,\n patchedItems: new Map(items.map((item) => [itemKey(item), item])),\n originalItems: new Map(\n items.map((item) => {\n const key = itemKey(item);\n const originalItem = result.get(itemKey(item))?.item ?? item;\n return [key, originalItem];\n }),\n ),\n originalTotal: result.total,\n patch: (item, { patchedItems }) => patchedItems.get(itemKey(item)),\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n return executor.execute([optimisticPatch], {\n ...params,\n submit: action((actions) =>\n submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'updateMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n ),\n ),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n enqueueMovePatch<R>(\n optimisticPatch: OptimisticPatch<T>,\n params: MoveParams<T, R>,\n ) {\n const { submit, onTryAgain } = params;\n const { collection, state, events } = this;\n const { patches } = state;\n\n const event = optimisticPatch.move;\n\n if (event == null) {\n return;\n }\n\n const { filtersKeyHash } = event;\n\n const _initSequence = () => {\n const { sequences } = this;\n const seq =\n sequences.get(filtersKeyHash) ??\n new CollectionOptimisticSequenceExecutor({\n showToast: collection.showToast,\n translate: collection.translate,\n errorMonitor: collection.errorMonitor,\n onRollback: (err) => {\n const pendingPatches = patches.filter(\n (p) => p.move?.filtersKeyHash === filtersKeyHash,\n );\n this.rollback(pendingPatches);\n\n if (\n err instanceof Error &&\n err.message === this.reorderModeCanceledMessage\n ) {\n executor.seq.clear();\n return;\n }\n\n events.emit('dragAndDropSequenceError', {\n patches: pendingPatches,\n });\n executor.seq.clear();\n return {\n message: collection.translate('cairo.dragAndDrop.error.toast'),\n biName: 'cairo-drag-and-drop-submit-error',\n action: {\n onClick: async () => {\n this.pushPatchAndReprocess(pendingPatches);\n for (const p of pendingPatches) {\n this.enqueueMovePatch(p, params);\n }\n events.emit('dragAndDropSequenceRetry', {\n patches: pendingPatches,\n });\n\n await onTryAgain?.();\n },\n },\n };\n },\n });\n\n if (!sequences.has(filtersKeyHash)) {\n sequences.set(filtersKeyHash, seq);\n }\n\n return seq;\n };\n\n const executor = _initSequence();\n\n executor.sequence({\n submit: () => submit?.(event),\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n });\n }\n\n async move<R>(event: ActionMove<T>, params: MoveParams<T, R>) {\n const { collection, state } = this;\n const { itemKey, result } = collection;\n const { patches } = state;\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n queryNames: this._queryNames,\n patches,\n actionType: 'move',\n patchedItems: new Map(),\n originalItems: new Map(),\n originalTotal: result.total,\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n move: event,\n collectionSnapshot: params.collectionSnapshot,\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n this.enqueueMovePatch(optimisticPatch, params);\n }\n\n /**\n * Updates a single item in the collection.\n * @param item - The item to update.\n * @param params - Additional parameters for the operation.\n * @external\n */\n updateOne<R>(item: T, params: UpdateManyParams<T, R>) {\n return this.updateMany([item], params);\n }\n\n /**\n * > `updateAll(fn)` API is not recommended as it's not possible to calculate \"optimistic total\", prefer updateAll(patchObject) API if possible.\n * Updates all items in the collection based on a function or a patch object.\n * @param patchOrFn - A function or a patch object to apply to each item.\n * @param params - Additional parameters for the operation.\n */\n updateAll<R>(\n patchOrFn: (item: T) => Partial<T>,\n params: UpdateAllParams<R>,\n ): void;\n\n /**\n * Updates all items in the collection based on a patch object.\n * @param patch - A patch object to apply to each item.\n * @param params - Additional parameters for the operation.\n * @external\n */\n updateAll<R>(patch: Partial<T>, params: UpdateAllParams<R>): void;\n\n updateAll<R>(\n patchOrFn: ((item: T) => Partial<T>) | Partial<T>,\n params: UpdateAllParams<R>,\n ) {\n const { executor, collection, predicate, createdAt } = this;\n const {\n submit,\n updateServerAfter,\n keepPosition,\n onUndo,\n onTryAgain,\n onError,\n } = params;\n const {\n itemKey,\n result: { originQuery, items, total },\n } = collection;\n\n const itemPredicate = predicate(originQuery);\n\n const updatedAt = new Date();\n\n const { patch, actionType } =\n typeof patchOrFn === 'function'\n ? { actionType: 'updateAll' as const, patch: patchOrFn }\n : {\n actionType: 'updateAllConst' as const,\n patch: (item: T) => ({ ...item, ...patchOrFn }),\n };\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n patches: this.state.patches,\n actionType,\n keepPosition,\n queryNames: this._queryNames,\n patchedItems: new Map(\n items.map((item) => [itemKey(item), { ...item, ...patch(item) }]),\n ),\n originalItems: new Map(items.map((item) => [itemKey(item), item])),\n originalTotal: total,\n selector: (item) =>\n itemPredicate(item) &&\n (createdAt == null || createdAt(item) <= updatedAt),\n patch,\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n executor.execute([optimisticPatch], {\n ...params,\n submit,\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Deletes multiple items from the collection.\n * @param items - An array of items to delete.\n * @param params - Additional parameters for the delete operation.\n * @external\n */\n deleteMany<R>(items: T[], params: DeleteManyParams<T, R>) {\n const { executor, collection } = this;\n const {\n itemKey,\n result: { total },\n } = collection;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n\n const patchedItems = new Map(items.map((item) => [itemKey(item), item]));\n\n const optimisticPatch = new OptimisticPatch({\n queryCache: collection.queryCache,\n patches: this.state.patches,\n actionType: 'deleteMany',\n patchedItems,\n queryNames: this._queryNames,\n originalItems: patchedItems,\n originalTotal: total,\n selector: (item, { patchedItems }) => patchedItems.has(itemKey(item)),\n });\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n executor.execute([optimisticPatch], {\n ...params,\n submit: action((actions) =>\n submit(\n Array.from(\n actions\n .filter(({ actionType }) => actionType === 'deleteMany')\n .reduce((map, { patchedItemsEntries }) => {\n for (const [key, item] of patchedItemsEntries) {\n map.set(key, item);\n }\n return map;\n }, new Map<string, T>())\n .values(),\n ),\n ),\n ),\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n /**\n * Deletes a single item from the collection.\n * @param item - The item to delete.\n * @param params - Additional parameters for the operation.\n * @external\n */\n deleteOne<R>(item: T, params: DeleteManyParams<T, R>) {\n return this.deleteMany([item], params);\n }\n\n /**\n * Deletes all items from the collection.\n * @param params - Additional parameters for the operation.\n * @external\n */\n deleteAll<R>(params: UpdateAllParams<R>) {\n const { executor, collection, predicate, createdAt } = this;\n const { submit, updateServerAfter, onUndo, onTryAgain, onError } = params;\n const {\n itemKey,\n result: { originQuery, items, total },\n } = collection;\n\n const itemPredicate = predicate(originQuery);\n\n const updatedAt = new Date();\n\n const patchedItems = new Map(items.map((item) => [itemKey(item), item]));\n\n const optimisticPatch = new OptimisticPatch({\n patches: this.state.patches,\n queryCache: collection.queryCache,\n actionType: 'deleteAll',\n patchedItems,\n queryNames: this._queryNames,\n originalItems: patchedItems,\n originalTotal: total,\n selector: (item) =>\n itemPredicate(item) &&\n (createdAt == null || createdAt(item) <= updatedAt),\n });\n\n optimisticPatch.events.on(\n 'scheduleRemoval',\n this._clearPatchOnNextResultOrUnmount,\n );\n\n this.pushPatchAndReprocess(optimisticPatch);\n\n executor.execute([optimisticPatch], {\n ...params,\n submit,\n onRollback: () => {\n this.rollback(optimisticPatch);\n },\n eventuallyUpdated: updateServerAfter,\n onEventuallyUpdated: optimisticPatch.onEventuallyUpdated,\n onTryAgain: async () => {\n this.pushPatchAndReprocess(optimisticPatch);\n await onTryAgain?.();\n },\n onError,\n onUndo,\n });\n }\n\n initCollection(collection: CollectionState<T, F>) {\n this.collections.push(collection);\n new CollectionOptimisticProcessor({\n collection,\n optimistic: this,\n orderBy: this.orderBy,\n predicate: this.predicate,\n });\n\n return () => {\n const i = this.collections.indexOf(collection);\n if (i !== -1) {\n this.collections.splice(i, 1);\n }\n };\n }\n\n init() {\n const { collection, events } = this;\n\n // The only case when this.state._patchesBeforeUnmount won't be null -\n // when the state was cached with patterns router, so we want to restore the patches that were existed before the unmount\n if (this.state._patchesBeforeUnmount) {\n this.state.patches.clear();\n this.state.patches.push(...this.state._patchesBeforeUnmount);\n }\n\n const emitRefresh = (params: { isStale: boolean }) => {\n events.emit('refresh', params);\n };\n const emitBeforeResultUpdated = () => events.emit('beforeResultUpdated');\n\n collection.emitter.on('refresh', emitRefresh);\n collection.emitter.on('beforeResultUpdated', emitBeforeResultUpdated);\n\n const disposers = [\n reaction(\n () => {\n const {\n result: { isEmpty, _pages },\n } = collection;\n const unprocessed = _pages.unprocessed.flatMap((page) => page);\n return isEmpty && unprocessed.length > 0;\n },\n (allFilteredOut) => {\n if (allFilteredOut) {\n collection.fetchNextPageIfNeeded();\n }\n },\n ),\n ];\n\n return () => {\n collection.emitter.off('refresh', emitRefresh);\n collection.emitter.off('beforeResultUpdated', emitBeforeResultUpdated);\n disposers.forEach((disposer) => disposer());\n this.state._patchesBeforeUnmount = this.state.patches.toJSON();\n events.emit('unmount');\n };\n }\n\n clear() {\n const { patches } = this.state;\n const remaining = patches.clear();\n for (const patch of remaining) {\n if (!patch.isStale) {\n patches.push(patch);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ var _mobx = require("mobx");
8
8
  class CollectionOptimisticActionsState {
9
9
  constructor(params) {
10
10
  (0, _defineProperty2.default)(this, "patches", void 0);
11
+ (0, _defineProperty2.default)(this, "_patchesBeforeUnmount", null);
11
12
  const {
12
13
  source: {
13
14
  queryName
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(queryName, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAG/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7D,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACZ,SAAS,EAAEO,OAAO,CAAC;IACtC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n _patchesBeforeUnmount: OptimisticPatch<T>[] | null = null;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(queryName, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAK/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iCAFV,IAAI;IAGvD,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACZ,SAAS,EAAEO,OAAO,CAAC;IACtC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA","ignoreList":[]}
@@ -14,7 +14,7 @@ class CollectionPageState {
14
14
  (0, _defineProperty2.default)(this, "hasHeader", false);
15
15
  (0, _defineProperty2.default)(this, "total", false);
16
16
  (0, _defineProperty2.default)(this, "hideHeaderTotal", false);
17
- (0, _defineProperty2.default)(this, "scrollTopBeforeUnmount", 0);
17
+ (0, _defineProperty2.default)(this, "scrollTopBeforeUnmount", null);
18
18
  (0, _defineProperty2.default)(this, "bi", void 0);
19
19
  (0, _defineProperty2.default)(this, "pageState", new _PageState.PageState());
20
20
  this.pageTitle = params.pageTitle;
@@ -41,10 +41,14 @@ class CollectionPageState {
41
41
  return () => {};
42
42
  }
43
43
  const disposer = (0, _resizeObserverCompat.addResizeObserver)(scrollableContent, () => {
44
+ if (this.scrollTopBeforeUnmount === null) {
45
+ return;
46
+ }
44
47
  if (scrollableContent.scrollHeight >= this.scrollTopBeforeUnmount) {
45
48
  scrollableContent.scrollTo({
46
49
  top: this.scrollTopBeforeUnmount
47
50
  });
51
+ this.scrollTopBeforeUnmount = null;
48
52
  }
49
53
  });
50
54
  (_this$bi2 = this.bi) == null || _this$bi2.appLoaded == null || _this$bi2.appLoaded();
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_PageState","_resizeObserverCompat","_CollectionPageStateBIReporter","CollectionPageState","constructor","params","_defineProperty2","default","PageState","pageTitle","hasHeader","hideHeaderTotal","reportBI","bi","CollectionPageStateBIReporter","collectionPageState","makeObservable","observable","ref","total","init","_this$bi","_this$bi2","scrollableContent","pageState","scrollableContentRef","current","disposer","addResizeObserver","scrollHeight","scrollTopBeforeUnmount","scrollTo","top","appLoaded","exports"],"sources":["../../../../src/state/CollectionPageState/CollectionPageState.ts"],"sourcesContent":["import { makeObservable, observable } from 'mobx';\nimport { PageState } from '../PageState';\nimport { addResizeObserver } from '../resizeObserverCompat';\nimport { CollectionPageStateBIReporter } from './CollectionPageStateBIReporter';\nimport { ReportBI } from '../../services';\n\nexport interface CollectionPageStateParams {\n pageTitle?: string;\n hasHeader?: boolean;\n hideHeaderTotal?: boolean;\n reportBI?: ReportBI;\n}\n\nexport class CollectionPageState {\n pageTitle?: string;\n hasHeader?: boolean = false;\n total?: number | boolean = false;\n hideHeaderTotal?: boolean = false;\n scrollTopBeforeUnmount = 0;\n\n readonly bi?: CollectionPageStateBIReporter;\n\n readonly pageState = new PageState();\n\n constructor(params: CollectionPageStateParams) {\n this.pageTitle = params.pageTitle;\n this.hasHeader = params.hasHeader;\n this.hideHeaderTotal = params.hideHeaderTotal;\n\n if (params.reportBI) {\n this.bi = new CollectionPageStateBIReporter({\n reportBI: params.reportBI,\n collectionPageState: this,\n });\n }\n makeObservable(this, {\n pageTitle: observable.ref,\n hasHeader: observable.ref,\n hideHeaderTotal: observable.ref,\n total: observable.ref,\n });\n }\n\n init() {\n this.bi?.init();\n\n const scrollableContent = this.pageState.scrollableContentRef.current;\n if (!scrollableContent) {\n return () => {};\n }\n\n const disposer = addResizeObserver(scrollableContent, () => {\n if (scrollableContent.scrollHeight >= this.scrollTopBeforeUnmount) {\n scrollableContent.scrollTo({\n top: this.scrollTopBeforeUnmount,\n });\n }\n });\n this.bi?.appLoaded?.();\n\n return () => {\n disposer?.();\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,8BAAA,GAAAH,OAAA;AAUO,MAAMI,mBAAmB,CAAC;EAW/BC,WAAWA,CAACC,MAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBATzB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBACA,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BACJ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kCACR,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBAIL,IAAIC,oBAAS,CAAC,CAAC;IAGlC,IAAI,CAACC,SAAS,GAAGJ,MAAM,CAACI,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe;IAE7C,IAAIN,MAAM,CAACO,QAAQ,EAAE;MACnB,IAAI,CAACC,EAAE,GAAG,IAAIC,4DAA6B,CAAC;QAC1CF,QAAQ,EAAEP,MAAM,CAACO,QAAQ;QACzBG,mBAAmB,EAAE;MACvB,CAAC,CAAC;IACJ;IACA,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBP,SAAS,EAAEQ,gBAAU,CAACC,GAAG;MACzBR,SAAS,EAAEO,gBAAU,CAACC,GAAG;MACzBP,eAAe,EAAEM,gBAAU,CAACC,GAAG;MAC/BC,KAAK,EAAEF,gBAAU,CAACC;IACpB,CAAC,CAAC;EACJ;EAEAE,IAAIA,CAAA,EAAG;IAAA,IAAAC,QAAA,EAAAC,SAAA;IACL,CAAAD,QAAA,OAAI,CAACR,EAAE,aAAPQ,QAAA,CAASD,IAAI,CAAC,CAAC;IAEf,MAAMG,iBAAiB,GAAG,IAAI,CAACC,SAAS,CAACC,oBAAoB,CAACC,OAAO;IACrE,IAAI,CAACH,iBAAiB,EAAE;MACtB,OAAO,MAAM,CAAC,CAAC;IACjB;IAEA,MAAMI,QAAQ,GAAG,IAAAC,uCAAiB,EAACL,iBAAiB,EAAE,MAAM;MAC1D,IAAIA,iBAAiB,CAACM,YAAY,IAAI,IAAI,CAACC,sBAAsB,EAAE;QACjEP,iBAAiB,CAACQ,QAAQ,CAAC;UACzBC,GAAG,EAAE,IAAI,CAACF;QACZ,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IACF,CAAAR,SAAA,OAAI,CAACT,EAAE,aAAPS,SAAA,CAASW,SAAS,YAAlBX,SAAA,CAASW,SAAS,CAAG,CAAC;IAEtB,OAAO,MAAM;MACXN,QAAQ,YAARA,QAAQ,CAAG,CAAC;IACd,CAAC;EACH;AACF;AAACO,OAAA,CAAA/B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_PageState","_resizeObserverCompat","_CollectionPageStateBIReporter","CollectionPageState","constructor","params","_defineProperty2","default","PageState","pageTitle","hasHeader","hideHeaderTotal","reportBI","bi","CollectionPageStateBIReporter","collectionPageState","makeObservable","observable","ref","total","init","_this$bi","_this$bi2","scrollableContent","pageState","scrollableContentRef","current","disposer","addResizeObserver","scrollTopBeforeUnmount","scrollHeight","scrollTo","top","appLoaded","exports"],"sources":["../../../../src/state/CollectionPageState/CollectionPageState.ts"],"sourcesContent":["import { makeObservable, observable } from 'mobx';\nimport { PageState } from '../PageState';\nimport { addResizeObserver } from '../resizeObserverCompat';\nimport { CollectionPageStateBIReporter } from './CollectionPageStateBIReporter';\nimport { ReportBI } from '../../services';\n\nexport interface CollectionPageStateParams {\n pageTitle?: string;\n hasHeader?: boolean;\n hideHeaderTotal?: boolean;\n reportBI?: ReportBI;\n}\n\nexport class CollectionPageState {\n pageTitle?: string;\n hasHeader?: boolean = false;\n total?: number | boolean = false;\n hideHeaderTotal?: boolean = false;\n scrollTopBeforeUnmount: number | null = null;\n\n readonly bi?: CollectionPageStateBIReporter;\n\n readonly pageState = new PageState();\n\n constructor(params: CollectionPageStateParams) {\n this.pageTitle = params.pageTitle;\n this.hasHeader = params.hasHeader;\n this.hideHeaderTotal = params.hideHeaderTotal;\n\n if (params.reportBI) {\n this.bi = new CollectionPageStateBIReporter({\n reportBI: params.reportBI,\n collectionPageState: this,\n });\n }\n makeObservable(this, {\n pageTitle: observable.ref,\n hasHeader: observable.ref,\n hideHeaderTotal: observable.ref,\n total: observable.ref,\n });\n }\n\n init() {\n this.bi?.init();\n\n const scrollableContent = this.pageState.scrollableContentRef.current;\n if (!scrollableContent) {\n return () => {};\n }\n\n const disposer = addResizeObserver(scrollableContent, () => {\n if (this.scrollTopBeforeUnmount === null) {\n return;\n }\n if (scrollableContent.scrollHeight >= this.scrollTopBeforeUnmount) {\n scrollableContent.scrollTo({\n top: this.scrollTopBeforeUnmount,\n });\n this.scrollTopBeforeUnmount = null;\n }\n });\n this.bi?.appLoaded?.();\n\n return () => {\n disposer?.();\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,8BAAA,GAAAH,OAAA;AAUO,MAAMI,mBAAmB,CAAC;EAW/BC,WAAWA,CAACC,MAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBATzB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBACA,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BACJ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kCACO,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBAIvB,IAAIC,oBAAS,CAAC,CAAC;IAGlC,IAAI,CAACC,SAAS,GAAGJ,MAAM,CAACI,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe;IAE7C,IAAIN,MAAM,CAACO,QAAQ,EAAE;MACnB,IAAI,CAACC,EAAE,GAAG,IAAIC,4DAA6B,CAAC;QAC1CF,QAAQ,EAAEP,MAAM,CAACO,QAAQ;QACzBG,mBAAmB,EAAE;MACvB,CAAC,CAAC;IACJ;IACA,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBP,SAAS,EAAEQ,gBAAU,CAACC,GAAG;MACzBR,SAAS,EAAEO,gBAAU,CAACC,GAAG;MACzBP,eAAe,EAAEM,gBAAU,CAACC,GAAG;MAC/BC,KAAK,EAAEF,gBAAU,CAACC;IACpB,CAAC,CAAC;EACJ;EAEAE,IAAIA,CAAA,EAAG;IAAA,IAAAC,QAAA,EAAAC,SAAA;IACL,CAAAD,QAAA,OAAI,CAACR,EAAE,aAAPQ,QAAA,CAASD,IAAI,CAAC,CAAC;IAEf,MAAMG,iBAAiB,GAAG,IAAI,CAACC,SAAS,CAACC,oBAAoB,CAACC,OAAO;IACrE,IAAI,CAACH,iBAAiB,EAAE;MACtB,OAAO,MAAM,CAAC,CAAC;IACjB;IAEA,MAAMI,QAAQ,GAAG,IAAAC,uCAAiB,EAACL,iBAAiB,EAAE,MAAM;MAC1D,IAAI,IAAI,CAACM,sBAAsB,KAAK,IAAI,EAAE;QACxC;MACF;MACA,IAAIN,iBAAiB,CAACO,YAAY,IAAI,IAAI,CAACD,sBAAsB,EAAE;QACjEN,iBAAiB,CAACQ,QAAQ,CAAC;UACzBC,GAAG,EAAE,IAAI,CAACH;QACZ,CAAC,CAAC;QACF,IAAI,CAACA,sBAAsB,GAAG,IAAI;MACpC;IACF,CAAC,CAAC;IACF,CAAAP,SAAA,OAAI,CAACT,EAAE,aAAPS,SAAA,CAASW,SAAS,YAAlBX,SAAA,CAASW,SAAS,CAAG,CAAC;IAEtB,OAAO,MAAM;MACXN,QAAQ,YAARA,QAAQ,CAAG,CAAC;IACd,CAAC;EACH;AACF;AAACO,OAAA,CAAA/B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -173,7 +173,7 @@ class QueryResultState {
173
173
  const {
174
174
  itemKey,
175
175
  _keyedItemsMap,
176
- pages,
176
+ _pages,
177
177
  _pagesAtom
178
178
  } = this;
179
179
  const updates = [];
@@ -185,12 +185,18 @@ class QueryResultState {
185
185
  pageIndex,
186
186
  indexWithinPage
187
187
  } = keyedItem;
188
- const page = pages[pageIndex];
188
+ const processedPage = _pages.processed[pageIndex];
189
189
  // this mutates react-query cache since `page` is the same reference of the cached data
190
190
  // this behavior is intentional because the strategy is to assume the server will be update correctly in the next invalidation
191
191
  // until then, we simulate locally (cache) what we expect the server state eventually to be
192
- const prevItem = page[indexWithinPage];
193
- page[indexWithinPage] = newItem;
192
+ const prevItem = processedPage[indexWithinPage];
193
+ processedPage[indexWithinPage] = newItem;
194
+ _pages.unprocessed.forEach(page => {
195
+ const itemIndex = page.findIndex(item => itemKey(item) === key);
196
+ if (itemIndex !== -1) {
197
+ page[itemIndex] = newItem;
198
+ }
199
+ });
194
200
  updates.push({
195
201
  prevItem,
196
202
  newItem
@@ -207,19 +213,16 @@ class QueryResultState {
207
213
  }
208
214
  addItems(newItems) {
209
215
  const {
210
- pages,
216
+ _pages,
211
217
  _pagesAtom
212
218
  } = this;
213
- pages[0].unshift(...newItems);
219
+ _pages.processed = [newItems, ..._pages.processed];
220
+ _pages.unprocessed = [newItems, ..._pages.unprocessed];
214
221
  _pagesAtom.reportChanged();
215
222
  return {
216
223
  rollback: () => {
217
- newItems.forEach(item => {
218
- const newItemIndex = pages[0].indexOf(item);
219
- if (newItemIndex !== -1) {
220
- pages[0].splice(newItemIndex, 1);
221
- }
222
- });
224
+ _pages.processed = _pages.processed.slice(1);
225
+ _pages.unprocessed = _pages.unprocessed.slice(1);
223
226
  _pagesAtom.reportChanged();
224
227
  }
225
228
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_model","require","_mobx","_flatMap","_interopRequireDefault","QueryResultState","pages","_pagesAtom","reportObserved","_pages","processed","constructor","params","_defineProperty2","default","createAtom","unprocessed","Map","queryStatus","idle","error","isFetching","action","reportChanged","itemKey","originQuery","makeObservable","items","computed","keepAlive","keyedItems","size","itemsKeys","fetchedAll","isEmptyAndNotFetching","asComputed","total","hasAvailableItems","_totals","observable","ref","_supportTotal","setTotals","available","status","changeItems","slice","errorStatus","isError","currentIndex","flatMap","page","pageIndex","map","item","indexWithinPage","key","id","index","isSuccess","length","isEmpty","supportTotal","isLoading","get","_keyedItemsMap","has","createRollbackFn","updates","newItem","prevItem","keyedItem","newItems","push","rollback","undefined","addItems","unshift","forEach","newItemIndex","indexOf","splice","calcKeyedItemsMap","clear","set","setNewPages","addPages","morePages","totals","setSupportTotal","setPages","start","end","hasNonPersistentActiveFilters","exports"],"sources":["../../../src/state/QueryResultState.ts"],"sourcesContent":["import {\n ComputedQueryFull,\n DataResultKeyed,\n FiltersMap,\n KeyedItem,\n QueryResult,\n QueryResultStatus,\n queryStatus,\n} from '../model';\nimport { action, computed, createAtom, makeObservable, observable } from 'mobx';\nimport flatMap from 'lodash/flatMap';\n\ninterface ProcessedResult<T> {\n processed: T;\n unprocessed: T;\n}\n\ntype Pages<T> = ProcessedResult<T[][]>;\ntype Totals = ProcessedResult<number>;\n\nexport interface QueryResultStateParams<T, F extends FiltersMap> {\n itemKey: (item: T) => string;\n originQuery: ComputedQueryFull<F>;\n}\n\nexport class QueryResultState<T, F extends FiltersMap>\n implements QueryResult<T>\n{\n readonly itemKey: (item: T) => string;\n\n readonly _pagesAtom = createAtom('QueryResultState.pages');\n _pages: Pages<T> = { processed: [], unprocessed: [] };\n _totals: Totals = { processed: 0, unprocessed: 0 };\n _supportTotal: boolean = false;\n readonly _keyedItemsMap: Map<string, KeyedItem<T>> = new Map();\n\n get pages() {\n this._pagesAtom.reportObserved();\n return this._pages.processed;\n }\n\n available: number | null = null;\n status: QueryResultStatus<DataResultKeyed<T>, unknown> = {\n ...queryStatus.idle,\n error: null,\n isFetching: false,\n };\n originQuery: ComputedQueryFull<F>;\n\n constructor(params: QueryResultStateParams<T, F>) {\n this.itemKey = params.itemKey;\n this.originQuery = params.originQuery;\n\n makeObservable(this, {\n items: computed({\n keepAlive: true,\n }),\n keyedItems: computed({\n keepAlive: true,\n }),\n pages: computed,\n size: computed,\n itemsKeys: computed,\n fetchedAll: computed,\n isFetching: computed,\n isEmptyAndNotFetching: computed,\n asComputed: computed,\n total: computed,\n\n hasAvailableItems: computed,\n _totals: observable.ref,\n _supportTotal: observable.ref,\n setTotals: action,\n available: observable.ref,\n status: observable.ref,\n originQuery: observable.ref,\n changeItems: action,\n slice: action,\n });\n }\n\n get errorStatus() {\n const { status } = this;\n return status.isError ? status : null;\n }\n\n private setNewPages = action((pages: Pages<T>) => {\n this._pages = pages;\n this._pagesAtom.reportChanged();\n });\n\n get keyedItems(): KeyedItem<T>[] {\n this._pagesAtom.reportObserved();\n const { pages, itemKey } = this;\n let currentIndex = 0;\n return flatMap(pages, (page, pageIndex) => {\n return page.map((item, indexWithinPage) => {\n const key = itemKey(item);\n return {\n key,\n id: key,\n item,\n index: currentIndex++,\n pageIndex,\n indexWithinPage,\n };\n });\n });\n }\n\n get itemsKeys() {\n return this.keyedItems.map(({ key }) => key);\n }\n\n get isEmptyAndNotFetching() {\n const { status, keyedItems } = this;\n return status.isSuccess && !status.isFetching && !keyedItems.length;\n }\n\n get isEmpty() {\n const { keyedItems } = this;\n return keyedItems.length === 0;\n }\n\n get items(): T[] {\n this._pagesAtom.reportObserved();\n const { pages } = this;\n return flatMap(pages);\n }\n\n get total() {\n return this._totals.processed;\n }\n\n get supportTotal() {\n return this._supportTotal;\n }\n\n get fetchedAll() {\n const { status, items, total } = this;\n return !status.isLoading && total <= items.length;\n }\n\n get isFetching() {\n return this.status.isFetching;\n }\n\n get(key: string) {\n this._pagesAtom.reportObserved();\n return this._keyedItemsMap.get(key);\n }\n\n has(key: string) {\n return this._keyedItemsMap.has(key);\n }\n\n private createRollbackFn(updates: { prevItem: T; newItem: T }[]) {\n return () => {\n const { itemKey, _keyedItemsMap, pages } = this;\n for (const { newItem, prevItem } of updates) {\n const key = itemKey(newItem);\n const keyedItem = _keyedItemsMap.get(key);\n // the current item is still the one that was recently updated\n if (keyedItem != null) {\n const { pageIndex, indexWithinPage } = keyedItem;\n const page = pages[pageIndex];\n if (page[indexWithinPage] === newItem) {\n this.changeItems([prevItem]);\n return true;\n }\n }\n }\n\n return false;\n };\n }\n\n changeItems(newItems: T[]) {\n const { itemKey, _keyedItemsMap, pages, _pagesAtom } = this;\n const updates: { prevItem: T; newItem: T }[] = [];\n for (const newItem of newItems) {\n const key = itemKey(newItem);\n const keyedItem = _keyedItemsMap.get(key);\n if (keyedItem != null) {\n const { pageIndex, indexWithinPage } = keyedItem;\n const page = pages[pageIndex];\n // this mutates react-query cache since `page` is the same reference of the cached data\n // this behavior is intentional because the strategy is to assume the server will be update correctly in the next invalidation\n // until then, we simulate locally (cache) what we expect the server state eventually to be\n const prevItem = page[indexWithinPage];\n page[indexWithinPage] = newItem;\n\n updates.push({ prevItem, newItem });\n }\n }\n\n if (updates.length) {\n _pagesAtom.reportChanged();\n\n return {\n rollback: this.createRollbackFn(updates),\n };\n }\n\n return undefined;\n }\n\n addItems(newItems: T[]) {\n const { pages, _pagesAtom } = this;\n pages[0].unshift(...newItems);\n _pagesAtom.reportChanged();\n\n return {\n rollback: () => {\n newItems.forEach((item) => {\n const newItemIndex = pages[0].indexOf(item);\n if (newItemIndex !== -1) {\n pages[0].splice(newItemIndex, 1);\n }\n });\n _pagesAtom.reportChanged();\n },\n };\n }\n\n private calcKeyedItemsMap() {\n const { keyedItems, _keyedItemsMap } = this;\n _keyedItemsMap.clear();\n for (const keyedItem of keyedItems) {\n _keyedItemsMap.set(keyedItem.key, keyedItem);\n }\n }\n\n clear() {\n this.setNewPages({ processed: [], unprocessed: [] });\n this._keyedItemsMap.clear();\n }\n\n addPages(morePages: Pages<T>) {\n const { _pages } = this;\n this.setNewPages({\n unprocessed: [..._pages.unprocessed, ...morePages.unprocessed],\n processed: [..._pages.processed, ...morePages.processed],\n });\n this.calcKeyedItemsMap();\n }\n\n setTotals(totals: Totals) {\n this._totals = totals;\n }\n\n setSupportTotal(supportTotal: boolean) {\n this._supportTotal = supportTotal;\n }\n\n setPages(pages: Pages<T>) {\n this.setNewPages(pages);\n this.calcKeyedItemsMap();\n }\n\n slice(start?: number, end?: number) {\n const { _pages } = this;\n this.setNewPages({\n unprocessed: _pages.unprocessed.slice(start, end),\n processed: _pages.processed.slice(start, end),\n });\n }\n\n get hasAvailableItems() {\n const {\n originQuery: { hasNonPersistentActiveFilters },\n available,\n total,\n size,\n } = this;\n // if `available` info is missing, must assume that there are available items if non persistent filters are active\n return available != null\n ? available > 0\n : hasNonPersistentActiveFilters || total > 0 || size > 0;\n }\n\n get asComputed() {\n const { total, available } = this;\n return {\n total,\n available: available ?? 0,\n };\n }\n\n get size() {\n return this.items.length;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AAeO,MAAMI,gBAAgB,CAE7B;EASE,IAAIC,KAAKA,CAAA,EAAG;IACV,IAAI,CAACC,UAAU,CAACC,cAAc,CAAC,CAAC;IAChC,OAAO,IAAI,CAACC,MAAM,CAACC,SAAS;EAC9B;EAUAC,WAAWA,CAACC,MAAoC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,sBAnB5B,IAAAC,gBAAU,EAAC,wBAAwB,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,kBACvC;MAAEJ,SAAS,EAAE,EAAE;MAAEM,WAAW,EAAE;IAAG,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,mBACnC;MAAEJ,SAAS,EAAE,CAAC;MAAEM,WAAW,EAAE;IAAE,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA,yBACzB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,0BACuB,IAAIG,GAAG,CAAC,CAAC;IAAA,IAAAJ,gBAAA,CAAAC,OAAA,qBAOnC,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBAC0B;MACvD,GAAGI,kBAAW,CAACC,IAAI;MACnBC,KAAK,EAAE,IAAI;MACXC,UAAU,EAAE;IACd,CAAC;IAAA,IAAAR,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,uBAwCqB,IAAAQ,YAAM,EAAEhB,KAAe,IAAK;MAChD,IAAI,CAACG,MAAM,GAAGH,KAAK;MACnB,IAAI,CAACC,UAAU,CAACgB,aAAa,CAAC,CAAC;IACjC,CAAC,CAAC;IAvCA,IAAI,CAACC,OAAO,GAAGZ,MAAM,CAACY,OAAO;IAC7B,IAAI,CAACC,WAAW,GAAGb,MAAM,CAACa,WAAW;IAErC,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBC,KAAK,EAAE,IAAAC,cAAQ,EAAC;QACdC,SAAS,EAAE;MACb,CAAC,CAAC;MACFC,UAAU,EAAE,IAAAF,cAAQ,EAAC;QACnBC,SAAS,EAAE;MACb,CAAC,CAAC;MACFvB,KAAK,EAAEsB,cAAQ;MACfG,IAAI,EAAEH,cAAQ;MACdI,SAAS,EAAEJ,cAAQ;MACnBK,UAAU,EAAEL,cAAQ;MACpBP,UAAU,EAAEO,cAAQ;MACpBM,qBAAqB,EAAEN,cAAQ;MAC/BO,UAAU,EAAEP,cAAQ;MACpBQ,KAAK,EAAER,cAAQ;MAEfS,iBAAiB,EAAET,cAAQ;MAC3BU,OAAO,EAAEC,gBAAU,CAACC,GAAG;MACvBC,aAAa,EAAEF,gBAAU,CAACC,GAAG;MAC7BE,SAAS,EAAEpB,YAAM;MACjBqB,SAAS,EAAEJ,gBAAU,CAACC,GAAG;MACzBI,MAAM,EAAEL,gBAAU,CAACC,GAAG;MACtBf,WAAW,EAAEc,gBAAU,CAACC,GAAG;MAC3BK,WAAW,EAAEvB,YAAM;MACnBwB,KAAK,EAAExB;IACT,CAAC,CAAC;EACJ;EAEA,IAAIyB,WAAWA,CAAA,EAAG;IAChB,MAAM;MAAEH;IAAO,CAAC,GAAG,IAAI;IACvB,OAAOA,MAAM,CAACI,OAAO,GAAGJ,MAAM,GAAG,IAAI;EACvC;EAOA,IAAId,UAAUA,CAAA,EAAmB;IAC/B,IAAI,CAACvB,UAAU,CAACC,cAAc,CAAC,CAAC;IAChC,MAAM;MAAEF,KAAK;MAAEkB;IAAQ,CAAC,GAAG,IAAI;IAC/B,IAAIyB,YAAY,GAAG,CAAC;IACpB,OAAO,IAAAC,gBAAO,EAAC5C,KAAK,EAAE,CAAC6C,IAAI,EAAEC,SAAS,KAAK;MACzC,OAAOD,IAAI,CAACE,GAAG,CAAC,CAACC,IAAI,EAAEC,eAAe,KAAK;QACzC,MAAMC,GAAG,GAAGhC,OAAO,CAAC8B,IAAI,CAAC;QACzB,OAAO;UACLE,GAAG;UACHC,EAAE,EAAED,GAAG;UACPF,IAAI;UACJI,KAAK,EAAET,YAAY,EAAE;UACrBG,SAAS;UACTG;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,IAAIvB,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACF,UAAU,CAACuB,GAAG,CAAC,CAAC;MAAEG;IAAI,CAAC,KAAKA,GAAG,CAAC;EAC9C;EAEA,IAAItB,qBAAqBA,CAAA,EAAG;IAC1B,MAAM;MAAEU,MAAM;MAAEd;IAAW,CAAC,GAAG,IAAI;IACnC,OAAOc,MAAM,CAACe,SAAS,IAAI,CAACf,MAAM,CAACvB,UAAU,IAAI,CAACS,UAAU,CAAC8B,MAAM;EACrE;EAEA,IAAIC,OAAOA,CAAA,EAAG;IACZ,MAAM;MAAE/B;IAAW,CAAC,GAAG,IAAI;IAC3B,OAAOA,UAAU,CAAC8B,MAAM,KAAK,CAAC;EAChC;EAEA,IAAIjC,KAAKA,CAAA,EAAQ;IACf,IAAI,CAACpB,UAAU,CAACC,cAAc,CAAC,CAAC;IAChC,MAAM;MAAEF;IAAM,CAAC,GAAG,IAAI;IACtB,OAAO,IAAA4C,gBAAO,EAAC5C,KAAK,CAAC;EACvB;EAEA,IAAI8B,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACE,OAAO,CAAC5B,SAAS;EAC/B;EAEA,IAAIoD,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACrB,aAAa;EAC3B;EAEA,IAAIR,UAAUA,CAAA,EAAG;IACf,MAAM;MAAEW,MAAM;MAAEjB,KAAK;MAAES;IAAM,CAAC,GAAG,IAAI;IACrC,OAAO,CAACQ,MAAM,CAACmB,SAAS,IAAI3B,KAAK,IAAIT,KAAK,CAACiC,MAAM;EACnD;EAEA,IAAIvC,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACuB,MAAM,CAACvB,UAAU;EAC/B;EAEA2C,GAAGA,CAACR,GAAW,EAAE;IACf,IAAI,CAACjD,UAAU,CAACC,cAAc,CAAC,CAAC;IAChC,OAAO,IAAI,CAACyD,cAAc,CAACD,GAAG,CAACR,GAAG,CAAC;EACrC;EAEAU,GAAGA,CAACV,GAAW,EAAE;IACf,OAAO,IAAI,CAACS,cAAc,CAACC,GAAG,CAACV,GAAG,CAAC;EACrC;EAEQW,gBAAgBA,CAACC,OAAsC,EAAE;IAC/D,OAAO,MAAM;MACX,MAAM;QAAE5C,OAAO;QAAEyC,cAAc;QAAE3D;MAAM,CAAC,GAAG,IAAI;MAC/C,KAAK,MAAM;QAAE+D,OAAO;QAAEC;MAAS,CAAC,IAAIF,OAAO,EAAE;QAC3C,MAAMZ,GAAG,GAAGhC,OAAO,CAAC6C,OAAO,CAAC;QAC5B,MAAME,SAAS,GAAGN,cAAc,CAACD,GAAG,CAACR,GAAG,CAAC;QACzC;QACA,IAAIe,SAAS,IAAI,IAAI,EAAE;UACrB,MAAM;YAAEnB,SAAS;YAAEG;UAAgB,CAAC,GAAGgB,SAAS;UAChD,MAAMpB,IAAI,GAAG7C,KAAK,CAAC8C,SAAS,CAAC;UAC7B,IAAID,IAAI,CAACI,eAAe,CAAC,KAAKc,OAAO,EAAE;YACrC,IAAI,CAACxB,WAAW,CAAC,CAACyB,QAAQ,CAAC,CAAC;YAC5B,OAAO,IAAI;UACb;QACF;MACF;MAEA,OAAO,KAAK;IACd,CAAC;EACH;EAEAzB,WAAWA,CAAC2B,QAAa,EAAE;IACzB,MAAM;MAAEhD,OAAO;MAAEyC,cAAc;MAAE3D,KAAK;MAAEC;IAAW,CAAC,GAAG,IAAI;IAC3D,MAAM6D,OAAsC,GAAG,EAAE;IACjD,KAAK,MAAMC,OAAO,IAAIG,QAAQ,EAAE;MAC9B,MAAMhB,GAAG,GAAGhC,OAAO,CAAC6C,OAAO,CAAC;MAC5B,MAAME,SAAS,GAAGN,cAAc,CAACD,GAAG,CAACR,GAAG,CAAC;MACzC,IAAIe,SAAS,IAAI,IAAI,EAAE;QACrB,MAAM;UAAEnB,SAAS;UAAEG;QAAgB,CAAC,GAAGgB,SAAS;QAChD,MAAMpB,IAAI,GAAG7C,KAAK,CAAC8C,SAAS,CAAC;QAC7B;QACA;QACA;QACA,MAAMkB,QAAQ,GAAGnB,IAAI,CAACI,eAAe,CAAC;QACtCJ,IAAI,CAACI,eAAe,CAAC,GAAGc,OAAO;QAE/BD,OAAO,CAACK,IAAI,CAAC;UAAEH,QAAQ;UAAED;QAAQ,CAAC,CAAC;MACrC;IACF;IAEA,IAAID,OAAO,CAACR,MAAM,EAAE;MAClBrD,UAAU,CAACgB,aAAa,CAAC,CAAC;MAE1B,OAAO;QACLmD,QAAQ,EAAE,IAAI,CAACP,gBAAgB,CAACC,OAAO;MACzC,CAAC;IACH;IAEA,OAAOO,SAAS;EAClB;EAEAC,QAAQA,CAACJ,QAAa,EAAE;IACtB,MAAM;MAAElE,KAAK;MAAEC;IAAW,CAAC,GAAG,IAAI;IAClCD,KAAK,CAAC,CAAC,CAAC,CAACuE,OAAO,CAAC,GAAGL,QAAQ,CAAC;IAC7BjE,UAAU,CAACgB,aAAa,CAAC,CAAC;IAE1B,OAAO;MACLmD,QAAQ,EAAEA,CAAA,KAAM;QACdF,QAAQ,CAACM,OAAO,CAAExB,IAAI,IAAK;UACzB,MAAMyB,YAAY,GAAGzE,KAAK,CAAC,CAAC,CAAC,CAAC0E,OAAO,CAAC1B,IAAI,CAAC;UAC3C,IAAIyB,YAAY,KAAK,CAAC,CAAC,EAAE;YACvBzE,KAAK,CAAC,CAAC,CAAC,CAAC2E,MAAM,CAACF,YAAY,EAAE,CAAC,CAAC;UAClC;QACF,CAAC,CAAC;QACFxE,UAAU,CAACgB,aAAa,CAAC,CAAC;MAC5B;IACF,CAAC;EACH;EAEQ2D,iBAAiBA,CAAA,EAAG;IAC1B,MAAM;MAAEpD,UAAU;MAAEmC;IAAe,CAAC,GAAG,IAAI;IAC3CA,cAAc,CAACkB,KAAK,CAAC,CAAC;IACtB,KAAK,MAAMZ,SAAS,IAAIzC,UAAU,EAAE;MAClCmC,cAAc,CAACmB,GAAG,CAACb,SAAS,CAACf,GAAG,EAAEe,SAAS,CAAC;IAC9C;EACF;EAEAY,KAAKA,CAAA,EAAG;IACN,IAAI,CAACE,WAAW,CAAC;MAAE3E,SAAS,EAAE,EAAE;MAAEM,WAAW,EAAE;IAAG,CAAC,CAAC;IACpD,IAAI,CAACiD,cAAc,CAACkB,KAAK,CAAC,CAAC;EAC7B;EAEAG,QAAQA,CAACC,SAAmB,EAAE;IAC5B,MAAM;MAAE9E;IAAO,CAAC,GAAG,IAAI;IACvB,IAAI,CAAC4E,WAAW,CAAC;MACfrE,WAAW,EAAE,CAAC,GAAGP,MAAM,CAACO,WAAW,EAAE,GAAGuE,SAAS,CAACvE,WAAW,CAAC;MAC9DN,SAAS,EAAE,CAAC,GAAGD,MAAM,CAACC,SAAS,EAAE,GAAG6E,SAAS,CAAC7E,SAAS;IACzD,CAAC,CAAC;IACF,IAAI,CAACwE,iBAAiB,CAAC,CAAC;EAC1B;EAEAxC,SAASA,CAAC8C,MAAc,EAAE;IACxB,IAAI,CAAClD,OAAO,GAAGkD,MAAM;EACvB;EAEAC,eAAeA,CAAC3B,YAAqB,EAAE;IACrC,IAAI,CAACrB,aAAa,GAAGqB,YAAY;EACnC;EAEA4B,QAAQA,CAACpF,KAAe,EAAE;IACxB,IAAI,CAAC+E,WAAW,CAAC/E,KAAK,CAAC;IACvB,IAAI,CAAC4E,iBAAiB,CAAC,CAAC;EAC1B;EAEApC,KAAKA,CAAC6C,KAAc,EAAEC,GAAY,EAAE;IAClC,MAAM;MAAEnF;IAAO,CAAC,GAAG,IAAI;IACvB,IAAI,CAAC4E,WAAW,CAAC;MACfrE,WAAW,EAAEP,MAAM,CAACO,WAAW,CAAC8B,KAAK,CAAC6C,KAAK,EAAEC,GAAG,CAAC;MACjDlF,SAAS,EAAED,MAAM,CAACC,SAAS,CAACoC,KAAK,CAAC6C,KAAK,EAAEC,GAAG;IAC9C,CAAC,CAAC;EACJ;EAEA,IAAIvD,iBAAiBA,CAAA,EAAG;IACtB,MAAM;MACJZ,WAAW,EAAE;QAAEoE;MAA8B,CAAC;MAC9ClD,SAAS;MACTP,KAAK;MACLL;IACF,CAAC,GAAG,IAAI;IACR;IACA,OAAOY,SAAS,IAAI,IAAI,GACpBA,SAAS,GAAG,CAAC,GACbkD,6BAA6B,IAAIzD,KAAK,GAAG,CAAC,IAAIL,IAAI,GAAG,CAAC;EAC5D;EAEA,IAAII,UAAUA,CAAA,EAAG;IACf,MAAM;MAAEC,KAAK;MAAEO;IAAU,CAAC,GAAG,IAAI;IACjC,OAAO;MACLP,KAAK;MACLO,SAAS,EAAEA,SAAS,IAAI;IAC1B,CAAC;EACH;EAEA,IAAIZ,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACJ,KAAK,CAACiC,MAAM;EAC1B;AACF;AAACkC,OAAA,CAAAzF,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_model","require","_mobx","_flatMap","_interopRequireDefault","QueryResultState","pages","_pagesAtom","reportObserved","_pages","processed","constructor","params","_defineProperty2","default","createAtom","unprocessed","Map","queryStatus","idle","error","isFetching","action","reportChanged","itemKey","originQuery","makeObservable","items","computed","keepAlive","keyedItems","size","itemsKeys","fetchedAll","isEmptyAndNotFetching","asComputed","total","hasAvailableItems","_totals","observable","ref","_supportTotal","setTotals","available","status","changeItems","slice","errorStatus","isError","currentIndex","flatMap","page","pageIndex","map","item","indexWithinPage","key","id","index","isSuccess","length","isEmpty","supportTotal","isLoading","get","_keyedItemsMap","has","createRollbackFn","updates","newItem","prevItem","keyedItem","newItems","processedPage","forEach","itemIndex","findIndex","push","rollback","undefined","addItems","calcKeyedItemsMap","clear","set","setNewPages","addPages","morePages","totals","setSupportTotal","setPages","start","end","hasNonPersistentActiveFilters","exports"],"sources":["../../../src/state/QueryResultState.ts"],"sourcesContent":["import {\n ComputedQueryFull,\n DataResultKeyed,\n FiltersMap,\n KeyedItem,\n QueryResult,\n QueryResultStatus,\n queryStatus,\n} from '../model';\nimport { action, computed, createAtom, makeObservable, observable } from 'mobx';\nimport flatMap from 'lodash/flatMap';\n\ninterface ProcessedResult<T> {\n processed: T;\n unprocessed: T;\n}\n\ntype Pages<T> = ProcessedResult<T[][]>;\ntype Totals = ProcessedResult<number>;\n\nexport interface QueryResultStateParams<T, F extends FiltersMap> {\n itemKey: (item: T) => string;\n originQuery: ComputedQueryFull<F>;\n}\n\nexport class QueryResultState<T, F extends FiltersMap>\n implements QueryResult<T>\n{\n readonly itemKey: (item: T) => string;\n\n readonly _pagesAtom = createAtom('QueryResultState.pages');\n _pages: Pages<T> = { processed: [], unprocessed: [] };\n _totals: Totals = { processed: 0, unprocessed: 0 };\n _supportTotal: boolean = false;\n readonly _keyedItemsMap: Map<string, KeyedItem<T>> = new Map();\n\n get pages() {\n this._pagesAtom.reportObserved();\n return this._pages.processed;\n }\n\n available: number | null = null;\n status: QueryResultStatus<DataResultKeyed<T>, unknown> = {\n ...queryStatus.idle,\n error: null,\n isFetching: false,\n };\n originQuery: ComputedQueryFull<F>;\n\n constructor(params: QueryResultStateParams<T, F>) {\n this.itemKey = params.itemKey;\n this.originQuery = params.originQuery;\n\n makeObservable(this, {\n items: computed({\n keepAlive: true,\n }),\n keyedItems: computed({\n keepAlive: true,\n }),\n pages: computed,\n size: computed,\n itemsKeys: computed,\n fetchedAll: computed,\n isFetching: computed,\n isEmptyAndNotFetching: computed,\n asComputed: computed,\n total: computed,\n\n hasAvailableItems: computed,\n _totals: observable.ref,\n _supportTotal: observable.ref,\n setTotals: action,\n available: observable.ref,\n status: observable.ref,\n originQuery: observable.ref,\n changeItems: action,\n slice: action,\n });\n }\n\n get errorStatus() {\n const { status } = this;\n return status.isError ? status : null;\n }\n\n private setNewPages = action((pages: Pages<T>) => {\n this._pages = pages;\n this._pagesAtom.reportChanged();\n });\n\n get keyedItems(): KeyedItem<T>[] {\n this._pagesAtom.reportObserved();\n const { pages, itemKey } = this;\n let currentIndex = 0;\n return flatMap(pages, (page, pageIndex) => {\n return page.map((item, indexWithinPage) => {\n const key = itemKey(item);\n return {\n key,\n id: key,\n item,\n index: currentIndex++,\n pageIndex,\n indexWithinPage,\n };\n });\n });\n }\n\n get itemsKeys() {\n return this.keyedItems.map(({ key }) => key);\n }\n\n get isEmptyAndNotFetching() {\n const { status, keyedItems } = this;\n return status.isSuccess && !status.isFetching && !keyedItems.length;\n }\n\n get isEmpty() {\n const { keyedItems } = this;\n return keyedItems.length === 0;\n }\n\n get items(): T[] {\n this._pagesAtom.reportObserved();\n const { pages } = this;\n return flatMap(pages);\n }\n\n get total() {\n return this._totals.processed;\n }\n\n get supportTotal() {\n return this._supportTotal;\n }\n\n get fetchedAll() {\n const { status, items, total } = this;\n return !status.isLoading && total <= items.length;\n }\n\n get isFetching() {\n return this.status.isFetching;\n }\n\n get(key: string) {\n this._pagesAtom.reportObserved();\n return this._keyedItemsMap.get(key);\n }\n\n has(key: string) {\n return this._keyedItemsMap.has(key);\n }\n\n private createRollbackFn(updates: { prevItem: T; newItem: T }[]) {\n return () => {\n const { itemKey, _keyedItemsMap, pages } = this;\n for (const { newItem, prevItem } of updates) {\n const key = itemKey(newItem);\n const keyedItem = _keyedItemsMap.get(key);\n // the current item is still the one that was recently updated\n if (keyedItem != null) {\n const { pageIndex, indexWithinPage } = keyedItem;\n const page = pages[pageIndex];\n if (page[indexWithinPage] === newItem) {\n this.changeItems([prevItem]);\n return true;\n }\n }\n }\n\n return false;\n };\n }\n\n changeItems(newItems: T[]) {\n const { itemKey, _keyedItemsMap, _pages, _pagesAtom } = this;\n const updates: { prevItem: T; newItem: T }[] = [];\n for (const newItem of newItems) {\n const key = itemKey(newItem);\n const keyedItem = _keyedItemsMap.get(key);\n if (keyedItem != null) {\n const { pageIndex, indexWithinPage } = keyedItem;\n const processedPage = _pages.processed[pageIndex];\n // this mutates react-query cache since `page` is the same reference of the cached data\n // this behavior is intentional because the strategy is to assume the server will be update correctly in the next invalidation\n // until then, we simulate locally (cache) what we expect the server state eventually to be\n const prevItem = processedPage[indexWithinPage];\n processedPage[indexWithinPage] = newItem;\n\n _pages.unprocessed.forEach((page) => {\n const itemIndex = page.findIndex((item) => itemKey(item) === key);\n if (itemIndex !== -1) {\n page[itemIndex] = newItem;\n }\n });\n\n updates.push({ prevItem, newItem });\n }\n }\n\n if (updates.length) {\n _pagesAtom.reportChanged();\n\n return {\n rollback: this.createRollbackFn(updates),\n };\n }\n\n return undefined;\n }\n\n addItems(newItems: T[]) {\n const { _pages, _pagesAtom } = this;\n _pages.processed = [newItems, ..._pages.processed];\n _pages.unprocessed = [newItems, ..._pages.unprocessed];\n _pagesAtom.reportChanged();\n\n return {\n rollback: () => {\n _pages.processed = _pages.processed.slice(1);\n _pages.unprocessed = _pages.unprocessed.slice(1);\n _pagesAtom.reportChanged();\n },\n };\n }\n\n private calcKeyedItemsMap() {\n const { keyedItems, _keyedItemsMap } = this;\n _keyedItemsMap.clear();\n for (const keyedItem of keyedItems) {\n _keyedItemsMap.set(keyedItem.key, keyedItem);\n }\n }\n\n clear() {\n this.setNewPages({ processed: [], unprocessed: [] });\n this._keyedItemsMap.clear();\n }\n\n addPages(morePages: Pages<T>) {\n const { _pages } = this;\n this.setNewPages({\n unprocessed: [..._pages.unprocessed, ...morePages.unprocessed],\n processed: [..._pages.processed, ...morePages.processed],\n });\n this.calcKeyedItemsMap();\n }\n\n setTotals(totals: Totals) {\n this._totals = totals;\n }\n\n setSupportTotal(supportTotal: boolean) {\n this._supportTotal = supportTotal;\n }\n\n setPages(pages: Pages<T>) {\n this.setNewPages(pages);\n this.calcKeyedItemsMap();\n }\n\n slice(start?: number, end?: number) {\n const { _pages } = this;\n this.setNewPages({\n unprocessed: _pages.unprocessed.slice(start, end),\n processed: _pages.processed.slice(start, end),\n });\n }\n\n get hasAvailableItems() {\n const {\n originQuery: { hasNonPersistentActiveFilters },\n available,\n total,\n size,\n } = this;\n // if `available` info is missing, must assume that there are available items if non persistent filters are active\n return available != null\n ? available > 0\n : hasNonPersistentActiveFilters || total > 0 || size > 0;\n }\n\n get asComputed() {\n const { total, available } = this;\n return {\n total,\n available: available ?? 0,\n };\n }\n\n get size() {\n return this.items.length;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Podle zadaných kritérií se nám nepodařilo nic najít.",
268
268
  "cairo.export.downloadManually": "Stáhnout manuálně",
269
269
  "cairo.export.cancelButton": "Zpět",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Zjistit více",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Odebrat",
272
273
  "cairo.moreFilters": "Filtr",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Vi fandt ingen resultater, der matcher din søgning.",
268
268
  "cairo.export.downloadManually": "Download manuelt",
269
269
  "cairo.export.cancelButton": "Annuller",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Læs mere",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Fjern",
272
273
  "cairo.moreFilters": "Filtrer",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Deine Suche ergab keine Treffer.",
268
268
  "cairo.export.downloadManually": "Manuell herunterladen",
269
269
  "cairo.export.cancelButton": "Abbrechen",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Mehr erfahren",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Entfernen",
272
273
  "cairo.moreFilters": "Filtern",
@@ -435,5 +435,6 @@
435
435
  "cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
436
436
  "cairo.subtitle.learnMore": "Learn more",
437
437
  "cairo.tags.creationLimitReached.error": "Unable to create more than 100 tags.",
438
- "cairo.tags.popover.creationLimitReached.error": "Unable to create more than 100 tags. Delete a tag in order to create a new one."
438
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create more than 100 tags. Delete a tag in order to create a new one.",
439
+ "cairo.entityPage.header.submit.CTA": "Submit"
439
440
  }
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "No pudimos encontrar nada que coincida con tu búsqueda.",
268
268
  "cairo.export.downloadManually": "Descargar manualmente",
269
269
  "cairo.export.cancelButton": "Cancelar",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Leer más",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Eliminar",
272
273
  "cairo.moreFilters": "Filtrar",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Aucun résultat ne correspond à votre recherche.",
268
268
  "cairo.export.downloadManually": "Téléchargez-le manuellement",
269
269
  "cairo.export.cancelButton": "Annuler",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "En savoir plus",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Retirer",
272
273
  "cairo.moreFilters": "Filtrer",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "हमें आपकी खोज से मेल खाता हुआ वाला परिणाम नहीं मिला।",
268
268
  "cairo.export.downloadManually": "मैन्युअल रूप से डाउनलोड करें",
269
269
  "cairo.export.cancelButton": "रद करें",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "और अधिक जानें",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "निकालें",
272
273
  "cairo.moreFilters": "फिल्टर करें",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Tidak ada hasil yang cocok dengan pencarian Anda.",
268
268
  "cairo.export.downloadManually": "Unduh secara Manual",
269
269
  "cairo.export.cancelButton": "Cancel",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Pelajari selengkapnya",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Hapus",
272
273
  "cairo.moreFilters": "Filter",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Non abbiamo trovato risultati per la tua ricerca.",
268
268
  "cairo.export.downloadManually": "Scarica manualmente",
269
269
  "cairo.export.cancelButton": "Annulla",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Scopri di più",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Rimuovi",
272
273
  "cairo.moreFilters": "Filtra",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "検索に一致する情報が見つかりませんでした。",
268
268
  "cairo.export.downloadManually": "手動でダウンロードします。",
269
269
  "cairo.export.cancelButton": "キャンセル",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "詳しくはこちら",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "削除",
272
273
  "cairo.moreFilters": "フィルター",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "입력한 정보로 검색된 결과가 없습니다.",
268
268
  "cairo.export.downloadManually": "수동 다운로드",
269
269
  "cairo.export.cancelButton": "취소",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "자세히 보기",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "제거",
272
273
  "cairo.moreFilters": "필터",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Je zoekopdracht heeft geen resultaten opgeleverd.",
268
268
  "cairo.export.downloadManually": "Handmatig downloaden",
269
269
  "cairo.export.cancelButton": "Annuleren",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Meer info",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Verwijderen",
272
273
  "cairo.moreFilters": "Filteren",
@@ -267,6 +267,7 @@
267
267
  "cairo.emptyState.subtitle.nothingMatchesCriteria": "Vi kunne ikke finne noe som samsvarer med søket ditt.",
268
268
  "cairo.export.downloadManually": "Last ned manuelt",
269
269
  "cairo.export.cancelButton": "Avbryt",
270
+ "cairo.entityPage.header.submit.CTA": "Submit",
270
271
  "cairo.dragAndDrop.note.learnMore": "Finn ut mer",
271
272
  "cairo.table.advanced-sorting.remove.button.tooltip": "Fjern",
272
273
  "cairo.moreFilters": "Filtrer",