@wix/bex-core 2.34.0 → 2.37.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.
- package/dist/cjs/InMemoryBackend/InMemoryBackend.js +6 -2
- package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
- package/dist/cjs/assets/locale/messages_cs.json +3 -0
- package/dist/cjs/assets/locale/messages_da.json +3 -0
- package/dist/cjs/assets/locale/messages_de.json +3 -0
- package/dist/cjs/assets/locale/messages_en.json +2 -1
- package/dist/cjs/assets/locale/messages_es.json +3 -0
- package/dist/cjs/assets/locale/messages_fr.json +3 -0
- package/dist/cjs/assets/locale/messages_hi.json +3 -0
- package/dist/cjs/assets/locale/messages_id.json +3 -0
- package/dist/cjs/assets/locale/messages_it.json +3 -0
- package/dist/cjs/assets/locale/messages_ja.json +3 -0
- package/dist/cjs/assets/locale/messages_ko.json +3 -0
- package/dist/cjs/assets/locale/messages_nl.json +3 -0
- package/dist/cjs/assets/locale/messages_no.json +3 -0
- package/dist/cjs/assets/locale/messages_pl.json +3 -0
- package/dist/cjs/assets/locale/messages_pt.json +3 -0
- package/dist/cjs/assets/locale/messages_ru.json +3 -0
- package/dist/cjs/assets/locale/messages_sv.json +3 -0
- package/dist/cjs/assets/locale/messages_th.json +3 -0
- package/dist/cjs/assets/locale/messages_tr.json +3 -0
- package/dist/cjs/assets/locale/messages_uk.json +3 -0
- package/dist/cjs/assets/locale/messages_vi.json +3 -0
- package/dist/cjs/assets/locale/messages_visuale2e.json +9 -0
- package/dist/cjs/assets/locale/messages_zh.json +3 -0
- package/dist/cjs/hooks/createCollectionConfig.js.map +1 -1
- package/dist/cjs/model/actionMove.js.map +1 -1
- package/dist/cjs/providers/createContext.js.map +1 -1
- package/dist/cjs/services/cairoMonitor.js.map +1 -1
- package/dist/cjs/services/dataExtensionService.js.map +1 -1
- package/dist/cjs/services/fetchTranslations.js.map +1 -1
- package/dist/cjs/services/navigationManager.js.map +1 -1
- package/dist/cjs/services/replaceSearchParamsWith.js.map +1 -1
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticActions.js +2 -1
- package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticExecutor.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticProcessor.js +1 -0
- package/dist/cjs/state/CollectionOptimisticProcessor.js.map +1 -1
- package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
- package/dist/cjs/state/ExportState.js.map +1 -1
- package/dist/cjs/state/QueryHistoryState.js.map +1 -1
- package/dist/cjs/state/TagsState/TagsBIReporter.js.map +1 -1
- package/dist/cjs/state/index.js +7 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js +19 -0
- package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +3 -0
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/cjs/state/optimistic-simulation/orderByMoves.js +8 -0
- package/dist/cjs/state/optimistic-simulation/orderByMoves.js.map +1 -1
- package/dist/cjs/testkit/WixPatternsContainer.driver.js.map +1 -1
- package/dist/cjs/testkit/appSettingsMocks.js.map +1 -1
- package/dist/cjs/util/assertKey.js.map +1 -1
- package/dist/cjs/util/typedEmitter.js +0 -2
- package/dist/cjs/util/typedEmitter.js.map +1 -1
- package/dist/esm/InMemoryBackend/InMemoryBackend.js +28 -18
- package/dist/esm/InMemoryBackend/InMemoryBackend.js.map +1 -1
- package/dist/esm/assets/locale/messages_cs.json +3 -0
- package/dist/esm/assets/locale/messages_da.json +3 -0
- package/dist/esm/assets/locale/messages_de.json +3 -0
- package/dist/esm/assets/locale/messages_en.json +2 -1
- package/dist/esm/assets/locale/messages_es.json +3 -0
- package/dist/esm/assets/locale/messages_fr.json +3 -0
- package/dist/esm/assets/locale/messages_hi.json +3 -0
- package/dist/esm/assets/locale/messages_id.json +3 -0
- package/dist/esm/assets/locale/messages_it.json +3 -0
- package/dist/esm/assets/locale/messages_ja.json +3 -0
- package/dist/esm/assets/locale/messages_ko.json +3 -0
- package/dist/esm/assets/locale/messages_nl.json +3 -0
- package/dist/esm/assets/locale/messages_no.json +3 -0
- package/dist/esm/assets/locale/messages_pl.json +3 -0
- package/dist/esm/assets/locale/messages_pt.json +3 -0
- package/dist/esm/assets/locale/messages_ru.json +3 -0
- package/dist/esm/assets/locale/messages_sv.json +3 -0
- package/dist/esm/assets/locale/messages_th.json +3 -0
- package/dist/esm/assets/locale/messages_tr.json +3 -0
- package/dist/esm/assets/locale/messages_uk.json +3 -0
- package/dist/esm/assets/locale/messages_vi.json +3 -0
- package/dist/esm/assets/locale/messages_visuale2e.json +9 -0
- package/dist/esm/assets/locale/messages_zh.json +3 -0
- package/dist/esm/hooks/createCollection.js +17 -6
- package/dist/esm/hooks/createCollection.js.map +1 -1
- package/dist/esm/hooks/createCollectionConfig.js +12 -7
- package/dist/esm/hooks/createCollectionConfig.js.map +1 -1
- package/dist/esm/hooks/useAmbassadorCollection.js +15 -6
- package/dist/esm/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/esm/hooks/useCollection/useCollection.js +4 -1
- package/dist/esm/hooks/useCollection/useCollection.js.map +1 -1
- package/dist/esm/hooks/useCollectionPageState.js +8 -6
- package/dist/esm/hooks/useCollectionPageState.js.map +1 -1
- package/dist/esm/hooks/useOptimisticActions.js +6 -5
- package/dist/esm/hooks/useOptimisticActions.js.map +1 -1
- package/dist/esm/hooks/usePicker.js +8 -4
- package/dist/esm/hooks/usePicker.js.map +1 -1
- package/dist/esm/services/AccountPreferencesMergeStrategy.js +1 -2
- package/dist/esm/services/AccountPreferencesMergeStrategy.js.map +1 -1
- package/dist/esm/services/AccountPreferencesStrategy.js +1 -2
- package/dist/esm/services/AccountPreferencesStrategy.js.map +1 -1
- package/dist/esm/services/AppSettingsCapsule.js +5 -3
- package/dist/esm/services/AppSettingsCapsule.js.map +1 -1
- package/dist/esm/services/WixPatternsError.js +1 -1
- package/dist/esm/services/WixPatternsError.js.map +1 -1
- package/dist/esm/services/cairoMonitor.js +14 -13
- package/dist/esm/services/cairoMonitor.js.map +1 -1
- package/dist/esm/services/createAccountComponentSettings.js +6 -4
- package/dist/esm/services/createAccountComponentSettings.js.map +1 -1
- package/dist/esm/services/dataExtensionService.js +33 -12
- package/dist/esm/services/dataExtensionService.js.map +1 -1
- package/dist/esm/services/experiments.js +1 -2
- package/dist/esm/services/experiments.js.map +1 -1
- package/dist/esm/services/fetchTranslations.js +1 -1
- package/dist/esm/services/fetchTranslations.js.map +1 -1
- package/dist/esm/services/getErrorMonitorCompat.js +1 -2
- package/dist/esm/services/getErrorMonitorCompat.js.map +1 -1
- package/dist/esm/services/replaceSearchParamsWith.js +4 -1
- package/dist/esm/services/replaceSearchParamsWith.js.map +1 -1
- package/dist/esm/state/AppsState.js +1 -2
- package/dist/esm/state/AppsState.js.map +1 -1
- package/dist/esm/state/ArrayFilterState/ArrayFilterState.js +59 -32
- package/dist/esm/state/ArrayFilterState/ArrayFilterState.js.map +1 -1
- package/dist/esm/state/BeforeUnloadCompatState.js +11 -6
- package/dist/esm/state/BeforeUnloadCompatState.js.map +1 -1
- package/dist/esm/state/BulkActionModalState.js +6 -1
- package/dist/esm/state/BulkActionModalState.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticActions.js +126 -76
- package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticExecutor.js +32 -19
- package/dist/esm/state/CollectionOptimisticExecutor.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticPatch.js +1 -1
- package/dist/esm/state/CollectionOptimisticPatch.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticProcessor.js +3 -3
- package/dist/esm/state/CollectionOptimisticProcessor.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticSequenceExecutor.js +18 -8
- package/dist/esm/state/CollectionOptimisticSequenceExecutor.js.map +1 -1
- package/dist/esm/state/CollectionPageState.js +1 -1
- package/dist/esm/state/CollectionPageState.js.map +1 -1
- package/dist/esm/state/CollectionState.js +73 -46
- package/dist/esm/state/CollectionState.js.map +1 -1
- package/dist/esm/state/CustomFieldModalBiReporter.js +1 -1
- package/dist/esm/state/CustomFieldModalBiReporter.js.map +1 -1
- package/dist/esm/state/CustomFieldModalState.js +5 -7
- package/dist/esm/state/CustomFieldModalState.js.map +1 -1
- package/dist/esm/state/CustomFieldsViewWidgetState.js +11 -11
- package/dist/esm/state/CustomFieldsViewWidgetState.js.map +1 -1
- package/dist/esm/state/CustomFilterState/CustomFilterState.js +15 -16
- package/dist/esm/state/CustomFilterState/CustomFilterState.js.map +1 -1
- package/dist/esm/state/DataExtensionState.js +19 -27
- package/dist/esm/state/DataExtensionState.js.map +1 -1
- package/dist/esm/state/ExportState.js +96 -46
- package/dist/esm/state/ExportState.js.map +1 -1
- package/dist/esm/state/ExportStateBIReporter.js +27 -8
- package/dist/esm/state/ExportStateBIReporter.js.map +1 -1
- package/dist/esm/state/ModalState.js +3 -6
- package/dist/esm/state/ModalState.js.map +1 -1
- package/dist/esm/state/MultiCollectionSupport.js +2 -4
- package/dist/esm/state/MultiCollectionSupport.js.map +1 -1
- package/dist/esm/state/OnlineState.js +2 -4
- package/dist/esm/state/OnlineState.js.map +1 -1
- package/dist/esm/state/Pagination.js +1 -2
- package/dist/esm/state/Pagination.js.map +1 -1
- package/dist/esm/state/PickerState.js +78 -24
- package/dist/esm/state/PickerState.js.map +1 -1
- package/dist/esm/state/PromiseState.js +21 -4
- package/dist/esm/state/PromiseState.js.map +1 -1
- package/dist/esm/state/PromisesSequence.js +1 -1
- package/dist/esm/state/PromisesSequence.js.map +1 -1
- package/dist/esm/state/QueryPendingState.js +6 -8
- package/dist/esm/state/QueryPendingState.js.map +1 -1
- package/dist/esm/state/QueryPendingStateBIReporter.js +9 -4
- package/dist/esm/state/QueryPendingStateBIReporter.js.map +1 -1
- package/dist/esm/state/QueryResultSimulationDefault.js +1 -1
- package/dist/esm/state/QueryResultSimulationDefault.js.map +1 -1
- package/dist/esm/state/QueryResultState.js +6 -2
- package/dist/esm/state/QueryResultState.js.map +1 -1
- package/dist/esm/state/QueryState.js +15 -13
- package/dist/esm/state/QueryState.js.map +1 -1
- package/dist/esm/state/RangeFilterState/RangeFilterState.js +34 -24
- package/dist/esm/state/RangeFilterState/RangeFilterState.js.map +1 -1
- package/dist/esm/state/ReturnFocus.js +1 -2
- package/dist/esm/state/ReturnFocus.js.map +1 -1
- package/dist/esm/state/SelectState.js +16 -10
- package/dist/esm/state/SelectState.js.map +1 -1
- package/dist/esm/state/SortState.js +3 -3
- package/dist/esm/state/SortState.js.map +1 -1
- package/dist/esm/state/StringFilterState/StringFilterState.js +19 -16
- package/dist/esm/state/StringFilterState/StringFilterState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsAssignmentState.js +38 -22
- package/dist/esm/state/TagsState/TagsAssignmentState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsBIReporter.js +37 -9
- package/dist/esm/state/TagsState/TagsBIReporter.js.map +1 -1
- package/dist/esm/state/TagsState/TagsFormState.js +8 -7
- package/dist/esm/state/TagsState/TagsFormState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsManagementState.js +70 -50
- package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsWidgetState.js +14 -13
- package/dist/esm/state/TagsState/TagsWidgetState.js.map +1 -1
- package/dist/esm/state/TaskState.js +20 -6
- package/dist/esm/state/TaskState.js.map +1 -1
- package/dist/esm/state/TextOverflowState.js +1 -1
- package/dist/esm/state/TextOverflowState.js.map +1 -1
- package/dist/esm/state/TransitionState.js +1 -1
- package/dist/esm/state/TransitionState.js.map +1 -1
- package/dist/esm/state/WixPatternsContainer.js +20 -11
- package/dist/esm/state/WixPatternsContainer.js.map +1 -1
- package/dist/esm/state/buildWixPatternsContainer.js +16 -7
- package/dist/esm/state/buildWixPatternsContainer.js.map +1 -1
- package/dist/esm/state/getJobItemsAbsoluteCounter.js +6 -8
- package/dist/esm/state/getJobItemsAbsoluteCounter.js.map +1 -1
- package/dist/esm/state/index.js +1 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/esm/state/onItemsCreated.js +9 -5
- package/dist/esm/state/onItemsCreated.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js +10 -0
- package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
- package/dist/esm/state/optimistic-simulation/filterPageByPatches.js +4 -1
- package/dist/esm/state/optimistic-simulation/filterPageByPatches.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +3 -0
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/orderByMoves.js +9 -3
- package/dist/esm/state/optimistic-simulation/orderByMoves.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/orderByOrders.js +1 -1
- package/dist/esm/state/optimistic-simulation/orderByOrders.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/transformItemByUpdateAllPatches.js +4 -1
- package/dist/esm/state/optimistic-simulation/transformItemByUpdateAllPatches.js.map +1 -1
- package/dist/esm/state/warmUpPickerStandalone.js +13 -2
- package/dist/esm/state/warmUpPickerStandalone.js.map +1 -1
- package/dist/esm/testkit/ProductsCollectionState.driver.js +38 -4
- package/dist/esm/testkit/ProductsCollectionState.driver.js.map +1 -1
- package/dist/esm/testkit/WixPatternsContainer.driver.js +89 -63
- package/dist/esm/testkit/WixPatternsContainer.driver.js.map +1 -1
- package/dist/esm/testkit/appSettingsMocks.js +7 -6
- package/dist/esm/testkit/appSettingsMocks.js.map +1 -1
- package/dist/esm/testkit/createCountriesBackend.js +15 -8
- package/dist/esm/testkit/createCountriesBackend.js.map +1 -1
- package/dist/esm/testkit/createFoldersBackend.js +48 -30
- package/dist/esm/testkit/createFoldersBackend.js.map +1 -1
- package/dist/esm/testkit/createProductsBackend.js +32 -18
- package/dist/esm/testkit/createProductsBackend.js.map +1 -1
- package/dist/esm/testkit/exportServiceMocks.js +65 -17
- package/dist/esm/testkit/exportServiceMocks.js.map +1 -1
- package/dist/esm/testkit/nestifyItems.js +6 -6
- package/dist/esm/testkit/nestifyItems.js.map +1 -1
- package/dist/esm/util/assertKey.js +4 -6
- package/dist/esm/util/assertKey.js.map +1 -1
- package/dist/esm/util/isHttpError.js +1 -2
- package/dist/esm/util/isHttpError.js.map +1 -1
- package/dist/esm/util/parseFqdn.js +1 -2
- package/dist/esm/util/parseFqdn.js.map +1 -1
- package/dist/esm/util/shouldRedirectToLogin.js +1 -1
- package/dist/esm/util/shouldRedirectToLogin.js.map +1 -1
- package/dist/types/InMemoryBackend/InMemoryBackend.d.ts +10 -6
- package/dist/types/InMemoryBackend/InMemoryBackend.d.ts.map +1 -1
- package/dist/types/model/actionMove.d.ts +1 -1
- package/dist/types/model/actionMove.d.ts.map +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts.map +1 -1
- package/dist/types/services/translations.d.ts +1 -1
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
- package/dist/types/state/CollectionOptimisticProcessor.d.ts.map +1 -1
- package/dist/types/state/WixPatternsContainer.d.ts +3 -3
- package/dist/types/state/WixPatternsContainer.d.ts.map +1 -1
- package/dist/types/state/index.d.ts +1 -0
- package/dist/types/state/index.d.ts.map +1 -1
- package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts +5 -0
- package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts.map +1 -0
- package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
- package/dist/types/state/optimistic-simulation/orderByMoves.d.ts +1 -0
- package/dist/types/state/optimistic-simulation/orderByMoves.d.ts.map +1 -1
- package/dist/types/util/typedEmitter.d.ts +1 -1
- package/dist/types/util/typedEmitter.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_CollectionOptimisticActionsState","_CollectionOptimisticProcessor","_CollectionOptimisticPatch","_CollectionOptimisticExecutor","_events","_QueryResultSimulationDefault","_CollectionOptimisticSequenceExecutor","CollectionOptimisticActions","constructor","params","_defineProperty2","default","EventEmitter","Map","action","patch","state","collection","collections","noInvalidate","patches","remove","invalidate","forEach","p","refreshAllPages","events","clearPatch","off","_clearPatch","onRefresh","isStale","once","on","emit","query","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","sequences","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 = new Map<string, CollectionOptimisticSequenceExecutor>();\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.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","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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_util","require","CollectionOptimisticExecutor","constructor","params","_defineProperty2","default","showToast","translate","errorMonitor","lodash","container","executePending","bind","scheduleExecution","batchWait","throttle","leading","trailing","removeAndShowToast","toastConfig","removeToast","remove","rollback","actions","onRollback","_actions","filter","action","indexOf","getSuccessToast","successToast","showUndoToast","showUndoSuccessToast","onUndo","t","resolveUndoTimeoutPromise","state","undoToast","timeoutPromises","Promise","_resolve","resolve","setTimeout","removeNavigationListener","addEventListener","events","title","text","uiType","onClick","status","type","priority","biName","message","removeToastOnClick","undefined","_execute","successToastState","submit","errorToast","errorToastFn","onTryAgain","onError","eventuallyUpdated","onEventuallyUpdated","undoResult","race","submitPromise","updateServerAfterPromise","all","then","result","err","console","error","captureException","onRetryClick","_this$removeToast","call","execute","exports"],"sources":["../../../src/state/CollectionOptimisticExecutor.ts"],"sourcesContent":["import { ShowToast, ToastConfig } from '../model';\nimport {\n ErrorMonitor,\n ModalLayoutProps,\n PartialLodash,\n Translate,\n} from '../services';\nimport { addEventListener, TypedEmitter } from '../util';\n\nexport type EventuallyUpdated = 'submit' | number | Promise<unknown>;\n\nexport interface ExecuteParams<A, R> {\n showUndoToast?: boolean;\n showUndoSuccessToast?: boolean;\n submit: (items: A[]) => Promise<R> | undefined;\n eventuallyUpdated?: EventuallyUpdated;\n onEventuallyUpdated?: () => unknown;\n errorToast?: (err: unknown) => ToastConfig | string;\n onTryAgain?: () => void;\n onError?: (err: unknown) => void;\n onUndo?: () => void;\n successToast?: ToastConfig | string;\n onRollback: () => void;\n}\n\ninterface ExecutionBaseParams<A, R> {\n successToastState: SuccessToastState;\n submit: (actions: A[]) => Promise<R> | undefined;\n eventuallyUpdated?: EventuallyUpdated;\n onEventuallyUpdated?: () => unknown;\n errorToast?: (err: unknown) => ToastConfig | string;\n onTryAgain?: () => void;\n onError?: (err: unknown) => void;\n successToast?: ToastConfig | string;\n onRollback: () => void;\n}\n\ninterface ExecutionParams<A, R> extends ExecutionBaseParams<A, R> {\n actions: A[];\n}\n\ninterface ScheduleExecutionParams<A, R> extends ExecutionBaseParams<A, R> {}\n\ninterface SuccessToastState {\n undoToast?: UndoToastState;\n}\n\ninterface UndoToastState {\n timeoutPromises: Promise<{ status?: 'undone' } | undefined>[];\n removeNavigationListener: () => void;\n}\n\nexport interface CollectionOptimisticExecutorParams {\n readonly showToast: ShowToast;\n readonly translate: Translate;\n readonly errorMonitor: ErrorMonitor;\n readonly batchWait: number;\n readonly lodash: PartialLodash;\n readonly container: {\n events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n };\n}\n\nexport class CollectionOptimisticExecutor<A> {\n readonly showToast;\n readonly translate;\n readonly errorMonitor;\n readonly lodash;\n readonly container;\n\n removeToast: (() => void) | null = null;\n\n _actions: A[] = [];\n\n scheduleExecution: <R>(params: ScheduleExecutionParams<A, R>) => unknown;\n\n constructor(params: CollectionOptimisticExecutorParams) {\n this.showToast = params.showToast;\n this.translate = params.translate;\n this.errorMonitor = params.errorMonitor;\n this.lodash = params.lodash;\n this.container = params.container;\n\n this.executePending = this.executePending.bind(this);\n\n this.scheduleExecution = params.batchWait\n ? this.lodash.throttle(this.executePending, params.batchWait, {\n leading: false,\n trailing: true,\n })\n : this.executePending;\n }\n\n removeAndShowToast(toastConfig: ToastConfig) {\n const { removeToast, showToast } = this;\n removeToast?.();\n this.removeToast = showToast(toastConfig).remove;\n }\n\n rollback(actions: A[], onRollback: () => void) {\n this._actions = this._actions.filter(\n (action) => actions.indexOf(action) === -1,\n );\n onRollback();\n }\n\n getSuccessToast(\n actions: A[],\n {\n onRollback,\n successToast,\n showUndoToast,\n showUndoSuccessToast,\n onUndo,\n }: {\n successToast?: ToastConfig | string;\n showUndoToast?: boolean;\n showUndoSuccessToast?: boolean;\n onRollback: () => unknown;\n onUndo?: () => unknown;\n },\n ) {\n const { container, showToast, translate: t } = this;\n\n let resolveUndoTimeoutPromise:\n | ((value: { status: 'undone' }) => void)\n | null = null;\n\n const state: SuccessToastState = {};\n\n if (showUndoToast) {\n state.undoToast = {\n timeoutPromises: [\n new Promise<{ status: 'undone' }>((_resolve) => {\n resolveUndoTimeoutPromise = _resolve;\n }),\n new Promise<{ status?: undefined } | undefined>((resolve) =>\n setTimeout(resolve, 6000),\n ),\n ],\n removeNavigationListener: addEventListener(\n container.events,\n 'navigation',\n () => ({\n title: t('cairo.dragAndDrop.leaveSite.modal.title'),\n }),\n ),\n };\n }\n\n if (successToast) {\n this.removeAndShowToast({\n action: showUndoToast\n ? {\n text: t('cairo.toast.undo'),\n uiType: 'LINK',\n onClick: () => {\n resolveUndoTimeoutPromise?.({ status: 'undone' });\n this.rollback(actions, onRollback);\n onUndo?.();\n if (showUndoSuccessToast) {\n showToast({\n type: 'STANDARD',\n priority: 'LOW',\n biName: `cairo-undone`,\n message: t('cairo.toast.undone'),\n });\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n ...(typeof successToast === 'string'\n ? { message: successToast, biName: `cairo-undo` }\n : successToast),\n type: 'SUCCESS',\n });\n }\n\n return state;\n }\n\n async _execute<R>(params: ExecutionParams<A, R>) {\n const {\n successToastState,\n submit,\n errorToast: errorToastFn,\n onTryAgain,\n onError,\n onRollback,\n eventuallyUpdated,\n onEventuallyUpdated,\n actions,\n } = params;\n const { errorMonitor, translate: t } = this;\n\n const { undoToast } = successToastState;\n\n try {\n if (undoToast) {\n const undoResult = await Promise.race(undoToast.timeoutPromises);\n undoToast.removeNavigationListener();\n if (undoResult?.status === 'undone') {\n return undoResult;\n }\n }\n\n const submitPromise = await submit(actions);\n\n const updateServerAfterPromise =\n typeof eventuallyUpdated === 'number'\n ? await Promise.all([\n submitPromise,\n new Promise((resolve) => setTimeout(resolve, eventuallyUpdated)),\n ]).then(() => submitPromise)\n : submitPromise;\n\n const result = await updateServerAfterPromise;\n await onEventuallyUpdated?.();\n\n return {\n result,\n status: 'success',\n };\n } catch (err) {\n console.error(err);\n errorMonitor.captureException(err);\n this.rollback(actions, onRollback);\n onError?.(err);\n\n if (errorToastFn) {\n const onRetryClick = () => {\n onTryAgain?.();\n this.removeToast?.();\n\n this.execute(actions, params);\n };\n\n const errorToast = errorToastFn(err);\n this.removeAndShowToast({\n ...(typeof errorToast === 'string'\n ? { message: errorToast, biName: `cairo-error-toast` }\n : errorToast),\n type: 'ERROR',\n action: {\n uiType: 'LINK',\n text: t('cairo.toast.retry'),\n onClick: onRetryClick,\n removeToastOnClick: true,\n },\n });\n }\n\n return { status: 'error', err };\n }\n }\n\n async executePending<R>(params: ScheduleExecutionParams<A, R>) {\n const { _actions: actions } = this;\n\n this._actions = [];\n\n return this._execute({\n ...params,\n actions,\n });\n }\n\n execute<R>(actions: A[], params: ExecuteParams<A, R>) {\n const {\n showUndoToast,\n showUndoSuccessToast,\n successToast,\n onRollback,\n onUndo,\n } = params;\n\n this._actions = [...this._actions, ...actions];\n\n const successToastState = this.getSuccessToast(actions, {\n onRollback,\n successToast,\n showUndoToast,\n showUndoSuccessToast,\n onUndo,\n });\n\n this.scheduleExecution({\n ...params,\n successToastState,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_util","require","CollectionOptimisticExecutor","constructor","params","_defineProperty2","default","showToast","translate","errorMonitor","lodash","container","executePending","bind","scheduleExecution","batchWait","throttle","leading","trailing","removeAndShowToast","toastConfig","removeToast","remove","rollback","actions","onRollback","_actions","filter","action","indexOf","getSuccessToast","successToast","showUndoToast","showUndoSuccessToast","onUndo","t","resolveUndoTimeoutPromise","state","undoToast","timeoutPromises","Promise","_resolve","resolve","setTimeout","removeNavigationListener","addEventListener","events","title","text","uiType","onClick","status","type","priority","biName","message","removeToastOnClick","undefined","_execute","successToastState","submit","errorToast","errorToastFn","onTryAgain","onError","eventuallyUpdated","onEventuallyUpdated","undoResult","race","submitPromise","updateServerAfterPromise","all","then","result","err","console","error","captureException","onRetryClick","_this$removeToast","call","execute","exports"],"sources":["../../../src/state/CollectionOptimisticExecutor.ts"],"sourcesContent":["import { ShowToast, ToastConfig } from '../model';\nimport {\n ErrorMonitor,\n ModalLayoutProps,\n PartialLodash,\n Translate,\n} from '../services';\nimport { addEventListener, TypedEmitter } from '../util';\n\nexport type EventuallyUpdated = 'submit' | number | Promise<unknown>;\n\nexport interface ExecuteParams<A, R> {\n showUndoToast?: boolean;\n showUndoSuccessToast?: boolean;\n submit: (items: A[]) => Promise<R> | undefined;\n eventuallyUpdated?: EventuallyUpdated;\n onEventuallyUpdated?: () => unknown;\n errorToast?: (err: unknown) => ToastConfig | string;\n onTryAgain?: () => void;\n onError?: (err: unknown) => void;\n onUndo?: () => void;\n successToast?: ToastConfig | string;\n onRollback: () => void;\n}\n\ninterface ExecutionBaseParams<A, R> {\n successToastState: SuccessToastState;\n submit: (actions: A[]) => Promise<R> | undefined;\n eventuallyUpdated?: EventuallyUpdated;\n onEventuallyUpdated?: () => unknown;\n errorToast?: (err: unknown) => ToastConfig | string;\n onTryAgain?: () => void;\n onError?: (err: unknown) => void;\n successToast?: ToastConfig | string;\n onRollback: () => void;\n}\n\ninterface ExecutionParams<A, R> extends ExecutionBaseParams<A, R> {\n actions: A[];\n}\n\ninterface ScheduleExecutionParams<A, R> extends ExecutionBaseParams<A, R> {}\n\ninterface SuccessToastState {\n undoToast?: UndoToastState;\n}\n\ninterface UndoToastState {\n timeoutPromises: Promise<{ status?: 'undone' } | undefined>[];\n removeNavigationListener: () => void;\n}\n\nexport interface CollectionOptimisticExecutorParams {\n readonly showToast: ShowToast;\n readonly translate: Translate;\n readonly errorMonitor: ErrorMonitor;\n readonly batchWait: number;\n readonly lodash: PartialLodash;\n readonly container: {\n events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n };\n}\n\nexport class CollectionOptimisticExecutor<A> {\n readonly showToast;\n readonly translate;\n readonly errorMonitor;\n readonly lodash;\n readonly container;\n\n removeToast: (() => void) | null = null;\n\n _actions: A[] = [];\n\n scheduleExecution: <R>(params: ScheduleExecutionParams<A, R>) => unknown;\n\n constructor(params: CollectionOptimisticExecutorParams) {\n this.showToast = params.showToast;\n this.translate = params.translate;\n this.errorMonitor = params.errorMonitor;\n this.lodash = params.lodash;\n this.container = params.container;\n\n this.executePending = this.executePending.bind(this);\n\n this.scheduleExecution = params.batchWait\n ? this.lodash.throttle(this.executePending, params.batchWait, {\n leading: false,\n trailing: true,\n })\n : this.executePending;\n }\n\n removeAndShowToast(toastConfig: ToastConfig) {\n const { removeToast, showToast } = this;\n removeToast?.();\n this.removeToast = showToast(toastConfig).remove;\n }\n\n rollback(actions: A[], onRollback: () => void) {\n this._actions = this._actions.filter(\n (action) => actions.indexOf(action) === -1,\n );\n onRollback();\n }\n\n getSuccessToast(\n actions: A[],\n {\n onRollback,\n successToast,\n showUndoToast,\n showUndoSuccessToast,\n onUndo,\n }: {\n successToast?: ToastConfig | string;\n showUndoToast?: boolean;\n showUndoSuccessToast?: boolean;\n onRollback: () => unknown;\n onUndo?: () => unknown;\n },\n ) {\n const { container, showToast, translate: t } = this;\n\n let resolveUndoTimeoutPromise:\n | ((value: { status: 'undone' }) => void)\n | null = null;\n\n const state: SuccessToastState = {};\n\n if (showUndoToast) {\n state.undoToast = {\n timeoutPromises: [\n new Promise<{ status: 'undone' }>((_resolve) => {\n resolveUndoTimeoutPromise = _resolve;\n }),\n new Promise<{ status?: undefined } | undefined>((resolve) =>\n setTimeout(resolve, 6000),\n ),\n ],\n removeNavigationListener: addEventListener(\n container.events,\n 'navigation',\n () => ({\n title: t('cairo.dragAndDrop.leaveSite.modal.title'),\n }),\n ),\n };\n }\n\n if (successToast) {\n this.removeAndShowToast({\n action: showUndoToast\n ? {\n text: t('cairo.toast.undo'),\n uiType: 'LINK',\n onClick: () => {\n resolveUndoTimeoutPromise?.({ status: 'undone' });\n this.rollback(actions, onRollback);\n onUndo?.();\n if (showUndoSuccessToast) {\n showToast({\n type: 'STANDARD',\n priority: 'LOW',\n biName: `cairo-undone`,\n message: t('cairo.toast.undone'),\n });\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n ...(typeof successToast === 'string'\n ? { message: successToast, biName: `cairo-undo` }\n : successToast),\n type: 'SUCCESS',\n });\n }\n\n return state;\n }\n\n async _execute<R>(params: ExecutionParams<A, R>) {\n const {\n successToastState,\n submit,\n errorToast: errorToastFn,\n onTryAgain,\n onError,\n onRollback,\n eventuallyUpdated,\n onEventuallyUpdated,\n actions,\n } = params;\n const { errorMonitor, translate: t } = this;\n\n const { undoToast } = successToastState;\n\n try {\n if (undoToast) {\n const undoResult = await Promise.race(undoToast.timeoutPromises);\n undoToast.removeNavigationListener();\n if (undoResult?.status === 'undone') {\n return undoResult;\n }\n }\n\n const submitPromise = await submit(actions);\n\n const updateServerAfterPromise =\n typeof eventuallyUpdated === 'number'\n ? await Promise.all([\n submitPromise,\n new Promise((resolve) => setTimeout(resolve, eventuallyUpdated)),\n ]).then(() => submitPromise)\n : submitPromise;\n\n const result = await updateServerAfterPromise;\n await onEventuallyUpdated?.();\n\n return {\n result,\n status: 'success',\n };\n } catch (err) {\n console.error(err);\n errorMonitor.captureException(err);\n this.rollback(actions, onRollback);\n onError?.(err);\n\n if (errorToastFn) {\n const onRetryClick = () => {\n onTryAgain?.();\n this.removeToast?.();\n\n this.execute(actions, params);\n };\n\n const errorToast = errorToastFn(err);\n this.removeAndShowToast({\n ...(typeof errorToast === 'string'\n ? { message: errorToast, biName: `cairo-error-toast` }\n : errorToast),\n type: 'ERROR',\n action: {\n uiType: 'LINK',\n text: t('cairo.toast.retry'),\n onClick: onRetryClick,\n removeToastOnClick: true,\n },\n });\n }\n\n return { status: 'error', err };\n }\n }\n\n async executePending<R>(params: ScheduleExecutionParams<A, R>) {\n const { _actions: actions } = this;\n\n this._actions = [];\n\n return this._execute({\n ...params,\n actions,\n });\n }\n\n execute<R>(actions: A[], params: ExecuteParams<A, R>) {\n const {\n showUndoToast,\n showUndoSuccessToast,\n successToast,\n onRollback,\n onUndo,\n } = params;\n\n this._actions = [...this._actions, ...actions];\n\n const successToastState = this.getSuccessToast(actions, {\n onRollback,\n successToast,\n showUndoToast,\n showUndoSuccessToast,\n onUndo,\n });\n\n this.scheduleExecution({\n ...params,\n successToastState,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_QueryResultSimulationDefault","_CollectionOptimisticHelpers","_optimisticSimulation","_orderByOrders","_orderByMoves","CollectionOptimisticProcessor","constructor","params","_defineProperty2","default","collection","processorHelpers","CollectionOptimisticProcessorHelpers","optimistic","resultSimulationDefault","QueryResultSimulationDefault","predicate","orderBy","makeObservable","reprocess","action","bound","beforeAddNewPages","beforeSetTotal","_register","emitter","on","events","removeSelectionIfExists","itemKey","bulkSelect","result","originQuery","state","patches","itemPredicate","filterItem","filterPageByPatches","select","filter","item","pages","currentItemsMap","query","orderByIteratee","limit","length","orders","_orderByMode","finalPages","map","page","transformItemByUpdateAllPatches","itemToMerge","prepareItemsToMergeIntoPage","all","size","index","pageWithPatchedItems","mergePatchedItems","orderByMoves","pageIndex","currentFiltersKeyHash","filtersKeyHash","toMerge","orderByOrders","total","processedTotal","reduce","prev","actionType","patchedItemsEntries","originalItems","originalTotal","key","originalItem","get","patchedItemsTotal","acc","value","Math","max","exports"],"sources":["../../../src/state/CollectionOptimisticProcessor.ts"],"sourcesContent":["import {\n ComputedQuery,\n ComputedQueryFull,\n FiltersMap,\n KeyedItem,\n} from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\nimport { Order, QueryResultSimulation } from './QueryResultSimulation';\nimport { QueryResultSimulationDefault } from './QueryResultSimulationDefault';\nimport { TypedEmitter } from '../util';\nimport { CollectionOptimisticProcessorHelpers } from './CollectionOptimisticHelpers';\nimport { CollectionOptimisticActionsState } from './CollectionOptimisticActionsState';\nimport {\n filterPageByPatches,\n mergePatchedItems,\n prepareItemsToMergeIntoPage,\n transformItemByUpdateAllPatches,\n} from './optimistic-simulation';\nimport { orderByOrders } from './optimistic-simulation/orderByOrders';\nimport { orderByMoves } from './optimistic-simulation/orderByMoves';\nimport { QueryState } from './QueryState';\n\ninterface Optimistic<T, F extends FiltersMap> {\n _orderByMode: 'orders' | 'moves';\n readonly state: CollectionOptimisticActionsState<T>;\n readonly events: TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n }>;\n readonly query: QueryState<F>;\n}\n\nexport interface CollectionOptimisticProcessorParams<T, F extends FiltersMap>\n extends Partial<QueryResultSimulation<T, F>> {\n readonly collection: CollectionState<T, F>;\n readonly optimistic: Optimistic<T, F>;\n}\n\nexport class CollectionOptimisticProcessor<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly processorHelpers: CollectionOptimisticProcessorHelpers<T, F>;\n readonly optimistic: Optimistic<T, F>;\n\n readonly resultSimulationDefault: QueryResultSimulation<T, F>;\n readonly predicate: (computedQuery: ComputedQuery<F>) => (item: T) => boolean;\n readonly orderBy: (computedQuery: ComputedQuery<F>) => Order<T>[];\n\n constructor(params: CollectionOptimisticProcessorParams<T, F>) {\n this.collection = params.collection;\n this.processorHelpers = new CollectionOptimisticProcessorHelpers(\n this.collection,\n );\n this.optimistic = params.optimistic;\n\n this.resultSimulationDefault = new QueryResultSimulationDefault({\n collection: this.collection,\n });\n this.predicate = params.predicate ?? this.resultSimulationDefault.predicate;\n this.orderBy = params.orderBy ?? this.resultSimulationDefault.orderBy;\n\n makeObservable(this, {\n reprocess: action.bound,\n beforeAddNewPages: action.bound,\n beforeSetTotal: action.bound,\n });\n\n this._register();\n }\n\n _register() {\n this.collection.emitter.on('beforeAddNewPages', this.beforeAddNewPages);\n this.collection.emitter.on('beforeSetTotal', this.beforeSetTotal);\n this.optimistic.events.on('reprocess', this.reprocess);\n }\n\n reprocess() {\n this.removeSelectionIfExists();\n this.processorHelpers.reprocess();\n }\n\n removeSelectionIfExists() {\n const {\n collection: {\n itemKey,\n bulkSelect,\n result: { originQuery },\n },\n optimistic: {\n state: { patches },\n },\n predicate,\n } = this;\n\n const itemPredicate = predicate(originQuery);\n\n const filterItem = filterPageByPatches(patches, { itemPredicate, itemKey });\n bulkSelect.select.filter(({ item }) => filterItem(item));\n }\n\n beforeAddNewPages({\n pages,\n currentItemsMap,\n originQuery,\n }: {\n pages: T[][];\n currentItemsMap: Map<string, KeyedItem<T>>;\n originQuery: ComputedQueryFull<F>;\n }) {\n const {\n optimistic: { state, query },\n collection,\n predicate,\n orderBy: orderByIteratee,\n } = this;\n\n const { itemKey } = collection;\n\n const { patches } = state;\n\n const { limit } = originQuery;\n\n if (!patches.length) {\n return pages;\n }\n\n const itemPredicate = predicate(originQuery);\n const orders =\n this.optimistic._orderByMode === 'orders'\n ? orderByIteratee(originQuery)\n : [];\n\n let finalPages = pages;\n\n finalPages = finalPages.map((page) => {\n return page\n .filter(filterPageByPatches(patches, { itemPredicate, itemKey }))\n .map(transformItemByUpdateAllPatches(patches));\n });\n\n const itemToMerge = prepareItemsToMergeIntoPage(patches, {\n itemPredicate,\n currentItemsMap,\n });\n\n if (!itemToMerge.all.size && this.optimistic._orderByMode === 'orders') {\n return finalPages;\n }\n\n finalPages = finalPages.map((page, index) => {\n const pageWithPatchedItems = itemToMerge.all.size\n ? mergePatchedItems(itemToMerge, {\n page,\n limit,\n itemKey,\n orders,\n itemPredicate,\n })\n : page.map((item) => ({ item }));\n\n return this.optimistic._orderByMode === 'moves'\n ? orderByMoves({\n pageWithPatchedItems,\n pageIndex: index,\n patches,\n currentFiltersKeyHash: query.filtersKeyHash,\n itemKey,\n toMerge: itemToMerge,\n limit,\n })\n : orderByOrders(pageWithPatchedItems, itemToMerge, {\n orders,\n itemKey,\n limit,\n });\n });\n\n return finalPages;\n }\n\n beforeSetTotal({\n total,\n originQuery,\n }: {\n total: number;\n originQuery: ComputedQuery<F>;\n }) {\n const {\n optimistic: { state },\n predicate,\n } = this;\n\n const { patches } = state;\n\n if (!patches.length) {\n return total;\n }\n\n const itemPredicate = predicate(originQuery);\n\n const processedTotal = patches.reduce(\n (\n prev,\n { actionType, patchedItemsEntries, originalItems, originalTotal },\n ) => {\n if (actionType === 'updateAllConst' || actionType === 'deleteAll') {\n const [[key, item] = []] = patchedItemsEntries;\n\n if (key == null || item == null) {\n return prev;\n }\n\n const originalItem = originalItems.get(key);\n\n if (\n itemPredicate(item) &&\n (originalItem == null || !itemPredicate(originalItem))\n ) {\n return prev + originalTotal;\n }\n\n if (\n // if action=deleteAll treat the item as filtered out, no need to check predicate\n (actionType === 'deleteAll' || !itemPredicate(item)) &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n return prev - originalTotal;\n }\n\n return prev;\n }\n\n const patchedItemsTotal = patchedItemsEntries.reduce(\n (acc, [key, item]) => {\n const originalItem = originalItems.get(key);\n const value = (() => {\n switch (actionType) {\n case 'deleteMany':\n if (originalItem != null && itemPredicate(originalItem)) {\n return -1;\n }\n\n return 0;\n case 'updateMany':\n case 'updateAll':\n case 'createMany':\n if (\n itemPredicate(item) &&\n (originalItem == null || !itemPredicate(originalItem))\n ) {\n return 1;\n }\n\n if (\n !itemPredicate(item) &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n return -1;\n }\n return 0;\n }\n\n return 0;\n })();\n return acc + value;\n },\n 0,\n );\n\n return prev + patchedItemsTotal;\n },\n total,\n );\n\n return Math.max(processedTotal, 0);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_QueryResultSimulationDefault","_CollectionOptimisticHelpers","_optimisticSimulation","_orderByOrders","_orderByMoves","CollectionOptimisticProcessor","constructor","params","_defineProperty2","default","collection","processorHelpers","CollectionOptimisticProcessorHelpers","optimistic","resultSimulationDefault","QueryResultSimulationDefault","predicate","orderBy","makeObservable","reprocess","action","bound","beforeAddNewPages","beforeSetTotal","_register","emitter","on","events","removeSelectionIfExists","itemKey","bulkSelect","result","originQuery","state","patches","itemPredicate","filterItem","filterPageByPatches","select","filter","item","pages","currentItemsMap","query","orderByIteratee","limit","length","orders","_orderByMode","finalPages","map","page","transformItemByUpdateAllPatches","itemToMerge","prepareItemsToMergeIntoPage","all","size","index","pageWithPatchedItems","mergePatchedItems","orderByMoves","pageIndex","currentFiltersKeyHash","filtersKeyHash","toMerge","orderByOrders","total","processedTotal","reduce","prev","actionType","patchedItemsEntries","originalItems","originalTotal","key","originalItem","get","patchedItemsTotal","acc","value","Math","max","exports"],"sources":["../../../src/state/CollectionOptimisticProcessor.ts"],"sourcesContent":["import {\n ComputedQuery,\n ComputedQueryFull,\n FiltersMap,\n KeyedItem,\n} from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\nimport { Order, QueryResultSimulation } from './QueryResultSimulation';\nimport { QueryResultSimulationDefault } from './QueryResultSimulationDefault';\nimport { TypedEmitter } from '../util';\nimport { CollectionOptimisticProcessorHelpers } from './CollectionOptimisticHelpers';\nimport { CollectionOptimisticActionsState } from './CollectionOptimisticActionsState';\nimport {\n filterPageByPatches,\n mergePatchedItems,\n prepareItemsToMergeIntoPage,\n transformItemByUpdateAllPatches,\n} from './optimistic-simulation';\nimport { orderByOrders } from './optimistic-simulation/orderByOrders';\nimport { orderByMoves } from './optimistic-simulation/orderByMoves';\nimport { QueryState } from './QueryState';\n\ninterface Optimistic<T, F extends FiltersMap> {\n _orderByMode: 'orders' | 'moves';\n readonly state: CollectionOptimisticActionsState<T>;\n readonly events: TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n }>;\n readonly query: QueryState<F>;\n}\n\nexport interface CollectionOptimisticProcessorParams<T, F extends FiltersMap>\n extends Partial<QueryResultSimulation<T, F>> {\n readonly collection: CollectionState<T, F>;\n readonly optimistic: Optimistic<T, F>;\n}\n\nexport class CollectionOptimisticProcessor<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly processorHelpers: CollectionOptimisticProcessorHelpers<T, F>;\n readonly optimistic: Optimistic<T, F>;\n\n readonly resultSimulationDefault: QueryResultSimulation<T, F>;\n readonly predicate: (computedQuery: ComputedQuery<F>) => (item: T) => boolean;\n readonly orderBy: (computedQuery: ComputedQuery<F>) => Order<T>[];\n\n constructor(params: CollectionOptimisticProcessorParams<T, F>) {\n this.collection = params.collection;\n this.processorHelpers = new CollectionOptimisticProcessorHelpers(\n this.collection,\n );\n this.optimistic = params.optimistic;\n\n this.resultSimulationDefault = new QueryResultSimulationDefault({\n collection: this.collection,\n });\n this.predicate = params.predicate ?? this.resultSimulationDefault.predicate;\n this.orderBy = params.orderBy ?? this.resultSimulationDefault.orderBy;\n\n makeObservable(this, {\n reprocess: action.bound,\n beforeAddNewPages: action.bound,\n beforeSetTotal: action.bound,\n });\n\n this._register();\n }\n\n _register() {\n this.collection.emitter.on('beforeAddNewPages', this.beforeAddNewPages);\n this.collection.emitter.on('beforeSetTotal', this.beforeSetTotal);\n this.optimistic.events.on('reprocess', this.reprocess);\n }\n\n reprocess() {\n this.removeSelectionIfExists();\n this.processorHelpers.reprocess();\n }\n\n removeSelectionIfExists() {\n const {\n collection: {\n itemKey,\n bulkSelect,\n result: { originQuery },\n },\n optimistic: {\n state: { patches },\n },\n predicate,\n } = this;\n\n const itemPredicate = predicate(originQuery);\n\n const filterItem = filterPageByPatches(patches, { itemPredicate, itemKey });\n bulkSelect.select.filter(({ item }) => filterItem(item));\n }\n\n beforeAddNewPages({\n pages,\n currentItemsMap,\n originQuery,\n }: {\n pages: T[][];\n currentItemsMap: Map<string, KeyedItem<T>>;\n originQuery: ComputedQueryFull<F>;\n }) {\n const {\n optimistic: { state, query },\n collection,\n predicate,\n orderBy: orderByIteratee,\n } = this;\n\n const { itemKey } = collection;\n\n const { patches } = state;\n\n const { limit } = originQuery;\n\n if (!patches.length) {\n return pages;\n }\n\n const itemPredicate = predicate(originQuery);\n const orders =\n this.optimistic._orderByMode === 'orders'\n ? orderByIteratee(originQuery)\n : [];\n\n let finalPages = pages;\n\n finalPages = finalPages.map((page) => {\n return page\n .filter(filterPageByPatches(patches, { itemPredicate, itemKey }))\n .map(transformItemByUpdateAllPatches(patches));\n });\n\n const itemToMerge = prepareItemsToMergeIntoPage(patches, {\n itemPredicate,\n currentItemsMap,\n });\n\n if (!itemToMerge.all.size && this.optimistic._orderByMode === 'orders') {\n return finalPages;\n }\n\n finalPages = finalPages.map((page, index) => {\n const pageWithPatchedItems = itemToMerge.all.size\n ? mergePatchedItems(itemToMerge, {\n page,\n limit,\n itemKey,\n orders,\n itemPredicate,\n })\n : page.map((item) => ({ item }));\n\n return this.optimistic._orderByMode === 'moves'\n ? orderByMoves({\n pageWithPatchedItems,\n pageIndex: index,\n patches,\n currentFiltersKeyHash: query.filtersKeyHash,\n itemKey,\n toMerge: itemToMerge,\n itemPredicate,\n limit,\n })\n : orderByOrders(pageWithPatchedItems, itemToMerge, {\n orders,\n itemKey,\n limit,\n });\n });\n\n return finalPages;\n }\n\n beforeSetTotal({\n total,\n originQuery,\n }: {\n total: number;\n originQuery: ComputedQuery<F>;\n }) {\n const {\n optimistic: { state },\n predicate,\n } = this;\n\n const { patches } = state;\n\n if (!patches.length) {\n return total;\n }\n\n const itemPredicate = predicate(originQuery);\n\n const processedTotal = patches.reduce(\n (\n prev,\n { actionType, patchedItemsEntries, originalItems, originalTotal },\n ) => {\n if (actionType === 'updateAllConst' || actionType === 'deleteAll') {\n const [[key, item] = []] = patchedItemsEntries;\n\n if (key == null || item == null) {\n return prev;\n }\n\n const originalItem = originalItems.get(key);\n\n if (\n itemPredicate(item) &&\n (originalItem == null || !itemPredicate(originalItem))\n ) {\n return prev + originalTotal;\n }\n\n if (\n // if action=deleteAll treat the item as filtered out, no need to check predicate\n (actionType === 'deleteAll' || !itemPredicate(item)) &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n return prev - originalTotal;\n }\n\n return prev;\n }\n\n const patchedItemsTotal = patchedItemsEntries.reduce(\n (acc, [key, item]) => {\n const originalItem = originalItems.get(key);\n const value = (() => {\n switch (actionType) {\n case 'deleteMany':\n if (originalItem != null && itemPredicate(originalItem)) {\n return -1;\n }\n\n return 0;\n case 'updateMany':\n case 'updateAll':\n case 'createMany':\n if (\n itemPredicate(item) &&\n (originalItem == null || !itemPredicate(originalItem))\n ) {\n return 1;\n }\n\n if (\n !itemPredicate(item) &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n return -1;\n }\n return 0;\n }\n\n return 0;\n })();\n return acc + value;\n },\n 0,\n );\n\n return prev + patchedItemsTotal;\n },\n total,\n );\n\n return Math.max(processedTotal, 0);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","_ConditionalModalState","_CustomFieldModalBiReporter","_formstate","_ToggleState","_util","_isHttpError","CustomFieldModalState","constructor","params","_defineProperty2","default","ToggleState","ConditionalModalState","onConfirm","form","mode","customFieldModalBiReporter","reportModalEndProcess","t","submitError","validation","validate","hasError","enableAutoValidation","Error","_this$dataExtensionSt","_this$dataExtensionSt2","dataExtensionSchema","dataExtensionState","dataExtensionService","addCustomField","getFormValues","schema","userSchema","fqdn","fqdnString","runInAction","container","showToast","call","message","type","biName","endType","e","isHttpError","_e$response","_e$response2","isDetailsResponse","response","data","isErrorDetails","details","_e$response3","validationError","fieldViolations","some","v","ruleName","getErrorType","undefined","reportSubmitFailure","errorType","FormState","FieldState","validators","value","name","key","allUserCustomFields","field","id","test","readUsers","readApps","writeUsers","writeApps","permissions","read","apps","users","write","$","dirty","CustomFieldModalBiReporter","makeObservable","namePlaceholder","computed","isSubmitting","disabledFields","observable","ref","reset","action","setFormValues","generateUniqueKey","bound","setKeyFieldIfNotDirty","settings","setOff","disableAutoValidation","disablePermissionCheckboxes","containsKey","slug","slugify","length","index","translate","modalState","modal","confirming","isLoading","exports"],"sources":["../../../src/state/CustomFieldModalState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { CustomFieldModalBiReporter } from './CustomFieldModalBiReporter';\nimport { FieldState, FormState } from 'formstate';\nimport { ToggleState } from './ToggleState';\nimport { CustomFieldOrigin, CustomFieldType } from '../services';\nimport { DataExtensionState } from './DataExtensionState';\nimport { slugify } from '../util';\nimport {\n isDetailsResponse,\n isErrorDetails,\n isHttpError,\n} from '../util/isHttpError';\n\nexport interface CustomFieldStateParams {\n dataExtensionState: DataExtensionState;\n}\n\nexport interface CustomFieldForm {\n type?: CustomFieldType;\n key: string;\n name: string;\n readApps: boolean;\n readUsers: boolean;\n writeApps: boolean;\n writeUsers: boolean;\n}\n\nexport class CustomFieldModalState {\n dataExtensionState: DataExtensionState;\n customFieldModalBiReporter: CustomFieldModalBiReporter;\n settings = new ToggleState();\n submitError: 'network' | 'technical' | 'max_size' | null = null;\n mode: 'new' | 'edit' = 'new';\n origin: CustomFieldOrigin = 'Custom columns panel';\n\n modalState = new ConditionalModalState({\n onConfirm: async () => {\n const {\n form,\n mode,\n customFieldModalBiReporter: { reportModalEndProcess },\n t,\n } = this;\n\n this.submitError = null;\n\n const validation = await form.validate();\n\n if (validation.hasError) {\n this.enableAutoValidation();\n throw new Error('validation');\n }\n\n try {\n const { dataExtensionSchema } =\n await this.dataExtensionState.dataExtensionService.addCustomField({\n form: this.getFormValues(),\n schema: this.dataExtensionState.userSchema,\n fqdn: this.dataExtensionState.fqdnString,\n });\n\n runInAction(() => {\n this.dataExtensionState.userSchema = dataExtensionSchema;\n });\n\n this.dataExtensionState.container.showToast?.({\n message:\n mode === 'new'\n ? t('cairo.customFields.successToast')\n : t('cairo.customFields.editCustomField.success.toast'),\n type: 'SUCCESS',\n biName: 'cairo-custom-field-success-toast',\n });\n\n reportModalEndProcess({ endType: 'Add Field' });\n } catch (e: unknown) {\n runInAction(() => {\n if (isHttpError(e)) {\n this.submitError = 'network';\n\n if (\n isDetailsResponse(e.response?.data) &&\n isErrorDetails(e.response?.data.details)\n ) {\n if (\n e.response?.data?.details?.validationError?.fieldViolations?.some(\n (v) => v.ruleName === 'EXCEEDED_STORED_DATA_SIZE',\n )\n ) {\n this.submitError = 'max_size';\n } else {\n this.submitError = 'technical';\n }\n }\n }\n });\n\n const getErrorType = () => {\n switch (this.submitError) {\n case 'network':\n return 'Network error';\n case 'max_size':\n return '10k Limitation';\n case 'technical':\n return 'Technical issue';\n default:\n return undefined;\n }\n };\n\n this.customFieldModalBiReporter.reportSubmitFailure({\n errorType: getErrorType(),\n });\n\n // Prevents modal closing\n throw e;\n }\n },\n });\n\n form = new FormState({\n type: new FieldState<CustomFieldType | undefined>(undefined).validators(\n (value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldType.error',\n );\n }\n\n return undefined;\n },\n ),\n name: new FieldState('').validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n return undefined;\n }),\n key: new FieldState('').validators((value) => {\n const {\n t,\n mode,\n dataExtensionState: { allUserCustomFields },\n } = this;\n\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n if (\n mode === 'new' &&\n allUserCustomFields.some((field) => field.id === value)\n ) {\n return t('cairo.customFields.addCustomField.modal.sameKey.error');\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/g.test(value)) {\n return t('cairo.customFields.addCustomField.modal.keyFormat.error');\n }\n\n return undefined;\n }),\n readUsers: new FieldState(false),\n readApps: new FieldState(false),\n writeUsers: new FieldState(false),\n writeApps: new FieldState(false),\n });\n\n disabledFields = {\n permissions: {\n read: { apps: true, users: true },\n write: { apps: true, users: true },\n },\n };\n\n constructor(params: CustomFieldStateParams) {\n this.dataExtensionState = params.dataExtensionState;\n this.customFieldModalBiReporter = new CustomFieldModalBiReporter({\n dataExtensionState: params.dataExtensionState,\n });\n\n makeObservable(this, {\n namePlaceholder: computed,\n isSubmitting: computed,\n disabledFields: observable.ref,\n submitError: observable.ref,\n mode: observable.ref,\n reset: action,\n setFormValues: action,\n generateUniqueKey: action.bound,\n setKeyFieldIfNotDirty: action.bound,\n });\n }\n\n reset() {\n const {\n form,\n settings,\n disabledFields: { permissions },\n } = this;\n\n form.reset();\n settings.setOff();\n this.submitError = null;\n this.disableAutoValidation();\n\n permissions.read.apps = false;\n permissions.read.users = false;\n permissions.write.apps = false;\n permissions.write.users = false;\n }\n\n enableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.enableAutoValidation();\n name.enableAutoValidation();\n type.enableAutoValidation();\n }\n\n disableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.disableAutoValidation();\n name.disableAutoValidation();\n type.disableAutoValidation();\n }\n\n getFormValues(): CustomFieldForm {\n const {\n form: {\n $: { type, key, name, readApps, readUsers, writeApps, writeUsers },\n },\n } = this;\n\n return {\n type: type.value,\n key: key.value,\n name: name.value,\n readApps: readApps.value,\n readUsers: readUsers.value,\n writeApps: writeApps.value,\n writeUsers: writeUsers.value,\n };\n }\n\n setFormValues(\n form: CustomFieldForm,\n params?: { disablePermissionCheckboxes: boolean },\n ) {\n const {\n form: { $ },\n } = this;\n\n $.key.value = form.key;\n $.name.value = form.name;\n $.type.value = form.type;\n $.readApps.value = form.readApps;\n $.readUsers.value = form.readUsers;\n $.writeApps.value = form.writeApps;\n $.writeUsers.value = form.writeUsers;\n\n if (params?.disablePermissionCheckboxes) {\n if (form.readUsers) {\n this.disabledFields.permissions.read.users = true;\n }\n\n if (form.readApps) {\n this.disabledFields.permissions.read.apps = true;\n }\n\n if (form.writeUsers) {\n this.disabledFields.permissions.write.users = true;\n }\n\n if (form.writeApps) {\n this.disabledFields.permissions.write.apps = true;\n }\n }\n }\n\n setKeyFieldIfNotDirty = (value: string) => {\n const {\n form: {\n $: { key },\n },\n mode,\n } = this;\n\n if (mode === 'new' && !key.dirty) {\n // In the formstate library setting a field value using\n // the onChange API sets the dirty state of the field to true.\n // However, since here it's not a manual user input\n // we avoid changing the dirty state by setting a value directly.\n key.value = value;\n }\n };\n\n private containsKey(key: string) {\n return this.dataExtensionState.allUserCustomFields.some(\n (field) => field.id === key,\n );\n }\n\n generateUniqueKey(name: string) {\n const slug = slugify(name);\n const type = this.form.$.type.value;\n\n if (slug && slug.length >= 4 && !this.containsKey(slug)) {\n return slug;\n }\n\n if (!type) {\n return '';\n }\n\n let index = 1;\n\n while (this.containsKey(`${type}_${index}`)) {\n index += 1;\n }\n\n return `${type}_${index}`;\n }\n\n get t() {\n return this.dataExtensionState.container.translate;\n }\n\n get isSubmitting() {\n return this.modalState.modal.confirming.isLoading;\n }\n\n get namePlaceholder() {\n const {\n t,\n form: {\n $: { type },\n },\n } = this;\n\n switch (type.value) {\n case 'dropdown':\n return t('cairo.customFields.fieldType.dropdownList.Name.placeholder');\n case 'checkbox':\n return t('cairo.customFields.fieldType.checkbox.Name.placeholder');\n case 'shortText':\n return t('cairo.customFields.fieldType.shortText.Name.placeholder');\n case 'longText':\n return t('cairo.customFields.fieldType.longText.Name.placeholder');\n case 'date':\n return t('cairo.customFields.fieldType.date.Name.placeholder');\n case 'dateTime':\n return t('cairo.customFields.fieldType.dateAndTime.Name.placeholder');\n case 'integer':\n return t('cairo.customFields.fieldType.numberInteger.Name.placeholder');\n case 'decimal':\n return t('cairo.customFields.fieldType.numberDecimal.Name.placeholder');\n default:\n return t(\n 'cairo.customFields.addCustomField.modal.fieldName.placeholder',\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_mobx","require","_ConditionalModalState","_CustomFieldModalBiReporter","_formstate","_ToggleState","_util","_isHttpError","CustomFieldModalState","constructor","params","_defineProperty2","default","ToggleState","ConditionalModalState","onConfirm","form","mode","customFieldModalBiReporter","reportModalEndProcess","t","submitError","validation","validate","hasError","enableAutoValidation","Error","_this$dataExtensionSt","_this$dataExtensionSt2","dataExtensionSchema","dataExtensionState","dataExtensionService","addCustomField","getFormValues","schema","userSchema","fqdn","fqdnString","runInAction","container","showToast","call","message","type","biName","endType","e","isHttpError","_e$response","_e$response2","isDetailsResponse","response","data","isErrorDetails","details","_e$response3","validationError","fieldViolations","some","v","ruleName","getErrorType","undefined","reportSubmitFailure","errorType","FormState","FieldState","validators","value","name","key","allUserCustomFields","field","id","test","readUsers","readApps","writeUsers","writeApps","permissions","read","apps","users","write","$","dirty","CustomFieldModalBiReporter","makeObservable","namePlaceholder","computed","isSubmitting","disabledFields","observable","ref","reset","action","setFormValues","generateUniqueKey","bound","setKeyFieldIfNotDirty","settings","setOff","disableAutoValidation","disablePermissionCheckboxes","containsKey","slug","slugify","length","index","translate","modalState","modal","confirming","isLoading","exports"],"sources":["../../../src/state/CustomFieldModalState.ts"],"sourcesContent":["import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction,\n} from 'mobx';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { CustomFieldModalBiReporter } from './CustomFieldModalBiReporter';\nimport { FieldState, FormState } from 'formstate';\nimport { ToggleState } from './ToggleState';\nimport { CustomFieldOrigin, CustomFieldType } from '../services';\nimport { DataExtensionState } from './DataExtensionState';\nimport { slugify } from '../util';\nimport {\n isDetailsResponse,\n isErrorDetails,\n isHttpError,\n} from '../util/isHttpError';\n\nexport interface CustomFieldStateParams {\n dataExtensionState: DataExtensionState;\n}\n\nexport interface CustomFieldForm {\n type?: CustomFieldType;\n key: string;\n name: string;\n readApps: boolean;\n readUsers: boolean;\n writeApps: boolean;\n writeUsers: boolean;\n}\n\nexport class CustomFieldModalState {\n dataExtensionState: DataExtensionState;\n customFieldModalBiReporter: CustomFieldModalBiReporter;\n settings = new ToggleState();\n submitError: 'network' | 'technical' | 'max_size' | null = null;\n mode: 'new' | 'edit' = 'new';\n origin: CustomFieldOrigin = 'Custom columns panel';\n\n modalState = new ConditionalModalState({\n onConfirm: async () => {\n const {\n form,\n mode,\n customFieldModalBiReporter: { reportModalEndProcess },\n t,\n } = this;\n\n this.submitError = null;\n\n const validation = await form.validate();\n\n if (validation.hasError) {\n this.enableAutoValidation();\n throw new Error('validation');\n }\n\n try {\n const { dataExtensionSchema } =\n await this.dataExtensionState.dataExtensionService.addCustomField({\n form: this.getFormValues(),\n schema: this.dataExtensionState.userSchema,\n fqdn: this.dataExtensionState.fqdnString,\n });\n\n runInAction(() => {\n this.dataExtensionState.userSchema = dataExtensionSchema;\n });\n\n this.dataExtensionState.container.showToast?.({\n message:\n mode === 'new'\n ? t('cairo.customFields.successToast')\n : t('cairo.customFields.editCustomField.success.toast'),\n type: 'SUCCESS',\n biName: 'cairo-custom-field-success-toast',\n });\n\n reportModalEndProcess({ endType: 'Add Field' });\n } catch (e: unknown) {\n runInAction(() => {\n if (isHttpError(e)) {\n this.submitError = 'network';\n\n if (\n isDetailsResponse(e.response?.data) &&\n isErrorDetails(e.response?.data.details)\n ) {\n if (\n e.response?.data?.details?.validationError?.fieldViolations?.some(\n (v) => v.ruleName === 'EXCEEDED_STORED_DATA_SIZE',\n )\n ) {\n this.submitError = 'max_size';\n } else {\n this.submitError = 'technical';\n }\n }\n }\n });\n\n const getErrorType = () => {\n switch (this.submitError) {\n case 'network':\n return 'Network error';\n case 'max_size':\n return '10k Limitation';\n case 'technical':\n return 'Technical issue';\n default:\n return undefined;\n }\n };\n\n this.customFieldModalBiReporter.reportSubmitFailure({\n errorType: getErrorType(),\n });\n\n // Prevents modal closing\n throw e;\n }\n },\n });\n\n form = new FormState({\n type: new FieldState<CustomFieldType | undefined>(undefined).validators(\n (value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldType.error',\n );\n }\n\n return undefined;\n },\n ),\n name: new FieldState('').validators((value) => {\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n return undefined;\n }),\n key: new FieldState('').validators((value) => {\n const {\n t,\n mode,\n dataExtensionState: { allUserCustomFields },\n } = this;\n\n if (!value) {\n return this.t(\n 'cairo.customFields.addCustomField.modal.emptyFieldName.error',\n );\n }\n\n if (\n mode === 'new' &&\n allUserCustomFields.some((field) => field.id === value)\n ) {\n return t('cairo.customFields.addCustomField.modal.sameKey.error');\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/g.test(value)) {\n return t('cairo.customFields.addCustomField.modal.keyFormat.error');\n }\n\n return undefined;\n }),\n readUsers: new FieldState(false),\n readApps: new FieldState(false),\n writeUsers: new FieldState(false),\n writeApps: new FieldState(false),\n });\n\n disabledFields = {\n permissions: {\n read: { apps: true, users: true },\n write: { apps: true, users: true },\n },\n };\n\n constructor(params: CustomFieldStateParams) {\n this.dataExtensionState = params.dataExtensionState;\n this.customFieldModalBiReporter = new CustomFieldModalBiReporter({\n dataExtensionState: params.dataExtensionState,\n });\n\n makeObservable(this, {\n namePlaceholder: computed,\n isSubmitting: computed,\n disabledFields: observable.ref,\n submitError: observable.ref,\n mode: observable.ref,\n reset: action,\n setFormValues: action,\n generateUniqueKey: action.bound,\n setKeyFieldIfNotDirty: action.bound,\n });\n }\n\n reset() {\n const {\n form,\n settings,\n disabledFields: { permissions },\n } = this;\n\n form.reset();\n settings.setOff();\n this.submitError = null;\n this.disableAutoValidation();\n\n permissions.read.apps = false;\n permissions.read.users = false;\n permissions.write.apps = false;\n permissions.write.users = false;\n }\n\n enableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.enableAutoValidation();\n name.enableAutoValidation();\n type.enableAutoValidation();\n }\n\n disableAutoValidation() {\n const {\n form: {\n $: { key, name, type },\n },\n } = this;\n\n key.disableAutoValidation();\n name.disableAutoValidation();\n type.disableAutoValidation();\n }\n\n getFormValues(): CustomFieldForm {\n const {\n form: {\n $: { type, key, name, readApps, readUsers, writeApps, writeUsers },\n },\n } = this;\n\n return {\n type: type.value,\n key: key.value,\n name: name.value,\n readApps: readApps.value,\n readUsers: readUsers.value,\n writeApps: writeApps.value,\n writeUsers: writeUsers.value,\n };\n }\n\n setFormValues(\n form: CustomFieldForm,\n params?: { disablePermissionCheckboxes: boolean },\n ) {\n const {\n form: { $ },\n } = this;\n\n $.key.value = form.key;\n $.name.value = form.name;\n $.type.value = form.type;\n $.readApps.value = form.readApps;\n $.readUsers.value = form.readUsers;\n $.writeApps.value = form.writeApps;\n $.writeUsers.value = form.writeUsers;\n\n if (params?.disablePermissionCheckboxes) {\n if (form.readUsers) {\n this.disabledFields.permissions.read.users = true;\n }\n\n if (form.readApps) {\n this.disabledFields.permissions.read.apps = true;\n }\n\n if (form.writeUsers) {\n this.disabledFields.permissions.write.users = true;\n }\n\n if (form.writeApps) {\n this.disabledFields.permissions.write.apps = true;\n }\n }\n }\n\n setKeyFieldIfNotDirty = (value: string) => {\n const {\n form: {\n $: { key },\n },\n mode,\n } = this;\n\n if (mode === 'new' && !key.dirty) {\n // In the formstate library setting a field value using\n // the onChange API sets the dirty state of the field to true.\n // However, since here it's not a manual user input\n // we avoid changing the dirty state by setting a value directly.\n key.value = value;\n }\n };\n\n private containsKey(key: string) {\n return this.dataExtensionState.allUserCustomFields.some(\n (field) => field.id === key,\n );\n }\n\n generateUniqueKey(name: string) {\n const slug = slugify(name);\n const type = this.form.$.type.value;\n\n if (slug && slug.length >= 4 && !this.containsKey(slug)) {\n return slug;\n }\n\n if (!type) {\n return '';\n }\n\n let index = 1;\n\n while (this.containsKey(`${type}_${index}`)) {\n index += 1;\n }\n\n return `${type}_${index}`;\n }\n\n get t() {\n return this.dataExtensionState.container.translate;\n }\n\n get isSubmitting() {\n return this.modalState.modal.confirming.isLoading;\n }\n\n get namePlaceholder() {\n const {\n t,\n form: {\n $: { type },\n },\n } = this;\n\n switch (type.value) {\n case 'dropdown':\n return t('cairo.customFields.fieldType.dropdownList.Name.placeholder');\n case 'checkbox':\n return t('cairo.customFields.fieldType.checkbox.Name.placeholder');\n case 'shortText':\n return t('cairo.customFields.fieldType.shortText.Name.placeholder');\n case 'longText':\n return t('cairo.customFields.fieldType.longText.Name.placeholder');\n case 'date':\n return t('cairo.customFields.fieldType.date.Name.placeholder');\n case 'dateTime':\n return t('cairo.customFields.fieldType.dateAndTime.Name.placeholder');\n case 'integer':\n return t('cairo.customFields.fieldType.numberInteger.Name.placeholder');\n case 'decimal':\n return t('cairo.customFields.fieldType.numberDecimal.Name.placeholder');\n default:\n return t(\n 'cairo.customFields.addCustomField.modal.fieldName.placeholder',\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|