@wix/bex-core 1.434.0 → 1.436.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
- package/dist/cjs/hooks/collectionConfig.js.map +1 -1
- package/dist/cjs/hooks/createCollection.js.map +1 -1
- package/dist/cjs/hooks/useAmbassadorCollection.js +1 -1
- package/dist/cjs/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/cjs/hooks/useCollection/useCollection.js +2 -2
- package/dist/cjs/hooks/useCollection/useCollection.js.map +1 -1
- package/dist/cjs/hooks/useCollectionPageState.js.map +1 -1
- package/dist/cjs/hooks/useExport.js +1 -1
- package/dist/cjs/hooks/useExport.js.map +1 -1
- package/dist/cjs/hooks/useOptimisticActions.js +1 -1
- package/dist/cjs/hooks/useOptimisticActions.js.map +1 -1
- package/dist/cjs/hooks/usePicker.js +1 -1
- package/dist/cjs/hooks/usePicker.js.map +1 -1
- package/dist/cjs/model/cairoEnvironment.js +2 -2
- package/dist/cjs/model/cairoEnvironment.js.map +1 -1
- package/dist/cjs/model/cairoEssentials.js.map +1 -1
- package/dist/cjs/model/cairoInitialProps.js.map +1 -1
- package/dist/cjs/model/computedQuery/computedQuery.js.map +1 -1
- package/dist/cjs/model/filter.js.map +1 -1
- package/dist/cjs/providers/CairoContainerOverridesContext.js +10 -5
- package/dist/cjs/providers/CairoContainerOverridesContext.js.map +1 -1
- package/dist/cjs/providers/CairoContainerProvider/CairoContainerProvider.js +10 -5
- package/dist/cjs/providers/CairoContainerProvider/CairoContainerProvider.js.map +1 -1
- package/dist/cjs/providers/CairoInitialPropsProvider.js +2 -2
- package/dist/cjs/providers/CairoInitialPropsProvider.js.map +1 -1
- package/dist/cjs/providers/CairoProvider/CairoProvider.js +2 -2
- package/dist/cjs/providers/CairoProvider/CairoProvider.js.map +1 -1
- package/dist/cjs/services/AccountPreferencesStrategy.js.map +1 -1
- package/dist/cjs/services/AppSettingsCapsule.js.map +1 -1
- package/dist/cjs/services/CairoError.js +7 -7
- package/dist/cjs/services/CairoError.js.map +1 -1
- package/dist/cjs/services/CairoErrorCode.js.map +1 -1
- package/dist/cjs/services/cairoMonitor.js +5 -5
- package/dist/cjs/services/cairoMonitor.js.map +1 -1
- package/dist/cjs/services/dataExtensionService.js.map +1 -1
- package/dist/cjs/services/experiments.js +2 -2
- package/dist/cjs/services/experiments.js.map +1 -1
- package/dist/cjs/state/BeforeUnloadCompatState.js.map +1 -1
- package/dist/cjs/state/BulkSelectState.js +1 -1
- package/dist/cjs/state/BulkSelectState.js.map +1 -1
- package/dist/cjs/state/CairoContainer.js +17 -3
- package/dist/cjs/state/CairoContainer.js.map +1 -1
- package/dist/cjs/state/CollectionState.js +13 -1
- package/dist/cjs/state/CollectionState.js.map +1 -1
- package/dist/cjs/state/CustomFieldsViewWidgetState.js +1 -1
- package/dist/cjs/state/CustomFieldsViewWidgetState.js.map +1 -1
- package/dist/cjs/state/DataExtensionState.js.map +1 -1
- package/dist/cjs/state/ExportState.js +3 -3
- package/dist/cjs/state/ExportState.js.map +1 -1
- package/dist/cjs/state/FedopsReporter.js.map +1 -1
- package/dist/cjs/state/FiltersPanelModalCompatBridge.js.map +1 -1
- package/dist/cjs/state/PageState.js +2 -18
- package/dist/cjs/state/PageState.js.map +1 -1
- package/dist/cjs/state/RangeFilterState/dateRangeUtils.js +10 -8
- package/dist/cjs/state/RangeFilterState/dateRangeUtils.js.map +1 -1
- package/dist/cjs/state/RefObject.js +2 -0
- package/dist/cjs/state/RefObject.js.map +1 -0
- package/dist/cjs/state/SelectState.js +1 -1
- package/dist/cjs/state/SelectState.js.map +1 -1
- package/dist/cjs/state/SelectionStatusCairoPreset.js +3 -3
- package/dist/cjs/state/SelectionStatusCairoPreset.js.map +1 -1
- package/dist/cjs/state/SidePanelState.js +1 -1
- package/dist/cjs/state/SidePanelState.js.map +1 -1
- package/dist/cjs/state/StringFilterState/StringFilterState.js.map +1 -1
- package/dist/cjs/state/buildCairoContainer.js +1 -1
- package/dist/cjs/state/buildCairoContainer.js.map +1 -1
- package/dist/cjs/state/useExperimentsCompat.js.map +1 -1
- package/dist/cjs/state/warmUpPickerStandalone.js +3 -3
- package/dist/cjs/state/warmUpPickerStandalone.js.map +1 -1
- package/dist/cjs/testkit/CairoContainer.driver.js +2 -2
- package/dist/cjs/testkit/CairoContainer.driver.js.map +1 -1
- package/dist/esm/hooks/createCollection.js.map +1 -1
- package/dist/esm/hooks/useAmbassadorCollection.js +2 -2
- package/dist/esm/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/esm/hooks/useCollection/useCollection.js +3 -3
- package/dist/esm/hooks/useCollection/useCollection.js.map +1 -1
- package/dist/esm/hooks/useCollectionPageState.js +2 -1
- package/dist/esm/hooks/useCollectionPageState.js.map +1 -1
- package/dist/esm/hooks/useExport.js +2 -2
- package/dist/esm/hooks/useExport.js.map +1 -1
- package/dist/esm/hooks/useOptimisticActions.js +2 -2
- package/dist/esm/hooks/useOptimisticActions.js.map +1 -1
- package/dist/esm/hooks/usePicker.js +2 -2
- package/dist/esm/hooks/usePicker.js.map +1 -1
- package/dist/esm/model/cairoEnvironment.js +1 -1
- package/dist/esm/model/cairoEnvironment.js.map +1 -1
- package/dist/esm/providers/CairoContainerOverridesContext.js +8 -3
- package/dist/esm/providers/CairoContainerOverridesContext.js.map +1 -1
- package/dist/esm/providers/CairoContainerProvider/CairoContainerProvider.js +9 -4
- package/dist/esm/providers/CairoContainerProvider/CairoContainerProvider.js.map +1 -1
- package/dist/esm/providers/CairoInitialPropsProvider.js +1 -1
- package/dist/esm/providers/CairoInitialPropsProvider.js.map +1 -1
- package/dist/esm/providers/CairoProvider/CairoProvider.js +4 -4
- package/dist/esm/providers/CairoProvider/CairoProvider.js.map +1 -1
- package/dist/esm/services/CairoError.js +4 -4
- package/dist/esm/services/CairoError.js.map +1 -1
- package/dist/esm/services/cairoMonitor.js +4 -4
- package/dist/esm/services/cairoMonitor.js.map +1 -1
- package/dist/esm/services/experiments.js +1 -1
- package/dist/esm/services/experiments.js.map +1 -1
- package/dist/esm/state/BeforeUnloadCompatState.js.map +1 -1
- package/dist/esm/state/BulkSelectState.js.map +1 -1
- package/dist/esm/state/CairoContainer.js +15 -5
- package/dist/esm/state/CairoContainer.js.map +1 -1
- package/dist/esm/state/CollectionState.js +11 -0
- package/dist/esm/state/CollectionState.js.map +1 -1
- package/dist/esm/state/CustomFieldsViewWidgetState.js +2 -2
- package/dist/esm/state/CustomFieldsViewWidgetState.js.map +1 -1
- package/dist/esm/state/ExportState.js +6 -4
- package/dist/esm/state/ExportState.js.map +1 -1
- package/dist/esm/state/PageState.js +0 -14
- package/dist/esm/state/PageState.js.map +1 -1
- package/dist/esm/state/RangeFilterState/dateRangeUtils.js +9 -9
- package/dist/esm/state/RangeFilterState/dateRangeUtils.js.map +1 -1
- package/dist/esm/state/RefObject.js +2 -0
- package/dist/esm/state/RefObject.js.map +1 -0
- package/dist/esm/state/SelectState.js +2 -2
- package/dist/esm/state/SelectState.js.map +1 -1
- package/dist/esm/state/SelectionStatusCairoPreset.js +2 -2
- package/dist/esm/state/SelectionStatusCairoPreset.js.map +1 -1
- package/dist/esm/state/SidePanelState.js +1 -1
- package/dist/esm/state/SidePanelState.js.map +1 -1
- package/dist/esm/state/buildCairoContainer.js +2 -2
- package/dist/esm/state/buildCairoContainer.js.map +1 -1
- package/dist/esm/state/useExperimentsCompat.js.map +1 -1
- package/dist/esm/state/warmUpPickerStandalone.js +4 -4
- package/dist/esm/state/warmUpPickerStandalone.js.map +1 -1
- package/dist/esm/testkit/CairoContainer.driver.js +3 -3
- package/dist/esm/testkit/CairoContainer.driver.js.map +1 -1
- package/dist/types/InMemoryBackend/InMemoryBackend.d.ts +4 -4
- package/dist/types/hooks/collectionConfig.d.ts +5 -5
- package/dist/types/hooks/createCollection.d.ts +3 -3
- package/dist/types/hooks/createCollection.d.ts.map +1 -1
- package/dist/types/hooks/useCollectionPageState.d.ts.map +1 -1
- package/dist/types/model/cairoEnvironment.d.ts +2 -2
- package/dist/types/model/cairoEnvironment.d.ts.map +1 -1
- package/dist/types/model/cairoEssentials.d.ts +8 -2
- package/dist/types/model/cairoEssentials.d.ts.map +1 -1
- package/dist/types/model/cairoInitialProps.d.ts +1 -1
- package/dist/types/model/cairoInitialProps.d.ts.map +1 -1
- package/dist/types/model/computedQuery/computedQuery.d.ts +2 -2
- package/dist/types/model/filter.d.ts +1 -1
- package/dist/types/providers/CairoContainerOverridesContext.d.ts +10 -5
- package/dist/types/providers/CairoContainerOverridesContext.d.ts.map +1 -1
- package/dist/types/providers/CairoContainerProvider/CairoContainerProvider.d.ts +10 -5
- package/dist/types/providers/CairoContainerProvider/CairoContainerProvider.d.ts.map +1 -1
- package/dist/types/providers/CairoInitialPropsProvider.d.ts +3 -3
- package/dist/types/providers/CairoInitialPropsProvider.d.ts.map +1 -1
- package/dist/types/providers/CairoProvider/CairoProvider.d.ts +2 -2
- package/dist/types/providers/CairoProvider/CairoProvider.d.ts.map +1 -1
- package/dist/types/services/AccountPreferencesStrategy.d.ts +2 -2
- package/dist/types/services/AccountPreferencesStrategy.d.ts.map +1 -1
- package/dist/types/services/AppSettingsCapsule.d.ts +2 -2
- package/dist/types/services/AppSettingsCapsule.d.ts.map +1 -1
- package/dist/types/services/CairoError.d.ts +5 -5
- package/dist/types/services/CairoError.d.ts.map +1 -1
- package/dist/types/services/CairoErrorCode.d.ts +1 -1
- package/dist/types/services/CairoErrorCode.d.ts.map +1 -1
- package/dist/types/services/cairoMonitor.d.ts +2 -2
- package/dist/types/services/cairoMonitor.d.ts.map +1 -1
- package/dist/types/services/dataExtensionService.d.ts +3 -3
- package/dist/types/services/dataExtensionService.d.ts.map +1 -1
- package/dist/types/services/experiments.d.ts +1 -1
- package/dist/types/services/experiments.d.ts.map +1 -1
- package/dist/types/state/BeforeUnloadCompatState.d.ts +3 -3
- package/dist/types/state/BeforeUnloadCompatState.d.ts.map +1 -1
- package/dist/types/state/BulkSelectState.d.ts +3 -3
- package/dist/types/state/BulkSelectState.d.ts.map +1 -1
- package/dist/types/state/CairoContainer.d.ts +33 -20
- package/dist/types/state/CairoContainer.d.ts.map +1 -1
- package/dist/types/state/CollectionState.d.ts +103 -3
- package/dist/types/state/CollectionState.d.ts.map +1 -1
- package/dist/types/state/CustomFieldsViewWidgetState.d.ts +3 -3
- package/dist/types/state/CustomFieldsViewWidgetState.d.ts.map +1 -1
- package/dist/types/state/DataExtensionState.d.ts +3 -3
- package/dist/types/state/DataExtensionState.d.ts.map +1 -1
- package/dist/types/state/ExportState.d.ts +6 -6
- package/dist/types/state/ExportState.d.ts.map +1 -1
- package/dist/types/state/FedopsReporter.d.ts +3 -3
- package/dist/types/state/FedopsReporter.d.ts.map +1 -1
- package/dist/types/state/FiltersPanelModalCompatBridge.d.ts +2 -2
- package/dist/types/state/FiltersPanelModalCompatBridge.d.ts.map +1 -1
- package/dist/types/state/PageState.d.ts +5 -12
- package/dist/types/state/PageState.d.ts.map +1 -1
- package/dist/types/state/RangeFilterState/dateRangeUtils.d.ts.map +1 -1
- package/dist/types/state/RefObject.d.ts +4 -0
- package/dist/types/state/RefObject.d.ts.map +1 -0
- package/dist/types/state/SelectionStatusCairoPreset.d.ts +2 -2
- package/dist/types/state/SelectionStatusCairoPreset.d.ts.map +1 -1
- package/dist/types/state/StringFilterState/StringFilterState.d.ts +1 -1
- package/dist/types/state/buildCairoContainer.d.ts +6 -6
- package/dist/types/state/buildCairoContainer.d.ts.map +1 -1
- package/dist/types/state/useExperimentsCompat.d.ts +2 -2
- package/dist/types/state/useExperimentsCompat.d.ts.map +1 -1
- package/dist/types/state/warmUpPickerStandalone.d.ts +3 -3
- package/dist/types/state/warmUpPickerStandalone.d.ts.map +1 -1
- package/dist/types/testkit/CairoContainer.driver.d.ts +6 -6
- package/dist/types/testkit/CairoContainer.driver.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chance","require","_orderBy","_interopRequireDefault","_shuffle","_events","_core","InMemoryBackend","constructor","params","_defineProperty2","default","EventEmitter","Chance","query","fetchDataStartPromises","events","listeners","map","listener","length","Promise","all","simulateAsyncDelay","fetchDataSync","items","forEach","item","delete","itemKey","set","Map","index","values","predicate","_","Math","floor","random","available","shuffle","find","enableTotal","createOne","paginationMode","orderBy","projection","initialTotal","total","delay","min","max","newList","throwError","chance","resolve","setTimeout","integer","Array","fill","getOrderBy","ordinal","_getOrdinal","filters","allItems","orders","itemsAfterOrdering","fieldName","order","size","get","itemsAfterFiltering","filter","offset","cursor","findIndex","value","itemsAfterSlicing","slice","limit","cursorItem","itemsAfterFieldsProjection","deleteAll","isItemDeleted","emit","clear","updateMany","categoriesOrdinal","category","hashQueryKey","has","move","from","after","array","fromKey","toKey","fromIndex","splice","toIndex","i","len","updateAll","patch","patchedItems","unshift","newItems","key","entries","push","getRandomItems","count","page","pickset","undefined","exports"],"sources":["../../../src/InMemoryBackend/InMemoryBackend.ts"],"sourcesContent":["import { FiltersMap, RawFilters } from '../model';\nimport { Chance } from 'chance';\nimport orderBy from 'lodash/orderBy';\nimport shuffle from 'lodash/shuffle';\nimport { ListIteratee } from 'lodash';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { hashQueryKey } from 'react-query/core';\n\ninterface Order<T> {\n fieldName: ListIteratee<T>;\n order: 'asc' | 'desc';\n}\n\ninterface IndexedItem<T> {\n item: T;\n index: number;\n}\n\nexport type TransformPatch<T> = (item: T) => Partial<T>;\n\nexport interface BackendQuery<F extends FiltersMap = FiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset?: number;\n page?: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](/pages/cairo/?path=/story/common-hooks--usecollection).\n */\n filters: RawFilters<F>;\n\n /**\n * Current sort applied to the collection.\n */\n sort?: { fieldName: string; order: 'asc' | 'desc' }[];\n\n /**\n * Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fields?: string[];\n /**\n * Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fieldsset?: string[];\n}\n\nexport interface Delay {\n min: number;\n max: number;\n}\n\ninterface SubmitParams {\n delay?: Delay;\n throwError?: () => unknown;\n}\n\nexport interface InMemoryBackendParams<T, F extends FiltersMap = FiltersMap> {\n paginationMode?: 'offset' | 'cursor';\n /**\n * A callback function for each item creation\n */\n createOne: (index: number) => T;\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n */\n itemKey: (item: T) => string;\n /**\n * A function that accepts a subset of [ComputedQuery](/pages/cairo/?path=/story/common-models--computedquery) sent by the client and returns another function that accepts an item and should return a boolean that indicates whether the item passes the query filtering or not.\n */\n predicate?: (query: BackendQuery<F>) => (item: T) => boolean;\n /**\n * A function that accepts a subset of [ComputedQuery](/pages/cairo/?path=/story/common-models--computedquery) sent by the client and returns another function that accepts an item and should returns a list of rules to order the items by\n */\n orderBy?: (query: BackendQuery<F>) => Order<T>[];\n\n /**\n * A function that accepts a subset of [ComputedQuery](/pages/cairo/?path=/story/common-models--computedquery) sent by the client and returns a list of fields to project from the item\n */\n projection?: (query: BackendQuery<F>) => (item: T) => T;\n /**\n * Simulates API latency\n * @default { min: 0, max: 5 }\n */\n delay?: { min: number; max: number };\n /**\n * Total number of items to store in the backend\n */\n total: number;\n /**\n * Enable total for the backend. Defaults to \"true\"\n */\n enableTotal?: boolean;\n}\n\nexport class InMemoryBackend<T, F extends FiltersMap = FiltersMap> {\n readonly createOne: InMemoryBackendParams<T, F>['createOne'];\n readonly itemKey: InMemoryBackendParams<T, F>['itemKey'];\n readonly predicate: (query: BackendQuery<F>) => (item: T) => boolean;\n readonly orderBy?: (query: BackendQuery<F>) => Order<T>[];\n readonly projection;\n readonly initialTotal: number;\n readonly delay: { min: number; max: number };\n readonly paginationMode;\n readonly enableTotal?: boolean;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n updatedMany: () => void;\n updateAll: () => void;\n deleteAll: () => void;\n fetchDataStart: (query: BackendQuery<F>) => void | Promise<void>;\n }>;\n\n map: Map<string, T>;\n\n readonly chance = new Chance();\n\n constructor(params: InMemoryBackendParams<T, F>) {\n this.enableTotal = params.enableTotal ?? true;\n this.createOne = params.createOne;\n this.itemKey = params.itemKey;\n this.paginationMode = params.paginationMode;\n this.predicate = params.predicate ?? (() => () => true);\n this.orderBy = params.orderBy;\n this.projection = params.projection;\n this.initialTotal = params.total;\n this.delay = params.delay ?? { min: 0, max: 5 };\n this.map = new Map<string, T>(\n this.newList(params.total).map((item) => [this.itemKey(item), item]),\n );\n }\n\n private async simulateAsyncDelay({ delay, throwError }: SubmitParams = {}) {\n const { chance } = this;\n await new Promise((resolve) =>\n setTimeout(resolve, chance.integer(delay ?? this.delay)),\n ); // simulate async\n\n await throwError?.();\n }\n\n private newList(length: number) {\n return new Array(length)\n .fill(null)\n .map((_, index) => this.createOne(index));\n }\n\n fetchDataSync(query: BackendQuery<F>) {\n const { itemKey, predicate, orderBy: getOrderBy, paginationMode } = this;\n\n const ordinal = this._getOrdinal(query.filters);\n\n const allItems = this.values;\n\n const orders = getOrderBy?.(query);\n\n let itemsAfterOrdering;\n\n if (orders?.length) {\n itemsAfterOrdering = orderBy(\n allItems,\n orders.map(({ fieldName }) => fieldName),\n orders.map(({ order }) => order),\n );\n } else if (ordinal.size) {\n itemsAfterOrdering = orderBy(\n allItems,\n (item) => ordinal.get(itemKey(item)),\n ['asc'],\n );\n } else {\n itemsAfterOrdering = allItems;\n }\n\n const itemsAfterFiltering = itemsAfterOrdering.filter(predicate(query));\n\n let offset;\n\n if (paginationMode === 'cursor') {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : 0;\n } else {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : query.offset ?? 0;\n }\n\n const itemsAfterSlicing = itemsAfterFiltering.slice(\n offset,\n offset + query.limit,\n );\n\n const cursorItem = itemsAfterFiltering[offset + query.limit] as\n | T\n | undefined;\n\n const itemsAfterFieldsProjection = this.projection\n ? itemsAfterSlicing.map(this.projection(query))\n : itemsAfterSlicing;\n\n return {\n items: itemsAfterFieldsProjection,\n ...(this.enableTotal\n ? { total: itemsAfterFiltering.length, available: allItems.length }\n : {}),\n cursor: cursorItem && itemKey(cursorItem),\n };\n }\n\n fetchData = async (query: BackendQuery<F>) => {\n const fetchDataStartPromises = this.events\n .listeners('fetchDataStart')\n .map((listener) => listener(query));\n\n if (fetchDataStartPromises.length) {\n await Promise.all(fetchDataStartPromises);\n }\n\n await this.simulateAsyncDelay();\n return this.fetchDataSync(query);\n };\n\n deleteMany = async (items: T[], params?: SubmitParams) => {\n await this.simulateAsyncDelay(params);\n items.forEach((item) => this.map.delete(this.itemKey(item)));\n };\n\n async deleteAll(\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate, itemKey } = this;\n\n const isItemDeleted = predicate({\n filters,\n limit: 1,\n });\n\n for (const item of this.values) {\n if (isItemDeleted(item)) {\n this.map.delete(itemKey(item));\n }\n }\n\n this.events.emit('deleteAll');\n }\n\n clear() {\n this.map.clear();\n }\n\n update = async (item: T) => {\n await this.simulateAsyncDelay();\n this.map.set(this.itemKey(item), item);\n };\n\n async updateMany(items: T[], params: SubmitParams = {}) {\n await this.simulateAsyncDelay(params);\n for (const item of items) {\n this.map.set(this.itemKey(item), item);\n }\n this.events.emit('updatedMany');\n }\n readonly categoriesOrdinal: Map<string, Map<string, number>> = new Map();\n\n _getOrdinal(filters: RawFilters<F>) {\n const { categoriesOrdinal } = this;\n\n const category = hashQueryKey([{ filters }]);\n\n const ordinal =\n categoriesOrdinal.get(category) ?? new Map<string, number>();\n\n if (!categoriesOrdinal.has(category)) {\n categoriesOrdinal.set(category, ordinal);\n }\n\n return ordinal;\n }\n\n async move(\n events: {\n from: IndexedItem<T>;\n after: IndexedItem<T> | null;\n over: IndexedItem<T>;\n filters: RawFilters<F>;\n }[],\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n } = {},\n ) {\n const { itemKey } = this;\n await this.simulateAsyncDelay(params);\n\n for (const { from, after, filters } of events) {\n const ordinal = this._getOrdinal(filters);\n\n const array = ordinal.size\n ? orderBy(this.values.slice(), (item) => ordinal.get(itemKey(item)), [\n 'asc',\n ])\n : this.values.slice();\n\n const fromKey = itemKey(from.item);\n const toKey = after != null ? itemKey(after.item) : null;\n\n const fromIndex = array.findIndex((item) => fromKey === itemKey(item));\n if (fromIndex !== -1) {\n array.splice(fromIndex, 1);\n }\n\n if (toKey != null) {\n const toIndex = array.findIndex((item) => toKey === itemKey(item));\n if (toIndex !== -1) {\n array.splice(toIndex + 1, 0, from.item);\n }\n } else {\n array.splice(0, 0, from.item);\n }\n\n ordinal.clear();\n for (let i = 0, len = array.length; i < len; i++) {\n ordinal.set(itemKey(array[i]), i);\n }\n }\n }\n\n async updateAll(\n patch: TransformPatch<T>,\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate } = this;\n\n const itemsAfterFiltering = this.values.filter(\n predicate({\n filters,\n limit: 1,\n }),\n );\n\n const patchedItems = itemsAfterFiltering.map((value) => ({\n ...value,\n ...patch(value),\n }));\n\n for (const item of patchedItems) {\n this.map.set(this.itemKey(item), item);\n }\n\n this.events.emit('updateAll');\n }\n\n async unshift(newItems: T[]) {\n await this.simulateAsyncDelay();\n const map = new Map<string, T>();\n\n for (const item of newItems) {\n map.set(this.itemKey(item), item);\n }\n\n for (const [key, value] of Array.from(this.map.entries())) {\n map.set(key, value);\n }\n\n this.map = map;\n }\n\n async push(newItems: T[]) {\n await this.simulateAsyncDelay();\n\n for (const item of newItems) {\n this.map.set(this.itemKey(item), item);\n }\n }\n\n elementAt = (index: number) => this.values[index];\n\n getRandomItems(\n count: number,\n { limit, page }: { limit: number; page: number },\n ) {\n const { chance, values } = this;\n const offset = (page - 1) * limit;\n return chance.pickset(values.slice(offset, offset + limit), count);\n }\n\n randomItem = (predicate = (_: T) => true) => {\n const index = Math.floor(Math.random() * this.available);\n return {\n index,\n item: shuffle(this.values).find(predicate),\n };\n };\n\n get values() {\n return Array.from(this.map.values());\n }\n\n get available() {\n return this.map.size;\n }\n\n get(key?: string): T | undefined {\n if (key == null) {\n return undefined;\n }\n return this.map.get(key);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_chance","require","_orderBy","_interopRequireDefault","_shuffle","_events","_core","InMemoryBackend","constructor","params","_defineProperty2","default","EventEmitter","Chance","query","fetchDataStartPromises","events","listeners","map","listener","length","Promise","all","simulateAsyncDelay","fetchDataSync","items","forEach","item","delete","itemKey","set","Map","index","values","predicate","_","Math","floor","random","available","shuffle","find","enableTotal","createOne","paginationMode","orderBy","projection","initialTotal","total","delay","min","max","newList","throwError","chance","resolve","setTimeout","integer","Array","fill","getOrderBy","ordinal","_getOrdinal","filters","allItems","orders","itemsAfterOrdering","fieldName","order","size","get","itemsAfterFiltering","filter","offset","cursor","findIndex","value","itemsAfterSlicing","slice","limit","cursorItem","itemsAfterFieldsProjection","deleteAll","isItemDeleted","emit","clear","updateMany","categoriesOrdinal","category","hashQueryKey","has","move","from","after","array","fromKey","toKey","fromIndex","splice","toIndex","i","len","updateAll","patch","patchedItems","unshift","newItems","key","entries","push","getRandomItems","count","page","pickset","undefined","exports"],"sources":["../../../src/InMemoryBackend/InMemoryBackend.ts"],"sourcesContent":["import { FiltersMap, RawFilters } from '../model';\nimport { Chance } from 'chance';\nimport orderBy from 'lodash/orderBy';\nimport shuffle from 'lodash/shuffle';\nimport { ListIteratee } from 'lodash';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { hashQueryKey } from 'react-query/core';\n\ninterface Order<T> {\n fieldName: ListIteratee<T>;\n order: 'asc' | 'desc';\n}\n\ninterface IndexedItem<T> {\n item: T;\n index: number;\n}\n\nexport type TransformPatch<T> = (item: T) => Partial<T>;\n\nexport interface BackendQuery<F extends FiltersMap = FiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset?: number;\n page?: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](./?path=/story/common-hooks--usecollection).\n */\n filters: RawFilters<F>;\n\n /**\n * Current sort applied to the collection.\n */\n sort?: { fieldName: string; order: 'asc' | 'desc' }[];\n\n /**\n * Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fields?: string[];\n /**\n * Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fieldsset?: string[];\n}\n\nexport interface Delay {\n min: number;\n max: number;\n}\n\ninterface SubmitParams {\n delay?: Delay;\n throwError?: () => unknown;\n}\n\nexport interface InMemoryBackendParams<T, F extends FiltersMap = FiltersMap> {\n paginationMode?: 'offset' | 'cursor';\n /**\n * A callback function for each item creation\n */\n createOne: (index: number) => T;\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n */\n itemKey: (item: T) => string;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-models--computedquery) sent by the client and returns another function that accepts an item and should return a boolean that indicates whether the item passes the query filtering or not.\n */\n predicate?: (query: BackendQuery<F>) => (item: T) => boolean;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-models--computedquery) sent by the client and returns another function that accepts an item and should returns a list of rules to order the items by\n */\n orderBy?: (query: BackendQuery<F>) => Order<T>[];\n\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-models--computedquery) sent by the client and returns a list of fields to project from the item\n */\n projection?: (query: BackendQuery<F>) => (item: T) => T;\n /**\n * Simulates API latency\n * @default { min: 0, max: 5 }\n */\n delay?: { min: number; max: number };\n /**\n * Total number of items to store in the backend\n */\n total: number;\n /**\n * Enable total for the backend. Defaults to \"true\"\n */\n enableTotal?: boolean;\n}\n\nexport class InMemoryBackend<T, F extends FiltersMap = FiltersMap> {\n readonly createOne: InMemoryBackendParams<T, F>['createOne'];\n readonly itemKey: InMemoryBackendParams<T, F>['itemKey'];\n readonly predicate: (query: BackendQuery<F>) => (item: T) => boolean;\n readonly orderBy?: (query: BackendQuery<F>) => Order<T>[];\n readonly projection;\n readonly initialTotal: number;\n readonly delay: { min: number; max: number };\n readonly paginationMode;\n readonly enableTotal?: boolean;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n updatedMany: () => void;\n updateAll: () => void;\n deleteAll: () => void;\n fetchDataStart: (query: BackendQuery<F>) => void | Promise<void>;\n }>;\n\n map: Map<string, T>;\n\n readonly chance = new Chance();\n\n constructor(params: InMemoryBackendParams<T, F>) {\n this.enableTotal = params.enableTotal ?? true;\n this.createOne = params.createOne;\n this.itemKey = params.itemKey;\n this.paginationMode = params.paginationMode;\n this.predicate = params.predicate ?? (() => () => true);\n this.orderBy = params.orderBy;\n this.projection = params.projection;\n this.initialTotal = params.total;\n this.delay = params.delay ?? { min: 0, max: 5 };\n this.map = new Map<string, T>(\n this.newList(params.total).map((item) => [this.itemKey(item), item]),\n );\n }\n\n private async simulateAsyncDelay({ delay, throwError }: SubmitParams = {}) {\n const { chance } = this;\n await new Promise((resolve) =>\n setTimeout(resolve, chance.integer(delay ?? this.delay)),\n ); // simulate async\n\n await throwError?.();\n }\n\n private newList(length: number) {\n return new Array(length)\n .fill(null)\n .map((_, index) => this.createOne(index));\n }\n\n fetchDataSync(query: BackendQuery<F>) {\n const { itemKey, predicate, orderBy: getOrderBy, paginationMode } = this;\n\n const ordinal = this._getOrdinal(query.filters);\n\n const allItems = this.values;\n\n const orders = getOrderBy?.(query);\n\n let itemsAfterOrdering;\n\n if (orders?.length) {\n itemsAfterOrdering = orderBy(\n allItems,\n orders.map(({ fieldName }) => fieldName),\n orders.map(({ order }) => order),\n );\n } else if (ordinal.size) {\n itemsAfterOrdering = orderBy(\n allItems,\n (item) => ordinal.get(itemKey(item)),\n ['asc'],\n );\n } else {\n itemsAfterOrdering = allItems;\n }\n\n const itemsAfterFiltering = itemsAfterOrdering.filter(predicate(query));\n\n let offset;\n\n if (paginationMode === 'cursor') {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : 0;\n } else {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : query.offset ?? 0;\n }\n\n const itemsAfterSlicing = itemsAfterFiltering.slice(\n offset,\n offset + query.limit,\n );\n\n const cursorItem = itemsAfterFiltering[offset + query.limit] as\n | T\n | undefined;\n\n const itemsAfterFieldsProjection = this.projection\n ? itemsAfterSlicing.map(this.projection(query))\n : itemsAfterSlicing;\n\n return {\n items: itemsAfterFieldsProjection,\n ...(this.enableTotal\n ? { total: itemsAfterFiltering.length, available: allItems.length }\n : {}),\n cursor: cursorItem && itemKey(cursorItem),\n };\n }\n\n fetchData = async (query: BackendQuery<F>) => {\n const fetchDataStartPromises = this.events\n .listeners('fetchDataStart')\n .map((listener) => listener(query));\n\n if (fetchDataStartPromises.length) {\n await Promise.all(fetchDataStartPromises);\n }\n\n await this.simulateAsyncDelay();\n return this.fetchDataSync(query);\n };\n\n deleteMany = async (items: T[], params?: SubmitParams) => {\n await this.simulateAsyncDelay(params);\n items.forEach((item) => this.map.delete(this.itemKey(item)));\n };\n\n async deleteAll(\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate, itemKey } = this;\n\n const isItemDeleted = predicate({\n filters,\n limit: 1,\n });\n\n for (const item of this.values) {\n if (isItemDeleted(item)) {\n this.map.delete(itemKey(item));\n }\n }\n\n this.events.emit('deleteAll');\n }\n\n clear() {\n this.map.clear();\n }\n\n update = async (item: T) => {\n await this.simulateAsyncDelay();\n this.map.set(this.itemKey(item), item);\n };\n\n async updateMany(items: T[], params: SubmitParams = {}) {\n await this.simulateAsyncDelay(params);\n for (const item of items) {\n this.map.set(this.itemKey(item), item);\n }\n this.events.emit('updatedMany');\n }\n readonly categoriesOrdinal: Map<string, Map<string, number>> = new Map();\n\n _getOrdinal(filters: RawFilters<F>) {\n const { categoriesOrdinal } = this;\n\n const category = hashQueryKey([{ filters }]);\n\n const ordinal =\n categoriesOrdinal.get(category) ?? new Map<string, number>();\n\n if (!categoriesOrdinal.has(category)) {\n categoriesOrdinal.set(category, ordinal);\n }\n\n return ordinal;\n }\n\n async move(\n events: {\n from: IndexedItem<T>;\n after: IndexedItem<T> | null;\n over: IndexedItem<T>;\n filters: RawFilters<F>;\n }[],\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n } = {},\n ) {\n const { itemKey } = this;\n await this.simulateAsyncDelay(params);\n\n for (const { from, after, filters } of events) {\n const ordinal = this._getOrdinal(filters);\n\n const array = ordinal.size\n ? orderBy(this.values.slice(), (item) => ordinal.get(itemKey(item)), [\n 'asc',\n ])\n : this.values.slice();\n\n const fromKey = itemKey(from.item);\n const toKey = after != null ? itemKey(after.item) : null;\n\n const fromIndex = array.findIndex((item) => fromKey === itemKey(item));\n if (fromIndex !== -1) {\n array.splice(fromIndex, 1);\n }\n\n if (toKey != null) {\n const toIndex = array.findIndex((item) => toKey === itemKey(item));\n if (toIndex !== -1) {\n array.splice(toIndex + 1, 0, from.item);\n }\n } else {\n array.splice(0, 0, from.item);\n }\n\n ordinal.clear();\n for (let i = 0, len = array.length; i < len; i++) {\n ordinal.set(itemKey(array[i]), i);\n }\n }\n }\n\n async updateAll(\n patch: TransformPatch<T>,\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate } = this;\n\n const itemsAfterFiltering = this.values.filter(\n predicate({\n filters,\n limit: 1,\n }),\n );\n\n const patchedItems = itemsAfterFiltering.map((value) => ({\n ...value,\n ...patch(value),\n }));\n\n for (const item of patchedItems) {\n this.map.set(this.itemKey(item), item);\n }\n\n this.events.emit('updateAll');\n }\n\n async unshift(newItems: T[]) {\n await this.simulateAsyncDelay();\n const map = new Map<string, T>();\n\n for (const item of newItems) {\n map.set(this.itemKey(item), item);\n }\n\n for (const [key, value] of Array.from(this.map.entries())) {\n map.set(key, value);\n }\n\n this.map = map;\n }\n\n async push(newItems: T[]) {\n await this.simulateAsyncDelay();\n\n for (const item of newItems) {\n this.map.set(this.itemKey(item), item);\n }\n }\n\n elementAt = (index: number) => this.values[index];\n\n getRandomItems(\n count: number,\n { limit, page }: { limit: number; page: number },\n ) {\n const { chance, values } = this;\n const offset = (page - 1) * limit;\n return chance.pickset(values.slice(offset, offset + limit), count);\n }\n\n randomItem = (predicate = (_: T) => true) => {\n const index = Math.floor(Math.random() * this.available);\n return {\n index,\n item: shuffle(this.values).find(predicate),\n };\n };\n\n get values() {\n return Array.from(this.map.values());\n }\n\n get available() {\n return this.map.size;\n }\n\n get(key?: string): T | undefined {\n if (key == null) {\n return undefined;\n }\n return this.map.get(key);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/hooks/collectionConfig.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n DataResultRaw,\n Filter,\n FiltersMap,\n QueryOptions,\n} from '../model';\nimport { ExtendedFields } from '../services';\n\nexport interface CollectionConfigBase<T, F extends FiltersMap> {\n /**\n * Disables \"Select All\" server simulation for bulk selection\n * @external\n */\n disableAutoSelectAllCount?: boolean;\n /**\n * Enable new \"Select All\" logic - unchecking items after \"Select All\" will not fallback to specific selection.\n * This means that the \"Total selected\" in `<BulkActionToolbar/>` and `<MultiBulkActionToolbar />` will show `total - unchekedItems` and\n * `isSelectAll` attribute will be true.\n *\n * When enabling this behavior you will receive a list of unselected ids (`unchekedItems`), `isSelectAll:true`, and `currentFilters`.\n * It is important to ensure that your server can query using those properties and retrieve the selected IDs\n * Here is the list of bulkActionToolbar's [attributes](
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/hooks/collectionConfig.ts"],"sourcesContent":["import {\n CollectionEvents,\n ComputedQuery,\n DataResultRaw,\n Filter,\n FiltersMap,\n QueryOptions,\n} from '../model';\nimport { ExtendedFields } from '../services';\n\nexport interface CollectionConfigBase<T, F extends FiltersMap> {\n /**\n * Disables \"Select All\" server simulation for bulk selection\n * @external\n */\n disableAutoSelectAllCount?: boolean;\n /**\n * Enable new \"Select All\" logic - unchecking items after \"Select All\" will not fallback to specific selection.\n * This means that the \"Total selected\" in `<BulkActionToolbar/>` and `<MultiBulkActionToolbar />` will show `total - unchekedItems` and\n * `isSelectAll` attribute will be true.\n *\n * When enabling this behavior you will receive a list of unselected ids (`unchekedItems`), `isSelectAll:true`, and `currentFilters`.\n * It is important to ensure that your server can query using those properties and retrieve the selected IDs\n * Here is the list of bulkActionToolbar's [attributes](./?path=/story/components-collection--table).\n * @external\n */\n useNewSelectAllLogic?: boolean;\n /**\n * The query name used for cache purposes. This should be a unique value per API endpoint consumed inside the `fetchData` function.<br>\n * It's recommended to use the [Fqdn](https://bo.wix.com/wix-docs/rnd/p13n-guidelines---aips/guidance-aips/wix-api-basics/[1009]-fqdn) of the service used in `fetchData` as `queryName`.<br>\n * Either a string or a Fqdn object\n * @external\n */\n queryName: string;\n\n /**\n * Entity Fqdn, used in features where the fqdn is needed to manage the data (like DataExtension).\n * @external\n */\n fqdn?: string;\n\n /**\n * The `ExtendedFields` object used to render custom field values\n * Optional in case your data complies to the type `{ extendedFields: ExtendedFields }`\n */\n toExtendedFields?: (item: T) => ExtendedFields | undefined;\n\n /**\n * Toast message to show when fetching from the server is failed.\n * If the function returns nullish value, no toast will be shown.\n * @external\n */\n fetchErrorMessage: (params: {\n err: unknown;\n isOnline: boolean;\n }) => string | null | undefined;\n\n /**\n * @deprecated No longer required / used\n */\n entityName?: (pluralization: number) => string;\n\n search?: Filter<string>;\n queryOptions?: QueryOptions;\n /**\n * Persist the selected filters, search & sort in the query parameters of the URL.<br/>\n * For improved readability, sort & columns are formatted in CSV-like formatting, i.e \"?sort=name+desc,price+asc\". Do not use commas and/or spaces for your columns IDs.<br>\n * Note: The filters from the selected view will be persist, but the actual view will not be selected\n * @default false\n */\n persistQueryToUrl?: boolean;\n /**\n * Refreshes the collection when columns selection is changed. The selected columns are passed via `fetchData(query.columns)`.\n * @default false\n * @external\n */\n refreshOnColumnsChange?: boolean;\n initialPage?: DataResultRaw<T>;\n deferInitialLoading?: boolean;\n\n /**\n * Indicates whether to preserve or clear selection after applying a new search / filter.\n * @default preserve\n * @external\n */\n selectionConsistencyMode?: 'preserve' | 'clear';\n /**\n * Optional callbacks for various events of the collection state lifecycle\n * - `onInitialPageFetched` - when the first page of items is ready\n * - `onSearch` - when fetching new items as a result new search\n * - `onSearchResults` - when the result of a search is ready\n * - `onNewPageStart` - when starting to load the next page of items\n * - `onNewPageAdded` - when the result of the next page is ready\n * - `onError` - When `fetchData` throws an error. Return `true` from this function if the error was reported and shouldn't be reported again internally.\n */\n events?: CollectionEvents<F>;\n}\n\nexport interface CollectionConfigAnyPaginationMode<T, F extends FiltersMap>\n extends CollectionConfigBase<T, F> {\n /**\n * A function that integrates with the API to fetch the collection data from.<br>\n * Accepts the following parameters:\n * - `query`: A [ComputedQuery](./?path=/story/common-models--computedquery) instance. Holds all the relevant variables to query the server API with.\n *\n * The function must return a promise of [DataResultRaw](./?path=/story/common-models--dataresultraw)\n * @external\n */\n fetchData: (query: ComputedQuery<F>) => Promise<DataResultRaw<T>>;\n /**\n * Defines the filters that the collection supports. Optional if the collection should not have filters.<br>\n * Either of:\n * - [ArrayFilter](./?path=/story/common-factories--arrayfilter)\n * - [CustomFilter](./?path=/story/common-factories--customfilter)\n * @external\n */\n filters: F;\n /**\n * The item name which is used in many messages through cairo\n *\n * for example \"{entity} \"{itemName}\" was deleted successfully.\"\n * \"Contact \"Johnny Doe\" was deleted successfully.\"\n *\n * Optional in case your data complies to the type `{ name: string }`\n * @external\n */\n itemName: (item: T) => string;\n /**\n * The item key, usually the id, need to be unique within the collection\n * Optional in case your data complies to the type `{ id: string }`\n * @external\n */\n itemKey: (item: T) => string;\n /**\n * Number of items to fetch on each page\n * @external\n */\n limit?: number;\n}\n\nexport interface CollectionConfig<T, F extends FiltersMap>\n extends CollectionConfigAnyPaginationMode<T, F> {\n /**\n * Indicates what type of pagination the `fetchData` function supports.<br>\n * In case the server accepts the `query.offset` parameter - pass `'offset'`\n * In case the server returns a `cursor` from `fetchData` - pass `'cursor'`\n * @default offset\n * @external\n */\n paginationMode?: 'cursor' | 'offset';\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_parseFqdn","require","_state","_core","createCollection","container","config","paginationModeRef","overrides","errorMonitor","onlineState","history","translate","queryCache","showToast","initialFetch","lodash","queryName","fqdn","parsedFqdn","parseFqdn","CollectionState","process","env","STORYBOOK_DOCS","QueryCache","initDependencies","filtersPanelModal","FiltersPanelModalCompatBridge"],"sources":["../../../src/hooks/createCollection.ts"],"sourcesContent":["import { CollectionConfig } from './collectionConfig';\nimport { parseFqdn } from '../util/parseFqdn';\nimport {\n
|
|
1
|
+
{"version":3,"names":["_parseFqdn","require","_state","_core","createCollection","container","config","paginationModeRef","overrides","errorMonitor","onlineState","history","translate","queryCache","showToast","initialFetch","lodash","queryName","fqdn","parsedFqdn","parseFqdn","CollectionState","process","env","STORYBOOK_DOCS","QueryCache","initDependencies","filtersPanelModal","FiltersPanelModalCompatBridge"],"sources":["../../../src/hooks/createCollection.ts"],"sourcesContent":["import { CollectionConfig } from './collectionConfig';\nimport { parseFqdn } from '../util/parseFqdn';\nimport {\n WixPatternsContainer,\n WixPatternsContainerParams,\n CollectionState,\n FiltersPanelModalCompatBridge,\n PaginationModeRef,\n} from '../state';\nimport { QueryCache } from 'react-query/core';\nimport { FiltersMap, OptionalFiltersMap } from '../model';\n\nexport interface CreateCollectionOptions {\n paginationModeRef?: PaginationModeRef;\n overrides?: Partial<WixPatternsContainerParams>;\n}\n\nexport function createCollection<T, F extends FiltersMap = OptionalFiltersMap>(\n container: WixPatternsContainer,\n config: CollectionConfig<T, F>,\n { paginationModeRef, overrides }: CreateCollectionOptions = {},\n) {\n const {\n errorMonitor,\n onlineState,\n history,\n translate,\n queryCache,\n showToast,\n initialFetch,\n lodash,\n } = container;\n\n const { queryName, fqdn } = config;\n\n // fallbacks to queryName for backwards compatibility\n const parsedFqdn = parseFqdn(fqdn || queryName);\n\n return new CollectionState({\n ...config,\n queryName,\n fqdn: parsedFqdn,\n paginationModeRef,\n queryCache:\n overrides?.queryCache ??\n (typeof process !== 'undefined' && process.env.STORYBOOK_DOCS === 'true'\n ? new QueryCache()\n : queryCache),\n history,\n errorMonitor,\n showToast: overrides?.showToast ?? showToast,\n translate,\n onlineState,\n initDependencies: initialFetch,\n lodash,\n filtersPanelModal: new FiltersPanelModalCompatBridge(),\n });\n}\n"],"mappings":";;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,KAAA,GAAAF,OAAA;AAQO,SAASG,gBAAgBA,CAC9BC,SAA+B,EAC/BC,MAA8B,EAC9B;EAAEC,iBAAiB;EAAEC;AAAmC,CAAC,GAAG,CAAC,CAAC,EAC9D;EACA,MAAM;IACJC,YAAY;IACZC,WAAW;IACXC,OAAO;IACPC,SAAS;IACTC,UAAU;IACVC,SAAS;IACTC,YAAY;IACZC;EACF,CAAC,GAAGX,SAAS;EAEb,MAAM;IAAEY,SAAS;IAAEC;EAAK,CAAC,GAAGZ,MAAM;;EAElC;EACA,MAAMa,UAAU,GAAG,IAAAC,oBAAS,EAACF,IAAI,IAAID,SAAS,CAAC;EAE/C,OAAO,IAAII,sBAAe,CAAC;IACzB,GAAGf,MAAM;IACTW,SAAS;IACTC,IAAI,EAAEC,UAAU;IAChBZ,iBAAiB;IACjBM,UAAU,EACR,CAAAL,SAAS,oBAATA,SAAS,CAAEK,UAAU,MACpB,OAAOS,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,CAACC,cAAc,KAAK,MAAM,GACpE,IAAIC,gBAAU,CAAC,CAAC,GAChBZ,UAAU,CAAC;IACjBF,OAAO;IACPF,YAAY;IACZK,SAAS,EAAE,CAAAN,SAAS,oBAATA,SAAS,CAAEM,SAAS,KAAIA,SAAS;IAC5CF,SAAS;IACTF,WAAW;IACXgB,gBAAgB,EAAEX,YAAY;IAC9BC,MAAM;IACNW,iBAAiB,EAAE,IAAIC,oCAA6B,CAAC;EACvD,CAAC,CAAC;AACJ"}
|
|
@@ -61,7 +61,7 @@ function useCreateAmbassadorCollection() {
|
|
|
61
61
|
const createCollection = (0, _useCollection.useCreateCollection)();
|
|
62
62
|
const {
|
|
63
63
|
httpClient
|
|
64
|
-
} = (0, _providers.
|
|
64
|
+
} = (0, _providers.useWixPatternsContainer)();
|
|
65
65
|
return config => {
|
|
66
66
|
const collectionConfig = config.ambassador.queryEntities.paginationMode === 'offset' ? getOffsetConfig(config, httpClient) : getCursorConfig(config, httpClient);
|
|
67
67
|
return createCollection(collectionConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","cairoQuery","httpClient","ambassador","transformPlatformizedQuery","identity","platformizedQuery","defaultPlatformizedQuery","query","request","queryEntities","getOffsetConfig","queryName","fqdn","paginationMode","data","items","entities","total","metadata","getCursorConfig","cursor","cursors","next","useCreateAmbassadorCollection","createCollection","useCreateCollection","
|
|
1
|
+
{"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","cairoQuery","httpClient","ambassador","transformPlatformizedQuery","identity","platformizedQuery","defaultPlatformizedQuery","query","request","queryEntities","getOffsetConfig","queryName","fqdn","paginationMode","data","items","entities","total","metadata","getCursorConfig","cursor","cursors","next","useCreateAmbassadorCollection","createCollection","useCreateCollection","useWixPatternsContainer","collectionConfig","useAmbassadorCollection","createAmbassadorCollection","collection","useState","_cairoQuery$sort","filter","sort","map","fieldName","order","toUpperCase","cursorPaging","limit"],"sources":["../../../src/hooks/useAmbassadorCollection.ts"],"sourcesContent":["import identity from 'lodash/identity';\nimport type { AutoCrudHttp } from '@wix/auto-crud';\nimport type { FiltersMap, OptionalFiltersMap } from '../model';\nimport type { CollectionState } from '../state';\nimport type { CollectionConfigWithConditionals } from './collectionConfigPartials';\nimport type { CursorQuery, OffsetQuery } from '.';\nimport { useWixPatternsContainer } from '../providers';\nimport { useCreateCollection } from './useCollection';\nimport { useState } from 'react';\nimport { WixPatternsContainerParams } from '../state';\n\nexport type TransformPlatformizedQuery = (\n platformizedQuery: PlatformizedQuery,\n cairoQuery: CursorQuery,\n) => PlatformizedQuery | Promise<PlatformizedQuery>;\n\nexport type AmbassadorCollectionConfig<\n T,\n F extends FiltersMap = OptionalFiltersMap,\n> = Omit<\n CollectionConfigWithConditionals<T, F>,\n 'fetchData' | 'paginationMode' | 'queryName'\n> &\n AmbassadorCollectionConfigI<T>;\n\nexport interface AmbassadorCollectionConfigI<T> {\n /**\n * CRUD subpackage of a metro Ambassador package.\n */\n ambassador: Required<Pick<AutoCrudHttp<T>, 'queryEntities' | 'fqdn'>>;\n /**\n * A function to transform the cairo query to a PlatformizedQuery object (which will be used to fetch data from the server):\n * - `platformizedQuery`: PlatformizedQuery\n * - `cairoQuery`: CursorQuery\n * The function should return a PlatformizedQuery instance or a promise of PlatformizedQuery\n */\n transformPlatformizedQuery?: TransformPlatformizedQuery;\n /**\n * The query name used for cache purposes. This should be a unique value per API endpoint.\n * @default ambassador.fqdn\n */\n queryName?: string;\n}\n\ntype PlatformizedFilter = {\n [filter: string]: any;\n};\n\ntype PlatformizedSorting = {\n fieldName: string;\n order: 'ASC' | 'DESC';\n};\n\ntype PlatformizedCursorPaging = {\n limit: number;\n cursor?: string | null;\n};\n\n// TODO: should be exposed by Ambassador\ntype PlatformizedQuery = {\n filter?: PlatformizedFilter;\n sort?: PlatformizedSorting[];\n cursorPaging?: PlatformizedCursorPaging;\n};\n\nexport type AmbassadorCollectionFactory = <\n T,\n F extends FiltersMap = OptionalFiltersMap,\n>(\n config: AmbassadorCollectionConfig<T, F>,\n) => CollectionState<T, F>;\n\nasync function fetchData<T, F extends FiltersMap = OptionalFiltersMap>(\n config: AmbassadorCollectionConfig<T, F>,\n cairoQuery: CursorQuery<Partial<F>> | OffsetQuery<Partial<F>>,\n httpClient: WixPatternsContainerParams['httpClient'],\n) {\n const { ambassador } = config;\n const transformPlatformizedQuery =\n config.transformPlatformizedQuery || identity;\n const platformizedQuery = defaultPlatformizedQuery(cairoQuery);\n const query = await transformPlatformizedQuery(platformizedQuery, cairoQuery);\n return httpClient.request(ambassador.queryEntities({ query }));\n}\n\nfunction getOffsetConfig<T, F extends FiltersMap = OptionalFiltersMap>(\n config: AmbassadorCollectionConfig<T, F>,\n httpClient: WixPatternsContainerParams['httpClient'],\n): CollectionConfigWithConditionals<T, F> {\n return {\n queryName: config.ambassador.fqdn,\n ...config,\n paginationMode: 'offset',\n fetchData: async (query: OffsetQuery<Partial<F>>) => {\n const { data } = await fetchData(config, query, httpClient);\n return {\n items: data.entities,\n total: data.metadata.total,\n };\n },\n };\n}\n\nfunction getCursorConfig<T, F extends FiltersMap = OptionalFiltersMap>(\n config: AmbassadorCollectionConfig<T, F>,\n httpClient: WixPatternsContainerParams['httpClient'],\n): CollectionConfigWithConditionals<T, F> {\n const { ambassador } = config;\n\n return {\n queryName: ambassador.fqdn,\n ...config,\n paginationMode: 'cursor',\n fetchData: async (query: CursorQuery<Partial<F>>) => {\n const { data } = await fetchData(config, query, httpClient);\n return {\n items: data.entities,\n cursor: data.metadata.cursors.next,\n total: data.metadata.total,\n };\n },\n };\n}\n\nexport function useCreateAmbassadorCollection(): AmbassadorCollectionFactory {\n const createCollection = useCreateCollection();\n const { httpClient } = useWixPatternsContainer();\n\n return <T, F extends FiltersMap = OptionalFiltersMap>(\n config: AmbassadorCollectionConfig<T, F>,\n ) => {\n const collectionConfig: CollectionConfigWithConditionals<T, F> =\n config.ambassador.queryEntities.paginationMode === 'offset'\n ? getOffsetConfig(config, httpClient)\n : getCursorConfig(config, httpClient);\n\n return createCollection(collectionConfig);\n };\n}\n\nexport function useAmbassadorCollection<\n T,\n F extends FiltersMap = OptionalFiltersMap,\n>(config: AmbassadorCollectionConfig<T, F>): CollectionState<T, F> {\n const createAmbassadorCollection = useCreateAmbassadorCollection();\n\n const [collection] = useState(() => createAmbassadorCollection<T, F>(config));\n\n return collection;\n}\n\nfunction defaultPlatformizedQuery(cairoQuery: CursorQuery): PlatformizedQuery {\n return {\n filter: {},\n sort: cairoQuery.sort?.map((sort) => ({\n fieldName: sort.fieldName,\n order: sort.order.toUpperCase() as 'ASC' | 'DESC',\n })),\n cursorPaging: { cursor: cairoQuery.cursor, limit: cairoQuery.limit },\n };\n}\n"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ var _providers = require("../../providers");
|
|
|
9
9
|
var _createCollection = require("../createCollection");
|
|
10
10
|
var _createCollectionConfig = require("../createCollectionConfig");
|
|
11
11
|
function usePrivateCreateCollection() {
|
|
12
|
-
const container = (0, _providers.
|
|
13
|
-
const overrides = (0, _providers.
|
|
12
|
+
const container = (0, _providers.useWixPatternsContainer)();
|
|
13
|
+
const overrides = (0, _providers.useWixPatternsContainerOverrides)();
|
|
14
14
|
return (0, _react.useCallback)((config, options = {}) => (0, _createCollection.createCollection)(container, (0, _createCollectionConfig.createCollectionConfig)(config), {
|
|
15
15
|
...options,
|
|
16
16
|
overrides
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_providers","_createCollection","_createCollectionConfig","usePrivateCreateCollection","container","
|
|
1
|
+
{"version":3,"names":["_react","require","_providers","_createCollection","_createCollectionConfig","usePrivateCreateCollection","container","useWixPatternsContainer","overrides","useWixPatternsContainerOverrides","useCallback","config","options","createCollectionBase","createCollectionConfig","useCreateCollection","createCollection","useCollection","collection","useState"],"sources":["../../../../src/hooks/useCollection/useCollection.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { FiltersMap, OptionalFiltersMap } from '../../model';\nimport { CollectionState, PaginationModeRef } from '../../state';\nimport {\n useWixPatternsContainer,\n useWixPatternsContainerOverrides,\n} from '../../providers';\nimport { CollectionConfigWithConditionals } from '../collectionConfigPartials';\nimport { createCollection as createCollectionBase } from '../createCollection';\nimport { createCollectionConfig } from '../createCollectionConfig';\n\nexport type CollectionFactory = <T, F extends FiltersMap = OptionalFiltersMap>(\n config: CollectionConfigWithConditionals<T, F>,\n) => CollectionState<T, F>;\n\nexport function usePrivateCreateCollection() {\n const container = useWixPatternsContainer();\n\n const overrides = useWixPatternsContainerOverrides();\n\n return useCallback(\n <T, F extends FiltersMap = OptionalFiltersMap>(\n config: CollectionConfigWithConditionals<T, F>,\n options: {\n paginationModeRef?: PaginationModeRef;\n } = {},\n ) =>\n createCollectionBase(container, createCollectionConfig(config), {\n ...options,\n overrides,\n }),\n [],\n );\n}\n\nexport function useCreateCollection(): CollectionFactory {\n const createCollection = usePrivateCreateCollection();\n\n return useCallback<CollectionFactory>(\n <T, F extends FiltersMap = OptionalFiltersMap>(\n config: CollectionConfigWithConditionals<T, F>,\n ) => createCollection(config),\n [],\n );\n}\n\nexport function useCollection<T, F extends FiltersMap = OptionalFiltersMap>(\n config: CollectionConfigWithConditionals<T, F>,\n): CollectionState<T, F> {\n const createCollection = useCreateCollection();\n\n const [collection] = useState(() => createCollection<T, F>(config));\n\n return collection;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,UAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AAMO,SAASI,0BAA0BA,CAAA,EAAG;EAC3C,MAAMC,SAAS,GAAG,IAAAC,kCAAuB,EAAC,CAAC;EAE3C,MAAMC,SAAS,GAAG,IAAAC,2CAAgC,EAAC,CAAC;EAEpD,OAAO,IAAAC,kBAAW,EAChB,CACEC,MAA8C,EAC9CC,OAEC,GAAG,CAAC,CAAC,KAEN,IAAAC,kCAAoB,EAACP,SAAS,EAAE,IAAAQ,8CAAsB,EAACH,MAAM,CAAC,EAAE;IAC9D,GAAGC,OAAO;IACVJ;EACF,CAAC,CAAC,EACJ,EACF,CAAC;AACH;AAEO,SAASO,mBAAmBA,CAAA,EAAsB;EACvD,MAAMC,gBAAgB,GAAGX,0BAA0B,CAAC,CAAC;EAErD,OAAO,IAAAK,kBAAW,EAEdC,MAA8C,IAC3CK,gBAAgB,CAACL,MAAM,CAAC,EAC7B,EACF,CAAC;AACH;AAEO,SAASM,aAAaA,CAC3BN,MAA8C,EACvB;EACvB,MAAMK,gBAAgB,GAAGD,mBAAmB,CAAC,CAAC;EAE9C,MAAM,CAACG,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMH,gBAAgB,CAAOL,MAAM,CAAC,CAAC;EAEnE,OAAOO,UAAU;AACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_state","_mobx","useCollectionPageState","pageTitle","hasHeader","rest","stateOverride","state","useState","CollectionPageState","useEffect","runInAction"],"sources":["../../../src/hooks/useCollectionPageState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { CollectionPageState, CollectionPageStateParams } from '../state';\nimport { runInAction } from 'mobx';\n\nexport function useCollectionPageState(\n { pageTitle, hasHeader, ...rest }: CollectionPageStateParams = {},\n stateOverride?: CollectionPageState | undefined,\n): CollectionPageState {\n const [state] = useState(\n () =>\n stateOverride ??\n new CollectionPageState({
|
|
1
|
+
{"version":3,"names":["_react","require","_state","_mobx","useCollectionPageState","pageTitle","hasHeader","rest","stateOverride","state","useState","CollectionPageState","useEffect","runInAction"],"sources":["../../../src/hooks/useCollectionPageState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { CollectionPageState, CollectionPageStateParams } from '../state';\nimport { runInAction } from 'mobx';\n\nexport function useCollectionPageState(\n { pageTitle, hasHeader, ...rest }: CollectionPageStateParams = {},\n stateOverride?: CollectionPageState | undefined,\n): CollectionPageState {\n const [state] = useState(\n () =>\n stateOverride ??\n new CollectionPageState({\n pageTitle,\n hasHeader,\n ...rest,\n }),\n );\n\n useEffect(() => {\n runInAction(() => {\n state.pageTitle = pageTitle;\n });\n }, [pageTitle]);\n\n useEffect(() => {\n runInAction(() => {\n state.hasHeader = hasHeader;\n });\n }, [hasHeader]);\n\n return state;\n}\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEO,SAASG,sBAAsBA,CACpC;EAAEC,SAAS;EAAEC,SAAS;EAAE,GAAGC;AAAgC,CAAC,GAAG,CAAC,CAAC,EACjEC,aAA+C,EAC1B;EACrB,MAAM,CAACC,KAAK,CAAC,GAAG,IAAAC,eAAQ,EACtB,MACEF,aAAa,IACb,IAAIG,0BAAmB,CAAC;IACtBN,SAAS;IACTC,SAAS;IACT,GAAGC;EACL,CAAC,CACL,CAAC;EAED,IAAAK,gBAAS,EAAC,MAAM;IACd,IAAAC,iBAAW,EAAC,MAAM;MAChBJ,KAAK,CAACJ,SAAS,GAAGA,SAAS;IAC7B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,IAAAO,gBAAS,EAAC,MAAM;IACd,IAAAC,iBAAW,EAAC,MAAM;MAChBJ,KAAK,CAACH,SAAS,GAAGA,SAAS;IAC7B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,OAAOG,KAAK;AACd"}
|
|
@@ -24,7 +24,7 @@ function useCreateExport(params) {
|
|
|
24
24
|
window,
|
|
25
25
|
internalMonitor,
|
|
26
26
|
onlineState
|
|
27
|
-
} = (0, _providers.
|
|
27
|
+
} = (0, _providers.useWixPatternsContainer)();
|
|
28
28
|
return (0, _react.useCallback)(() => {
|
|
29
29
|
return new _state.ExportState({
|
|
30
30
|
transformPlatformizedQuery,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_providers","require","_state","_react","useCreateExport","params","collection","useCollectionContext","collectionPageState","useCollectionPageContext","createExportAsyncJobRequest","transformPlatformizedQuery","differentQueryEndpointThanCollection","customTotal","reportBi","exportModalState","saveAs","httpClient","showToast","translate","window","internalMonitor","onlineState","
|
|
1
|
+
{"version":3,"names":["_providers","require","_state","_react","useCreateExport","params","collection","useCollectionContext","collectionPageState","useCollectionPageContext","createExportAsyncJobRequest","transformPlatformizedQuery","differentQueryEndpointThanCollection","customTotal","reportBi","exportModalState","saveAs","httpClient","showToast","translate","window","internalMonitor","onlineState","useWixPatternsContainer","useCallback","ExportState"],"sources":["../../../src/hooks/useExport.ts"],"sourcesContent":["import { FiltersMap } from '../model';\nimport {\n useWixPatternsContainer,\n useCollectionContext,\n useCollectionPageContext,\n} from '../providers';\nimport {\n ExportState,\n ModalState,\n SaveAsFn,\n TransformQuery,\n CustomTotalFn,\n} from '../state';\nimport { ReportBI } from '../services';\nimport { useCallback } from 'react';\nimport { CreateExportAsyncJobRequest } from '@wix/bex-utils/@wix/ambassador-fedinfra-exportservice-v1-export-async-job/types';\n\nexport interface UseExportParams<T, F extends FiltersMap> {\n transformPlatformizedQuery?: TransformQuery<T, F>;\n differentQueryEndpointThanCollection?: boolean;\n customTotal?: CustomTotalFn<T, F>;\n createExportAsyncJobRequest: Partial<CreateExportAsyncJobRequest>;\n reportBi: ReportBI;\n exportModalState: ModalState;\n saveAs?: SaveAsFn<T, F>;\n}\n\nexport function useCreateExport<T, F extends FiltersMap>(\n params: UseExportParams<T, F>,\n) {\n const collection = useCollectionContext<T, F>();\n const collectionPageState = useCollectionPageContext();\n\n const {\n createExportAsyncJobRequest,\n transformPlatformizedQuery,\n differentQueryEndpointThanCollection,\n customTotal,\n reportBi,\n exportModalState,\n saveAs,\n } = params;\n\n const {\n httpClient,\n showToast,\n translate,\n window,\n internalMonitor,\n onlineState,\n } = useWixPatternsContainer();\n\n return useCallback(() => {\n return new ExportState({\n transformPlatformizedQuery,\n createExportAsyncJobRequest,\n saveAs,\n httpClient,\n showToast,\n translate,\n collection,\n differentQueryEndpointThanCollection,\n customTotal,\n reportBi,\n exportModalState,\n collectionPageState,\n window,\n onlineState,\n internalMonitor,\n });\n }, []);\n}\n"],"mappings":";;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AAQA,IAAAE,MAAA,GAAAF,OAAA;AAaO,SAASG,eAAeA,CAC7BC,MAA6B,EAC7B;EACA,MAAMC,UAAU,GAAG,IAAAC,+BAAoB,EAAO,CAAC;EAC/C,MAAMC,mBAAmB,GAAG,IAAAC,mCAAwB,EAAC,CAAC;EAEtD,MAAM;IACJC,2BAA2B;IAC3BC,0BAA0B;IAC1BC,oCAAoC;IACpCC,WAAW;IACXC,QAAQ;IACRC,gBAAgB;IAChBC;EACF,CAAC,GAAGX,MAAM;EAEV,MAAM;IACJY,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC,MAAM;IACNC,eAAe;IACfC;EACF,CAAC,GAAG,IAAAC,kCAAuB,EAAC,CAAC;EAE7B,OAAO,IAAAC,kBAAW,EAAC,MAAM;IACvB,OAAO,IAAIC,kBAAW,CAAC;MACrBd,0BAA0B;MAC1BD,2BAA2B;MAC3BM,MAAM;MACNC,UAAU;MACVC,SAAS;MACTC,SAAS;MACTb,UAAU;MACVM,oCAAoC;MACpCC,WAAW;MACXC,QAAQ;MACRC,gBAAgB;MAChBP,mBAAmB;MACnBY,MAAM;MACNE,WAAW;MACXD;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;AACR"}
|
|
@@ -7,7 +7,7 @@ var _react = require("react");
|
|
|
7
7
|
var _state = require("../state");
|
|
8
8
|
var _providers = require("../providers");
|
|
9
9
|
function useCreateOptimisticActions() {
|
|
10
|
-
const container = (0, _providers.
|
|
10
|
+
const container = (0, _providers.useWixPatternsContainer)();
|
|
11
11
|
return (0, _react.useCallback)((collection, params) => new _state.CollectionOptimisticActions({
|
|
12
12
|
container,
|
|
13
13
|
collection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_state","_providers","useCreateOptimisticActions","container","
|
|
1
|
+
{"version":3,"names":["_react","require","_state","_providers","useCreateOptimisticActions","container","useWixPatternsContainer","useCallback","collection","params","CollectionOptimisticActions","useOptimisticActions","createOptimisticActions","optimisticActions","useState","useEffect","init"],"sources":["../../../src/hooks/useOptimisticActions.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport {\n CollectionOptimisticActions,\n CollectionOptimisticActionsBaseParams,\n CollectionState,\n} from '../state';\nimport { FiltersMap } from '../model';\nimport { useWixPatternsContainer } from '../providers';\n\nexport function useCreateOptimisticActions() {\n const container = useWixPatternsContainer();\n\n return useCallback(\n <T, F extends FiltersMap>(\n collection: CollectionState<T, F>,\n params?: Partial<CollectionOptimisticActionsBaseParams<T, F>>,\n ) =>\n new CollectionOptimisticActions({\n container,\n collection,\n ...params,\n }),\n [],\n );\n}\n\nexport function useOptimisticActions<T, F extends FiltersMap>(\n collection: CollectionState<T, F>,\n params?: Partial<CollectionOptimisticActionsBaseParams<T, F>>,\n) {\n const createOptimisticActions = useCreateOptimisticActions();\n\n const [optimisticActions] = useState(() =>\n createOptimisticActions(collection, params),\n );\n\n useEffect(() => optimisticActions.init(), []);\n\n return optimisticActions;\n}\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AAEO,SAASG,0BAA0BA,CAAA,EAAG;EAC3C,MAAMC,SAAS,GAAG,IAAAC,kCAAuB,EAAC,CAAC;EAE3C,OAAO,IAAAC,kBAAW,EAChB,CACEC,UAAiC,EACjCC,MAA6D,KAE7D,IAAIC,kCAA2B,CAAC;IAC9BL,SAAS;IACTG,UAAU;IACV,GAAGC;EACL,CAAC,CAAC,EACJ,EACF,CAAC;AACH;AAEO,SAASE,oBAAoBA,CAClCH,UAAiC,EACjCC,MAA6D,EAC7D;EACA,MAAMG,uBAAuB,GAAGR,0BAA0B,CAAC,CAAC;EAE5D,MAAM,CAACS,iBAAiB,CAAC,GAAG,IAAAC,eAAQ,EAAC,MACnCF,uBAAuB,CAACJ,UAAU,EAAEC,MAAM,CAC5C,CAAC;EAED,IAAAM,gBAAS,EAAC,MAAMF,iBAAiB,CAACG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAE7C,OAAOH,iBAAiB;AAC1B"}
|
|
@@ -10,7 +10,7 @@ var _providers = require("../providers");
|
|
|
10
10
|
function useCreatePicker() {
|
|
11
11
|
const {
|
|
12
12
|
createBILogger
|
|
13
|
-
} = (0, _providers.
|
|
13
|
+
} = (0, _providers.useWixPatternsContainer)();
|
|
14
14
|
const createCollection = (0, _useCollection.useCreateCollection)();
|
|
15
15
|
return (0, _react.useCallback)(config => {
|
|
16
16
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_useCollection","_state","_providers","useCreatePicker","createBILogger","
|
|
1
|
+
{"version":3,"names":["_react","require","_useCollection","_state","_providers","useCreatePicker","createBILogger","useWixPatternsContainer","createCollection","useCreateCollection","useCallback","config","events","collectionConfig","collection","PickerState","getMaxItems","undefined","reportBi","fqdn","usePicker","createPickerStandalone","state","useState"],"sources":["../../../src/hooks/usePicker.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { useCreateCollection } from './useCollection';\nimport { CollectionConfigWithConditionals } from './collectionConfigPartials';\nimport { FiltersMap, OptionalFiltersMap } from '../model';\nimport { PickerState } from '../state';\nimport { useWixPatternsContainer } from '../providers';\n\nexport type PickerConfig<\n T,\n F extends FiltersMap,\n> = CollectionConfigWithConditionals<T, F>;\nexport type PickerFactory = <T, F extends FiltersMap>(\n config: PickerConfig<T, F>,\n) => PickerState<T, F>;\n\nexport function useCreatePicker(): PickerFactory {\n const { createBILogger } = useWixPatternsContainer();\n const createCollection = useCreateCollection();\n\n return useCallback<PickerFactory>((config) => {\n const { events, ...collectionConfig } = config;\n\n const collection = createCollection({\n ...collectionConfig,\n events,\n });\n\n return new PickerState({\n getMaxItems: () => undefined,\n collection,\n events,\n reportBi: createBILogger({\n ...collection.fqdn,\n }),\n });\n }, []);\n}\n\nexport function usePicker<T, F extends FiltersMap = OptionalFiltersMap>(\n config: PickerConfig<T, F>,\n): PickerState<T, F> {\n const createPickerStandalone = useCreatePicker();\n\n const [state] = useState(() => createPickerStandalone<T, F>(config));\n\n return state;\n}\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAUO,SAASI,eAAeA,CAAA,EAAkB;EAC/C,MAAM;IAAEC;EAAe,CAAC,GAAG,IAAAC,kCAAuB,EAAC,CAAC;EACpD,MAAMC,gBAAgB,GAAG,IAAAC,kCAAmB,EAAC,CAAC;EAE9C,OAAO,IAAAC,kBAAW,EAAiBC,MAAM,IAAK;IAC5C,MAAM;MAAEC,MAAM;MAAE,GAAGC;IAAiB,CAAC,GAAGF,MAAM;IAE9C,MAAMG,UAAU,GAAGN,gBAAgB,CAAC;MAClC,GAAGK,gBAAgB;MACnBD;IACF,CAAC,CAAC;IAEF,OAAO,IAAIG,kBAAW,CAAC;MACrBC,WAAW,EAAEA,CAAA,KAAMC,SAAS;MAC5BH,UAAU;MACVF,MAAM;MACNM,QAAQ,EAAEZ,cAAc,CAAC;QACvB,GAAGQ,UAAU,CAACK;MAChB,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;AACR;AAEO,SAASC,SAASA,CACvBT,MAA0B,EACP;EACnB,MAAMU,sBAAsB,GAAGhB,eAAe,CAAC,CAAC;EAEhD,MAAM,CAACiB,KAAK,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMF,sBAAsB,CAAOV,MAAM,CAAC,CAAC;EAEpE,OAAOW,KAAK;AACd"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
5
|
-
function
|
|
4
|
+
exports.wixPatternsEnvironment = wixPatternsEnvironment;
|
|
5
|
+
function wixPatternsEnvironment(environment) {
|
|
6
6
|
const {
|
|
7
7
|
language,
|
|
8
8
|
artifactId = 'cairo-default-artifact-id',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["wixPatternsEnvironment","environment","language","artifactId","componentId","componentName","uiLibVersion","providerType"],"sources":["../../../src/model/cairoEnvironment.ts"],"sourcesContent":["import { Environment } from '../services';\nimport { WixPatternsEssentials } from './cairoEssentials';\n\nexport function wixPatternsEnvironment(\n environment: WixPatternsEssentials['environment'],\n): Environment {\n const {\n language,\n artifactId = 'cairo-default-artifact-id',\n componentId = artifactId,\n componentName = componentId,\n uiLibVersion,\n providerType,\n } = environment;\n\n return {\n language,\n artifactId,\n componentId,\n componentName,\n uiLibVersion,\n providerType,\n };\n}\n"],"mappings":";;;;AAGO,SAASA,sBAAsBA,CACpCC,WAAiD,EACpC;EACb,MAAM;IACJC,QAAQ;IACRC,UAAU,GAAG,2BAA2B;IACxCC,WAAW,GAAGD,UAAU;IACxBE,aAAa,GAAGD,WAAW;IAC3BE,YAAY;IACZC;EACF,CAAC,GAAGN,WAAW;EAEf,OAAO;IACLC,QAAQ;IACRC,UAAU;IACVC,WAAW;IACXC,aAAa;IACbC,YAAY;IACZC;EACF,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/model/cairoEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n ErrorMonitor,\n Experiments,\n MonitorLogger,\n OnlineManager,\n} from '../services';\nimport type { History } from 'history';\nimport type { QueryCache } from 'react-query/core';\nimport type { FunctionComponent } from 'react';\nimport { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type GetContentContainerY = (params: {\n maybeContainer?: HTMLElement | null | undefined;\n errorMonitor: Essentials['errorMonitor'];\n}) => number;\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): {\n report(reportProps: ReportProps): Promise<any>;\n };\n}\n\nexport type OnNavigationPause = () => { resume(): void };\nexport type OnNavigationCallback = (pause: OnNavigationPause) => void;\nexport type OnNavigation = (callback: OnNavigationCallback) => {\n remove(): void;\n};\n\nexport type BeforeUnloadResponse = {\n remove: () => void;\n};\nexport type OnBeforeUnload = (\n callback: (event: Event) => void,\n) => BeforeUnloadResponse;\n\nexport interface HostContainerExtension {\n appId?: string;\n componentId: string;\n title?: string;\n menuItem?: {\n IconComponent?: FunctionComponent;\n structuredAction: (params?: Record<string, any>) => unknown;\n };\n Extension?: React.ComponentType;\n}\nexport type GetExtensions = () =>\n | HostContainerExtension[]\n | Promise<HostContainerExtension[]>;\ninterface HostContainer {\n getExtensions: GetExtensions;\n}\n\nexport type GetHostContainer = (hostContainerId: string) => HostContainer;\n\ntype CreateEssentials = (options: EssentialsOptions) => {\n i18n: Essentials['i18n'];\n dataCapsule: Essentials['dataCapsule'];\n biLoggerFactory?: () => CairoBILoggerFactory;\n errorMonitor: ErrorMonitor;\n fedopsLogger?: MonitorLogger;\n experiments?: Experiments;\n};\nexport type CreateComponentSettings = (container: {\n httpClient: HttpClient;\n queryCache: QueryCache;\n environment: Environment;\n createEssentials: CreateEssentials;\n}) => (options: { namespace: string }) => DataCapsule;\n\nexport interface CairoEssentials {\n httpClient: HttpClient;\n /** A `ErrorMonitor` instance `@wix/fe-essentials/error-monitor` */\n errorMonitor: ErrorMonitor;\n /** A `Experiments` instance `@wix/fe-essentials/experiments` */\n experiments: Experiments;\n /**\n * A function that returns the shape `{ i18n }` - should be compatible with `{createEssentials} from '@wix/fe-essentials'` */\n createEssentials: CreateEssentials;\n /** A `DataCapsule` to store component-level settings such as `Views` */\n createComponentSettings?: CreateComponentSettings;\n /** The user's environment\n * - `language` - preferable language for the user\n * - `artifactId` - App level identifier, usually the artifact ID\n * - `componentId` - Component/page level identifier (Optional)\n * - `componentName` - Readable component/page name (Optional)\n */\n environment: Pick<Environment, 'language'> &\n Partial<Omit<Environment, 'language'>> & { uiLibVersion?: string };\n /** `useTranslation` hook from `react-i18next` or `@wix/fe-essentials/react` */\n useTranslation: typeof useTranslation;\n /** `Trans` component from `react-i18next` or `@wix/fe-essentials/react */\n Trans: typeof Trans;\n user: {\n permissions: string[];\n };\n /** `useExperiments` hook from `@wix/yoshi-flow-bm` or `@wix/fe-essentials/react` */\n useExperiments: () => {\n ready: boolean;\n experiments: {\n enabled: (key: string) => boolean;\n };\n };\n /** A function that shows a global toast. For BM usage, it should be `showToast` from `business-manager-api` */\n showToast?: ShowToast;\n /** A function to perform a navigation to a given pageId */\n navigateTo?: (params: {\n pageId: string;\n appState?: string;\n referrer?: string;\n }) => void;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\n getContentContainerY?: GetContentContainerY;\n /** Custom [history](https://github.com/remix-run/history/tree/v5.3.0/packages/history) instance to sync custom consumer navigations with Cairo navigations */\n history?: History;\n /** @deprecated use `environment.artifactId` instead */\n uiNamespace?: string;\n /** An optional query cache instance for controlling the cache from other modules */\n queryCache?: QueryCache;\n /** A function that interrupts a navigation to another app inside wix platforms */\n onNavigation?: OnNavigation;\n getHostContainer?: GetHostContainer;\n onlineManager?: OnlineManager;\n /**\n * Deals with dirty state by setting up a listener that triggers a confirmation dialog when a user attempts to leave a page. The event listener is removed upon component unmount.\n * @param callback - called on navigation with an event object. Use event.preventDefault() within the callback to display the dialog.\n * @returns { remove: () => void } - object that includes a remove method. You can use this method to remove the listener whenever necessary.\n */\n onBeforeUnload?: OnBeforeUnload;\n}\n\nexport interface
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/model/cairoEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n ErrorMonitor,\n Experiments,\n MonitorLogger,\n OnlineManager,\n} from '../services';\nimport type { History } from 'history';\nimport type { QueryCache } from 'react-query/core';\nimport type { FunctionComponent } from 'react';\nimport { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type GetContentContainerY = (params: {\n maybeContainer?: HTMLElement | null | undefined;\n errorMonitor: Essentials['errorMonitor'];\n}) => number;\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): {\n report(reportProps: ReportProps): Promise<any>;\n };\n}\n\nexport type OnNavigationPause = () => { resume(): void };\nexport type OnNavigationCallback = (pause: OnNavigationPause) => void;\nexport type OnNavigation = (callback: OnNavigationCallback) => {\n remove(): void;\n};\n\nexport type BeforeUnloadResponse = {\n remove: () => void;\n};\nexport type OnBeforeUnload = (\n callback: (event: Event) => void,\n) => BeforeUnloadResponse;\n\nexport interface HostContainerExtension {\n appId?: string;\n componentId: string;\n title?: string;\n menuItem?: {\n IconComponent?: FunctionComponent;\n structuredAction: (params?: Record<string, any>) => unknown;\n };\n Extension?: React.ComponentType;\n}\nexport type GetExtensions = () =>\n | HostContainerExtension[]\n | Promise<HostContainerExtension[]>;\ninterface HostContainer {\n getExtensions: GetExtensions;\n}\n\nexport type GetHostContainer = (hostContainerId: string) => HostContainer;\n\ntype CreateEssentials = (options: EssentialsOptions) => {\n i18n: Essentials['i18n'];\n dataCapsule: Essentials['dataCapsule'];\n biLoggerFactory?: () => CairoBILoggerFactory;\n errorMonitor: ErrorMonitor;\n fedopsLogger?: MonitorLogger;\n experiments?: Experiments;\n};\nexport type CreateComponentSettings = (container: {\n httpClient: HttpClient;\n queryCache: QueryCache;\n environment: Environment;\n createEssentials: CreateEssentials;\n}) => (options: { namespace: string }) => DataCapsule;\n\n/**\n * @deprecated\n * use `WixPatternsEssentials`\n */\nexport interface CairoEssentials {\n httpClient: HttpClient;\n /** A `ErrorMonitor` instance `@wix/fe-essentials/error-monitor` */\n errorMonitor: ErrorMonitor;\n /** A `Experiments` instance `@wix/fe-essentials/experiments` */\n experiments: Experiments;\n /**\n * A function that returns the shape `{ i18n }` - should be compatible with `{createEssentials} from '@wix/fe-essentials'` */\n createEssentials: CreateEssentials;\n /** A `DataCapsule` to store component-level settings such as `Views` */\n createComponentSettings?: CreateComponentSettings;\n /** The user's environment\n * - `language` - preferable language for the user\n * - `artifactId` - App level identifier, usually the artifact ID\n * - `componentId` - Component/page level identifier (Optional)\n * - `componentName` - Readable component/page name (Optional)\n */\n environment: Pick<Environment, 'language'> &\n Partial<Omit<Environment, 'language'>> & { uiLibVersion?: string };\n /** `useTranslation` hook from `react-i18next` or `@wix/fe-essentials/react` */\n useTranslation: typeof useTranslation;\n /** `Trans` component from `react-i18next` or `@wix/fe-essentials/react */\n Trans: typeof Trans;\n user: {\n permissions: string[];\n };\n /** `useExperiments` hook from `@wix/yoshi-flow-bm` or `@wix/fe-essentials/react` */\n useExperiments: () => {\n ready: boolean;\n experiments: {\n enabled: (key: string) => boolean;\n };\n };\n /** A function that shows a global toast. For BM usage, it should be `showToast` from `business-manager-api` */\n showToast?: ShowToast;\n /** A function to perform a navigation to a given pageId */\n navigateTo?: (params: {\n pageId: string;\n appState?: string;\n referrer?: string;\n }) => void;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\n getContentContainerY?: GetContentContainerY;\n /** Custom [history](https://github.com/remix-run/history/tree/v5.3.0/packages/history) instance to sync custom consumer navigations with Cairo navigations */\n history?: History;\n /** @deprecated use `environment.artifactId` instead */\n uiNamespace?: string;\n /** An optional query cache instance for controlling the cache from other modules */\n queryCache?: QueryCache;\n /** A function that interrupts a navigation to another app inside wix platforms */\n onNavigation?: OnNavigation;\n getHostContainer?: GetHostContainer;\n onlineManager?: OnlineManager;\n /**\n * Deals with dirty state by setting up a listener that triggers a confirmation dialog when a user attempts to leave a page. The event listener is removed upon component unmount.\n * @param callback - called on navigation with an event object. Use event.preventDefault() within the callback to display the dialog.\n * @returns { remove: () => void } - object that includes a remove method. You can use this method to remove the listener whenever necessary.\n */\n onBeforeUnload?: OnBeforeUnload;\n}\n\nexport interface WixPatternsEssentials extends CairoEssentials {}\n\nexport interface WixPatternsEssentialsOverrides\n extends Omit<Partial<WixPatternsEssentials>, 'environment'> {\n environment: Partial<WixPatternsEssentials['environment']>;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/model/cairoInitialProps.ts"],"sourcesContent":["import type { Messages } from '@wix/fe-essentials/i18n';\n\nexport interface
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/model/cairoInitialProps.ts"],"sourcesContent":["import type { Messages } from '@wix/fe-essentials/i18n';\n\nexport interface WixPatternsInitialProps {\n messages?: Messages;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../../src/model/computedQuery/computedQuery.ts"],"sourcesContent":["import { SortDirection } from '../commonTypes';\nimport { Filter, FiltersMap, OptionalFiltersMap } from '../filter';\n\nexport type ExtractFilterValue<T> = T extends Filter<infer U> ? U : undefined;\n\nexport type RawFilters<F extends FiltersMap> = Partial<{\n [P in keyof F]: ExtractFilterValue<F[P]>;\n}>;\n\nexport type FiltersKey<F extends FiltersMap> = Partial<{\n [P in keyof F]: string[] | undefined | null;\n}>;\n\nexport type AllFilters<F extends FiltersMap> = F & { search: Filter<string> };\n\nexport type FiltersValues<F extends FiltersMap> = {\n [P in keyof F]: {\n value?: ExtractFilterValue<F[P]>;\n };\n};\n\nexport interface Sort {\n field: string;\n direction: SortDirection;\n}\n\nexport interface ComputedQuery<F extends FiltersMap = OptionalFiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset: number;\n page: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * Current search term (defaults to `''` for empty search)\n */\n rawSearch: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/model/computedQuery/computedQuery.ts"],"sourcesContent":["import { SortDirection } from '../commonTypes';\nimport { Filter, FiltersMap, OptionalFiltersMap } from '../filter';\n\nexport type ExtractFilterValue<T> = T extends Filter<infer U> ? U : undefined;\n\nexport type RawFilters<F extends FiltersMap> = Partial<{\n [P in keyof F]: ExtractFilterValue<F[P]>;\n}>;\n\nexport type FiltersKey<F extends FiltersMap> = Partial<{\n [P in keyof F]: string[] | undefined | null;\n}>;\n\nexport type AllFilters<F extends FiltersMap> = F & { search: Filter<string> };\n\nexport type FiltersValues<F extends FiltersMap> = {\n [P in keyof F]: {\n value?: ExtractFilterValue<F[P]>;\n };\n};\n\nexport interface Sort {\n field: string;\n direction: SortDirection;\n}\n\nexport interface ComputedQuery<F extends FiltersMap = OptionalFiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset: number;\n page: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * Current search term (defaults to `''` for empty search)\n */\n rawSearch: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](./?path=/story/common-hooks--usecollection).\n */\n filters: RawFilters<F>;\n /**\n * Same as `filters` but defaults to `undefined` for empty filter values\n */\n rawFilters: RawFilters<F>;\n /**\n * Whether at least one filter is not empty\n */\n hasActiveFilters: boolean;\n /**\n * Whether at least one filter is not empty, not including tabs\n */\n hasNonPersistentActiveFilters: boolean;\n /**\n * Current sort applied to the collection.\n */\n sort?: { fieldName: string; order: 'asc' | 'desc' }[];\n\n /**\n * @deprecated Use `fields` instead\n */\n columns?: string[];\n /**\n * Array of projected fields. A list of specific field names to fetch. Use this to optimize your server query to load only needed columns. Note that a mapping between client-side columns to server-fields is usually required.\n * Use `refreshOnColumnsChange` of [useCollection](./?path=/story/common-hooks--usecollection) to control whether the collection should be refreshed when this value changes.\n */\n fields?: string[];\n}\n\nexport interface ComputedQueryFull<F extends FiltersMap = OptionalFiltersMap>\n extends ComputedQuery<F> {\n filtersKey: FiltersKey<F>;\n nonPersistentFiltersKey: FiltersKey<F>;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/model/filter.ts"],"sourcesContent":["import { TypedEmitter } from '../util';\n\n/*\nchange - whenever we want to notify that the value was changed, for additional side effects, i.e BI events. For example, when initializing the value, we don't want to emit this event.\nrefresh - the collection should be refreshed as a result of this change\nscheduleRefresh - the collection should schedule a refresh as a result of this change\n */\ntype FilterEvent = 'change' | 'refresh' | 'scheduleRefresh' | 'beforeRefresh';\n\nexport interface ChangeValueOptions {\n emitEvents?: FilterEvent[];\n clearResult?: boolean;\n actionType?: 'add' | 'remove';\n clickedValueKey?: string;\n}\n\nexport type FilterItem<T> = T extends (infer V)[] ? V : T;\n\nexport interface FilterEventOptions {\n clearResult?: boolean;\n actionType?: 'add' | 'remove';\n clickedValueKey?: string;\n}\n\ninterface FilterEventsSchema {\n refresh: (opt: FilterEventOptions | undefined) => unknown;\n beforeRefresh: (opt: FilterEventOptions | undefined) => unknown;\n change: (opt?: FilterEventOptions) => unknown;\n scheduleRefresh: (opt?: FilterEventOptions) => unknown;\n}\n\nexport type FilterEvents = TypedEmitter<FilterEventsSchema>;\n\nexport interface Filter<T> {\n events: TypedEmitter<FilterEventsSchema>;\n name: string;\n persistent?: boolean;\n readonly value: T;\n readonly toArray: FilterItem<T>[];\n readonly isEmpty: boolean;\n readonly toQueryString: string;\n readonly decode: (value: unknown) => T;\n readonly encode: (value: T) => unknown;\n readonly size: number;\n readonly itemKey: (item: FilterItem<T>) => string;\n readonly itemName: (item: FilterItem<T>) => string;\n readonly matches: (item: FilterItem<T>, value: T) => boolean;\n readonly entityName: (pluralization: number) => string;\n readonly equals?: (item1: FilterItem<T>, item2: FilterItem<T>) => boolean;\n\n applyFromQueryString(str: string): void;\n setValue(value: T, options?: ChangeValueOptions): void;\n changeValue(value: T, options?: ChangeValueOptions): void;\n refresh(value: T, options?: ChangeValueOptions): void;\n scheduleRefresh(value: T): void;\n reset(options?: ChangeValueOptions): void;\n remove(items: FilterItem<T>[], options?: ChangeValueOptions): void;\n clone(...args: any[]): Filter<T>;\n hasDiff(items: T): boolean;\n}\n\nexport interface FilterStateBaseParams<T> {\n name?: string;\n /**\n * Marks the filter as a \"context\" or \"scope\" filter. This makes the filter not be visible in the sub-toolbar tag list, not saved in views, not counted as \"X filters applied\".\n * @external\n */\n persistent?: boolean;\n /**\n * The value to initialize the filter with (Optional)\n * @external\n */\n initialValue?: T;\n\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n * @external\n */\n itemKey: (item: FilterItem<T>) => string;\n /**\n * A callback function that accepts an item and returns the item name which is used in many messages through cairo\n * @external\n */\n itemName: (item: FilterItem<T>) => string;\n /**\n * @deprecated No longer required. To customize filters panel accordion item label pass [accordionItemProps.label](
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/model/filter.ts"],"sourcesContent":["import { TypedEmitter } from '../util';\n\n/*\nchange - whenever we want to notify that the value was changed, for additional side effects, i.e BI events. For example, when initializing the value, we don't want to emit this event.\nrefresh - the collection should be refreshed as a result of this change\nscheduleRefresh - the collection should schedule a refresh as a result of this change\n */\ntype FilterEvent = 'change' | 'refresh' | 'scheduleRefresh' | 'beforeRefresh';\n\nexport interface ChangeValueOptions {\n emitEvents?: FilterEvent[];\n clearResult?: boolean;\n actionType?: 'add' | 'remove';\n clickedValueKey?: string;\n}\n\nexport type FilterItem<T> = T extends (infer V)[] ? V : T;\n\nexport interface FilterEventOptions {\n clearResult?: boolean;\n actionType?: 'add' | 'remove';\n clickedValueKey?: string;\n}\n\ninterface FilterEventsSchema {\n refresh: (opt: FilterEventOptions | undefined) => unknown;\n beforeRefresh: (opt: FilterEventOptions | undefined) => unknown;\n change: (opt?: FilterEventOptions) => unknown;\n scheduleRefresh: (opt?: FilterEventOptions) => unknown;\n}\n\nexport type FilterEvents = TypedEmitter<FilterEventsSchema>;\n\nexport interface Filter<T> {\n events: TypedEmitter<FilterEventsSchema>;\n name: string;\n persistent?: boolean;\n readonly value: T;\n readonly toArray: FilterItem<T>[];\n readonly isEmpty: boolean;\n readonly toQueryString: string;\n readonly decode: (value: unknown) => T;\n readonly encode: (value: T) => unknown;\n readonly size: number;\n readonly itemKey: (item: FilterItem<T>) => string;\n readonly itemName: (item: FilterItem<T>) => string;\n readonly matches: (item: FilterItem<T>, value: T) => boolean;\n readonly entityName: (pluralization: number) => string;\n readonly equals?: (item1: FilterItem<T>, item2: FilterItem<T>) => boolean;\n\n applyFromQueryString(str: string): void;\n setValue(value: T, options?: ChangeValueOptions): void;\n changeValue(value: T, options?: ChangeValueOptions): void;\n refresh(value: T, options?: ChangeValueOptions): void;\n scheduleRefresh(value: T): void;\n reset(options?: ChangeValueOptions): void;\n remove(items: FilterItem<T>[], options?: ChangeValueOptions): void;\n clone(...args: any[]): Filter<T>;\n hasDiff(items: T): boolean;\n}\n\nexport interface FilterStateBaseParams<T> {\n name?: string;\n /**\n * Marks the filter as a \"context\" or \"scope\" filter. This makes the filter not be visible in the sub-toolbar tag list, not saved in views, not counted as \"X filters applied\".\n * @external\n */\n persistent?: boolean;\n /**\n * The value to initialize the filter with (Optional)\n * @external\n */\n initialValue?: T;\n\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n * @external\n */\n itemKey: (item: FilterItem<T>) => string;\n /**\n * A callback function that accepts an item and returns the item name which is used in many messages through cairo\n * @external\n */\n itemName: (item: FilterItem<T>) => string;\n /**\n * @deprecated No longer required. To customize filters panel accordion item label pass [accordionItemProps.label](./?path=/story/components-filters--filterprops) prop to the filter component\n */\n entityName?: (pluralization: number) => string;\n\n /**\n * A function which accepts 2 items and returns true if they are equal\n * @external\n */\n equals?: (item1: FilterItem<T>, item2: FilterItem<T>) => boolean;\n}\n\nexport type FiltersMap = { [key: string]: Filter<any> | undefined };\nexport type OptionalFiltersMap = { [key: string]: undefined };\n"],"mappings":""}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
4
|
+
exports.useWixPatternsContainerOverrides = exports.WixPatternsContainerOverridesProvider = exports.WixPatternsContainerOverridesContext = exports.WixPatternsContainerOverridesConsumer = exports.CairoContainerOverridesProvider = void 0;
|
|
5
5
|
var _react = require("react");
|
|
6
6
|
const Context = /*#__PURE__*/(0, _react.createContext)({});
|
|
7
|
-
const
|
|
7
|
+
const WixPatternsContainerOverridesContext = exports.WixPatternsContainerOverridesContext = Context;
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated
|
|
10
|
+
* use `WixPatternsContainerOverridesProvider`
|
|
11
|
+
*/
|
|
8
12
|
const CairoContainerOverridesProvider = exports.CairoContainerOverridesProvider = Context.Provider;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
13
|
+
const WixPatternsContainerOverridesProvider = exports.WixPatternsContainerOverridesProvider = Context.Provider;
|
|
14
|
+
const WixPatternsContainerOverridesConsumer = exports.WixPatternsContainerOverridesConsumer = Context.Consumer;
|
|
15
|
+
const useWixPatternsContainerOverrides = () => (0, _react.useContext)(Context);
|
|
16
|
+
exports.useWixPatternsContainerOverrides = useWixPatternsContainerOverrides;
|
|
12
17
|
//# sourceMappingURL=CairoContainerOverridesContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","Context","createContext","
|
|
1
|
+
{"version":3,"names":["_react","require","Context","createContext","WixPatternsContainerOverridesContext","exports","CairoContainerOverridesProvider","Provider","WixPatternsContainerOverridesProvider","WixPatternsContainerOverridesConsumer","Consumer","useWixPatternsContainerOverrides","useContext"],"sources":["../../../src/providers/CairoContainerOverridesContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { WixPatternsContainerParams } from '../state';\n\nconst Context = createContext<Partial<WixPatternsContainerParams>>({});\n\nexport const WixPatternsContainerOverridesContext = Context;\n/**\n * @deprecated\n * use `WixPatternsContainerOverridesProvider`\n */\nexport const CairoContainerOverridesProvider = Context.Provider;\nexport const WixPatternsContainerOverridesProvider = Context.Provider;\nexport const WixPatternsContainerOverridesConsumer = Context.Consumer;\nexport const useWixPatternsContainerOverrides = () => useContext(Context);\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,MAAMC,OAAO,gBAAG,IAAAC,oBAAa,EAAsC,CAAC,CAAC,CAAC;AAE/D,MAAMC,oCAAoC,GAAAC,OAAA,CAAAD,oCAAA,GAAGF,OAAO;AAC3D;AACA;AACA;AACA;AACO,MAAMI,+BAA+B,GAAAD,OAAA,CAAAC,+BAAA,GAAGJ,OAAO,CAACK,QAAQ;AACxD,MAAMC,qCAAqC,GAAAH,OAAA,CAAAG,qCAAA,GAAGN,OAAO,CAACK,QAAQ;AAC9D,MAAME,qCAAqC,GAAAJ,OAAA,CAAAI,qCAAA,GAAGP,OAAO,CAACQ,QAAQ;AAC9D,MAAMC,gCAAgC,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACV,OAAO,CAAC;AAACG,OAAA,CAAAM,gCAAA,GAAAA,gCAAA"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.useCairoContainer = exports.
|
|
4
|
+
exports.useWixPatternsContainer = exports.useCairoContainer = exports.WixPatternsContainerProvider = exports.WixPatternsContainerContext = exports.WixPatternsContainerConsumer = void 0;
|
|
5
5
|
var _createContext = require("../createContext");
|
|
6
6
|
const {
|
|
7
7
|
useContext,
|
|
8
8
|
Provider,
|
|
9
9
|
Context,
|
|
10
10
|
Consumer
|
|
11
|
-
} = (0, _createContext.createContext)('
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
11
|
+
} = (0, _createContext.createContext)('WixPatternsContainerProvider');
|
|
12
|
+
const WixPatternsContainerProvider = exports.WixPatternsContainerProvider = Provider;
|
|
13
|
+
const WixPatternsContainerConsumer = exports.WixPatternsContainerConsumer = Consumer;
|
|
14
|
+
const WixPatternsContainerContext = exports.WixPatternsContainerContext = Context;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated
|
|
17
|
+
* use `useWixPatternsContainer`
|
|
18
|
+
*/
|
|
15
19
|
const useCairoContainer = exports.useCairoContainer = useContext;
|
|
20
|
+
const useWixPatternsContainer = exports.useWixPatternsContainer = useContext;
|
|
16
21
|
//# sourceMappingURL=CairoContainerProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createContext","require","useContext","Provider","Context","Consumer","createContext","
|
|
1
|
+
{"version":3,"names":["_createContext","require","useContext","Provider","Context","Consumer","createContext","WixPatternsContainerProvider","exports","WixPatternsContainerConsumer","WixPatternsContainerContext","useCairoContainer","useWixPatternsContainer"],"sources":["../../../../src/providers/CairoContainerProvider/CairoContainerProvider.ts"],"sourcesContent":["import { WixPatternsContainer } from '../../state';\nimport { createContext } from '../createContext';\n\nconst { useContext, Provider, Context, Consumer } =\n createContext<WixPatternsContainer>('WixPatternsContainerProvider');\n\nexport const WixPatternsContainerProvider = Provider;\nexport const WixPatternsContainerConsumer = Consumer;\nexport const WixPatternsContainerContext = Context;\n/**\n * @deprecated\n * use `useWixPatternsContainer`\n */\nexport const useCairoContainer = useContext;\nexport const useWixPatternsContainer = useContext;\n"],"mappings":";;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAEA,MAAM;EAAEC,UAAU;EAAEC,QAAQ;EAAEC,OAAO;EAAEC;AAAS,CAAC,GAC/C,IAAAC,4BAAa,EAAuB,8BAA8B,CAAC;AAE9D,MAAMC,4BAA4B,GAAAC,OAAA,CAAAD,4BAAA,GAAGJ,QAAQ;AAC7C,MAAMM,4BAA4B,GAAAD,OAAA,CAAAC,4BAAA,GAAGJ,QAAQ;AAC7C,MAAMK,2BAA2B,GAAAF,OAAA,CAAAE,2BAAA,GAAGN,OAAO;AAClD;AACA;AACA;AACA;AACO,MAAMO,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAGT,UAAU;AACpC,MAAMU,uBAAuB,GAAAJ,OAAA,CAAAI,uBAAA,GAAGV,UAAU"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.useCairoInitialProps = exports.
|
|
4
|
+
exports.useCairoInitialProps = exports.WixPatternsInitialPropsProvider = void 0;
|
|
5
5
|
var _react = require("react");
|
|
6
6
|
const Context = /*#__PURE__*/(0, _react.createContext)({});
|
|
7
|
-
const
|
|
7
|
+
const WixPatternsInitialPropsProvider = exports.WixPatternsInitialPropsProvider = Context.Provider;
|
|
8
8
|
const useCairoInitialProps = () => (0, _react.useContext)(Context);
|
|
9
9
|
exports.useCairoInitialProps = useCairoInitialProps;
|
|
10
10
|
//# sourceMappingURL=CairoInitialPropsProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","Context","createContext","
|
|
1
|
+
{"version":3,"names":["_react","require","Context","createContext","WixPatternsInitialPropsProvider","exports","Provider","useCairoInitialProps","useContext"],"sources":["../../../src/providers/CairoInitialPropsProvider.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport { WixPatternsInitialProps } from '../model';\n\nconst Context = createContext<WixPatternsInitialProps>({});\nexport const WixPatternsInitialPropsProvider = Context.Provider;\nexport const useCairoInitialProps = () => useContext(Context);\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,MAAMC,OAAO,gBAAG,IAAAC,oBAAa,EAA0B,CAAC,CAAC,CAAC;AACnD,MAAMC,+BAA+B,GAAAC,OAAA,CAAAD,+BAAA,GAAGF,OAAO,CAACI,QAAQ;AACxD,MAAMC,oBAAoB,GAAGA,CAAA,KAAM,IAAAC,iBAAU,EAACN,OAAO,CAAC;AAACG,OAAA,CAAAE,oBAAA,GAAAA,oBAAA"}
|
|
@@ -15,7 +15,7 @@ function CairoProvider({
|
|
|
15
15
|
children,
|
|
16
16
|
localCache = true
|
|
17
17
|
}) {
|
|
18
|
-
const containerOverrides = (0, _CairoContainerOverridesContext.
|
|
18
|
+
const containerOverrides = (0, _CairoContainerOverridesContext.useWixPatternsContainerOverrides)();
|
|
19
19
|
const initialProps = (0, _CairoInitialPropsProvider.useCairoInitialProps)();
|
|
20
20
|
const [container] = (0, _react.useState)(() => (0, _state.buildCairoContainer)(value, {
|
|
21
21
|
containerOverrides,
|
|
@@ -28,7 +28,7 @@ function CairoProvider({
|
|
|
28
28
|
(0, _react.useEffect)(() => {
|
|
29
29
|
return container.init();
|
|
30
30
|
}, []);
|
|
31
|
-
return /*#__PURE__*/_react.default.createElement(_CairoContainerProvider.
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_CairoContainerProvider.WixPatternsContainerProvider, {
|
|
32
32
|
value: container,
|
|
33
33
|
__self: this,
|
|
34
34
|
__source: {
|