@wix/bex-core 2.43.0 → 2.45.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 (49) hide show
  1. package/dist/cjs/state/CollectionOptimisticActions.js +17 -6
  2. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  3. package/dist/cjs/state/CollectionOptimisticHelpers.js +20 -1
  4. package/dist/cjs/state/CollectionOptimisticHelpers.js.map +1 -1
  5. package/dist/cjs/state/CollectionOptimisticPatch.js.map +1 -1
  6. package/dist/cjs/state/{CollectionPageState.js → CollectionPageState/CollectionPageState.js} +13 -2
  7. package/dist/cjs/state/CollectionPageState/CollectionPageState.js.map +1 -0
  8. package/dist/cjs/state/CollectionPageState/CollectionPageStateBIReporter.js +42 -0
  9. package/dist/cjs/state/CollectionPageState/CollectionPageStateBIReporter.js.map +1 -0
  10. package/dist/cjs/state/CollectionPageState/index.js +10 -0
  11. package/dist/cjs/state/CollectionPageState/index.js.map +1 -0
  12. package/dist/cjs/state/TagsState/TagsManagementState.js +9 -3
  13. package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
  14. package/dist/cjs/testkit/createCountriesBackend.js +15 -16
  15. package/dist/cjs/testkit/createCountriesBackend.js.map +1 -1
  16. package/dist/esm/state/CollectionOptimisticActions.js +14 -5
  17. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  18. package/dist/esm/state/CollectionOptimisticHelpers.js +8 -0
  19. package/dist/esm/state/CollectionOptimisticHelpers.js.map +1 -1
  20. package/dist/esm/state/{CollectionPageState.js → CollectionPageState/CollectionPageState.js} +11 -2
  21. package/dist/esm/state/CollectionPageState/CollectionPageState.js.map +1 -0
  22. package/dist/esm/state/CollectionPageState/CollectionPageStateBIReporter.js +32 -0
  23. package/dist/esm/state/CollectionPageState/CollectionPageStateBIReporter.js.map +1 -0
  24. package/dist/esm/state/CollectionPageState/index.js +2 -0
  25. package/dist/esm/state/CollectionPageState/index.js.map +1 -0
  26. package/dist/esm/state/TagsState/TagsManagementState.js +6 -3
  27. package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
  28. package/dist/esm/testkit/createCountriesBackend.js +14 -14
  29. package/dist/esm/testkit/createCountriesBackend.js.map +1 -1
  30. package/dist/types/state/CollectionOptimisticActions.d.ts +1 -0
  31. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  32. package/dist/types/state/CollectionOptimisticHelpers.d.ts +1 -0
  33. package/dist/types/state/CollectionOptimisticHelpers.d.ts.map +1 -1
  34. package/dist/types/state/CollectionOptimisticPatch.d.ts +1 -1
  35. package/dist/types/state/CollectionOptimisticPatch.d.ts.map +1 -1
  36. package/dist/types/state/{CollectionPageState.d.ts → CollectionPageState/CollectionPageState.d.ts} +5 -1
  37. package/dist/types/state/CollectionPageState/CollectionPageState.d.ts.map +1 -0
  38. package/dist/types/state/CollectionPageState/CollectionPageStateBIReporter.d.ts +19 -0
  39. package/dist/types/state/CollectionPageState/CollectionPageStateBIReporter.d.ts.map +1 -0
  40. package/dist/types/state/CollectionPageState/index.d.ts +2 -0
  41. package/dist/types/state/CollectionPageState/index.d.ts.map +1 -0
  42. package/dist/types/state/TagsState/TagsManagementState.d.ts +6 -3
  43. package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -1
  44. package/dist/types/testkit/createCountriesBackend.d.ts +0 -1
  45. package/dist/types/testkit/createCountriesBackend.d.ts.map +1 -1
  46. package/package.json +2 -2
  47. package/dist/cjs/state/CollectionPageState.js.map +0 -1
  48. package/dist/esm/state/CollectionPageState.js.map +0 -1
  49. package/dist/types/state/CollectionPageState.d.ts.map +0 -1
@@ -30,17 +30,25 @@ class CollectionOptimisticActions {
30
30
  (0, _defineProperty2.default)(this, "reorderModeCanceledMessage", 'REORDER_MODE_CANCELED');
31
31
  (0, _defineProperty2.default)(this, "_resumeNavigation", null);
32
32
  (0, _defineProperty2.default)(this, "_orderByMode", 'orders');
33
+ (0, _defineProperty2.default)(this, "_commitMode", false);
33
34
  (0, _defineProperty2.default)(this, "_clearPatch", (0, _mobx.action)(patch => {
34
35
  const {
35
36
  state,
36
37
  collection,
37
38
  collections,
38
- noInvalidate
39
+ noInvalidate,
40
+ processors,
41
+ _commitMode
39
42
  } = this;
40
43
  if (noInvalidate) {
41
44
  return;
42
45
  }
43
46
  state.patches.remove(patch);
47
+ if (_commitMode && !state.patches.length) {
48
+ processors.forEach(({
49
+ processorHelpers
50
+ }) => processorHelpers.commit());
51
+ }
44
52
  collection.invalidate();
45
53
  collections.forEach(p => p.refreshAllPages());
46
54
  }));
@@ -62,12 +70,15 @@ class CollectionOptimisticActions {
62
70
  events.once('beforeResultUpdated', clearPatch);
63
71
  }
64
72
  };
65
-
66
- // Clear the patch on the next collection result update to eliminate inconsistencies between server state and local patches
67
- events.on('refresh', onRefresh);
68
- // since not clearing the patch immediately, clear it on unmount if was not cleared yet
69
- events.on('unmount', clearPatch);
70
73
  events.emit('updated');
74
+ if (this._commitMode) {
75
+ this._clearPatch(patch);
76
+ } else {
77
+ // Clear the patch on the next collection result update to eliminate inconsistencies between server state and local patches
78
+ events.on('refresh', onRefresh);
79
+ // since not clearing the patch immediately, clear it on unmount if was not cleared yet
80
+ events.on('unmount', clearPatch);
81
+ }
71
82
  });
72
83
  this.collection = params.collection;
73
84
  this.query = params.query ?? this.collection.query;
@@ -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","patches","remove","invalidate","forEach","p","refreshAllPages","events","clearPatch","off","_clearPatch","onRefresh","isStale","once","on","emit","query","sequences","Map","CollectionOptimisticActionsState","source","patchesCache","container","cacheNamespace","resultSimulationDefault","QueryResultSimulationDefault","predicate","orderBy","createdAt","executor","CollectionOptimisticExecutor","batchWait","errorMonitor","showToast","translate","lodash","processors","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","length","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 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 { state, collection, collections, noInvalidate } = this;\n if (noInvalidate) {\n return;\n }\n\n state.patches.remove(patch);\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 // 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 events.emit('updated');\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","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":[]}
@@ -10,7 +10,8 @@ class CollectionOptimisticProcessorHelpers {
10
10
  (0, _defineProperty2.default)(this, "collection", void 0);
11
11
  this.collection = collection;
12
12
  (0, _mobx.makeObservable)(this, {
13
- reprocess: _mobx.action.bound
13
+ reprocess: _mobx.action.bound,
14
+ commit: _mobx.action
14
15
  });
15
16
  }
16
17
  reprocess() {
@@ -45,6 +46,24 @@ class CollectionOptimisticProcessorHelpers {
45
46
  processed: processedPages
46
47
  });
47
48
  }
49
+ commit() {
50
+ const {
51
+ collection
52
+ } = this;
53
+ const {
54
+ result
55
+ } = collection;
56
+ const {
57
+ _pages: {
58
+ processed: processedPages
59
+ },
60
+ _totals: {
61
+ processed: processedTotal
62
+ }
63
+ } = result;
64
+ result._totals.unprocessed = processedTotal;
65
+ result._pages.unprocessed = processedPages;
66
+ }
48
67
  }
49
68
  exports.CollectionOptimisticProcessorHelpers = CollectionOptimisticProcessorHelpers;
50
69
  //# sourceMappingURL=CollectionOptimisticHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","CollectionOptimisticProcessorHelpers","constructor","collection","_defineProperty2","default","makeObservable","reprocess","action","bound","result","_pages","unprocessed","unprocessedPages","_totals","unprocessedTotal","processedTotal","processedPages","_getProcessedResult","currentItemsMap","Map","setTotals","processed","setPages","exports"],"sources":["../../../src/state/CollectionOptimisticHelpers.ts"],"sourcesContent":["import { FiltersMap } from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\n\nexport class CollectionOptimisticProcessorHelpers<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n constructor(collection: CollectionState<T, F>) {\n this.collection = collection;\n\n makeObservable(this, {\n reprocess: action.bound,\n });\n }\n\n reprocess() {\n const { collection } = this;\n const { result } = collection;\n const {\n _pages: { unprocessed: unprocessedPages },\n _totals: { unprocessed: unprocessedTotal },\n } = result;\n\n const { processedTotal, processedPages } = collection._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: new Map(),\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n result.setPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,oCAAoC,CAA0B;EAEzEC,WAAWA,CAACC,UAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAE5B,IAAAG,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC,YAAM,CAACC;IACpB,CAAC,CAAC;EACJ;EAEAF,SAASA,CAAA,EAAG;IACV,MAAM;MAAEJ;IAAW,CAAC,GAAG,IAAI;IAC3B,MAAM;MAAEO;IAAO,CAAC,GAAGP,UAAU;IAC7B,MAAM;MACJQ,MAAM,EAAE;QAAEC,WAAW,EAAEC;MAAiB,CAAC;MACzCC,OAAO,EAAE;QAAEF,WAAW,EAAEG;MAAiB;IAC3C,CAAC,GAAGL,MAAM;IAEV,MAAM;MAAEM,cAAc;MAAEC;IAAe,CAAC,GAAGd,UAAU,CAACe,mBAAmB,CAAC;MACxEL,gBAAgB;MAChBE,gBAAgB;MAChBI,eAAe,EAAE,IAAIC,GAAG,CAAC;IAC3B,CAAC,CAAC;IAEFV,MAAM,CAACW,SAAS,CAAC;MACfT,WAAW,EAAEG,gBAAgB;MAC7BO,SAAS,EAAEN;IACb,CAAC,CAAC;IAEFN,MAAM,CAACa,QAAQ,CAAC;MACdX,WAAW,EAAEC,gBAAgB;MAC7BS,SAAS,EAAEL;IACb,CAAC,CAAC;EACJ;AACF;AAACO,OAAA,CAAAvB,oCAAA,GAAAA,oCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","CollectionOptimisticProcessorHelpers","constructor","collection","_defineProperty2","default","makeObservable","reprocess","action","bound","commit","result","_pages","unprocessed","unprocessedPages","_totals","unprocessedTotal","processedTotal","processedPages","_getProcessedResult","currentItemsMap","Map","setTotals","processed","setPages","exports"],"sources":["../../../src/state/CollectionOptimisticHelpers.ts"],"sourcesContent":["import { FiltersMap } from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\n\nexport class CollectionOptimisticProcessorHelpers<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n constructor(collection: CollectionState<T, F>) {\n this.collection = collection;\n\n makeObservable(this, {\n reprocess: action.bound,\n commit: action,\n });\n }\n\n reprocess() {\n const { collection } = this;\n const { result } = collection;\n const {\n _pages: { unprocessed: unprocessedPages },\n _totals: { unprocessed: unprocessedTotal },\n } = result;\n\n const { processedTotal, processedPages } = collection._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: new Map(),\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n result.setPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n }\n\n commit() {\n const { collection } = this;\n const { result } = collection;\n const {\n _pages: { processed: processedPages },\n _totals: { processed: processedTotal },\n } = result;\n\n result._totals.unprocessed = processedTotal;\n result._pages.unprocessed = processedPages;\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,oCAAoC,CAA0B;EAEzEC,WAAWA,CAACC,UAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAE5B,IAAAG,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC,YAAM,CAACC,KAAK;MACvBC,MAAM,EAAEF;IACV,CAAC,CAAC;EACJ;EAEAD,SAASA,CAAA,EAAG;IACV,MAAM;MAAEJ;IAAW,CAAC,GAAG,IAAI;IAC3B,MAAM;MAAEQ;IAAO,CAAC,GAAGR,UAAU;IAC7B,MAAM;MACJS,MAAM,EAAE;QAAEC,WAAW,EAAEC;MAAiB,CAAC;MACzCC,OAAO,EAAE;QAAEF,WAAW,EAAEG;MAAiB;IAC3C,CAAC,GAAGL,MAAM;IAEV,MAAM;MAAEM,cAAc;MAAEC;IAAe,CAAC,GAAGf,UAAU,CAACgB,mBAAmB,CAAC;MACxEL,gBAAgB;MAChBE,gBAAgB;MAChBI,eAAe,EAAE,IAAIC,GAAG,CAAC;IAC3B,CAAC,CAAC;IAEFV,MAAM,CAACW,SAAS,CAAC;MACfT,WAAW,EAAEG,gBAAgB;MAC7BO,SAAS,EAAEN;IACb,CAAC,CAAC;IAEFN,MAAM,CAACa,QAAQ,CAAC;MACdX,WAAW,EAAEC,gBAAgB;MAC7BS,SAAS,EAAEL;IACb,CAAC,CAAC;EACJ;EAEAR,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEP;IAAW,CAAC,GAAG,IAAI;IAC3B,MAAM;MAAEQ;IAAO,CAAC,GAAGR,UAAU;IAC7B,MAAM;MACJS,MAAM,EAAE;QAAEW,SAAS,EAAEL;MAAe,CAAC;MACrCH,OAAO,EAAE;QAAEQ,SAAS,EAAEN;MAAe;IACvC,CAAC,GAAGN,MAAM;IAEVA,MAAM,CAACI,OAAO,CAACF,WAAW,GAAGI,cAAc;IAC3CN,MAAM,CAACC,MAAM,CAACC,WAAW,GAAGK,cAAc;EAC5C;AACF;AAACO,OAAA,CAAAxB,oCAAA,GAAAA,oCAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_events","OptimisticPatch","constructor","params","_defineProperty2","default","Date","now","EventEmitter","events","queryCache","queryNames","patches","isStale","listeners","length","remove","forEach","queryName","findAll","queryKey","q","invalidate","emit","patch","item","selector","actionType","keepPosition","move","collectionSnapshot","patchedItems","observable","map","deep","originalItems","originalTotal","makeObservable","patchedItemsEntries","computed","ref","onEventuallyUpdated","action","Array","from","entries","exports"],"sources":["../../../src/state/CollectionOptimisticPatch.ts"],"sourcesContent":["import {\n action,\n computed,\n IObservableArray,\n makeObservable,\n observable,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { ActionMove } from '../model';\nimport { QueryCache } from 'react-query/core';\n\ninterface OptimisticPatchEvents<T> {\n scheduleRemoval: (patch: OptimisticPatch<T>) => unknown;\n}\n\ntype OptimisticPatchActionType =\n | 'move'\n | 'createMany'\n | 'updateMany'\n | 'updateAll'\n | 'updateAllConst'\n | 'deleteMany'\n | 'deleteAll';\n\nexport interface OptimisticPatchParams<T> {\n readonly patch?: (\n item: T,\n patch: OptimisticPatch<T>,\n ) => Partial<T> | undefined;\n readonly selector: (item: T, patch: OptimisticPatch<T>) => boolean;\n readonly actionType: OptimisticPatchActionType;\n readonly patchedItems: Map<string, T>;\n readonly originalItems: Map<string, T>;\n readonly originalTotal: number;\n readonly keepPosition?: boolean;\n readonly queryNames: string[];\n readonly queryCache: QueryCache;\n readonly patches: IObservableArray<OptimisticPatch<T>>;\n readonly move?: ActionMove<T>;\n readonly collectionSnapshot?: { [key: string]: string | number | undefined };\n}\n\nexport class OptimisticPatch<T> {\n readonly patch;\n readonly selector;\n readonly actionType;\n readonly patchedItems;\n readonly originalItems;\n readonly originalTotal;\n readonly keepPosition;\n readonly queryNames;\n readonly queryCache;\n readonly patches;\n readonly move;\n readonly createdAt = Date.now();\n readonly collectionSnapshot;\n\n isStale: boolean = false;\n\n readonly events = new EventEmitter() as TypedEmitter<\n OptimisticPatchEvents<T>\n >;\n\n constructor(params: OptimisticPatchParams<T>) {\n this.patch = (item: T) => params.patch?.(item, this);\n this.selector = (item: T) => params.selector(item, this);\n this.actionType = params.actionType;\n this.keepPosition = params.keepPosition;\n this.queryNames = params.queryNames;\n this.queryCache = params.queryCache;\n this.patches = params.patches;\n this.move = params.move;\n this.collectionSnapshot = params.collectionSnapshot;\n\n this.patchedItems = observable.map<string, T>(params.patchedItems, {\n deep: false,\n });\n\n this.originalItems = observable.map<string, T>(params.originalItems, {\n deep: false,\n });\n\n this.originalTotal = params.originalTotal;\n\n makeObservable(this, {\n patchedItemsEntries: computed,\n isStale: observable.ref,\n onEventuallyUpdated: action,\n });\n }\n\n get patchedItemsEntries() {\n return Array.from(this.patchedItems.entries());\n }\n\n onEventuallyUpdated = () => {\n const { events, queryCache, queryNames, patches } = this;\n this.isStale = true;\n if (!events.listeners('scheduleRemoval').length) {\n patches.remove(this);\n queryNames.forEach((queryName) => {\n queryCache\n .findAll({ queryKey: [queryName] })\n .forEach((q) => q.invalidate());\n });\n } else {\n events.emit('scheduleRemoval', this);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_events","OptimisticPatch","constructor","params","_defineProperty2","default","Date","now","EventEmitter","events","queryCache","queryNames","patches","isStale","listeners","length","remove","forEach","queryName","findAll","queryKey","q","invalidate","emit","patch","item","selector","actionType","keepPosition","move","collectionSnapshot","patchedItems","observable","map","deep","originalItems","originalTotal","makeObservable","patchedItemsEntries","computed","ref","onEventuallyUpdated","action","Array","from","entries","exports"],"sources":["../../../src/state/CollectionOptimisticPatch.ts"],"sourcesContent":["import {\n action,\n computed,\n IObservableArray,\n makeObservable,\n observable,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { ActionMove } from '../model';\nimport { QueryCache } from 'react-query/core';\n\ninterface OptimisticPatchEvents<T> {\n scheduleRemoval: (patch: OptimisticPatch<T>) => unknown;\n}\n\nexport type OptimisticPatchActionType =\n | 'move'\n | 'createMany'\n | 'updateMany'\n | 'updateAll'\n | 'updateAllConst'\n | 'deleteMany'\n | 'deleteAll';\n\nexport interface OptimisticPatchParams<T> {\n readonly patch?: (\n item: T,\n patch: OptimisticPatch<T>,\n ) => Partial<T> | undefined;\n readonly selector: (item: T, patch: OptimisticPatch<T>) => boolean;\n readonly actionType: OptimisticPatchActionType;\n readonly patchedItems: Map<string, T>;\n readonly originalItems: Map<string, T>;\n readonly originalTotal: number;\n readonly keepPosition?: boolean;\n readonly queryNames: string[];\n readonly queryCache: QueryCache;\n readonly patches: IObservableArray<OptimisticPatch<T>>;\n readonly move?: ActionMove<T>;\n readonly collectionSnapshot?: { [key: string]: string | number | undefined };\n}\n\nexport class OptimisticPatch<T> {\n readonly patch;\n readonly selector;\n readonly actionType;\n readonly patchedItems;\n readonly originalItems;\n readonly originalTotal;\n readonly keepPosition;\n readonly queryNames;\n readonly queryCache;\n readonly patches;\n readonly move;\n readonly createdAt = Date.now();\n readonly collectionSnapshot;\n\n isStale: boolean = false;\n\n readonly events = new EventEmitter() as TypedEmitter<\n OptimisticPatchEvents<T>\n >;\n\n constructor(params: OptimisticPatchParams<T>) {\n this.patch = (item: T) => params.patch?.(item, this);\n this.selector = (item: T) => params.selector(item, this);\n this.actionType = params.actionType;\n this.keepPosition = params.keepPosition;\n this.queryNames = params.queryNames;\n this.queryCache = params.queryCache;\n this.patches = params.patches;\n this.move = params.move;\n this.collectionSnapshot = params.collectionSnapshot;\n\n this.patchedItems = observable.map<string, T>(params.patchedItems, {\n deep: false,\n });\n\n this.originalItems = observable.map<string, T>(params.originalItems, {\n deep: false,\n });\n\n this.originalTotal = params.originalTotal;\n\n makeObservable(this, {\n patchedItemsEntries: computed,\n isStale: observable.ref,\n onEventuallyUpdated: action,\n });\n }\n\n get patchedItemsEntries() {\n return Array.from(this.patchedItems.entries());\n }\n\n onEventuallyUpdated = () => {\n const { events, queryCache, queryNames, patches } = this;\n this.isStale = true;\n if (!events.listeners('scheduleRemoval').length) {\n patches.remove(this);\n queryNames.forEach((queryName) => {\n queryCache\n .findAll({ queryKey: [queryName] })\n .forEach((q) => q.invalidate());\n });\n } else {\n events.emit('scheduleRemoval', this);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,8 +5,9 @@ exports.__esModule = true;
5
5
  exports.CollectionPageState = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
7
  var _mobx = require("mobx");
8
- var _PageState = require("./PageState");
9
- var _resizeObserverCompat = require("./resizeObserverCompat");
8
+ var _PageState = require("../PageState");
9
+ var _resizeObserverCompat = require("../resizeObserverCompat");
10
+ var _CollectionPageStateBIReporter = require("./CollectionPageStateBIReporter");
10
11
  class CollectionPageState {
11
12
  constructor(params) {
12
13
  (0, _defineProperty2.default)(this, "pageTitle", void 0);
@@ -14,10 +15,17 @@ class CollectionPageState {
14
15
  (0, _defineProperty2.default)(this, "total", false);
15
16
  (0, _defineProperty2.default)(this, "hideHeaderTotal", false);
16
17
  (0, _defineProperty2.default)(this, "scrollTopBeforeUnmount", 0);
18
+ (0, _defineProperty2.default)(this, "bi", void 0);
17
19
  (0, _defineProperty2.default)(this, "pageState", new _PageState.PageState());
18
20
  this.pageTitle = params.pageTitle;
19
21
  this.hasHeader = params.hasHeader;
20
22
  this.hideHeaderTotal = params.hideHeaderTotal;
23
+ if (params.reportBI) {
24
+ this.bi = new _CollectionPageStateBIReporter.CollectionPageStateBIReporter({
25
+ reportBI: params.reportBI,
26
+ collectionPageState: this
27
+ });
28
+ }
21
29
  (0, _mobx.makeObservable)(this, {
22
30
  pageTitle: _mobx.observable.ref,
23
31
  hasHeader: _mobx.observable.ref,
@@ -26,6 +34,8 @@ class CollectionPageState {
26
34
  });
27
35
  }
28
36
  init() {
37
+ var _this$bi, _this$bi2;
38
+ (_this$bi = this.bi) == null || _this$bi.init();
29
39
  const scrollableContent = this.pageState.scrollableContentRef.current;
30
40
  if (!scrollableContent) {
31
41
  return () => {};
@@ -37,6 +47,7 @@ class CollectionPageState {
37
47
  });
38
48
  }
39
49
  });
50
+ (_this$bi2 = this.bi) == null || _this$bi2.appLoaded == null || _this$bi2.appLoaded();
40
51
  return () => {
41
52
  disposer == null || disposer();
42
53
  };
@@ -0,0 +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":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.CollectionPageStateBIReporter = void 0;
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _bi = require("../../exports/bi");
8
+ var _util = require("../../util");
9
+ class CollectionPageStateBIReporter {
10
+ constructor(params) {
11
+ (0, _defineProperty2.default)(this, "collectionPageState", void 0);
12
+ (0, _defineProperty2.default)(this, "reportBI", void 0);
13
+ (0, _defineProperty2.default)(this, "appLoaded", void 0);
14
+ this.collectionPageState = params.collectionPageState;
15
+ this.reportBI = params.reportBI;
16
+ }
17
+ init() {
18
+ const startTime = performance.now();
19
+ this.appLoaded = this.reportOnLoadStart(startTime);
20
+ }
21
+ reportOnLoadStart(startTime) {
22
+ this.reportBI((0, _util.withoutDefaults)(_bi.loadStart)({
23
+ ...this._commonDynamicBiParams()
24
+ }));
25
+ return () => {
26
+ this.reportOnLoadEnd(Math.round(performance.now() - startTime));
27
+ };
28
+ }
29
+ reportOnLoadEnd(endTime) {
30
+ this.reportBI((0, _util.withoutDefaults)(_bi.loadEnd)({
31
+ ...this._commonDynamicBiParams(),
32
+ loadingTime: endTime
33
+ }));
34
+ }
35
+ _commonDynamicBiParams() {
36
+ return {
37
+ url: window.location.href
38
+ };
39
+ }
40
+ }
41
+ exports.CollectionPageStateBIReporter = CollectionPageStateBIReporter;
42
+ //# sourceMappingURL=CollectionPageStateBIReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_bi","require","_util","CollectionPageStateBIReporter","constructor","params","_defineProperty2","default","collectionPageState","reportBI","init","startTime","performance","now","appLoaded","reportOnLoadStart","withoutDefaults","loadStart","_commonDynamicBiParams","reportOnLoadEnd","Math","round","endTime","loadEnd","loadingTime","url","window","location","href","exports"],"sources":["../../../../src/state/CollectionPageState/CollectionPageStateBIReporter.ts"],"sourcesContent":["import { loadEnd, loadStart } from '../../exports/bi';\nimport { ReportBI } from '../../services';\nimport { withoutDefaults } from '../../util';\nimport { CollectionPageState } from './CollectionPageState';\n\nexport interface CollectionPageStateBIReporterParams {\n reportBI: ReportBI;\n collectionPageState: CollectionPageState;\n}\n\nexport class CollectionPageStateBIReporter {\n readonly collectionPageState: CollectionPageState;\n readonly reportBI: ReportBI;\n appLoaded?: () => void;\n\n constructor(params: CollectionPageStateBIReporterParams) {\n this.collectionPageState = params.collectionPageState;\n this.reportBI = params.reportBI;\n }\n\n init() {\n const startTime = performance.now();\n this.appLoaded = this.reportOnLoadStart(startTime);\n }\n\n reportOnLoadStart(startTime: number) {\n this.reportBI(\n withoutDefaults(loadStart)({\n ...this._commonDynamicBiParams(),\n }),\n );\n return () => {\n this.reportOnLoadEnd(Math.round(performance.now() - startTime));\n };\n }\n\n reportOnLoadEnd(endTime: number) {\n this.reportBI(\n withoutDefaults(loadEnd)({\n ...this._commonDynamicBiParams(),\n loadingTime: endTime,\n }),\n );\n }\n\n _commonDynamicBiParams() {\n return {\n url: window.location.href,\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAQO,MAAME,6BAA6B,CAAC;EAKzCC,WAAWA,CAACC,MAA2C,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IACvD,IAAI,CAACC,mBAAmB,GAAGH,MAAM,CAACG,mBAAmB;IACrD,IAAI,CAACC,QAAQ,GAAGJ,MAAM,CAACI,QAAQ;EACjC;EAEAC,IAAIA,CAAA,EAAG;IACL,MAAMC,SAAS,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;IACnC,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,iBAAiB,CAACJ,SAAS,CAAC;EACpD;EAEAI,iBAAiBA,CAACJ,SAAiB,EAAE;IACnC,IAAI,CAACF,QAAQ,CACX,IAAAO,qBAAe,EAACC,aAAS,CAAC,CAAC;MACzB,GAAG,IAAI,CAACC,sBAAsB,CAAC;IACjC,CAAC,CACH,CAAC;IACD,OAAO,MAAM;MACX,IAAI,CAACC,eAAe,CAACC,IAAI,CAACC,KAAK,CAACT,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS,CAAC,CAAC;IACjE,CAAC;EACH;EAEAQ,eAAeA,CAACG,OAAe,EAAE;IAC/B,IAAI,CAACb,QAAQ,CACX,IAAAO,qBAAe,EAACO,WAAO,CAAC,CAAC;MACvB,GAAG,IAAI,CAACL,sBAAsB,CAAC,CAAC;MAChCM,WAAW,EAAEF;IACf,CAAC,CACH,CAAC;EACH;EAEAJ,sBAAsBA,CAAA,EAAG;IACvB,OAAO;MACLO,GAAG,EAAEC,MAAM,CAACC,QAAQ,CAACC;IACvB,CAAC;EACH;AACF;AAACC,OAAA,CAAA1B,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _CollectionPageState = require("./CollectionPageState");
5
+ Object.keys(_CollectionPageState).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _CollectionPageState[key]) return;
8
+ exports[key] = _CollectionPageState[key];
9
+ });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_CollectionPageState","require","Object","keys","forEach","key","exports"],"sources":["../../../../src/state/CollectionPageState/index.ts"],"sourcesContent":["export * from './CollectionPageState';\n"],"mappings":";;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,oBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,oBAAA,CAAAK,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAL,oBAAA,CAAAK,GAAA;AAAA","ignoreList":[]}
@@ -196,6 +196,7 @@ class TagsManagementState {
196
196
  async createTag({
197
197
  name,
198
198
  origin,
199
+ tagSubOrigin,
199
200
  filteredListSize,
200
201
  id = (0, _uuid.v4)(),
201
202
  isFromSearch = false,
@@ -208,7 +209,8 @@ class TagsManagementState {
208
209
  tagName: name,
209
210
  isFromSearch,
210
211
  actionName,
211
- origin
212
+ origin,
213
+ tagSubOrigin
212
214
  });
213
215
  const newTag = {
214
216
  id,
@@ -241,6 +243,7 @@ class TagsManagementState {
241
243
  tagToUpdate,
242
244
  previousName,
243
245
  origin,
246
+ tagSubOrigin,
244
247
  filteredListSize,
245
248
  isFromSearch = false,
246
249
  optimisticActionParams = {},
@@ -252,7 +255,8 @@ class TagsManagementState {
252
255
  previousName,
253
256
  tagName: tagToUpdate.name,
254
257
  isFromSearch,
255
- origin
258
+ origin,
259
+ tagSubOrigin
256
260
  });
257
261
  this.optimisticActions.updateOne({
258
262
  ...tagToUpdate,
@@ -277,6 +281,7 @@ class TagsManagementState {
277
281
  async deleteTag({
278
282
  tagToDelete,
279
283
  origin,
284
+ tagSubOrigin,
280
285
  filteredListSize,
281
286
  isFromSearch = true,
282
287
  optimisticActionParams = {},
@@ -288,7 +293,8 @@ class TagsManagementState {
288
293
  actionName,
289
294
  tagName,
290
295
  isFromSearch,
291
- origin
296
+ origin,
297
+ tagSubOrigin
292
298
  });
293
299
  await this.optimisticActions.deleteOne(tagToDelete, {
294
300
  submit: async () => {