@wix/bex-core 2.6.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
  2. package/dist/cjs/InMemoryBackend/index.js.map +1 -1
  3. package/dist/cjs/assets/locale/messages_cs.json +1 -0
  4. package/dist/cjs/assets/locale/messages_da.json +1 -0
  5. package/dist/cjs/assets/locale/messages_de.json +1 -0
  6. package/dist/cjs/assets/locale/messages_en.json +3 -2
  7. package/dist/cjs/assets/locale/messages_es.json +1 -0
  8. package/dist/cjs/assets/locale/messages_fr.json +1 -0
  9. package/dist/cjs/assets/locale/messages_hi.json +1 -0
  10. package/dist/cjs/assets/locale/messages_id.json +1 -0
  11. package/dist/cjs/assets/locale/messages_it.json +1 -0
  12. package/dist/cjs/assets/locale/messages_ja.json +1 -0
  13. package/dist/cjs/assets/locale/messages_ko.json +1 -0
  14. package/dist/cjs/assets/locale/messages_nl.json +1 -0
  15. package/dist/cjs/assets/locale/messages_no.json +1 -0
  16. package/dist/cjs/assets/locale/messages_pl.json +1 -0
  17. package/dist/cjs/assets/locale/messages_pt.json +1 -0
  18. package/dist/cjs/assets/locale/messages_ru.json +1 -0
  19. package/dist/cjs/assets/locale/messages_sv.json +1 -0
  20. package/dist/cjs/assets/locale/messages_th.json +1 -0
  21. package/dist/cjs/assets/locale/messages_tr.json +1 -0
  22. package/dist/cjs/assets/locale/messages_uk.json +3 -2
  23. package/dist/cjs/assets/locale/messages_vi.json +1 -0
  24. package/dist/cjs/assets/locale/messages_visuale2e.json +3 -0
  25. package/dist/cjs/assets/locale/messages_zh.json +1 -0
  26. package/dist/cjs/exports/InMemoryBackend.js.map +1 -1
  27. package/dist/cjs/exports/bi/index.js.map +1 -1
  28. package/dist/cjs/exports/events.js.map +1 -1
  29. package/dist/cjs/exports/history.js.map +1 -1
  30. package/dist/cjs/exports/mobx.js.map +1 -1
  31. package/dist/cjs/exports/react.js.map +1 -1
  32. package/dist/cjs/exports/testkit/client.js.map +1 -1
  33. package/dist/cjs/exports/testkit/internal.js.map +1 -1
  34. package/dist/cjs/exports/testkit/testkit.js.map +1 -1
  35. package/dist/cjs/exports/util.js.map +1 -1
  36. package/dist/cjs/hooks/collectionConfig.js.map +1 -1
  37. package/dist/cjs/hooks/collectionConfigPartials.js.map +1 -1
  38. package/dist/cjs/hooks/createCollection.js.map +1 -1
  39. package/dist/cjs/hooks/createCollectionConfig.js.map +1 -1
  40. package/dist/cjs/hooks/index.js.map +1 -1
  41. package/dist/cjs/hooks/paginationModeConfig.js.map +1 -1
  42. package/dist/cjs/hooks/useAmbassadorCollection.js.map +1 -1
  43. package/dist/cjs/hooks/useCollection/index.js.map +1 -1
  44. package/dist/cjs/hooks/useCollection/useCollection.js.map +1 -1
  45. package/dist/cjs/hooks/useCollectionPageState.js.map +1 -1
  46. package/dist/cjs/hooks/useEmptyStateTexts.js.map +1 -1
  47. package/dist/cjs/hooks/useExport.js.map +1 -1
  48. package/dist/cjs/hooks/useExportConfig.js.map +1 -1
  49. package/dist/cjs/hooks/useOptimisticActions.js.map +1 -1
  50. package/dist/cjs/hooks/usePicker.js.map +1 -1
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/mocks/PartialWindowMock.js.map +1 -1
  53. package/dist/cjs/mocks/partialLodashMock.js.map +1 -1
  54. package/dist/cjs/model/actionMove.js.map +1 -1
  55. package/dist/cjs/model/arrayField.js.map +1 -1
  56. package/dist/cjs/model/collectionEvents.js.map +1 -1
  57. package/dist/cjs/model/commonTypes.js.map +1 -1
  58. package/dist/cjs/model/computedQuery/computedQuery.js.map +1 -1
  59. package/dist/cjs/model/computedQuery/index.js.map +1 -1
  60. package/dist/cjs/model/computedResult.js.map +1 -1
  61. package/dist/cjs/model/dataCapsule.js.map +1 -1
  62. package/dist/cjs/model/dataResultRaw/dataResultRaw.js.map +1 -1
  63. package/dist/cjs/model/dataResultRaw/index.js.map +1 -1
  64. package/dist/cjs/model/fetchDataFn.js.map +1 -1
  65. package/dist/cjs/model/filter.js.map +1 -1
  66. package/dist/cjs/model/fqdn.js.map +1 -1
  67. package/dist/cjs/model/httpClient.js.map +1 -1
  68. package/dist/cjs/model/index.js.map +1 -1
  69. package/dist/cjs/model/keyedItem.js.map +1 -1
  70. package/dist/cjs/model/queryOptions.js.map +1 -1
  71. package/dist/cjs/model/queryResult.js.map +1 -1
  72. package/dist/cjs/model/queryResultStatus.js.map +1 -1
  73. package/dist/cjs/model/queryStatus.js.map +1 -1
  74. package/dist/cjs/model/taskStatus.js.map +1 -1
  75. package/dist/cjs/model/toast.js.map +1 -1
  76. package/dist/cjs/model/wixPatternsEnvironment.js.map +1 -1
  77. package/dist/cjs/model/wixPatternsEssentials.js.map +1 -1
  78. package/dist/cjs/model/wixPatternsInitialProps.js.map +1 -1
  79. package/dist/cjs/providers/CairoProvider/CairoProvider.js +1 -1
  80. package/dist/cjs/providers/CairoProvider/CairoProvider.js.map +1 -1
  81. package/dist/cjs/providers/CairoProvider/index.js.map +1 -1
  82. package/dist/cjs/providers/CollectionContext.js.map +1 -1
  83. package/dist/cjs/providers/CollectionPageContext.js.map +1 -1
  84. package/dist/cjs/providers/FormWidgetContext.js.map +1 -1
  85. package/dist/cjs/providers/PageContext.js.map +1 -1
  86. package/dist/cjs/providers/WixPatternsContainerOverridesContext.js.map +1 -1
  87. package/dist/cjs/providers/WixPatternsContainerProvider/WixPatternsContainerProvider.js.map +1 -1
  88. package/dist/cjs/providers/WixPatternsContainerProvider/index.js.map +1 -1
  89. package/dist/cjs/providers/WixPatternsInitialPropsProvider.js.map +1 -1
  90. package/dist/cjs/providers/createContext.js.map +1 -1
  91. package/dist/cjs/providers/index.js.map +1 -1
  92. package/dist/cjs/services/AccountPreferencesMergeStrategy.js.map +1 -1
  93. package/dist/cjs/services/AccountPreferencesStrategy.js.map +1 -1
  94. package/dist/cjs/services/AppSettingsCapsule.js.map +1 -1
  95. package/dist/cjs/services/DataCapsuleMergeStrategy.js.map +1 -1
  96. package/dist/cjs/services/ModalLayoutProps.js.map +1 -1
  97. package/dist/cjs/services/MonitorLogger.js.map +1 -1
  98. package/dist/cjs/services/WixPatternsError.js.map +1 -1
  99. package/dist/cjs/services/WixPatternsErrorCode.js.map +1 -1
  100. package/dist/cjs/services/cairoMonitor.js.map +1 -1
  101. package/dist/cjs/services/cairoTranslations.js.map +1 -1
  102. package/dist/cjs/services/createAccountComponentSettings.js.map +1 -1
  103. package/dist/cjs/services/createAppSettingsCapsule.js.map +1 -1
  104. package/dist/cjs/services/createComponentSettings.js.map +1 -1
  105. package/dist/cjs/services/dataExtensionService.js.map +1 -1
  106. package/dist/cjs/services/environment.js.map +1 -1
  107. package/dist/cjs/services/experiments.js.map +1 -1
  108. package/dist/cjs/services/fetchTranslations.js.map +1 -1
  109. package/dist/cjs/services/fetchTranslationsPreBundled.js.map +1 -1
  110. package/dist/cjs/services/focusManager.js.map +1 -1
  111. package/dist/cjs/services/getErrorMonitorCompat.js.map +1 -1
  112. package/dist/cjs/services/history.js.map +1 -1
  113. package/dist/cjs/services/index.js.map +1 -1
  114. package/dist/cjs/services/mapGuidComponentIdToNonGuid.js.map +1 -1
  115. package/dist/cjs/services/navigationManager.js +17 -4
  116. package/dist/cjs/services/navigationManager.js.map +1 -1
  117. package/dist/cjs/services/onlineManager.js.map +1 -1
  118. package/dist/cjs/services/partialLodash.js.map +1 -1
  119. package/dist/cjs/services/partialWindow.js.map +1 -1
  120. package/dist/cjs/services/replaceSearchParamsWith.js.map +1 -1
  121. package/dist/cjs/services/reportBi.js.map +1 -1
  122. package/dist/cjs/services/translations.js.map +1 -1
  123. package/dist/cjs/services/translationsImportsMap.js +1 -1
  124. package/dist/cjs/services/translationsImportsMap.js.map +1 -1
  125. package/dist/cjs/state/AppsState.js +100 -0
  126. package/dist/cjs/state/AppsState.js.map +1 -0
  127. package/dist/cjs/state/ArrayFilterState/ArrayFilterState.js.map +1 -1
  128. package/dist/cjs/state/ArrayFilterState/index.js.map +1 -1
  129. package/dist/cjs/state/BeforeUnloadCompatState.js.map +1 -1
  130. package/dist/cjs/state/BulkActionModalState.js.map +1 -1
  131. package/dist/cjs/state/BulkSelectState.js.map +1 -1
  132. package/dist/cjs/state/CollectionBIReporter.js.map +1 -1
  133. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  134. package/dist/cjs/state/CollectionOptimisticActionsState.js.map +1 -1
  135. package/dist/cjs/state/CollectionOptimisticExecutor.js.map +1 -1
  136. package/dist/cjs/state/CollectionOptimisticHelpers.js.map +1 -1
  137. package/dist/cjs/state/CollectionOptimisticPatch.js.map +1 -1
  138. package/dist/cjs/state/CollectionOptimisticProcessor.js.map +1 -1
  139. package/dist/cjs/state/CollectionOptimisticSequenceExecutor.js.map +1 -1
  140. package/dist/cjs/state/CollectionPageState.js.map +1 -1
  141. package/dist/cjs/state/CollectionState.js.map +1 -1
  142. package/dist/cjs/state/ConditionalModalState.js.map +1 -1
  143. package/dist/cjs/state/CustomFieldModalBiReporter.js.map +1 -1
  144. package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
  145. package/dist/cjs/state/CustomFieldsViewWidgetState.js +34 -1
  146. package/dist/cjs/state/CustomFieldsViewWidgetState.js.map +1 -1
  147. package/dist/cjs/state/CustomFilterState/CustomFilterState.js.map +1 -1
  148. package/dist/cjs/state/CustomFilterState/index.js.map +1 -1
  149. package/dist/cjs/state/DataExtension/DataExtensionField.js.map +1 -1
  150. package/dist/cjs/state/DataExtensionState.js +16 -7
  151. package/dist/cjs/state/DataExtensionState.js.map +1 -1
  152. package/dist/cjs/state/DataExtensionStateBIReporter.js.map +1 -1
  153. package/dist/cjs/state/ExportJobState.js.map +1 -1
  154. package/dist/cjs/state/ExportState.js.map +1 -1
  155. package/dist/cjs/state/ExportStateBIReporter.js.map +1 -1
  156. package/dist/cjs/state/FedopsReporter.js.map +1 -1
  157. package/dist/cjs/state/FormPageState.js.map +1 -1
  158. package/dist/cjs/state/ModalState.js.map +1 -1
  159. package/dist/cjs/state/MultiCollectionSupport.js.map +1 -1
  160. package/dist/cjs/state/OnlineState.js.map +1 -1
  161. package/dist/cjs/state/PageState.js.map +1 -1
  162. package/dist/cjs/state/Pagination.js.map +1 -1
  163. package/dist/cjs/state/PaginationMode.js.map +1 -1
  164. package/dist/cjs/state/PaginationModeCursor.js.map +1 -1
  165. package/dist/cjs/state/PaginationModeOffset.js.map +1 -1
  166. package/dist/cjs/state/PickerState.js.map +1 -1
  167. package/dist/cjs/state/PromiseState.js.map +1 -1
  168. package/dist/cjs/state/PromisesSequence.js.map +1 -1
  169. package/dist/cjs/state/PromisesState.js.map +1 -1
  170. package/dist/cjs/state/QueryHistoryState.js.map +1 -1
  171. package/dist/cjs/state/QueryPendingState.js.map +1 -1
  172. package/dist/cjs/state/QueryPendingStateBIReporter.js.map +1 -1
  173. package/dist/cjs/state/QueryResultSimulation.js.map +1 -1
  174. package/dist/cjs/state/QueryResultSimulationDefault.js.map +1 -1
  175. package/dist/cjs/state/QueryResultState.js.map +1 -1
  176. package/dist/cjs/state/QueryState.js.map +1 -1
  177. package/dist/cjs/state/RangeFilterState/RangeFilterState.js.map +1 -1
  178. package/dist/cjs/state/RangeFilterState/dateRangeUtils.js.map +1 -1
  179. package/dist/cjs/state/RangeFilterState/index.js.map +1 -1
  180. package/dist/cjs/state/RefObject.js.map +1 -1
  181. package/dist/cjs/state/ReturnFocus.js.map +1 -1
  182. package/dist/cjs/state/SelectMapState.js.map +1 -1
  183. package/dist/cjs/state/SelectState.js.map +1 -1
  184. package/dist/cjs/state/SelectionStatus.js.map +1 -1
  185. package/dist/cjs/state/SelectionStatusWixPatternsPreset.js.map +1 -1
  186. package/dist/cjs/state/SidePanelState.js.map +1 -1
  187. package/dist/cjs/state/SortState.js.map +1 -1
  188. package/dist/cjs/state/StringFilterState/StringFilterState.js.map +1 -1
  189. package/dist/cjs/state/StringFilterState/index.js.map +1 -1
  190. package/dist/cjs/state/TagsState/TagsAssignmentState.js.map +1 -1
  191. package/dist/cjs/state/TagsState/TagsBIReporter.js.map +1 -1
  192. package/dist/cjs/state/TagsState/TagsFormState.js.map +1 -1
  193. package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
  194. package/dist/cjs/state/TagsState/TagsSearchState.js.map +1 -1
  195. package/dist/cjs/state/TagsState/TagsWidgetState.js.map +1 -1
  196. package/dist/cjs/state/TagsState/index.js.map +1 -1
  197. package/dist/cjs/state/TagsState/tagsTypes.js.map +1 -1
  198. package/dist/cjs/state/TaskState.js.map +1 -1
  199. package/dist/cjs/state/TextOverflowState.js.map +1 -1
  200. package/dist/cjs/state/ToggleState.js.map +1 -1
  201. package/dist/cjs/state/TransitionState.js.map +1 -1
  202. package/dist/cjs/state/ValueBox.js.map +1 -1
  203. package/dist/cjs/state/WixPatternsContainer.js.map +1 -1
  204. package/dist/cjs/state/buildWixPatternsContainer.js.map +1 -1
  205. package/dist/cjs/state/getJobItemsAbsoluteCounter.js.map +1 -1
  206. package/dist/cjs/state/index.js.map +1 -1
  207. package/dist/cjs/state/mutationObserverCompat.js.map +1 -1
  208. package/dist/cjs/state/onItemsCreated.js.map +1 -1
  209. package/dist/cjs/state/optimistic-simulation/filterPageByPatches.js.map +1 -1
  210. package/dist/cjs/state/optimistic-simulation/index.js.map +1 -1
  211. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  212. package/dist/cjs/state/optimistic-simulation/orderByMoves.js.map +1 -1
  213. package/dist/cjs/state/optimistic-simulation/orderByOrders.js.map +1 -1
  214. package/dist/cjs/state/optimistic-simulation/prepareItemsToMergeIntoPage.js.map +1 -1
  215. package/dist/cjs/state/optimistic-simulation/transformItemByUpdateAllPatches.js.map +1 -1
  216. package/dist/cjs/state/optimistic-simulation/trimAddedItemsFromPagePredicate.js.map +1 -1
  217. package/dist/cjs/state/resizeObserverCompat.js.map +1 -1
  218. package/dist/cjs/state/snapshot.js.map +1 -1
  219. package/dist/cjs/state/useExperimentsCompat.js.map +1 -1
  220. package/dist/cjs/state/warmUpPickerStandalone.js.map +1 -1
  221. package/dist/cjs/test-utils/flush.js.map +1 -1
  222. package/dist/cjs/test-utils/index.js.map +1 -1
  223. package/dist/cjs/test-utils/jest.js.map +1 -1
  224. package/dist/cjs/testkit/ProductsCollectionState.driver.js.map +1 -1
  225. package/dist/cjs/testkit/WixPatternsContainer.driver.js +11 -10
  226. package/dist/cjs/testkit/WixPatternsContainer.driver.js.map +1 -1
  227. package/dist/cjs/testkit/appSettingsMocks.js.map +1 -1
  228. package/dist/cjs/testkit/client.js.map +1 -1
  229. package/dist/cjs/testkit/country.js.map +1 -1
  230. package/dist/cjs/testkit/createCountriesBackend.js.map +1 -1
  231. package/dist/cjs/testkit/createFoldersBackend.js.map +1 -1
  232. package/dist/cjs/testkit/createProductsBackend.js.map +1 -1
  233. package/dist/cjs/testkit/exportServiceMocks.js.map +1 -1
  234. package/dist/cjs/testkit/folder.js.map +1 -1
  235. package/dist/cjs/testkit/folderFilters.js.map +1 -1
  236. package/dist/cjs/testkit/index.js.map +1 -1
  237. package/dist/cjs/testkit/internal.js.map +1 -1
  238. package/dist/cjs/testkit/matchMediaMock.js.map +1 -1
  239. package/dist/cjs/testkit/nestifyItems.js.map +1 -1
  240. package/dist/cjs/testkit/product.js.map +1 -1
  241. package/dist/cjs/testkit/productFilters.js.map +1 -1
  242. package/dist/cjs/util/OfflineError.js.map +1 -1
  243. package/dist/cjs/util/addEventListener.js.map +1 -1
  244. package/dist/cjs/util/assertKey.js.map +1 -1
  245. package/dist/cjs/util/index.js.map +1 -1
  246. package/dist/cjs/util/isHttpError.js.map +1 -1
  247. package/dist/cjs/util/parseFqdn.js.map +1 -1
  248. package/dist/cjs/util/shouldRedirectToLogin.js.map +1 -1
  249. package/dist/cjs/util/showToastCompat.js.map +1 -1
  250. package/dist/cjs/util/slugify.js.map +1 -1
  251. package/dist/cjs/util/syncWithSharedQuery.js.map +1 -1
  252. package/dist/cjs/util/typedEmitter.js.map +1 -1
  253. package/dist/cjs/util/withoutDefaults.js.map +1 -1
  254. package/dist/esm/assets/locale/messages_cs.json +1 -0
  255. package/dist/esm/assets/locale/messages_da.json +1 -0
  256. package/dist/esm/assets/locale/messages_de.json +1 -0
  257. package/dist/esm/assets/locale/messages_en.json +3 -2
  258. package/dist/esm/assets/locale/messages_es.json +1 -0
  259. package/dist/esm/assets/locale/messages_fr.json +1 -0
  260. package/dist/esm/assets/locale/messages_hi.json +1 -0
  261. package/dist/esm/assets/locale/messages_id.json +1 -0
  262. package/dist/esm/assets/locale/messages_it.json +1 -0
  263. package/dist/esm/assets/locale/messages_ja.json +1 -0
  264. package/dist/esm/assets/locale/messages_ko.json +1 -0
  265. package/dist/esm/assets/locale/messages_nl.json +1 -0
  266. package/dist/esm/assets/locale/messages_no.json +1 -0
  267. package/dist/esm/assets/locale/messages_pl.json +1 -0
  268. package/dist/esm/assets/locale/messages_pt.json +1 -0
  269. package/dist/esm/assets/locale/messages_ru.json +1 -0
  270. package/dist/esm/assets/locale/messages_sv.json +1 -0
  271. package/dist/esm/assets/locale/messages_th.json +1 -0
  272. package/dist/esm/assets/locale/messages_tr.json +1 -0
  273. package/dist/esm/assets/locale/messages_uk.json +3 -2
  274. package/dist/esm/assets/locale/messages_vi.json +1 -0
  275. package/dist/esm/assets/locale/messages_visuale2e.json +3 -0
  276. package/dist/esm/assets/locale/messages_zh.json +1 -0
  277. package/dist/esm/services/navigationManager.js +15 -4
  278. package/dist/esm/services/navigationManager.js.map +1 -1
  279. package/dist/esm/state/AppsState.js +89 -0
  280. package/dist/esm/state/AppsState.js.map +1 -0
  281. package/dist/esm/state/CustomFieldsViewWidgetState.js +36 -1
  282. package/dist/esm/state/CustomFieldsViewWidgetState.js.map +1 -1
  283. package/dist/esm/state/DataExtensionState.js +18 -10
  284. package/dist/esm/state/DataExtensionState.js.map +1 -1
  285. package/dist/esm/testkit/WixPatternsContainer.driver.js +12 -11
  286. package/dist/esm/testkit/WixPatternsContainer.driver.js.map +1 -1
  287. package/dist/types/services/navigationManager.d.ts +12 -6
  288. package/dist/types/services/navigationManager.d.ts.map +1 -1
  289. package/dist/types/services/translations.d.ts +1 -1
  290. package/dist/types/services/translations.d.ts.map +1 -1
  291. package/dist/types/state/AppsState.d.ts +20 -0
  292. package/dist/types/state/AppsState.d.ts.map +1 -0
  293. package/dist/types/state/CustomFieldsViewWidgetState.d.ts +6 -0
  294. package/dist/types/state/CustomFieldsViewWidgetState.d.ts.map +1 -1
  295. package/dist/types/state/DataExtensionState.d.ts +7 -1
  296. package/dist/types/state/DataExtensionState.d.ts.map +1 -1
  297. package/dist/types/testkit/WixPatternsContainer.driver.d.ts +1 -1
  298. package/dist/types/testkit/WixPatternsContainer.driver.d.ts.map +1 -1
  299. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_util","require","_v","_mobx","_events","withoutDefaults","withoutIrrelevant","CollectionBIReporter","constructor","params","_defineProperty2","default","EventEmitter","collection","reportBi","init","events","emitter","query","disposers","addEventListener","action","origin","cairoAllFiltersCleared","filterNames","activeFilters","map","filter","name","join","filteredListSize","result","total","numFiltersCleared","activeFiltersCount","prevSortedColumnId","sortedColumnId","prevSortedIds","Set","sort","value","field","prevSortOrder","_getSortOrder","prevSortingOrder","_getSortDirection","once","col","id","itemIndex","findIndex","cairoComponentSorted","newSortedColumn","newSortingOrder","prevSortedColumn","newSortOrder","isAddNewSort","has","prevNumSortingColumns","size","numSortingColumns","length","emit","startTime","performance","now","totalNewItems","loadMore","loadedItems","loadingTime","Math","round","searchTerm","search","cairoSearchResults","searchResultsCnt","asComputed","cairoFilterToggled","filterName","numFiltersActive","actionType","filterValue","forEach","d","columndId","find","direction","JSON","stringify","fieldName","order","exports"],"sources":["../../../src/state/CollectionBIReporter.ts"],"sourcesContent":["import { CollectionState } from './CollectionState';\nimport { addEventListener, TypedEmitter, withoutIrrelevant } from '../util';\nimport {\n cairoComponentSorted,\n cairoFilterToggled,\n cairoAllFiltersCleared,\n cairoSearchResults,\n loadMore,\n} from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2';\nimport { FiltersMap } from '../model';\nimport { ReportBI } from '../services';\nimport { action } from 'mobx';\nimport { EventEmitter } from 'events';\n\nconst withoutDefaults = withoutIrrelevant<\n | 'currentTab'\n | 'currentView'\n | 'currentFilters'\n | 'currentSortOrder'\n | 'listSize'\n | 'initialItems'\n>();\n\nexport interface CollectionBIReporterParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly reportBi: ReportBI;\n}\n\nexport class CollectionBIReporter<T, F extends FiltersMap> {\n readonly collection;\n readonly reportBi;\n readonly events = new EventEmitter() as TypedEmitter<{\n sortStart: (params: { col: { id: string } }) => unknown;\n }>;\n\n sortedColumnId = '';\n\n constructor(params: CollectionBIReporterParams<T, F>) {\n this.collection = params.collection;\n this.reportBi = params.reportBi;\n }\n\n init() {\n const { collection, events } = this;\n const { emitter, query } = collection;\n\n const disposers = [\n addEventListener(\n emitter,\n 'beforeClearFilters',\n action(({ origin }) => {\n this.reportBi(\n withoutDefaults(cairoAllFiltersCleared)({\n filterNames: collection.query.activeFilters\n .map((filter) => filter.name)\n .join(','),\n filteredListSize: collection.result.total,\n numFiltersCleared: collection.query.activeFiltersCount,\n origin,\n }),\n );\n }),\n ),\n\n addEventListener(\n emitter,\n 'beforeSortStart',\n action(({ origin }) => {\n const prevSortedColumnId = this.sortedColumnId;\n const prevSortedIds = new Set(\n query.sort.value.map(({ field }) => field),\n );\n\n const prevSortOrder = this._getSortOrder();\n let prevSortingOrder = this._getSortDirection(prevSortedColumnId);\n\n events.once('sortStart', ({ col }) => {\n this.sortedColumnId = col.id;\n\n if (prevSortedColumnId && col.id !== prevSortedColumnId) {\n prevSortingOrder = this._getSortDirection(prevSortedColumnId);\n } else if (!prevSortedColumnId) {\n prevSortingOrder = '';\n }\n\n const itemIndex = this.collection.query.sort.value.findIndex(\n ({ field }) => field === col.id,\n );\n\n this.reportBi(\n withoutDefaults(cairoComponentSorted)({\n newSortedColumn: col.id,\n newSortingOrder: this._getSortDirection(col.id),\n prevSortedColumn: prevSortedColumnId,\n prevSortingOrder,\n origin,\n prevSortOrder,\n newSortOrder: this._getSortOrder(),\n itemIndex,\n isAddNewSort: !prevSortedIds.has(col.id),\n prevNumSortingColumns: prevSortedIds.size,\n numSortingColumns: query.sort.value.length,\n }),\n );\n });\n }),\n ),\n\n addEventListener(emitter, 'sortStart', (params) => {\n events.emit('sortStart', params);\n }),\n\n addEventListener(emitter, 'newPageStart', () => {\n const startTime = performance.now();\n\n return ({ totalNewItems }) => {\n this.reportBi(\n withoutDefaults(loadMore)({\n loadedItems: totalNewItems,\n loadingTime: Math.round(performance.now() - startTime),\n }),\n );\n };\n }),\n\n addEventListener(emitter, 'searchStart', () => {\n const startTime = performance.now();\n const searchTerm = collection.query.search.value;\n return () => {\n this.reportBi(\n withoutDefaults(cairoSearchResults)({\n searchTerm,\n searchResultsCnt: collection.result.asComputed.total,\n loadingTime: Math.round(performance.now() - startTime),\n }),\n );\n };\n }),\n\n addEventListener(\n emitter,\n 'search',\n action(() => {\n this.reportBi(\n withoutDefaults(cairoFilterToggled)({\n filterName: 'search',\n origin: 'toolbar',\n numFiltersActive: collection.query.activeFiltersCount,\n actionType: 'add',\n filterValue: collection.query.search.value,\n filteredListSize: collection.result.total,\n }),\n );\n }),\n ),\n ];\n\n return () => {\n disposers.forEach((d) => d());\n };\n }\n\n _getSortDirection(columndId?: string) {\n const {\n query: {\n sort: { value },\n },\n } = this.collection;\n\n const sort = value.find(({ field }) => field === columndId);\n\n if (sort) {\n return sort.direction;\n }\n\n return 'removed';\n }\n\n _getSortOrder() {\n const {\n query: { sort },\n } = this.collection;\n\n return JSON.stringify(\n sort.value.map(({ field, direction }) => ({\n fieldName: field,\n order: direction,\n })),\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_util","require","_v","_mobx","_events","withoutDefaults","withoutIrrelevant","CollectionBIReporter","constructor","params","_defineProperty2","default","EventEmitter","collection","reportBi","init","events","emitter","query","disposers","addEventListener","action","origin","cairoAllFiltersCleared","filterNames","activeFilters","map","filter","name","join","filteredListSize","result","total","numFiltersCleared","activeFiltersCount","prevSortedColumnId","sortedColumnId","prevSortedIds","Set","sort","value","field","prevSortOrder","_getSortOrder","prevSortingOrder","_getSortDirection","once","col","id","itemIndex","findIndex","cairoComponentSorted","newSortedColumn","newSortingOrder","prevSortedColumn","newSortOrder","isAddNewSort","has","prevNumSortingColumns","size","numSortingColumns","length","emit","startTime","performance","now","totalNewItems","loadMore","loadedItems","loadingTime","Math","round","searchTerm","search","cairoSearchResults","searchResultsCnt","asComputed","cairoFilterToggled","filterName","numFiltersActive","actionType","filterValue","forEach","d","columndId","find","direction","JSON","stringify","fieldName","order","exports"],"sources":["../../../src/state/CollectionBIReporter.ts"],"sourcesContent":["import { CollectionState } from './CollectionState';\nimport { addEventListener, TypedEmitter, withoutIrrelevant } from '../util';\nimport {\n cairoComponentSorted,\n cairoFilterToggled,\n cairoAllFiltersCleared,\n cairoSearchResults,\n loadMore,\n} from '@wix/bex-utils/@wix/bi-logger-cairo-os/v2';\nimport { FiltersMap } from '../model';\nimport { ReportBI } from '../services';\nimport { action } from 'mobx';\nimport { EventEmitter } from 'events';\n\nconst withoutDefaults = withoutIrrelevant<\n | 'currentTab'\n | 'currentView'\n | 'currentFilters'\n | 'currentSortOrder'\n | 'listSize'\n | 'initialItems'\n>();\n\nexport interface CollectionBIReporterParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly reportBi: ReportBI;\n}\n\nexport class CollectionBIReporter<T, F extends FiltersMap> {\n readonly collection;\n readonly reportBi;\n readonly events = new EventEmitter() as TypedEmitter<{\n sortStart: (params: { col: { id: string } }) => unknown;\n }>;\n\n sortedColumnId = '';\n\n constructor(params: CollectionBIReporterParams<T, F>) {\n this.collection = params.collection;\n this.reportBi = params.reportBi;\n }\n\n init() {\n const { collection, events } = this;\n const { emitter, query } = collection;\n\n const disposers = [\n addEventListener(\n emitter,\n 'beforeClearFilters',\n action(({ origin }) => {\n this.reportBi(\n withoutDefaults(cairoAllFiltersCleared)({\n filterNames: collection.query.activeFilters\n .map((filter) => filter.name)\n .join(','),\n filteredListSize: collection.result.total,\n numFiltersCleared: collection.query.activeFiltersCount,\n origin,\n }),\n );\n }),\n ),\n\n addEventListener(\n emitter,\n 'beforeSortStart',\n action(({ origin }) => {\n const prevSortedColumnId = this.sortedColumnId;\n const prevSortedIds = new Set(\n query.sort.value.map(({ field }) => field),\n );\n\n const prevSortOrder = this._getSortOrder();\n let prevSortingOrder = this._getSortDirection(prevSortedColumnId);\n\n events.once('sortStart', ({ col }) => {\n this.sortedColumnId = col.id;\n\n if (prevSortedColumnId && col.id !== prevSortedColumnId) {\n prevSortingOrder = this._getSortDirection(prevSortedColumnId);\n } else if (!prevSortedColumnId) {\n prevSortingOrder = '';\n }\n\n const itemIndex = this.collection.query.sort.value.findIndex(\n ({ field }) => field === col.id,\n );\n\n this.reportBi(\n withoutDefaults(cairoComponentSorted)({\n newSortedColumn: col.id,\n newSortingOrder: this._getSortDirection(col.id),\n prevSortedColumn: prevSortedColumnId,\n prevSortingOrder,\n origin,\n prevSortOrder,\n newSortOrder: this._getSortOrder(),\n itemIndex,\n isAddNewSort: !prevSortedIds.has(col.id),\n prevNumSortingColumns: prevSortedIds.size,\n numSortingColumns: query.sort.value.length,\n }),\n );\n });\n }),\n ),\n\n addEventListener(emitter, 'sortStart', (params) => {\n events.emit('sortStart', params);\n }),\n\n addEventListener(emitter, 'newPageStart', () => {\n const startTime = performance.now();\n\n return ({ totalNewItems }) => {\n this.reportBi(\n withoutDefaults(loadMore)({\n loadedItems: totalNewItems,\n loadingTime: Math.round(performance.now() - startTime),\n }),\n );\n };\n }),\n\n addEventListener(emitter, 'searchStart', () => {\n const startTime = performance.now();\n const searchTerm = collection.query.search.value;\n return () => {\n this.reportBi(\n withoutDefaults(cairoSearchResults)({\n searchTerm,\n searchResultsCnt: collection.result.asComputed.total,\n loadingTime: Math.round(performance.now() - startTime),\n }),\n );\n };\n }),\n\n addEventListener(\n emitter,\n 'search',\n action(() => {\n this.reportBi(\n withoutDefaults(cairoFilterToggled)({\n filterName: 'search',\n origin: 'toolbar',\n numFiltersActive: collection.query.activeFiltersCount,\n actionType: 'add',\n filterValue: collection.query.search.value,\n filteredListSize: collection.result.total,\n }),\n );\n }),\n ),\n ];\n\n return () => {\n disposers.forEach((d) => d());\n };\n }\n\n _getSortDirection(columndId?: string) {\n const {\n query: {\n sort: { value },\n },\n } = this.collection;\n\n const sort = value.find(({ field }) => field === columndId);\n\n if (sort) {\n return sort.direction;\n }\n\n return 'removed';\n }\n\n _getSortOrder() {\n const {\n query: { sort },\n } = this.collection;\n\n return JSON.stringify(\n sort.value.map(({ field, direction }) => ({\n fieldName: field,\n order: direction,\n })),\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -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","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","query","filtersKeyHash","event","_initSequence","CollectionOptimisticSequenceExecutor","err","pendingPatches","_p$move","Error","message","reorderModeCanceledMessage","biName","onClick","sequence","collectionSnapshot","updateOne","updateAll","patchOrFn","originQuery","itemPredicate","updatedAt","Date","deleteMany","deleteOne","deleteAll","initCollection","processor","dispose","init","i","indexOf","splice","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';\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}\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 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.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 { query } = collection;\n const { patches } = state;\n\n const { filtersKeyHash } = query;\n\n const event = optimisticPatch.move;\n\n if (event == null) {\n return;\n }\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, query } = collection;\n const { patches } = state;\n\n const { filtersKeyHash } = query;\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: {\n ...event,\n filtersKeyHash,\n },\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 * 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 const processor = new CollectionOptimisticProcessor({\n collection,\n optimistic: this,\n orderBy: this.orderBy,\n predicate: this.predicate,\n });\n\n const dispose = processor.init();\n\n return () => {\n const i = this.collections.indexOf(collection);\n if (i !== -1) {\n this.collections.splice(i, 1);\n }\n dispose();\n };\n }\n\n init() {\n const { collection, processors, 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 ...processors.map((p) => p.init()),\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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"}
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","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","query","filtersKeyHash","event","_initSequence","CollectionOptimisticSequenceExecutor","err","pendingPatches","_p$move","Error","message","reorderModeCanceledMessage","biName","onClick","sequence","collectionSnapshot","updateOne","updateAll","patchOrFn","originQuery","itemPredicate","updatedAt","Date","deleteMany","deleteOne","deleteAll","initCollection","processor","dispose","init","i","indexOf","splice","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';\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}\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 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.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 { query } = collection;\n const { patches } = state;\n\n const { filtersKeyHash } = query;\n\n const event = optimisticPatch.move;\n\n if (event == null) {\n return;\n }\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, query } = collection;\n const { patches } = state;\n\n const { filtersKeyHash } = query;\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: {\n ...event,\n filtersKeyHash,\n },\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 * 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 const processor = new CollectionOptimisticProcessor({\n collection,\n optimistic: this,\n orderBy: this.orderBy,\n predicate: this.predicate,\n });\n\n const dispose = processor.init();\n\n return () => {\n const i = this.collections.indexOf(collection);\n if (i !== -1) {\n this.collections.splice(i, 1);\n }\n dispose();\n };\n }\n\n init() {\n const { collection, processors, 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 ...processors.map((p) => p.init()),\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":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(queryName, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAG/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7D,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACZ,SAAS,EAAEO,OAAO,CAAC;IACtC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA"}
1
+ {"version":3,"names":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(queryName, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAG/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7D,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACZ,SAAS,EAAEO,OAAO,CAAC;IACtC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA","ignoreList":[]}
@@ -1 +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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"}
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","CollectionOptimisticProcessorHelpers","constructor","collection","_defineProperty2","default","makeObservable","reprocess","action","bound","result","_pages","unprocessed","unprocessedPages","_totals","unprocessedTotal","processedTotal","processedPages","_getProcessedResult","currentItemsMap","Map","setTotals","processed","setPages","exports"],"sources":["../../../src/state/CollectionOptimisticHelpers.ts"],"sourcesContent":["import { FiltersMap } from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\n\nexport class CollectionOptimisticProcessorHelpers<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n constructor(collection: CollectionState<T, F>) {\n this.collection = collection;\n\n makeObservable(this, {\n reprocess: action.bound,\n });\n }\n\n reprocess() {\n const { collection } = this;\n const { result } = collection;\n const {\n _pages: { unprocessed: unprocessedPages },\n _totals: { unprocessed: unprocessedTotal },\n } = result;\n\n const { processedTotal, processedPages } = collection._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: new Map(),\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n result.setPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,oCAAoC,CAA0B;EAEzEC,WAAWA,CAACC,UAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAE5B,IAAAG,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC,YAAM,CAACC;IACpB,CAAC,CAAC;EACJ;EAEAF,SAASA,CAAA,EAAG;IACV,MAAM;MAAEJ;IAAW,CAAC,GAAG,IAAI;IAC3B,MAAM;MAAEO;IAAO,CAAC,GAAGP,UAAU;IAC7B,MAAM;MACJQ,MAAM,EAAE;QAAEC,WAAW,EAAEC;MAAiB,CAAC;MACzCC,OAAO,EAAE;QAAEF,WAAW,EAAEG;MAAiB;IAC3C,CAAC,GAAGL,MAAM;IAEV,MAAM;MAAEM,cAAc;MAAEC;IAAe,CAAC,GAAGd,UAAU,CAACe,mBAAmB,CAAC;MACxEL,gBAAgB;MAChBE,gBAAgB;MAChBI,eAAe,EAAE,IAAIC,GAAG,CAAC;IAC3B,CAAC,CAAC;IAEFV,MAAM,CAACW,SAAS,CAAC;MACfT,WAAW,EAAEG,gBAAgB;MAC7BO,SAAS,EAAEN;IACb,CAAC,CAAC;IAEFN,MAAM,CAACa,QAAQ,CAAC;MACdX,WAAW,EAAEC,gBAAgB;MAC7BS,SAAS,EAAEL;IACb,CAAC,CAAC;EACJ;AACF;AAACO,OAAA,CAAAvB,oCAAA,GAAAA,oCAAA"}
1
+ {"version":3,"names":["_mobx","require","CollectionOptimisticProcessorHelpers","constructor","collection","_defineProperty2","default","makeObservable","reprocess","action","bound","result","_pages","unprocessed","unprocessedPages","_totals","unprocessedTotal","processedTotal","processedPages","_getProcessedResult","currentItemsMap","Map","setTotals","processed","setPages","exports"],"sources":["../../../src/state/CollectionOptimisticHelpers.ts"],"sourcesContent":["import { FiltersMap } from '../model';\nimport { CollectionState } from './CollectionState';\nimport { action, makeObservable } from 'mobx';\n\nexport class CollectionOptimisticProcessorHelpers<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n constructor(collection: CollectionState<T, F>) {\n this.collection = collection;\n\n makeObservable(this, {\n reprocess: action.bound,\n });\n }\n\n reprocess() {\n const { collection } = this;\n const { result } = collection;\n const {\n _pages: { unprocessed: unprocessedPages },\n _totals: { unprocessed: unprocessedTotal },\n } = result;\n\n const { processedTotal, processedPages } = collection._getProcessedResult({\n unprocessedPages,\n unprocessedTotal,\n currentItemsMap: new Map(),\n });\n\n result.setTotals({\n unprocessed: unprocessedTotal,\n processed: processedTotal,\n });\n\n result.setPages({\n unprocessed: unprocessedPages,\n processed: processedPages,\n });\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,oCAAoC,CAA0B;EAEzEC,WAAWA,CAACC,UAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC7C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAE5B,IAAAG,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC,YAAM,CAACC;IACpB,CAAC,CAAC;EACJ;EAEAF,SAASA,CAAA,EAAG;IACV,MAAM;MAAEJ;IAAW,CAAC,GAAG,IAAI;IAC3B,MAAM;MAAEO;IAAO,CAAC,GAAGP,UAAU;IAC7B,MAAM;MACJQ,MAAM,EAAE;QAAEC,WAAW,EAAEC;MAAiB,CAAC;MACzCC,OAAO,EAAE;QAAEF,WAAW,EAAEG;MAAiB;IAC3C,CAAC,GAAGL,MAAM;IAEV,MAAM;MAAEM,cAAc;MAAEC;IAAe,CAAC,GAAGd,UAAU,CAACe,mBAAmB,CAAC;MACxEL,gBAAgB;MAChBE,gBAAgB;MAChBI,eAAe,EAAE,IAAIC,GAAG,CAAC;IAC3B,CAAC,CAAC;IAEFV,MAAM,CAACW,SAAS,CAAC;MACfT,WAAW,EAAEG,gBAAgB;MAC7BO,SAAS,EAAEN;IACb,CAAC,CAAC;IAEFN,MAAM,CAACa,QAAQ,CAAC;MACdX,WAAW,EAAEC,gBAAgB;MAC7BS,SAAS,EAAEL;IACb,CAAC,CAAC;EACJ;AACF;AAACO,OAAA,CAAAvB,oCAAA,GAAAA,oCAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_events","OptimisticPatch","constructor","params","_defineProperty2","default","Date","now","EventEmitter","events","queryCache","queryNames","patches","isStale","listeners","length","remove","forEach","queryName","findAll","queryKey","q","invalidate","emit","patch","item","selector","actionType","keepPosition","move","collectionSnapshot","patchedItems","observable","map","deep","originalItems","originalTotal","makeObservable","patchedItemsEntries","computed","ref","onEventuallyUpdated","action","Array","from","entries","exports"],"sources":["../../../src/state/CollectionOptimisticPatch.ts"],"sourcesContent":["import {\n action,\n computed,\n IObservableArray,\n makeObservable,\n observable,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { ActionMove } from '../model';\nimport { QueryCache } from 'react-query/core';\n\ninterface OptimisticPatchEvents<T> {\n scheduleRemoval: (patch: OptimisticPatch<T>) => unknown;\n}\n\ntype OptimisticPatchActionType =\n | 'move'\n | 'createMany'\n | 'updateMany'\n | 'updateAll'\n | 'updateAllConst'\n | 'deleteMany'\n | 'deleteAll';\n\nexport interface OptimisticPatchParams<T> {\n readonly patch?: (\n item: T,\n patch: OptimisticPatch<T>,\n ) => Partial<T> | undefined;\n readonly selector: (item: T, patch: OptimisticPatch<T>) => boolean;\n readonly actionType: OptimisticPatchActionType;\n readonly patchedItems: Map<string, T>;\n readonly originalItems: Map<string, T>;\n readonly originalTotal: number;\n readonly keepPosition?: boolean;\n readonly queryNames: string[];\n readonly queryCache: QueryCache;\n readonly patches: IObservableArray<OptimisticPatch<T>>;\n readonly move?: ActionMove<T>;\n readonly collectionSnapshot?: { [key: string]: string | number | undefined };\n}\n\nexport class OptimisticPatch<T> {\n readonly patch;\n readonly selector;\n readonly actionType;\n readonly patchedItems;\n readonly originalItems;\n readonly originalTotal;\n readonly keepPosition;\n readonly queryNames;\n readonly queryCache;\n readonly patches;\n readonly move;\n readonly createdAt = Date.now();\n readonly collectionSnapshot;\n\n isStale: boolean = false;\n\n readonly events = new EventEmitter() as TypedEmitter<\n OptimisticPatchEvents<T>\n >;\n\n constructor(params: OptimisticPatchParams<T>) {\n this.patch = (item: T) => params.patch?.(item, this);\n this.selector = (item: T) => params.selector(item, this);\n this.actionType = params.actionType;\n this.keepPosition = params.keepPosition;\n this.queryNames = params.queryNames;\n this.queryCache = params.queryCache;\n this.patches = params.patches;\n this.move = params.move;\n this.collectionSnapshot = params.collectionSnapshot;\n\n this.patchedItems = observable.map<string, T>(params.patchedItems, {\n deep: false,\n });\n\n this.originalItems = observable.map<string, T>(params.originalItems, {\n deep: false,\n });\n\n this.originalTotal = params.originalTotal;\n\n makeObservable(this, {\n patchedItemsEntries: computed,\n isStale: observable.ref,\n onEventuallyUpdated: action,\n });\n }\n\n get patchedItemsEntries() {\n return Array.from(this.patchedItems.entries());\n }\n\n onEventuallyUpdated = () => {\n const { events, queryCache, queryNames, patches } = this;\n this.isStale = true;\n if (!events.listeners('scheduleRemoval').length) {\n patches.remove(this);\n queryNames.forEach((queryName) => {\n queryCache\n .findAll({ queryKey: [queryName] })\n .forEach((q) => q.invalidate());\n });\n } else {\n events.emit('scheduleRemoval', this);\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_mobx","require","_events","OptimisticPatch","constructor","params","_defineProperty2","default","Date","now","EventEmitter","events","queryCache","queryNames","patches","isStale","listeners","length","remove","forEach","queryName","findAll","queryKey","q","invalidate","emit","patch","item","selector","actionType","keepPosition","move","collectionSnapshot","patchedItems","observable","map","deep","originalItems","originalTotal","makeObservable","patchedItemsEntries","computed","ref","onEventuallyUpdated","action","Array","from","entries","exports"],"sources":["../../../src/state/CollectionOptimisticPatch.ts"],"sourcesContent":["import {\n action,\n computed,\n IObservableArray,\n makeObservable,\n observable,\n} from 'mobx';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { ActionMove } from '../model';\nimport { QueryCache } from 'react-query/core';\n\ninterface OptimisticPatchEvents<T> {\n scheduleRemoval: (patch: OptimisticPatch<T>) => unknown;\n}\n\ntype OptimisticPatchActionType =\n | 'move'\n | 'createMany'\n | 'updateMany'\n | 'updateAll'\n | 'updateAllConst'\n | 'deleteMany'\n | 'deleteAll';\n\nexport interface OptimisticPatchParams<T> {\n readonly patch?: (\n item: T,\n patch: OptimisticPatch<T>,\n ) => Partial<T> | undefined;\n readonly selector: (item: T, patch: OptimisticPatch<T>) => boolean;\n readonly actionType: OptimisticPatchActionType;\n readonly patchedItems: Map<string, T>;\n readonly originalItems: Map<string, T>;\n readonly originalTotal: number;\n readonly keepPosition?: boolean;\n readonly queryNames: string[];\n readonly queryCache: QueryCache;\n readonly patches: IObservableArray<OptimisticPatch<T>>;\n readonly move?: ActionMove<T>;\n readonly collectionSnapshot?: { [key: string]: string | number | undefined };\n}\n\nexport class OptimisticPatch<T> {\n readonly patch;\n readonly selector;\n readonly actionType;\n readonly patchedItems;\n readonly originalItems;\n readonly originalTotal;\n readonly keepPosition;\n readonly queryNames;\n readonly queryCache;\n readonly patches;\n readonly move;\n readonly createdAt = Date.now();\n readonly collectionSnapshot;\n\n isStale: boolean = false;\n\n readonly events = new EventEmitter() as TypedEmitter<\n OptimisticPatchEvents<T>\n >;\n\n constructor(params: OptimisticPatchParams<T>) {\n this.patch = (item: T) => params.patch?.(item, this);\n this.selector = (item: T) => params.selector(item, this);\n this.actionType = params.actionType;\n this.keepPosition = params.keepPosition;\n this.queryNames = params.queryNames;\n this.queryCache = params.queryCache;\n this.patches = params.patches;\n this.move = params.move;\n this.collectionSnapshot = params.collectionSnapshot;\n\n this.patchedItems = observable.map<string, T>(params.patchedItems, {\n deep: false,\n });\n\n this.originalItems = observable.map<string, T>(params.originalItems, {\n deep: false,\n });\n\n this.originalTotal = params.originalTotal;\n\n makeObservable(this, {\n patchedItemsEntries: computed,\n isStale: observable.ref,\n onEventuallyUpdated: action,\n });\n }\n\n get patchedItemsEntries() {\n return Array.from(this.patchedItems.entries());\n }\n\n onEventuallyUpdated = () => {\n const { events, queryCache, queryNames, patches } = this;\n this.isStale = true;\n if (!events.listeners('scheduleRemoval').length) {\n patches.remove(this);\n queryNames.forEach((queryName) => {\n queryCache\n .findAll({ queryKey: [queryName] })\n .forEach((q) => q.invalidate());\n });\n } else {\n events.emit('scheduleRemoval', this);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +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","init","emitter","on","events","off","removeSelectionIfExists","itemKey","bulkSelect","result","originQuery","state","patches","itemPredicate","filterItem","filterPageByPatches","select","filter","item","pages","currentItemsMap","orderByIteratee","limit","length","orders","_orderByMode","finalPages","map","page","transformItemByUpdateAllPatches","itemToMerge","prepareItemsToMergeIntoPage","all","size","index","pageWithPatchedItems","mergePatchedItems","orderByMoves","pageIndex","currentFiltersKeyHash","query","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';\n\ninterface Optimistic<T> {\n _orderByMode: 'orders' | 'moves';\n readonly state: CollectionOptimisticActionsState<T>;\n readonly events: TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n }>;\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>;\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>;\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\n init() {\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 return () => {\n this.collection.emitter.off('beforeAddNewPages', this.beforeAddNewPages);\n this.collection.emitter.off('beforeSetTotal', this.beforeSetTotal);\n this.optimistic.events.off('reprocess', this.reprocess);\n };\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 },\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: collection.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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"}
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","init","emitter","on","events","off","removeSelectionIfExists","itemKey","bulkSelect","result","originQuery","state","patches","itemPredicate","filterItem","filterPageByPatches","select","filter","item","pages","currentItemsMap","orderByIteratee","limit","length","orders","_orderByMode","finalPages","map","page","transformItemByUpdateAllPatches","itemToMerge","prepareItemsToMergeIntoPage","all","size","index","pageWithPatchedItems","mergePatchedItems","orderByMoves","pageIndex","currentFiltersKeyHash","query","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';\n\ninterface Optimistic<T> {\n _orderByMode: 'orders' | 'moves';\n readonly state: CollectionOptimisticActionsState<T>;\n readonly events: TypedEmitter<{\n reprocess: () => void;\n updated: () => void;\n }>;\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>;\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>;\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\n init() {\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 return () => {\n this.collection.emitter.off('beforeAddNewPages', this.beforeAddNewPages);\n this.collection.emitter.off('beforeSetTotal', this.beforeSetTotal);\n this.optimistic.events.off('reprocess', this.reprocess);\n };\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 },\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: collection.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 +1 @@
1
- {"version":3,"names":["_PromisesSequence","require","_events","CollectionOptimisticSequenceExecutor","constructor","params","_defineProperty2","default","PromisesSequence","EventEmitter","showToast","translate","errorMonitor","onRollback","removeAndShowToast","toastConfig","removeToast","remove","sequence","seq","t","submit","onEventuallyUpdated","enqueue","err","console","error","captureException","errorToast","type","timeout","action","uiType","text","removeToastOnClick","onClick","_this$removeToast","_errorToast$action","call","currentToast","Promise","resolve","setTimeout","then","exports"],"sources":["../../../src/state/CollectionOptimisticSequenceExecutor.ts"],"sourcesContent":["import { ShowToast, ToastConfig } from '../model';\nimport { ErrorMonitor, Translate } from '../services';\nimport { PromisesSequence } from './PromisesSequence';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\n\nexport interface ExecuteParams<R> {\n submit: () => Promise<R> | undefined;\n onEventuallyUpdated?: () => unknown;\n}\n\nexport interface CollectionOptimisticSequenceExecutorParams {\n readonly showToast: ShowToast;\n readonly translate: Translate;\n readonly errorMonitor: ErrorMonitor;\n readonly onRollback: (err: unknown) =>\n | (Omit<ToastConfig, 'action'> & {\n action?: Partial<ToastConfig['action']>;\n })\n | undefined;\n}\n\nexport class CollectionOptimisticSequenceExecutor {\n readonly showToast;\n readonly translate;\n readonly errorMonitor;\n readonly onRollback;\n\n readonly seq = new PromisesSequence();\n\n removeToast: (() => void) | null = null;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n windowClosedDuringSequence: () => unknown;\n }>;\n\n constructor(params: CollectionOptimisticSequenceExecutorParams) {\n this.showToast = params.showToast;\n this.translate = params.translate;\n this.errorMonitor = params.errorMonitor;\n this.onRollback = params.onRollback;\n }\n\n removeAndShowToast(toastConfig: ToastConfig) {\n const { removeToast, showToast } = this;\n removeToast?.();\n this.removeToast = showToast(toastConfig).remove;\n }\n\n async sequence<R>(params: ExecuteParams<R>) {\n const { seq, errorMonitor, translate: t, onRollback } = this;\n const { submit, onEventuallyUpdated } = params;\n\n try {\n await seq.enqueue(async () => {\n await submit();\n onEventuallyUpdated?.();\n });\n } catch (err) {\n console.error(err);\n errorMonitor.captureException(err);\n\n const errorToast = onRollback(err);\n\n if (errorToast) {\n this.removeAndShowToast({\n ...errorToast,\n type: 'ERROR',\n timeout: 'NONE',\n action: {\n uiType: 'LINK',\n text: t('cairo.toast.retry'),\n removeToastOnClick: true,\n ...errorToast.action,\n onClick: () => {\n this.removeToast?.();\n this.removeToast = null;\n errorToast.action?.onClick?.();\n },\n },\n });\n\n const currentToast = this.removeToast;\n new Promise((resolve) => setTimeout(resolve, 12000)).then(() => {\n if (currentToast === this.removeToast) {\n currentToast?.();\n }\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAmBO,MAAME,oCAAoC,CAAC;EAchDC,WAAWA,CAACC,MAAkD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,eARjD,IAAIC,kCAAgB,CAAC,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,uBAEF,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBAErB,IAAIE,oBAAY,CAAC,CAAC;IAKlC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGN,MAAM,CAACM,SAAS;IACjC,IAAI,CAACC,YAAY,GAAGP,MAAM,CAACO,YAAY;IACvC,IAAI,CAACC,UAAU,GAAGR,MAAM,CAACQ,UAAU;EACrC;EAEAC,kBAAkBA,CAACC,WAAwB,EAAE;IAC3C,MAAM;MAAEC,WAAW;MAAEN;IAAU,CAAC,GAAG,IAAI;IACvCM,WAAW,YAAXA,WAAW,CAAG,CAAC;IACf,IAAI,CAACA,WAAW,GAAGN,SAAS,CAACK,WAAW,CAAC,CAACE,MAAM;EAClD;EAEA,MAAMC,QAAQA,CAAIb,MAAwB,EAAE;IAC1C,MAAM;MAAEc,GAAG;MAAEP,YAAY;MAAED,SAAS,EAAES,CAAC;MAAEP;IAAW,CAAC,GAAG,IAAI;IAC5D,MAAM;MAAEQ,MAAM;MAAEC;IAAoB,CAAC,GAAGjB,MAAM;IAE9C,IAAI;MACF,MAAMc,GAAG,CAACI,OAAO,CAAC,YAAY;QAC5B,MAAMF,MAAM,CAAC,CAAC;QACdC,mBAAmB,YAAnBA,mBAAmB,CAAG,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOE,GAAG,EAAE;MACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClBZ,YAAY,CAACe,gBAAgB,CAACH,GAAG,CAAC;MAElC,MAAMI,UAAU,GAAGf,UAAU,CAACW,GAAG,CAAC;MAElC,IAAII,UAAU,EAAE;QACd,IAAI,CAACd,kBAAkB,CAAC;UACtB,GAAGc,UAAU;UACbC,IAAI,EAAE,OAAO;UACbC,OAAO,EAAE,MAAM;UACfC,MAAM,EAAE;YACNC,MAAM,EAAE,MAAM;YACdC,IAAI,EAAEb,CAAC,CAAC,mBAAmB,CAAC;YAC5Bc,kBAAkB,EAAE,IAAI;YACxB,GAAGN,UAAU,CAACG,MAAM;YACpBI,OAAO,EAAEA,CAAA,KAAM;cAAA,IAAAC,iBAAA,EAAAC,kBAAA;cACb,CAAAD,iBAAA,OAAI,CAACpB,WAAW,aAAhBoB,iBAAA,CAAAE,IAAA,KAAmB,CAAC;cACpB,IAAI,CAACtB,WAAW,GAAG,IAAI;cACvB,CAAAqB,kBAAA,GAAAT,UAAU,CAACG,MAAM,aAAjBM,kBAAA,CAAmBF,OAAO,YAA1BE,kBAAA,CAAmBF,OAAO,CAAG,CAAC;YAChC;UACF;QACF,CAAC,CAAC;QAEF,MAAMI,YAAY,GAAG,IAAI,CAACvB,WAAW;QACrC,IAAIwB,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAE,KAAK,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM;UAC9D,IAAIJ,YAAY,KAAK,IAAI,CAACvB,WAAW,EAAE;YACrCuB,YAAY,YAAZA,YAAY,CAAG,CAAC;UAClB;QACF,CAAC,CAAC;MACJ;IACF;EACF;AACF;AAACK,OAAA,CAAAzC,oCAAA,GAAAA,oCAAA"}
1
+ {"version":3,"names":["_PromisesSequence","require","_events","CollectionOptimisticSequenceExecutor","constructor","params","_defineProperty2","default","PromisesSequence","EventEmitter","showToast","translate","errorMonitor","onRollback","removeAndShowToast","toastConfig","removeToast","remove","sequence","seq","t","submit","onEventuallyUpdated","enqueue","err","console","error","captureException","errorToast","type","timeout","action","uiType","text","removeToastOnClick","onClick","_this$removeToast","_errorToast$action","call","currentToast","Promise","resolve","setTimeout","then","exports"],"sources":["../../../src/state/CollectionOptimisticSequenceExecutor.ts"],"sourcesContent":["import { ShowToast, ToastConfig } from '../model';\nimport { ErrorMonitor, Translate } from '../services';\nimport { PromisesSequence } from './PromisesSequence';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\n\nexport interface ExecuteParams<R> {\n submit: () => Promise<R> | undefined;\n onEventuallyUpdated?: () => unknown;\n}\n\nexport interface CollectionOptimisticSequenceExecutorParams {\n readonly showToast: ShowToast;\n readonly translate: Translate;\n readonly errorMonitor: ErrorMonitor;\n readonly onRollback: (err: unknown) =>\n | (Omit<ToastConfig, 'action'> & {\n action?: Partial<ToastConfig['action']>;\n })\n | undefined;\n}\n\nexport class CollectionOptimisticSequenceExecutor {\n readonly showToast;\n readonly translate;\n readonly errorMonitor;\n readonly onRollback;\n\n readonly seq = new PromisesSequence();\n\n removeToast: (() => void) | null = null;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n windowClosedDuringSequence: () => unknown;\n }>;\n\n constructor(params: CollectionOptimisticSequenceExecutorParams) {\n this.showToast = params.showToast;\n this.translate = params.translate;\n this.errorMonitor = params.errorMonitor;\n this.onRollback = params.onRollback;\n }\n\n removeAndShowToast(toastConfig: ToastConfig) {\n const { removeToast, showToast } = this;\n removeToast?.();\n this.removeToast = showToast(toastConfig).remove;\n }\n\n async sequence<R>(params: ExecuteParams<R>) {\n const { seq, errorMonitor, translate: t, onRollback } = this;\n const { submit, onEventuallyUpdated } = params;\n\n try {\n await seq.enqueue(async () => {\n await submit();\n onEventuallyUpdated?.();\n });\n } catch (err) {\n console.error(err);\n errorMonitor.captureException(err);\n\n const errorToast = onRollback(err);\n\n if (errorToast) {\n this.removeAndShowToast({\n ...errorToast,\n type: 'ERROR',\n timeout: 'NONE',\n action: {\n uiType: 'LINK',\n text: t('cairo.toast.retry'),\n removeToastOnClick: true,\n ...errorToast.action,\n onClick: () => {\n this.removeToast?.();\n this.removeToast = null;\n errorToast.action?.onClick?.();\n },\n },\n });\n\n const currentToast = this.removeToast;\n new Promise((resolve) => setTimeout(resolve, 12000)).then(() => {\n if (currentToast === this.removeToast) {\n currentToast?.();\n }\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAmBO,MAAME,oCAAoC,CAAC;EAchDC,WAAWA,CAACC,MAAkD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,eARjD,IAAIC,kCAAgB,CAAC,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,uBAEF,IAAI;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBAErB,IAAIE,oBAAY,CAAC,CAAC;IAKlC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGN,MAAM,CAACM,SAAS;IACjC,IAAI,CAACC,YAAY,GAAGP,MAAM,CAACO,YAAY;IACvC,IAAI,CAACC,UAAU,GAAGR,MAAM,CAACQ,UAAU;EACrC;EAEAC,kBAAkBA,CAACC,WAAwB,EAAE;IAC3C,MAAM;MAAEC,WAAW;MAAEN;IAAU,CAAC,GAAG,IAAI;IACvCM,WAAW,YAAXA,WAAW,CAAG,CAAC;IACf,IAAI,CAACA,WAAW,GAAGN,SAAS,CAACK,WAAW,CAAC,CAACE,MAAM;EAClD;EAEA,MAAMC,QAAQA,CAAIb,MAAwB,EAAE;IAC1C,MAAM;MAAEc,GAAG;MAAEP,YAAY;MAAED,SAAS,EAAES,CAAC;MAAEP;IAAW,CAAC,GAAG,IAAI;IAC5D,MAAM;MAAEQ,MAAM;MAAEC;IAAoB,CAAC,GAAGjB,MAAM;IAE9C,IAAI;MACF,MAAMc,GAAG,CAACI,OAAO,CAAC,YAAY;QAC5B,MAAMF,MAAM,CAAC,CAAC;QACdC,mBAAmB,YAAnBA,mBAAmB,CAAG,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOE,GAAG,EAAE;MACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClBZ,YAAY,CAACe,gBAAgB,CAACH,GAAG,CAAC;MAElC,MAAMI,UAAU,GAAGf,UAAU,CAACW,GAAG,CAAC;MAElC,IAAII,UAAU,EAAE;QACd,IAAI,CAACd,kBAAkB,CAAC;UACtB,GAAGc,UAAU;UACbC,IAAI,EAAE,OAAO;UACbC,OAAO,EAAE,MAAM;UACfC,MAAM,EAAE;YACNC,MAAM,EAAE,MAAM;YACdC,IAAI,EAAEb,CAAC,CAAC,mBAAmB,CAAC;YAC5Bc,kBAAkB,EAAE,IAAI;YACxB,GAAGN,UAAU,CAACG,MAAM;YACpBI,OAAO,EAAEA,CAAA,KAAM;cAAA,IAAAC,iBAAA,EAAAC,kBAAA;cACb,CAAAD,iBAAA,OAAI,CAACpB,WAAW,aAAhBoB,iBAAA,CAAAE,IAAA,KAAmB,CAAC;cACpB,IAAI,CAACtB,WAAW,GAAG,IAAI;cACvB,CAAAqB,kBAAA,GAAAT,UAAU,CAACG,MAAM,aAAjBM,kBAAA,CAAmBF,OAAO,YAA1BE,kBAAA,CAAmBF,OAAO,CAAG,CAAC;YAChC;UACF;QACF,CAAC,CAAC;QAEF,MAAMI,YAAY,GAAG,IAAI,CAACvB,WAAW;QACrC,IAAIwB,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAE,KAAK,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM;UAC9D,IAAIJ,YAAY,KAAK,IAAI,CAACvB,WAAW,EAAE;YACrCuB,YAAY,YAAZA,YAAY,CAAG,CAAC;UAClB;QACF,CAAC,CAAC;MACJ;IACF;EACF;AACF;AAACK,OAAA,CAAAzC,oCAAA,GAAAA,oCAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_PageState","CollectionPageState","constructor","params","_defineProperty2","default","PageState","pageTitle","hasHeader","hideHeaderTotal","makeObservable","observable","ref","total","exports"],"sources":["../../../src/state/CollectionPageState.ts"],"sourcesContent":["import { makeObservable, observable } from 'mobx';\nimport { PageState } from './PageState';\n\nexport interface CollectionPageStateParams {\n pageTitle?: string;\n hasHeader?: boolean;\n hideHeaderTotal?: boolean;\n}\n\nexport class CollectionPageState {\n pageTitle?: string;\n hasHeader?: boolean = false;\n total?: number | boolean = false;\n hideHeaderTotal?: boolean = false;\n\n readonly pageState = new PageState();\n\n constructor(params: CollectionPageStateParams) {\n this.pageTitle = params.pageTitle;\n this.hasHeader = params.hasHeader;\n this.hideHeaderTotal = params.hideHeaderTotal;\n\n makeObservable(this, {\n pageTitle: observable.ref,\n hasHeader: observable.ref,\n hideHeaderTotal: observable.ref,\n total: observable.ref,\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAQO,MAAME,mBAAmB,CAAC;EAQ/BC,WAAWA,CAACC,MAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBANzB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBACA,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BACJ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBAEZ,IAAIC,oBAAS,CAAC,CAAC;IAGlC,IAAI,CAACC,SAAS,GAAGJ,MAAM,CAACI,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe;IAE7C,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBH,SAAS,EAAEI,gBAAU,CAACC,GAAG;MACzBJ,SAAS,EAAEG,gBAAU,CAACC,GAAG;MACzBH,eAAe,EAAEE,gBAAU,CAACC,GAAG;MAC/BC,KAAK,EAAEF,gBAAU,CAACC;IACpB,CAAC,CAAC;EACJ;AACF;AAACE,OAAA,CAAAb,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_mobx","require","_PageState","CollectionPageState","constructor","params","_defineProperty2","default","PageState","pageTitle","hasHeader","hideHeaderTotal","makeObservable","observable","ref","total","exports"],"sources":["../../../src/state/CollectionPageState.ts"],"sourcesContent":["import { makeObservable, observable } from 'mobx';\nimport { PageState } from './PageState';\n\nexport interface CollectionPageStateParams {\n pageTitle?: string;\n hasHeader?: boolean;\n hideHeaderTotal?: boolean;\n}\n\nexport class CollectionPageState {\n pageTitle?: string;\n hasHeader?: boolean = false;\n total?: number | boolean = false;\n hideHeaderTotal?: boolean = false;\n\n readonly pageState = new PageState();\n\n constructor(params: CollectionPageStateParams) {\n this.pageTitle = params.pageTitle;\n this.hasHeader = params.hasHeader;\n this.hideHeaderTotal = params.hideHeaderTotal;\n\n makeObservable(this, {\n pageTitle: observable.ref,\n hasHeader: observable.ref,\n hideHeaderTotal: observable.ref,\n total: observable.ref,\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAQO,MAAME,mBAAmB,CAAC;EAQ/BC,WAAWA,CAACC,MAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBANzB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iBACA,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BACJ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,qBAEZ,IAAIC,oBAAS,CAAC,CAAC;IAGlC,IAAI,CAACC,SAAS,GAAGJ,MAAM,CAACI,SAAS;IACjC,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACK,SAAS;IACjC,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe;IAE7C,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBH,SAAS,EAAEI,gBAAU,CAACC,GAAG;MACzBJ,SAAS,EAAEG,gBAAU,CAACC,GAAG;MACzBH,eAAe,EAAEE,gBAAU,CAACC,GAAG;MAC/BC,KAAK,EAAEF,gBAAU,CAACC;IACpB,CAAC,CAAC;EACJ;AACF;AAACE,OAAA,CAAAb,mBAAA,GAAAA,mBAAA","ignoreList":[]}