@wix/bex-core 1.406.0 → 1.408.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 (67) hide show
  1. package/dist/cjs/assets/locale/messages_cs.json +60 -60
  2. package/dist/cjs/assets/locale/messages_da.json +73 -73
  3. package/dist/cjs/assets/locale/messages_de.json +72 -72
  4. package/dist/cjs/assets/locale/messages_es.json +75 -75
  5. package/dist/cjs/assets/locale/messages_fr.json +75 -75
  6. package/dist/cjs/assets/locale/messages_id.json +2 -2
  7. package/dist/cjs/assets/locale/messages_it.json +75 -75
  8. package/dist/cjs/assets/locale/messages_ja.json +76 -76
  9. package/dist/cjs/assets/locale/messages_ko.json +76 -76
  10. package/dist/cjs/assets/locale/messages_nl.json +73 -73
  11. package/dist/cjs/assets/locale/messages_no.json +76 -76
  12. package/dist/cjs/assets/locale/messages_pl.json +76 -76
  13. package/dist/cjs/assets/locale/messages_pt.json +73 -73
  14. package/dist/cjs/assets/locale/messages_ru.json +76 -76
  15. package/dist/cjs/assets/locale/messages_sv.json +76 -76
  16. package/dist/cjs/assets/locale/messages_th.json +76 -76
  17. package/dist/cjs/assets/locale/messages_tr.json +16 -16
  18. package/dist/cjs/assets/locale/messages_uk.json +76 -76
  19. package/dist/cjs/assets/locale/messages_vi.json +61 -61
  20. package/dist/cjs/assets/locale/messages_zh.json +76 -76
  21. package/dist/cjs/model/cairoEssentials.js.map +1 -1
  22. package/dist/cjs/services/CairoErrorCode.js.map +1 -1
  23. package/dist/cjs/services/cairoMonitor.js +11 -2
  24. package/dist/cjs/services/cairoMonitor.js.map +1 -1
  25. package/dist/cjs/state/CairoContainer.js +15 -9
  26. package/dist/cjs/state/CairoContainer.js.map +1 -1
  27. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +4 -6
  28. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  29. package/dist/cjs/state/optimistic-simulation/prepareItemsToMergeIntoPage.js +27 -10
  30. package/dist/cjs/state/optimistic-simulation/prepareItemsToMergeIntoPage.js.map +1 -1
  31. package/dist/esm/assets/locale/messages_cs.json +60 -60
  32. package/dist/esm/assets/locale/messages_da.json +73 -73
  33. package/dist/esm/assets/locale/messages_de.json +72 -72
  34. package/dist/esm/assets/locale/messages_es.json +75 -75
  35. package/dist/esm/assets/locale/messages_fr.json +75 -75
  36. package/dist/esm/assets/locale/messages_id.json +2 -2
  37. package/dist/esm/assets/locale/messages_it.json +75 -75
  38. package/dist/esm/assets/locale/messages_ja.json +76 -76
  39. package/dist/esm/assets/locale/messages_ko.json +76 -76
  40. package/dist/esm/assets/locale/messages_nl.json +73 -73
  41. package/dist/esm/assets/locale/messages_no.json +76 -76
  42. package/dist/esm/assets/locale/messages_pl.json +76 -76
  43. package/dist/esm/assets/locale/messages_pt.json +73 -73
  44. package/dist/esm/assets/locale/messages_ru.json +76 -76
  45. package/dist/esm/assets/locale/messages_sv.json +76 -76
  46. package/dist/esm/assets/locale/messages_th.json +76 -76
  47. package/dist/esm/assets/locale/messages_tr.json +16 -16
  48. package/dist/esm/assets/locale/messages_uk.json +76 -76
  49. package/dist/esm/assets/locale/messages_vi.json +61 -61
  50. package/dist/esm/assets/locale/messages_zh.json +76 -76
  51. package/dist/esm/services/cairoMonitor.js +6 -2
  52. package/dist/esm/services/cairoMonitor.js.map +1 -1
  53. package/dist/esm/state/CairoContainer.js +30 -20
  54. package/dist/esm/state/CairoContainer.js.map +1 -1
  55. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +5 -3
  56. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  57. package/dist/esm/state/optimistic-simulation/prepareItemsToMergeIntoPage.js +21 -7
  58. package/dist/esm/state/optimistic-simulation/prepareItemsToMergeIntoPage.js.map +1 -1
  59. package/dist/types/model/cairoEssentials.d.ts +1 -0
  60. package/dist/types/model/cairoEssentials.d.ts.map +1 -1
  61. package/dist/types/services/CairoErrorCode.d.ts +1 -1
  62. package/dist/types/services/CairoErrorCode.d.ts.map +1 -1
  63. package/dist/types/services/cairoMonitor.d.ts +10 -2
  64. package/dist/types/services/cairoMonitor.d.ts.map +1 -1
  65. package/dist/types/state/CairoContainer.d.ts.map +1 -1
  66. package/dist/types/state/optimistic-simulation/prepareItemsToMergeIntoPage.d.ts.map +1 -1
  67. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["_services","require","_model","_mobx","_TaskState","_OnlineState","_createComponentSettings","_ConditionalModalState","_events","_useExperimentsCompat","_uuid","_BeforeUnloadCompatState","messagesEnImportGlobal","CairoContainer","constructor","params","_params$initialProps","_defineProperty2","default","TaskState","defaultParams","_this$biLoggerFactory","environment","cairoSessionId","biLoggerFactory","call","updateDefaults","artifactId","componentName","cairoVersion","uiLibVersion","csid","logger","bi","createBI","reportProps","report","createEssentials","lodash","patchesCache","events","EventEmitter","_messagesEnImport","messagesEnImport","_fetchTranslations","fetchTranslations","onNavigationModal","ConditionalModalState","cairoEnvironment","user","createComponentSettings","errorMonitor","httpClient","onlineManager","focusManager","history","useTranslation","useExperiments","createUseExperimentsCompat","experiments","showToast","navigateTo","onNavigation","getHostContainer","window","queryCache","appendModalsToBody","onSidePanelOpen","closeSidePanel","onBeforeUnload","i18n","fedopsLogger","internalFedops","internalErrorMonitor","internalExperiments","useSuspense","disableAutoInit","asyncMessagesLoader","locale","messages","initialProps","dsn","process","env","NODE_ENV","beforeSend","event","hint","internalMonitor","reportErrorThrownOncePerFlow","tags","extra","originalException","exception","Error","fingerprint","name","message","componentId","fedops","appName","scopes","STORYBOOK_VISUAL_E2E","options","fallbackLng","uuid","CairoMonitor","translate","args","initTask","status","t","Trans","onlineState","OnlineState","reportBi","createBILogger","makeObservable","init","action","bound","initialFetch","dateFormatters","computed","isLoading","isSuccess","promise","run","Promise","all","ready","catch","e","console","error","medium","Intl","DateTimeFormat","language","dateStyle","mediumTime","timeStyle","disposers","BeforeUnloadCompatState","forEach","d","exports"],"sources":["../../../src/state/CairoContainer.ts"],"sourcesContent":["import type { Essentials } from '@wix/fe-essentials/core';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ReportProps } from '@wix/fe-essentials/bi';\nimport {\n CairoMonitor,\n Environment,\n ErrorMonitor,\n fetchTranslations,\n FocusManager,\n History,\n messagesEnImportGlobal,\n ModalLayoutProps,\n OnlineManager,\n PartialLodash,\n PartialWindow,\n ReportBI,\n Translate,\n} from '../services';\nimport { QueryCache } from 'react-query/core';\nimport {\n CairoBILoggerFactory,\n cairoEnvironment,\n CairoEssentials,\n CairoInitialProps,\n CloseSidePanel,\n GetContentContainerY,\n GetHostContainer,\n OnNavigation,\n OnSidePanelOpen,\n ShowToast,\n} from '../model';\nimport { action, computed, IObservableArray, makeObservable } from 'mobx';\nimport { TaskState } from './TaskState';\nimport { OnlineState } from './OnlineState';\nimport { createComponentSettings } from '../services/createComponentSettings';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { TransitionState } from './TransitionState';\nimport { ReactElement } from 'react';\nimport { createUseExperimentsCompat } from './useExperimentsCompat';\nimport { v4 as uuid } from 'uuid';\nimport { BeforeUnloadCompatState } from './BeforeUnloadCompatState';\n\n// prefetch of the english translations\nmessagesEnImportGlobal();\n\ntype CairoContainerEvents = TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n}>;\n\nexport interface CairoContainerParams {\n readonly initialProps?: CairoInitialProps;\n readonly createEssentials: CairoEssentials['createEssentials'];\n readonly messagesEnImport?: () => Promise<{}>;\n readonly fetchTranslations?: (p: {\n readonly errorMonitor: ErrorMonitor;\n }) => (locale: string) => Promise<{}>;\n readonly createComponentSettings?: CairoEssentials['createComponentSettings'];\n readonly errorMonitor: ErrorMonitor;\n readonly httpClient: CairoEssentials['httpClient'];\n readonly onlineManager: OnlineManager;\n readonly focusManager: FocusManager;\n readonly history: History;\n readonly window: PartialWindow;\n readonly useTranslation: typeof useTranslation;\n readonly Trans: typeof Trans;\n readonly useExperiments: CairoEssentials['useExperiments'];\n readonly experiments: CairoEssentials['experiments'];\n readonly environment: CairoEssentials['environment'];\n readonly user: CairoEssentials['user'];\n readonly showToast?: ShowToast;\n readonly navigateTo?: CairoEssentials['navigateTo'];\n readonly onNavigation?: OnNavigation;\n readonly getHostContainer?: GetHostContainer;\n readonly queryCache: QueryCache;\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<any>>>;\n /**\n * @deprecated\n */\n readonly getContentContainerY?: GetContentContainerY;\n readonly onSidePanelOpen?: OnSidePanelOpen;\n readonly closeSidePanel?: CloseSidePanel;\n readonly lodash: PartialLodash;\n readonly events?: CairoContainerEvents;\n readonly sidePanel?: TransitionState<string>;\n readonly onNavigationModal?: ConditionalModalState<ModalLayoutProps>;\n readonly sidePanelComponents?: Map<string, ReactElement>;\n readonly appendModalsToBody?: boolean;\n readonly onBeforeUnload?: CairoEssentials['onBeforeUnload'];\n}\n\nexport class CairoContainer {\n readonly createEssentials;\n readonly errorMonitor: CairoContainerParams['errorMonitor'];\n readonly internalMonitor: CairoMonitor;\n readonly internalExperiments;\n readonly experiments;\n readonly httpClient: CairoContainerParams['httpClient'];\n readonly onlineManager;\n readonly focusManager;\n readonly history: CairoContainerParams['history'];\n readonly window: CairoContainerParams['window'];\n readonly useTranslation;\n readonly Trans: typeof Trans;\n readonly useExperiments;\n readonly showToast?;\n readonly navigateTo?;\n readonly onNavigation;\n readonly onBeforeUnload;\n readonly getHostContainer;\n readonly environment: Environment;\n readonly appendModalsToBody?: boolean;\n readonly onSidePanelOpen?: OnSidePanelOpen;\n readonly closeSidePanel?: CloseSidePanel;\n readonly translate: Translate;\n readonly lodash;\n readonly i18n: Essentials['i18n'];\n readonly reportBi: ReportBI;\n readonly _messagesEnImport;\n readonly _fetchTranslations;\n\n readonly queryCache: QueryCache;\n readonly patchesCache;\n\n readonly initTask = new TaskState<void>();\n readonly onlineState: OnlineState;\n\n readonly onNavigationModal;\n\n readonly events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n\n readonly user;\n\n readonly cairoSessionId: string;\n // Why it might be undefined when creating essentials?\n private readonly biLoggerFactory?: () => CairoBILoggerFactory;\n\n readonly createComponentSettings;\n\n constructor(params: Readonly<CairoContainerParams>) {\n this.createEssentials = params.createEssentials;\n this.lodash = params.lodash;\n this.patchesCache = params.patchesCache;\n this.events = params.events ?? (new EventEmitter() as CairoContainerEvents);\n this._messagesEnImport = params.messagesEnImport ?? messagesEnImportGlobal;\n this._fetchTranslations = params.fetchTranslations ?? fetchTranslations;\n\n this.onNavigationModal =\n params.onNavigationModal ?? new ConditionalModalState();\n\n this.environment = cairoEnvironment(params.environment);\n this.user = params.user;\n\n this.createComponentSettings =\n params.createComponentSettings ?? createComponentSettings;\n\n this.errorMonitor = params.errorMonitor;\n this.httpClient = params.httpClient;\n this.onlineManager = params.onlineManager;\n this.focusManager = params.focusManager;\n this.history = params.history;\n this.useTranslation = params.useTranslation;\n this.useExperiments = createUseExperimentsCompat(params.useExperiments);\n this.experiments = params.experiments;\n this.showToast = params.showToast;\n this.navigateTo = params.navigateTo;\n this.onNavigation = params.onNavigation;\n this.getHostContainer = params.getHostContainer;\n this.window = params.window;\n this.queryCache = params.queryCache;\n this.appendModalsToBody = params.appendModalsToBody;\n this.onSidePanelOpen = params.onSidePanelOpen;\n this.closeSidePanel = params.closeSidePanel;\n this.onBeforeUnload = params.onBeforeUnload;\n\n const {\n i18n,\n biLoggerFactory,\n fedopsLogger: internalFedops,\n errorMonitor: internalErrorMonitor,\n experiments: internalExperiments,\n } = this.createEssentials({\n i18n: {\n useSuspense: false,\n disableAutoInit: true,\n asyncMessagesLoader: async (locale) => {\n if (locale === 'en') {\n return this._messagesEnImport();\n }\n return this._fetchTranslations(this)(locale);\n },\n messages: params.initialProps?.messages,\n },\n errorMonitor: {\n dsn:\n process.env.NODE_ENV === 'production'\n ? 'https://d72d315a7d9a4d90ab17548ef7bd3188@sentry.wixpress.com/2327'\n : '',\n beforeSend: (event, hint) => {\n this.internalMonitor.reportErrorThrownOncePerFlow();\n\n if (!event.tags) {\n event.tags = {};\n }\n\n if (!event.extra) {\n event.extra = {};\n }\n\n if (hint && hint.originalException) {\n event.extra.exception = hint.originalException;\n\n if (hint.originalException instanceof Error) {\n event.fingerprint = [\n `${hint.originalException.name}:${hint.originalException.message}`,\n ];\n }\n }\n\n event.tags.componentName = this.environment.componentName;\n event.tags.componentId = this.environment.componentId;\n event.tags.artifactId = this.environment.artifactId;\n event.tags.cairoVersion = this.environment.uiLibVersion;\n\n return event;\n },\n },\n fedops: {\n appName: 'cairo',\n },\n experiments: {\n scopes: ['cairo'],\n },\n });\n\n if (\n typeof process !== 'undefined' &&\n process.env.STORYBOOK_VISUAL_E2E === 'true'\n ) {\n i18n.options.fallbackLng = [];\n }\n\n this.cairoSessionId = uuid();\n this.biLoggerFactory = biLoggerFactory;\n this.i18n = i18n;\n this.internalMonitor = new CairoMonitor({\n errorMonitor: params.errorMonitor,\n internalErrorMonitor,\n internalFedops,\n environment: this.environment,\n csid: this.cairoSessionId,\n });\n this.internalExperiments = internalExperiments;\n\n this.translate = (...args) => {\n void this.initTask.status; // status is observable so reading it here starts mobx reactivity\n return this.i18n.t(...args);\n };\n\n this.Trans = params.Trans;\n\n this.onlineState = new OnlineState({\n onlineManager: this.onlineManager,\n focusManager: this.focusManager,\n translate: this.translate,\n showToast: this.showToast,\n });\n\n this.reportBi = this.createBILogger({});\n\n makeObservable(this, {\n init: action.bound,\n initialFetch: action.bound,\n dateFormatters: computed,\n });\n }\n\n _createComponentSettings(options: { namespace: string }) {\n return this.createComponentSettings(this)(options);\n }\n\n createBI = <P>(defaultParams: P) => {\n const { environment, cairoSessionId } = this;\n return this.biLoggerFactory?.()\n .updateDefaults({\n artifactId: environment.artifactId,\n componentName: environment.componentName,\n cairoVersion: environment.uiLibVersion,\n csid: cairoSessionId,\n ...defaultParams,\n })\n .logger();\n };\n\n createBILogger = <P>(defaultParams: P): ReportBI => {\n const bi = this.createBI(defaultParams);\n return (reportProps: ReportProps) => bi?.report(reportProps);\n };\n\n async initialFetch() {\n const { initTask, i18n, internalExperiments, experiments } = this;\n if (initTask.status.isLoading || initTask.status.isSuccess) {\n return initTask.status.promise;\n }\n\n await initTask.run(async () => {\n await Promise.all([\n i18n.init(),\n internalExperiments?.ready().catch((e) => {\n console.error(e);\n }),\n experiments.ready().catch((e) => {\n console.error(e);\n }),\n this._messagesEnImport(), // not all translation files contain all the keys, so en is required otherwise show error state\n ]);\n });\n\n return initTask.status.promise;\n }\n\n get dateFormatters() {\n return {\n medium: new Intl.DateTimeFormat(this.environment.language, {\n dateStyle: 'medium',\n }),\n mediumTime: new Intl.DateTimeFormat(this.environment.language, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }),\n };\n }\n\n init() {\n const { onlineState } = this;\n\n this.initialFetch().catch((e) => {\n console.error(e);\n });\n\n const disposers = [\n onlineState.init(),\n new BeforeUnloadCompatState(this).init(),\n ];\n\n return () => {\n disposers.forEach((d) => d?.());\n };\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AAgBA,IAAAC,MAAA,GAAAD,OAAA;AAYA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,wBAAA,GAAAL,OAAA;AAEA,IAAAM,sBAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAIA,IAAAQ,qBAAA,GAAAR,OAAA;AACA,IAAAS,KAAA,GAAAT,OAAA;AACA,IAAAU,wBAAA,GAAAV,OAAA;AAEA;AACA,IAAAW,gCAAsB,EAAC,CAAC;AA+CjB,MAAMC,cAAc,CAAC;EAkD1BC,WAAWA,CAACC,MAAsC,EAAE;IAAA,IAAAC,oBAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,oBAjBhC,IAAIC,oBAAS,CAAO,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAYzC;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,oBAmJeE,aAAgB,IAAK;MAAA,IAAAC,qBAAA;MAClC,MAAM;QAAEC,WAAW;QAAEC;MAAe,CAAC,GAAG,IAAI;MAC5C,QAAAF,qBAAA,GAAO,IAAI,CAACG,eAAe,qBAApBH,qBAAA,CAAAI,IAAA,KAAuB,CAAC,CAC5BC,cAAc,CAAC;QACdC,UAAU,EAAEL,WAAW,CAACK,UAAU;QAClCC,aAAa,EAAEN,WAAW,CAACM,aAAa;QACxCC,YAAY,EAAEP,WAAW,CAACQ,YAAY;QACtCC,IAAI,EAAER,cAAc;QACpB,GAAGH;MACL,CAAC,CAAC,CACDY,MAAM,CAAC,CAAC;IACb,CAAC;IAAA,IAAAf,gBAAA,CAAAC,OAAA,0BAEoBE,aAAgB,IAAe;MAClD,MAAMa,EAAE,GAAG,IAAI,CAACC,QAAQ,CAACd,aAAa,CAAC;MACvC,OAAQe,WAAwB,IAAKF,EAAE,oBAAFA,EAAE,CAAEG,MAAM,CAACD,WAAW,CAAC;IAC9D,CAAC;IA7JC,IAAI,CAACE,gBAAgB,GAAGtB,MAAM,CAACsB,gBAAgB;IAC/C,IAAI,CAACC,MAAM,GAAGvB,MAAM,CAACuB,MAAM;IAC3B,IAAI,CAACC,YAAY,GAAGxB,MAAM,CAACwB,YAAY;IACvC,IAAI,CAACC,MAAM,GAAGzB,MAAM,CAACyB,MAAM,IAAK,IAAIC,oBAAY,CAAC,CAA0B;IAC3E,IAAI,CAACC,iBAAiB,GAAG3B,MAAM,CAAC4B,gBAAgB,IAAI/B,gCAAsB;IAC1E,IAAI,CAACgC,kBAAkB,GAAG7B,MAAM,CAAC8B,iBAAiB,IAAIA,2BAAiB;IAEvE,IAAI,CAACC,iBAAiB,GACpB/B,MAAM,CAAC+B,iBAAiB,IAAI,IAAIC,4CAAqB,CAAC,CAAC;IAEzD,IAAI,CAACzB,WAAW,GAAG,IAAA0B,uBAAgB,EAACjC,MAAM,CAACO,WAAW,CAAC;IACvD,IAAI,CAAC2B,IAAI,GAAGlC,MAAM,CAACkC,IAAI;IAEvB,IAAI,CAACC,uBAAuB,GAC1BnC,MAAM,CAACmC,uBAAuB,IAAIA,gDAAuB;IAE3D,IAAI,CAACC,YAAY,GAAGpC,MAAM,CAACoC,YAAY;IACvC,IAAI,CAACC,UAAU,GAAGrC,MAAM,CAACqC,UAAU;IACnC,IAAI,CAACC,aAAa,GAAGtC,MAAM,CAACsC,aAAa;IACzC,IAAI,CAACC,YAAY,GAAGvC,MAAM,CAACuC,YAAY;IACvC,IAAI,CAACC,OAAO,GAAGxC,MAAM,CAACwC,OAAO;IAC7B,IAAI,CAACC,cAAc,GAAGzC,MAAM,CAACyC,cAAc;IAC3C,IAAI,CAACC,cAAc,GAAG,IAAAC,gDAA0B,EAAC3C,MAAM,CAAC0C,cAAc,CAAC;IACvE,IAAI,CAACE,WAAW,GAAG5C,MAAM,CAAC4C,WAAW;IACrC,IAAI,CAACC,SAAS,GAAG7C,MAAM,CAAC6C,SAAS;IACjC,IAAI,CAACC,UAAU,GAAG9C,MAAM,CAAC8C,UAAU;IACnC,IAAI,CAACC,YAAY,GAAG/C,MAAM,CAAC+C,YAAY;IACvC,IAAI,CAACC,gBAAgB,GAAGhD,MAAM,CAACgD,gBAAgB;IAC/C,IAAI,CAACC,MAAM,GAAGjD,MAAM,CAACiD,MAAM;IAC3B,IAAI,CAACC,UAAU,GAAGlD,MAAM,CAACkD,UAAU;IACnC,IAAI,CAACC,kBAAkB,GAAGnD,MAAM,CAACmD,kBAAkB;IACnD,IAAI,CAACC,eAAe,GAAGpD,MAAM,CAACoD,eAAe;IAC7C,IAAI,CAACC,cAAc,GAAGrD,MAAM,CAACqD,cAAc;IAC3C,IAAI,CAACC,cAAc,GAAGtD,MAAM,CAACsD,cAAc;IAE3C,MAAM;MACJC,IAAI;MACJ9C,eAAe;MACf+C,YAAY,EAAEC,cAAc;MAC5BrB,YAAY,EAAEsB,oBAAoB;MAClCd,WAAW,EAAEe;IACf,CAAC,GAAG,IAAI,CAACrC,gBAAgB,CAAC;MACxBiC,IAAI,EAAE;QACJK,WAAW,EAAE,KAAK;QAClBC,eAAe,EAAE,IAAI;QACrBC,mBAAmB,EAAE,MAAOC,MAAM,IAAK;UACrC,IAAIA,MAAM,KAAK,IAAI,EAAE;YACnB,OAAO,IAAI,CAACpC,iBAAiB,CAAC,CAAC;UACjC;UACA,OAAO,IAAI,CAACE,kBAAkB,CAAC,IAAI,CAAC,CAACkC,MAAM,CAAC;QAC9C,CAAC;QACDC,QAAQ,GAAA/D,oBAAA,GAAED,MAAM,CAACiE,YAAY,qBAAnBhE,oBAAA,CAAqB+D;MACjC,CAAC;MACD5B,YAAY,EAAE;QACZ8B,GAAG,EACDC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GACjC,mEAAmE,GACnE,EAAE;QACRC,UAAU,EAAEA,CAACC,KAAK,EAAEC,IAAI,KAAK;UAC3B,IAAI,CAACC,eAAe,CAACC,4BAA4B,CAAC,CAAC;UAEnD,IAAI,CAACH,KAAK,CAACI,IAAI,EAAE;YACfJ,KAAK,CAACI,IAAI,GAAG,CAAC,CAAC;UACjB;UAEA,IAAI,CAACJ,KAAK,CAACK,KAAK,EAAE;YAChBL,KAAK,CAACK,KAAK,GAAG,CAAC,CAAC;UAClB;UAEA,IAAIJ,IAAI,IAAIA,IAAI,CAACK,iBAAiB,EAAE;YAClCN,KAAK,CAACK,KAAK,CAACE,SAAS,GAAGN,IAAI,CAACK,iBAAiB;YAE9C,IAAIL,IAAI,CAACK,iBAAiB,YAAYE,KAAK,EAAE;cAC3CR,KAAK,CAACS,WAAW,GAAG,CACjB,GAAER,IAAI,CAACK,iBAAiB,CAACI,IAAK,IAAGT,IAAI,CAACK,iBAAiB,CAACK,OAAQ,EAAC,CACnE;YACH;UACF;UAEAX,KAAK,CAACI,IAAI,CAAC9D,aAAa,GAAG,IAAI,CAACN,WAAW,CAACM,aAAa;UACzD0D,KAAK,CAACI,IAAI,CAACQ,WAAW,GAAG,IAAI,CAAC5E,WAAW,CAAC4E,WAAW;UACrDZ,KAAK,CAACI,IAAI,CAAC/D,UAAU,GAAG,IAAI,CAACL,WAAW,CAACK,UAAU;UACnD2D,KAAK,CAACI,IAAI,CAAC7D,YAAY,GAAG,IAAI,CAACP,WAAW,CAACQ,YAAY;UAEvD,OAAOwD,KAAK;QACd;MACF,CAAC;MACDa,MAAM,EAAE;QACNC,OAAO,EAAE;MACX,CAAC;MACDzC,WAAW,EAAE;QACX0C,MAAM,EAAE,CAAC,OAAO;MAClB;IACF,CAAC,CAAC;IAEF,IACE,OAAOnB,OAAO,KAAK,WAAW,IAC9BA,OAAO,CAACC,GAAG,CAACmB,oBAAoB,KAAK,MAAM,EAC3C;MACAhC,IAAI,CAACiC,OAAO,CAACC,WAAW,GAAG,EAAE;IAC/B;IAEA,IAAI,CAACjF,cAAc,GAAG,IAAAkF,QAAI,EAAC,CAAC;IAC5B,IAAI,CAACjF,eAAe,GAAGA,eAAe;IACtC,IAAI,CAAC8C,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACkB,eAAe,GAAG,IAAIkB,sBAAY,CAAC;MACtCvD,YAAY,EAAEpC,MAAM,CAACoC,YAAY;MACjCsB,oBAAoB;MACpBD,cAAc;MACdlD,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BS,IAAI,EAAE,IAAI,CAACR;IACb,CAAC,CAAC;IACF,IAAI,CAACmD,mBAAmB,GAAGA,mBAAmB;IAE9C,IAAI,CAACiC,SAAS,GAAG,CAAC,GAAGC,IAAI,KAAK;MAC5B,KAAK,IAAI,CAACC,QAAQ,CAACC,MAAM,CAAC,CAAC;MAC3B,OAAO,IAAI,CAACxC,IAAI,CAACyC,CAAC,CAAC,GAAGH,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI,CAACI,KAAK,GAAGjG,MAAM,CAACiG,KAAK;IAEzB,IAAI,CAACC,WAAW,GAAG,IAAIC,wBAAW,CAAC;MACjC7D,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,YAAY,EAAE,IAAI,CAACA,YAAY;MAC/BqD,SAAS,EAAE,IAAI,CAACA,SAAS;MACzB/C,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;IAEF,IAAI,CAACuD,QAAQ,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAAC,oBAAc,EAAC,IAAI,EAAE;MACnBC,IAAI,EAAEC,YAAM,CAACC,KAAK;MAClBC,YAAY,EAAEF,YAAM,CAACC,KAAK;MAC1BE,cAAc,EAAEC;IAClB,CAAC,CAAC;EACJ;EAEArH,wBAAwBA,CAACiG,OAA8B,EAAE;IACvD,OAAO,IAAI,CAACrD,uBAAuB,CAAC,IAAI,CAAC,CAACqD,OAAO,CAAC;EACpD;EAoBA,MAAMkB,YAAYA,CAAA,EAAG;IACnB,MAAM;MAAEZ,QAAQ;MAAEvC,IAAI;MAAEI,mBAAmB;MAAEf;IAAY,CAAC,GAAG,IAAI;IACjE,IAAIkD,QAAQ,CAACC,MAAM,CAACc,SAAS,IAAIf,QAAQ,CAACC,MAAM,CAACe,SAAS,EAAE;MAC1D,OAAOhB,QAAQ,CAACC,MAAM,CAACgB,OAAO;IAChC;IAEA,MAAMjB,QAAQ,CAACkB,GAAG,CAAC,YAAY;MAC7B,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB3D,IAAI,CAACgD,IAAI,CAAC,CAAC,EACX5C,mBAAmB,oBAAnBA,mBAAmB,CAAEwD,KAAK,CAAC,CAAC,CAACC,KAAK,CAAEC,CAAC,IAAK;QACxCC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;MAClB,CAAC,CAAC,EACFzE,WAAW,CAACuE,KAAK,CAAC,CAAC,CAACC,KAAK,CAAEC,CAAC,IAAK;QAC/BC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;MAClB,CAAC,CAAC,EACF,IAAI,CAAC1F,iBAAiB,CAAC,CAAC,CAAE;MAAA,CAC3B,CAAC;IACJ,CAAC,CAAC;IAEF,OAAOmE,QAAQ,CAACC,MAAM,CAACgB,OAAO;EAChC;EAEA,IAAIJ,cAAcA,CAAA,EAAG;IACnB,OAAO;MACLa,MAAM,EAAE,IAAIC,IAAI,CAACC,cAAc,CAAC,IAAI,CAACnH,WAAW,CAACoH,QAAQ,EAAE;QACzDC,SAAS,EAAE;MACb,CAAC,CAAC;MACFC,UAAU,EAAE,IAAIJ,IAAI,CAACC,cAAc,CAAC,IAAI,CAACnH,WAAW,CAACoH,QAAQ,EAAE;QAC7DC,SAAS,EAAE,QAAQ;QACnBE,SAAS,EAAE;MACb,CAAC;IACH,CAAC;EACH;EAEAvB,IAAIA,CAAA,EAAG;IACL,MAAM;MAAEL;IAAY,CAAC,GAAG,IAAI;IAE5B,IAAI,CAACQ,YAAY,CAAC,CAAC,CAACU,KAAK,CAAEC,CAAC,IAAK;MAC/BC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAMU,SAAS,GAAG,CAChB7B,WAAW,CAACK,IAAI,CAAC,CAAC,EAClB,IAAIyB,gDAAuB,CAAC,IAAI,CAAC,CAACzB,IAAI,CAAC,CAAC,CACzC;IAED,OAAO,MAAM;MACXwB,SAAS,CAACE,OAAO,CAAEC,CAAC,IAAKA,CAAC,oBAADA,CAAC,CAAG,CAAC,CAAC;IACjC,CAAC;EACH;AACF;AAACC,OAAA,CAAArI,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"names":["_services","require","_model","_mobx","_TaskState","_OnlineState","_createComponentSettings","_ConditionalModalState","_events","_useExperimentsCompat","_uuid","_BeforeUnloadCompatState","messagesEnImportGlobal","CairoContainer","constructor","params","_params$initialProps","_defineProperty2","default","TaskState","defaultParams","_this$biLoggerFactory","environment","cairoSessionId","biLoggerFactory","call","updateDefaults","artifactId","componentName","cairoVersion","uiLibVersion","csid","logger","bi","createBI","reportProps","report","createEssentials","lodash","patchesCache","events","EventEmitter","_messagesEnImport","messagesEnImport","_fetchTranslations","fetchTranslations","onNavigationModal","ConditionalModalState","cairoEnvironment","user","createComponentSettings","errorMonitor","httpClient","onlineManager","focusManager","history","useTranslation","useExperiments","createUseExperimentsCompat","experiments","showToast","navigateTo","onNavigation","getHostContainer","window","queryCache","appendModalsToBody","onSidePanelOpen","closeSidePanel","onBeforeUnload","i18n","fedopsLogger","internalFedops","internalErrorMonitor","internalExperiments","useSuspense","disableAutoInit","asyncMessagesLoader","locale","messages","initialProps","dsn","process","env","NODE_ENV","fedops","appName","scopes","STORYBOOK_VISUAL_E2E","options","fallbackLng","uuid","internalMonitor","CairoMonitor","translate","args","initTask","status","t","Trans","onlineState","OnlineState","reportBi","createBILogger","makeObservable","init","action","bound","initialFetch","dateFormatters","computed","isLoading","isSuccess","promise","run","Promise","all","ready","catch","e","console","error","medium","Intl","DateTimeFormat","language","dateStyle","mediumTime","timeStyle","disposers","BeforeUnloadCompatState","forEach","d","exports"],"sources":["../../../src/state/CairoContainer.ts"],"sourcesContent":["import type { Essentials } from '@wix/fe-essentials/core';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ReportProps } from '@wix/fe-essentials/bi';\nimport {\n CairoMonitor,\n Environment,\n ErrorMonitor,\n fetchTranslations,\n FocusManager,\n History,\n messagesEnImportGlobal,\n ModalLayoutProps,\n OnlineManager,\n PartialLodash,\n PartialWindow,\n ReportBI,\n Translate,\n} from '../services';\nimport { QueryCache } from 'react-query/core';\nimport {\n CairoBILoggerFactory,\n cairoEnvironment,\n CairoEssentials,\n CairoInitialProps,\n CloseSidePanel,\n GetContentContainerY,\n GetHostContainer,\n OnNavigation,\n OnSidePanelOpen,\n ShowToast,\n} from '../model';\nimport { action, computed, IObservableArray, makeObservable } from 'mobx';\nimport { TaskState } from './TaskState';\nimport { OnlineState } from './OnlineState';\nimport { createComponentSettings } from '../services/createComponentSettings';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\nimport { ConditionalModalState } from './ConditionalModalState';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { TransitionState } from './TransitionState';\nimport { ReactElement } from 'react';\nimport { createUseExperimentsCompat } from './useExperimentsCompat';\nimport { v4 as uuid } from 'uuid';\nimport { BeforeUnloadCompatState } from './BeforeUnloadCompatState';\n\n// prefetch of the english translations\nmessagesEnImportGlobal();\n\ntype CairoContainerEvents = TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n}>;\n\nexport interface CairoContainerParams {\n readonly initialProps?: CairoInitialProps;\n readonly createEssentials: CairoEssentials['createEssentials'];\n readonly messagesEnImport?: () => Promise<{}>;\n readonly fetchTranslations?: (p: {\n readonly errorMonitor: ErrorMonitor;\n }) => (locale: string) => Promise<{}>;\n readonly createComponentSettings?: CairoEssentials['createComponentSettings'];\n readonly errorMonitor: ErrorMonitor;\n readonly httpClient: CairoEssentials['httpClient'];\n readonly onlineManager: OnlineManager;\n readonly focusManager: FocusManager;\n readonly history: History;\n readonly window: PartialWindow;\n readonly useTranslation: typeof useTranslation;\n readonly Trans: typeof Trans;\n readonly useExperiments: CairoEssentials['useExperiments'];\n readonly experiments: CairoEssentials['experiments'];\n readonly environment: CairoEssentials['environment'];\n readonly user: CairoEssentials['user'];\n readonly showToast?: ShowToast;\n readonly navigateTo?: CairoEssentials['navigateTo'];\n readonly onNavigation?: OnNavigation;\n readonly getHostContainer?: GetHostContainer;\n readonly queryCache: QueryCache;\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<any>>>;\n /**\n * @deprecated\n */\n readonly getContentContainerY?: GetContentContainerY;\n readonly onSidePanelOpen?: OnSidePanelOpen;\n readonly closeSidePanel?: CloseSidePanel;\n readonly lodash: PartialLodash;\n readonly events?: CairoContainerEvents;\n readonly sidePanel?: TransitionState<string>;\n readonly onNavigationModal?: ConditionalModalState<ModalLayoutProps>;\n readonly sidePanelComponents?: Map<string, ReactElement>;\n readonly appendModalsToBody?: boolean;\n readonly onBeforeUnload?: CairoEssentials['onBeforeUnload'];\n}\n\nexport class CairoContainer {\n readonly createEssentials;\n readonly errorMonitor: CairoContainerParams['errorMonitor'];\n readonly internalMonitor: CairoMonitor;\n readonly internalExperiments;\n readonly experiments;\n readonly httpClient: CairoContainerParams['httpClient'];\n readonly onlineManager;\n readonly focusManager;\n readonly history: CairoContainerParams['history'];\n readonly window: CairoContainerParams['window'];\n readonly useTranslation;\n readonly Trans: typeof Trans;\n readonly useExperiments;\n readonly showToast?;\n readonly navigateTo?;\n readonly onNavigation;\n readonly onBeforeUnload;\n readonly getHostContainer;\n readonly environment: Environment;\n readonly appendModalsToBody?: boolean;\n readonly onSidePanelOpen?: OnSidePanelOpen;\n readonly closeSidePanel?: CloseSidePanel;\n readonly translate: Translate;\n readonly lodash;\n readonly i18n: Essentials['i18n'];\n readonly reportBi: ReportBI;\n readonly _messagesEnImport;\n readonly _fetchTranslations;\n\n readonly queryCache: QueryCache;\n readonly patchesCache;\n\n readonly initTask = new TaskState<void>();\n readonly onlineState: OnlineState;\n\n readonly onNavigationModal;\n\n readonly events: TypedEmitter<{\n navigation: () => ModalLayoutProps | null | undefined;\n }>;\n\n readonly user;\n\n readonly cairoSessionId: string;\n // Why it might be undefined when creating essentials?\n private readonly biLoggerFactory?: () => CairoBILoggerFactory;\n\n readonly createComponentSettings;\n\n constructor(params: Readonly<CairoContainerParams>) {\n this.createEssentials = params.createEssentials;\n this.lodash = params.lodash;\n this.patchesCache = params.patchesCache;\n this.events = params.events ?? (new EventEmitter() as CairoContainerEvents);\n this._messagesEnImport = params.messagesEnImport ?? messagesEnImportGlobal;\n this._fetchTranslations = params.fetchTranslations ?? fetchTranslations;\n\n this.onNavigationModal =\n params.onNavigationModal ?? new ConditionalModalState();\n\n this.environment = cairoEnvironment(params.environment);\n this.user = params.user;\n\n this.createComponentSettings =\n params.createComponentSettings ?? createComponentSettings;\n\n this.errorMonitor = params.errorMonitor;\n this.httpClient = params.httpClient;\n this.onlineManager = params.onlineManager;\n this.focusManager = params.focusManager;\n this.history = params.history;\n this.useTranslation = params.useTranslation;\n this.useExperiments = createUseExperimentsCompat(params.useExperiments);\n this.experiments = params.experiments;\n this.showToast = params.showToast;\n this.navigateTo = params.navigateTo;\n this.onNavigation = params.onNavigation;\n this.getHostContainer = params.getHostContainer;\n this.window = params.window;\n this.queryCache = params.queryCache;\n this.appendModalsToBody = params.appendModalsToBody;\n this.onSidePanelOpen = params.onSidePanelOpen;\n this.closeSidePanel = params.closeSidePanel;\n this.onBeforeUnload = params.onBeforeUnload;\n\n const {\n i18n,\n biLoggerFactory,\n fedopsLogger: internalFedops,\n errorMonitor: internalErrorMonitor,\n experiments: internalExperiments,\n } = this.createEssentials({\n i18n: {\n useSuspense: false,\n disableAutoInit: true,\n asyncMessagesLoader: async (locale) => {\n if (locale === 'en') {\n return this._messagesEnImport();\n }\n return this._fetchTranslations(this)(locale);\n },\n messages: params.initialProps?.messages,\n },\n errorMonitor: {\n dsn:\n process.env.NODE_ENV === 'production'\n ? 'https://9b9586a905eb429cbda9ea49d5d721f6@sentry-next.wixpress.com/8780'\n : '',\n /*\n TODO: not used in sentry-next API, need to be merged from reportError API with tags & extraData\n For Example: errorMonitor.captureException(error, { tags, contexts: { runtime: extraData }})\n beforeSend: (event, hint) => {\n this.internalMonitor.reportErrorThrownOncePerFlow();\n\n if (!event.tags) {\n event.tags = {};\n }\n\n if (!event.extra) {\n event.extra = {};\n }\n\n if (hint && hint.originalException) {\n event.extra.exception = hint.originalException;\n\n if (hint.originalException instanceof Error) {\n event.fingerprint = [\n `${hint.originalException.name}:${hint.originalException.message}`,\n ];\n }\n }\n\n event.tags.componentName = this.environment.componentName;\n event.tags.componentId = this.environment.componentId;\n event.tags.artifactId = this.environment.artifactId;\n event.tags.cairoVersion = this.environment.uiLibVersion;\n\n return event;\n },\n */\n },\n fedops: {\n appName: 'cairo',\n },\n experiments: {\n scopes: ['cairo'],\n },\n });\n\n if (\n typeof process !== 'undefined' &&\n process.env.STORYBOOK_VISUAL_E2E === 'true'\n ) {\n i18n.options.fallbackLng = [];\n }\n\n this.cairoSessionId = uuid();\n this.biLoggerFactory = biLoggerFactory;\n this.i18n = i18n;\n this.internalMonitor = new CairoMonitor({\n errorMonitor: params.errorMonitor,\n internalErrorMonitor,\n internalFedops,\n environment: this.environment,\n csid: this.cairoSessionId,\n });\n this.internalExperiments = internalExperiments;\n\n this.translate = (...args) => {\n void this.initTask.status; // status is observable so reading it here starts mobx reactivity\n return this.i18n.t(...args);\n };\n\n this.Trans = params.Trans;\n\n this.onlineState = new OnlineState({\n onlineManager: this.onlineManager,\n focusManager: this.focusManager,\n translate: this.translate,\n showToast: this.showToast,\n });\n\n this.reportBi = this.createBILogger({});\n\n makeObservable(this, {\n init: action.bound,\n initialFetch: action.bound,\n dateFormatters: computed,\n });\n }\n\n _createComponentSettings(options: { namespace: string }) {\n return this.createComponentSettings(this)(options);\n }\n\n createBI = <P>(defaultParams: P) => {\n const { environment, cairoSessionId } = this;\n return this.biLoggerFactory?.()\n .updateDefaults({\n artifactId: environment.artifactId,\n componentName: environment.componentName,\n cairoVersion: environment.uiLibVersion,\n csid: cairoSessionId,\n ...defaultParams,\n })\n .logger();\n };\n\n createBILogger = <P>(defaultParams: P): ReportBI => {\n const bi = this.createBI(defaultParams);\n return (reportProps: ReportProps) => bi?.report(reportProps);\n };\n\n async initialFetch() {\n const { initTask, i18n, internalExperiments, experiments } = this;\n if (initTask.status.isLoading || initTask.status.isSuccess) {\n return initTask.status.promise;\n }\n\n await initTask.run(async () => {\n await Promise.all([\n i18n.init(),\n internalExperiments?.ready().catch((e) => {\n console.error(e);\n }),\n experiments.ready().catch((e) => {\n console.error(e);\n }),\n this._messagesEnImport(), // not all translation files contain all the keys, so en is required otherwise show error state\n ]);\n });\n\n return initTask.status.promise;\n }\n\n get dateFormatters() {\n return {\n medium: new Intl.DateTimeFormat(this.environment.language, {\n dateStyle: 'medium',\n }),\n mediumTime: new Intl.DateTimeFormat(this.environment.language, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }),\n };\n }\n\n init() {\n const { onlineState } = this;\n\n this.initialFetch().catch((e) => {\n console.error(e);\n });\n\n const disposers = [\n onlineState.init(),\n new BeforeUnloadCompatState(this).init(),\n ];\n\n return () => {\n disposers.forEach((d) => d?.());\n };\n }\n}\n"],"mappings":"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"}
@@ -33,14 +33,12 @@ function mergePatchedItems(toMerge, {
33
33
 
34
34
  // place "type=createMany" items first
35
35
  const pageWithPatchedItemsMap = new Map();
36
- for (const [key, {
37
- item
38
- }] of Array.from(pageWithPatchedItemsMapTmp.entries()).reverse()) {
39
- if (toMerge.created.has(key)) {
40
- pageWithPatchedItemsMapTmp.delete(key);
36
+ for (const key of toMerge.created.keys()) {
37
+ if (pageWithPatchedItemsMapTmp.has(key)) {
41
38
  pageWithPatchedItemsMap.set(key, {
42
- item
39
+ item: pageWithPatchedItemsMapTmp.get(key).item
43
40
  });
41
+ pageWithPatchedItemsMapTmp.delete(key);
44
42
  }
45
43
  }
46
44
  for (const [key, {
@@ -1 +1 @@
1
- {"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","reverse","created","has","delete","toInsert","orderByItem","values"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n ).reverse()) {\n if (toMerge.created.has(key)) {\n pageWithPatchedItemsMapTmp.delete(key);\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n return Array.from(pageWithPatchedItemsMap.values());\n}\n"],"mappings":";;;;AAGO,SAASA,iBAAiBA,CAC/BC,OAGC,EACD;EACEC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC;AAOF,CAAC,EACD;EACA,MAAMC,YAAY,GAAGL,OAAO,CAACM,GAAG;;EAEhC;EACA,MAAMC,0BAA0B,GAAG,IAAIC,GAAG,CAGxC,CAAC;EAEH,KAAK,MAAM,CAACC,GAAG,EAAE;IAAEC,IAAI;IAAEC;EAAgB,CAAC,CAAC,IAAIC,KAAK,CAACC,IAAI,CACvDR,YAAY,CAACS,OAAO,CAAC,CACvB,CAAC,EAAE;IACD,MAAM;MAAEC,YAAY;MAAEC;IAAc,CAAC,GAAGL,eAAe;IACvD,MAAMM,YAAY,GAAGD,aAAa,CAACE,GAAG,CAACT,GAAG,CAAC;IAC3C;IACA;IACA,IACE,CAACN,MAAM,CAACgB,MAAM,IACdJ,YAAY,IACZE,YAAY,IAAI,IAAI,IACpBb,aAAa,CAACa,YAAY,CAAC,EAC3B;MACA;IACF;IAEAV,0BAA0B,CAACa,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC/C;;EAEA;EACA,MAAMW,uBAAuB,GAAG,IAAIb,GAAG,CAGrC,CAAC;EAEH,KAAK,MAAM,CAACC,GAAG,EAAE;IAAEC;EAAK,CAAC,CAAC,IAAIE,KAAK,CAACC,IAAI,CACtCN,0BAA0B,CAACO,OAAO,CAAC,CACrC,CAAC,CAACQ,OAAO,CAAC,CAAC,EAAE;IACX,IAAItB,OAAO,CAACuB,OAAO,CAACC,GAAG,CAACf,GAAG,CAAC,EAAE;MAC5BF,0BAA0B,CAACkB,MAAM,CAAChB,GAAG,CAAC;MACtCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAAEC;MAAK,CAAC,CAAC;IAC5C;EACF;EAEA,KAAK,MAAM,CAACD,GAAG,EAAE;IAAEC;EAAK,CAAC,CAAC,IAAIE,KAAK,CAACC,IAAI,CACtCN,0BAA0B,CAACO,OAAO,CAAC,CACrC,CAAC,EAAE;IACDO,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC5C;EAEA,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvB,MAAMQ,GAAG,GAAGP,OAAO,CAACQ,IAAI,CAAC;IACzB,MAAMgB,QAAQ,GAAGrB,YAAY,CAACa,GAAG,CAACT,GAAG,CAAC;IAEtC,IAAIiB,QAAQ,IAAIA,QAAQ,CAACf,eAAe,CAACI,YAAY,EAAE;MACrDM,uBAAuB,CAACI,MAAM,CAAChB,GAAG,CAAC;MACnCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAC/BC,IAAI,EAAEgB,QAAQ,CAAChB,IAAI;QACnBiB,WAAW,EAAEjB;MACf,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI,CAACgB,QAAQ,EAAE;MACpBL,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAAEC;MAAK,CAAC,CAAC;IAC5C;EACF;EAEA,OAAOE,KAAK,CAACC,IAAI,CAACQ,uBAAuB,CAACO,MAAM,CAAC,CAAC,CAAC;AACrD"}
1
+ {"version":3,"names":["mergePatchedItems","toMerge","page","itemKey","orders","itemPredicate","itemsToMerge","all","pageWithPatchedItemsMapTmp","Map","key","item","optimisticPatch","Array","from","entries","keepPosition","originalItems","originalItem","get","length","set","pageWithPatchedItemsMap","created","keys","has","delete","toInsert","orderByItem","values"],"sources":["../../../../src/state/optimistic-simulation/mergePatchedItems.ts"],"sourcesContent":["import { Order } from '../QueryResultSimulation';\nimport { OptimisticPatch } from '../CollectionOptimisticPatch';\n\nexport function mergePatchedItems<T>(\n toMerge: {\n all: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n created: Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>;\n },\n {\n page,\n itemKey,\n orders,\n itemPredicate,\n }: {\n page: T[];\n limit: number;\n itemKey: (item: T) => string;\n orders: Order<T>[];\n itemPredicate: (item: T) => boolean;\n },\n) {\n const itemsToMerge = toMerge.all;\n\n // merge items into page. replace if already exists in page. order by original if `keepPosition=true`\n const pageWithPatchedItemsMapTmp = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const [key, { item, optimisticPatch }] of Array.from(\n itemsToMerge.entries(),\n )) {\n const { keepPosition, originalItems } = optimisticPatch;\n const originalItem = originalItems.get(key);\n // if `order` is empty (can't simulate ordering) and keepPosition=true and item didn't match current filtering before update\n // skip on pushing the item into the page\n if (\n !orders.length &&\n keepPosition &&\n originalItem != null &&\n itemPredicate(originalItem)\n ) {\n continue;\n }\n\n pageWithPatchedItemsMapTmp.set(key, { item });\n }\n\n // place \"type=createMany\" items first\n const pageWithPatchedItemsMap = new Map<\n string,\n { item: T; orderByItem?: T }\n >();\n\n for (const key of toMerge.created.keys()) {\n if (pageWithPatchedItemsMapTmp.has(key)) {\n pageWithPatchedItemsMap.set(key, {\n item: pageWithPatchedItemsMapTmp.get(key)!.item,\n });\n pageWithPatchedItemsMapTmp.delete(key);\n }\n }\n\n for (const [key, { item }] of Array.from(\n pageWithPatchedItemsMapTmp.entries(),\n )) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n\n for (const item of page) {\n const key = itemKey(item);\n const toInsert = itemsToMerge.get(key);\n\n if (toInsert && toInsert.optimisticPatch.keepPosition) {\n pageWithPatchedItemsMap.delete(key);\n pageWithPatchedItemsMap.set(key, {\n item: toInsert.item,\n orderByItem: item,\n });\n } else if (!toInsert) {\n pageWithPatchedItemsMap.set(key, { item });\n }\n }\n\n return Array.from(pageWithPatchedItemsMap.values());\n}\n"],"mappings":";;;;AAGO,SAASA,iBAAiBA,CAC/BC,OAGC,EACD;EACEC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC;AAOF,CAAC,EACD;EACA,MAAMC,YAAY,GAAGL,OAAO,CAACM,GAAG;;EAEhC;EACA,MAAMC,0BAA0B,GAAG,IAAIC,GAAG,CAGxC,CAAC;EAEH,KAAK,MAAM,CAACC,GAAG,EAAE;IAAEC,IAAI;IAAEC;EAAgB,CAAC,CAAC,IAAIC,KAAK,CAACC,IAAI,CACvDR,YAAY,CAACS,OAAO,CAAC,CACvB,CAAC,EAAE;IACD,MAAM;MAAEC,YAAY;MAAEC;IAAc,CAAC,GAAGL,eAAe;IACvD,MAAMM,YAAY,GAAGD,aAAa,CAACE,GAAG,CAACT,GAAG,CAAC;IAC3C;IACA;IACA,IACE,CAACN,MAAM,CAACgB,MAAM,IACdJ,YAAY,IACZE,YAAY,IAAI,IAAI,IACpBb,aAAa,CAACa,YAAY,CAAC,EAC3B;MACA;IACF;IAEAV,0BAA0B,CAACa,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC/C;;EAEA;EACA,MAAMW,uBAAuB,GAAG,IAAIb,GAAG,CAGrC,CAAC;EAEH,KAAK,MAAMC,GAAG,IAAIT,OAAO,CAACsB,OAAO,CAACC,IAAI,CAAC,CAAC,EAAE;IACxC,IAAIhB,0BAA0B,CAACiB,GAAG,CAACf,GAAG,CAAC,EAAE;MACvCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAC/BC,IAAI,EAAEH,0BAA0B,CAACW,GAAG,CAACT,GAAG,CAAC,CAAEC;MAC7C,CAAC,CAAC;MACFH,0BAA0B,CAACkB,MAAM,CAAChB,GAAG,CAAC;IACxC;EACF;EAEA,KAAK,MAAM,CAACA,GAAG,EAAE;IAAEC;EAAK,CAAC,CAAC,IAAIE,KAAK,CAACC,IAAI,CACtCN,0BAA0B,CAACO,OAAO,CAAC,CACrC,CAAC,EAAE;IACDO,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;MAAEC;IAAK,CAAC,CAAC;EAC5C;EAEA,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvB,MAAMQ,GAAG,GAAGP,OAAO,CAACQ,IAAI,CAAC;IACzB,MAAMgB,QAAQ,GAAGrB,YAAY,CAACa,GAAG,CAACT,GAAG,CAAC;IAEtC,IAAIiB,QAAQ,IAAIA,QAAQ,CAACf,eAAe,CAACI,YAAY,EAAE;MACrDM,uBAAuB,CAACI,MAAM,CAAChB,GAAG,CAAC;MACnCY,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAC/BC,IAAI,EAAEgB,QAAQ,CAAChB,IAAI;QACnBiB,WAAW,EAAEjB;MACf,CAAC,CAAC;IACJ,CAAC,MAAM,IAAI,CAACgB,QAAQ,EAAE;MACpBL,uBAAuB,CAACD,GAAG,CAACX,GAAG,EAAE;QAAEC;MAAK,CAAC,CAAC;IAC5C;EACF;EAEA,OAAOE,KAAK,CAACC,IAAI,CAACQ,uBAAuB,CAACO,MAAM,CAAC,CAAC,CAAC;AACrD"}
@@ -6,7 +6,7 @@ function prepareItemsToMergeIntoPage(patches, {
6
6
  itemPredicate,
7
7
  currentItemsMap
8
8
  }) {
9
- return patches.reduce((acc, optimisticPatch) => {
9
+ const result = patches.reduce((acc, optimisticPatch) => {
10
10
  const {
11
11
  patchedItemsEntries,
12
12
  actionType,
@@ -16,7 +16,7 @@ function prepareItemsToMergeIntoPage(patches, {
16
16
  if (actionType === 'deleteMany') {
17
17
  for (const [key] of patchedItemsEntries) {
18
18
  acc.all.delete(key);
19
- acc.created.delete(key);
19
+ acc.deleted.set(key, true);
20
20
  }
21
21
  return acc;
22
22
  }
@@ -26,7 +26,7 @@ function prepareItemsToMergeIntoPage(patches, {
26
26
  }] of Array.from(acc.all.entries())) {
27
27
  if (selector(item)) {
28
28
  acc.all.delete(key);
29
- acc.created.delete(key);
29
+ acc.deleted.set(key, true);
30
30
  }
31
31
  }
32
32
  return acc;
@@ -35,12 +35,7 @@ function prepareItemsToMergeIntoPage(patches, {
35
35
  return acc;
36
36
  }
37
37
  if (actionType === 'createMany') {
38
- for (const [key, item] of patchedItemsEntries) {
39
- acc.created.set(key, {
40
- item,
41
- optimisticPatch
42
- });
43
- }
38
+ acc.createdPatches.push(optimisticPatch);
44
39
  }
45
40
  for (const [key, item] of patchedItemsEntries) {
46
41
  if (currentItemsMap.has(key) || !itemPredicate(item)) {
@@ -60,7 +55,29 @@ function prepareItemsToMergeIntoPage(patches, {
60
55
  return acc;
61
56
  }, {
62
57
  all: new Map(),
63
- created: new Map()
58
+ deleted: new Map(),
59
+ createdPatches: []
64
60
  });
61
+
62
+ // saving the items order from "createMany" patches
63
+ // if there were 2 "createMany" patches (added one by one): A (item1, item2), B (item3, item4)
64
+ // the order of items should be [item3, item4, item1, item2, [the rest]]
65
+ return {
66
+ all: result.all,
67
+ created: result.createdPatches.reverse().reduce((prev, optimisticPatch) => {
68
+ const {
69
+ patchedItemsEntries
70
+ } = optimisticPatch;
71
+ for (const [key, item] of patchedItemsEntries) {
72
+ if (!result.deleted.get(key)) {
73
+ prev.set(key, {
74
+ item,
75
+ optimisticPatch
76
+ });
77
+ }
78
+ }
79
+ return prev;
80
+ }, new Map())
81
+ };
65
82
  }
66
83
  //# sourceMappingURL=prepareItemsToMergeIntoPage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["prepareItemsToMergeIntoPage","patches","itemPredicate","currentItemsMap","reduce","acc","optimisticPatch","patchedItemsEntries","actionType","keepPosition","selector","key","all","delete","created","item","Array","from","entries","set","has","prevPatch","get","Map"],"sources":["../../../../src/state/optimistic-simulation/prepareItemsToMergeIntoPage.ts"],"sourcesContent":["import { OptimisticPatch } from '../CollectionOptimisticPatch';\nimport { KeyedItem } from '../../model';\n\nexport function prepareItemsToMergeIntoPage<T>(\n patches: OptimisticPatch<T>[],\n {\n itemPredicate,\n currentItemsMap,\n }: {\n itemPredicate: (item: T) => boolean;\n currentItemsMap: Map<string, KeyedItem<T>>;\n },\n) {\n return patches.reduce(\n (acc, optimisticPatch) => {\n const { patchedItemsEntries, actionType, keepPosition, selector } =\n optimisticPatch;\n\n if (actionType === 'deleteMany') {\n for (const [key] of patchedItemsEntries) {\n acc.all.delete(key);\n acc.created.delete(key);\n }\n return acc;\n }\n\n if (actionType === 'deleteAll') {\n for (const [key, { item }] of Array.from(acc.all.entries())) {\n if (selector(item)) {\n acc.all.delete(key);\n acc.created.delete(key);\n }\n }\n return acc;\n }\n\n if (\n actionType !== 'updateMany' &&\n actionType !== 'updateAll' &&\n actionType !== 'updateAllConst' &&\n actionType !== 'createMany'\n ) {\n return acc;\n }\n\n if (actionType === 'createMany') {\n for (const [key, item] of patchedItemsEntries) {\n acc.created.set(key, { item, optimisticPatch });\n }\n }\n\n for (const [key, item] of patchedItemsEntries) {\n if (currentItemsMap.has(key) || !itemPredicate(item)) {\n acc.all.delete(key);\n continue;\n }\n\n const prevPatch = acc.all.get(key);\n if (keepPosition && prevPatch) {\n prevPatch.item = item;\n } else {\n acc.all.set(key, { item, optimisticPatch });\n }\n }\n\n return acc;\n },\n {\n all: new Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>(),\n created: new Map<\n string,\n { item: T; optimisticPatch: OptimisticPatch<T> }\n >(),\n },\n );\n}\n"],"mappings":";;;;AAGO,SAASA,2BAA2BA,CACzCC,OAA6B,EAC7B;EACEC,aAAa;EACbC;AAIF,CAAC,EACD;EACA,OAAOF,OAAO,CAACG,MAAM,CACnB,CAACC,GAAG,EAAEC,eAAe,KAAK;IACxB,MAAM;MAAEC,mBAAmB;MAAEC,UAAU;MAAEC,YAAY;MAAEC;IAAS,CAAC,GAC/DJ,eAAe;IAEjB,IAAIE,UAAU,KAAK,YAAY,EAAE;MAC/B,KAAK,MAAM,CAACG,GAAG,CAAC,IAAIJ,mBAAmB,EAAE;QACvCF,GAAG,CAACO,GAAG,CAACC,MAAM,CAACF,GAAG,CAAC;QACnBN,GAAG,CAACS,OAAO,CAACD,MAAM,CAACF,GAAG,CAAC;MACzB;MACA,OAAON,GAAG;IACZ;IAEA,IAAIG,UAAU,KAAK,WAAW,EAAE;MAC9B,KAAK,MAAM,CAACG,GAAG,EAAE;QAAEI;MAAK,CAAC,CAAC,IAAIC,KAAK,CAACC,IAAI,CAACZ,GAAG,CAACO,GAAG,CAACM,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3D,IAAIR,QAAQ,CAACK,IAAI,CAAC,EAAE;UAClBV,GAAG,CAACO,GAAG,CAACC,MAAM,CAACF,GAAG,CAAC;UACnBN,GAAG,CAACS,OAAO,CAACD,MAAM,CAACF,GAAG,CAAC;QACzB;MACF;MACA,OAAON,GAAG;IACZ;IAEA,IACEG,UAAU,KAAK,YAAY,IAC3BA,UAAU,KAAK,WAAW,IAC1BA,UAAU,KAAK,gBAAgB,IAC/BA,UAAU,KAAK,YAAY,EAC3B;MACA,OAAOH,GAAG;IACZ;IAEA,IAAIG,UAAU,KAAK,YAAY,EAAE;MAC/B,KAAK,MAAM,CAACG,GAAG,EAAEI,IAAI,CAAC,IAAIR,mBAAmB,EAAE;QAC7CF,GAAG,CAACS,OAAO,CAACK,GAAG,CAACR,GAAG,EAAE;UAAEI,IAAI;UAAET;QAAgB,CAAC,CAAC;MACjD;IACF;IAEA,KAAK,MAAM,CAACK,GAAG,EAAEI,IAAI,CAAC,IAAIR,mBAAmB,EAAE;MAC7C,IAAIJ,eAAe,CAACiB,GAAG,CAACT,GAAG,CAAC,IAAI,CAACT,aAAa,CAACa,IAAI,CAAC,EAAE;QACpDV,GAAG,CAACO,GAAG,CAACC,MAAM,CAACF,GAAG,CAAC;QACnB;MACF;MAEA,MAAMU,SAAS,GAAGhB,GAAG,CAACO,GAAG,CAACU,GAAG,CAACX,GAAG,CAAC;MAClC,IAAIF,YAAY,IAAIY,SAAS,EAAE;QAC7BA,SAAS,CAACN,IAAI,GAAGA,IAAI;MACvB,CAAC,MAAM;QACLV,GAAG,CAACO,GAAG,CAACO,GAAG,CAACR,GAAG,EAAE;UAAEI,IAAI;UAAET;QAAgB,CAAC,CAAC;MAC7C;IACF;IAEA,OAAOD,GAAG;EACZ,CAAC,EACD;IACEO,GAAG,EAAE,IAAIW,GAAG,CAA2D,CAAC;IACxET,OAAO,EAAE,IAAIS,GAAG,CAGd;EACJ,CACF,CAAC;AACH"}
1
+ {"version":3,"names":["prepareItemsToMergeIntoPage","patches","itemPredicate","currentItemsMap","result","reduce","acc","optimisticPatch","patchedItemsEntries","actionType","keepPosition","selector","key","all","delete","deleted","set","item","Array","from","entries","createdPatches","push","has","prevPatch","get","Map","created","reverse","prev"],"sources":["../../../../src/state/optimistic-simulation/prepareItemsToMergeIntoPage.ts"],"sourcesContent":["import { OptimisticPatch } from '../CollectionOptimisticPatch';\nimport { KeyedItem } from '../../model';\n\nexport function prepareItemsToMergeIntoPage<T>(\n patches: OptimisticPatch<T>[],\n {\n itemPredicate,\n currentItemsMap,\n }: {\n itemPredicate: (item: T) => boolean;\n currentItemsMap: Map<string, KeyedItem<T>>;\n },\n) {\n const result = patches.reduce(\n (acc, optimisticPatch) => {\n const { patchedItemsEntries, actionType, keepPosition, selector } =\n optimisticPatch;\n\n if (actionType === 'deleteMany') {\n for (const [key] of patchedItemsEntries) {\n acc.all.delete(key);\n acc.deleted.set(key, true);\n }\n return acc;\n }\n\n if (actionType === 'deleteAll') {\n for (const [key, { item }] of Array.from(acc.all.entries())) {\n if (selector(item)) {\n acc.all.delete(key);\n acc.deleted.set(key, true);\n }\n }\n return acc;\n }\n\n if (\n actionType !== 'updateMany' &&\n actionType !== 'updateAll' &&\n actionType !== 'updateAllConst' &&\n actionType !== 'createMany'\n ) {\n return acc;\n }\n\n if (actionType === 'createMany') {\n acc.createdPatches.push(optimisticPatch);\n }\n\n for (const [key, item] of patchedItemsEntries) {\n if (currentItemsMap.has(key) || !itemPredicate(item)) {\n acc.all.delete(key);\n continue;\n }\n\n const prevPatch = acc.all.get(key);\n if (keepPosition && prevPatch) {\n prevPatch.item = item;\n } else {\n acc.all.set(key, { item, optimisticPatch });\n }\n }\n\n return acc;\n },\n {\n all: new Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>(),\n deleted: new Map<string, boolean>(),\n createdPatches: [] as OptimisticPatch<T>[],\n },\n );\n\n // saving the items order from \"createMany\" patches\n // if there were 2 \"createMany\" patches (added one by one): A (item1, item2), B (item3, item4)\n // the order of items should be [item3, item4, item1, item2, [the rest]]\n return {\n all: result.all,\n created: result.createdPatches.reverse().reduce((prev, optimisticPatch) => {\n const { patchedItemsEntries } = optimisticPatch;\n\n for (const [key, item] of patchedItemsEntries) {\n if (!result.deleted.get(key)) {\n prev.set(key, { item, optimisticPatch });\n }\n }\n return prev;\n }, new Map<string, { item: T; optimisticPatch: OptimisticPatch<T> }>()),\n };\n}\n"],"mappings":"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"}