@wix/bex-core 2.36.0 → 2.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/cjs/InMemoryBackend/InMemoryBackend.js +6 -2
  2. package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
  3. package/dist/cjs/assets/locale/messages_cs.json +2 -0
  4. package/dist/cjs/assets/locale/messages_da.json +2 -0
  5. package/dist/cjs/assets/locale/messages_de.json +2 -0
  6. package/dist/cjs/assets/locale/messages_en.json +3 -1
  7. package/dist/cjs/assets/locale/messages_es.json +2 -0
  8. package/dist/cjs/assets/locale/messages_fr.json +2 -0
  9. package/dist/cjs/assets/locale/messages_hi.json +2 -0
  10. package/dist/cjs/assets/locale/messages_id.json +2 -0
  11. package/dist/cjs/assets/locale/messages_it.json +2 -0
  12. package/dist/cjs/assets/locale/messages_ja.json +2 -0
  13. package/dist/cjs/assets/locale/messages_ko.json +2 -0
  14. package/dist/cjs/assets/locale/messages_nl.json +2 -0
  15. package/dist/cjs/assets/locale/messages_no.json +2 -0
  16. package/dist/cjs/assets/locale/messages_pl.json +2 -0
  17. package/dist/cjs/assets/locale/messages_pt.json +2 -0
  18. package/dist/cjs/assets/locale/messages_ru.json +2 -0
  19. package/dist/cjs/assets/locale/messages_sv.json +2 -0
  20. package/dist/cjs/assets/locale/messages_th.json +2 -0
  21. package/dist/cjs/assets/locale/messages_tr.json +2 -0
  22. package/dist/cjs/assets/locale/messages_uk.json +2 -0
  23. package/dist/cjs/assets/locale/messages_vi.json +2 -0
  24. package/dist/cjs/assets/locale/messages_visuale2e.json +2 -0
  25. package/dist/cjs/assets/locale/messages_zh.json +2 -0
  26. package/dist/cjs/model/actionMove.js.map +1 -1
  27. package/dist/cjs/services/translations.js.map +1 -1
  28. package/dist/cjs/state/CollectionOptimisticActions.js +2 -1
  29. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  30. package/dist/cjs/state/CollectionOptimisticProcessor.js +1 -0
  31. package/dist/cjs/state/CollectionOptimisticProcessor.js.map +1 -1
  32. package/dist/cjs/state/CollectionState.js +16 -7
  33. package/dist/cjs/state/CollectionState.js.map +1 -1
  34. package/dist/cjs/state/index.js +7 -0
  35. package/dist/cjs/state/index.js.map +1 -1
  36. package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js +19 -0
  37. package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
  38. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +3 -0
  39. package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  40. package/dist/cjs/state/optimistic-simulation/orderByMoves.js +8 -0
  41. package/dist/cjs/state/optimistic-simulation/orderByMoves.js.map +1 -1
  42. package/dist/esm/InMemoryBackend/InMemoryBackend.js +8 -2
  43. package/dist/esm/InMemoryBackend/InMemoryBackend.js.map +1 -1
  44. package/dist/esm/assets/locale/messages_cs.json +2 -0
  45. package/dist/esm/assets/locale/messages_da.json +2 -0
  46. package/dist/esm/assets/locale/messages_de.json +2 -0
  47. package/dist/esm/assets/locale/messages_en.json +3 -1
  48. package/dist/esm/assets/locale/messages_es.json +2 -0
  49. package/dist/esm/assets/locale/messages_fr.json +2 -0
  50. package/dist/esm/assets/locale/messages_hi.json +2 -0
  51. package/dist/esm/assets/locale/messages_id.json +2 -0
  52. package/dist/esm/assets/locale/messages_it.json +2 -0
  53. package/dist/esm/assets/locale/messages_ja.json +2 -0
  54. package/dist/esm/assets/locale/messages_ko.json +2 -0
  55. package/dist/esm/assets/locale/messages_nl.json +2 -0
  56. package/dist/esm/assets/locale/messages_no.json +2 -0
  57. package/dist/esm/assets/locale/messages_pl.json +2 -0
  58. package/dist/esm/assets/locale/messages_pt.json +2 -0
  59. package/dist/esm/assets/locale/messages_ru.json +2 -0
  60. package/dist/esm/assets/locale/messages_sv.json +2 -0
  61. package/dist/esm/assets/locale/messages_th.json +2 -0
  62. package/dist/esm/assets/locale/messages_tr.json +2 -0
  63. package/dist/esm/assets/locale/messages_uk.json +2 -0
  64. package/dist/esm/assets/locale/messages_vi.json +2 -0
  65. package/dist/esm/assets/locale/messages_visuale2e.json +2 -0
  66. package/dist/esm/assets/locale/messages_zh.json +2 -0
  67. package/dist/esm/state/CollectionOptimisticActions.js +3 -1
  68. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  69. package/dist/esm/state/CollectionOptimisticProcessor.js +1 -0
  70. package/dist/esm/state/CollectionOptimisticProcessor.js.map +1 -1
  71. package/dist/esm/state/CollectionState.js +14 -4
  72. package/dist/esm/state/CollectionState.js.map +1 -1
  73. package/dist/esm/state/index.js +1 -0
  74. package/dist/esm/state/index.js.map +1 -1
  75. package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js +10 -0
  76. package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
  77. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +3 -0
  78. package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
  79. package/dist/esm/state/optimistic-simulation/orderByMoves.js +8 -1
  80. package/dist/esm/state/optimistic-simulation/orderByMoves.js.map +1 -1
  81. package/dist/types/InMemoryBackend/InMemoryBackend.d.ts +10 -6
  82. package/dist/types/InMemoryBackend/InMemoryBackend.d.ts.map +1 -1
  83. package/dist/types/model/actionMove.d.ts +1 -1
  84. package/dist/types/model/actionMove.d.ts.map +1 -1
  85. package/dist/types/services/translations.d.ts +1 -1
  86. package/dist/types/services/translations.d.ts.map +1 -1
  87. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  88. package/dist/types/state/CollectionOptimisticProcessor.d.ts.map +1 -1
  89. package/dist/types/state/CollectionState.d.ts +2 -0
  90. package/dist/types/state/CollectionState.d.ts.map +1 -1
  91. package/dist/types/state/index.d.ts +1 -0
  92. package/dist/types/state/index.d.ts.map +1 -1
  93. package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts +5 -0
  94. package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts.map +1 -0
  95. package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
  96. package/dist/types/state/optimistic-simulation/orderByMoves.d.ts +1 -0
  97. package/dist/types/state/optimistic-simulation/orderByMoves.d.ts.map +1 -1
  98. package/package.json +2 -2
@@ -20,6 +20,7 @@ class InMemoryBackend {
20
20
  (0, _defineProperty2.default)(this, "delay", void 0);
21
21
  (0, _defineProperty2.default)(this, "paginationMode", void 0);
22
22
  (0, _defineProperty2.default)(this, "enableTotal", void 0);
23
+ (0, _defineProperty2.default)(this, "excludeOrdinalFilters", void 0);
23
24
  (0, _defineProperty2.default)(this, "events", new _events.EventEmitter());
24
25
  (0, _defineProperty2.default)(this, "map", void 0);
25
26
  (0, _defineProperty2.default)(this, "chance", new _chance.Chance());
@@ -60,6 +61,7 @@ class InMemoryBackend {
60
61
  min: 0,
61
62
  max: 5
62
63
  };
64
+ this.excludeOrdinalFilters = _params.excludeOrdinalFilters ?? [];
63
65
  this.map = new Map(this.newList(_params.total).map(item => [this.itemKey(item), item]));
64
66
  }
65
67
  async simulateAsyncDelay({
@@ -149,10 +151,11 @@ class InMemoryBackend {
149
151
  }
150
152
  _getOrdinal(filters) {
151
153
  const {
152
- categoriesOrdinal
154
+ categoriesOrdinal,
155
+ excludeOrdinalFilters
153
156
  } = this;
154
157
  const category = (0, _core.hashQueryKey)([{
155
- filters
158
+ filters: Object.fromEntries(Object.entries(filters).filter(([key]) => !excludeOrdinalFilters.includes(key)))
156
159
  }]);
157
160
  const ordinal = categoriesOrdinal.get(category) ?? new Map();
158
161
  if (!categoriesOrdinal.has(category)) {
@@ -164,6 +167,7 @@ class InMemoryBackend {
164
167
  const {
165
168
  itemKey
166
169
  } = this;
170
+ this.events.emit('moveStart', events);
167
171
  await this.simulateAsyncDelay(params);
168
172
  for (const {
169
173
  from,
@@ -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](./?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-types--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-types--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-types--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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","ignoreList":[]}
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","excludeOrdinalFilters","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","Object","fromEntries","entries","key","includes","has","move","from","after","array","fromKey","toKey","fromIndex","splice","toIndex","i","len","updateAll","patch","patchedItems","unshift","newItems","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\ninterface MoveEvent<T, F extends FiltersMap> {\n from: IndexedItem<T>;\n after: IndexedItem<T> | null;\n over: IndexedItem<T>;\n filters: RawFilters<F>;\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-types--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-types--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-types--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 excludeOrdinalFilters?: string[];\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 excludeOrdinalFilters;\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 moveStart: (events: MoveEvent<T, 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.excludeOrdinalFilters = params.excludeOrdinalFilters ?? [];\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, excludeOrdinalFilters } = this;\n\n const category = hashQueryKey([\n {\n filters: Object.fromEntries(\n Object.entries(filters).filter(\n ([key]) => !excludeOrdinalFilters.includes(key),\n ),\n ),\n },\n ]);\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: MoveEvent<T, F>[],\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n } = {},\n ) {\n const { itemKey } = this;\n this.events.emit('moveStart', events);\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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","ignoreList":[]}
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Vše",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Zadejte název.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Správa tagů",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Sestupně",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Vrátit zpět",
196
197
  "cairo.manageView.Rename.modal.field.title": "Název",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Zrušit export?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Zjistit více",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Zpět",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Toto pole a informace, které v něm byly shromážděny, budou archivovány a nelze je obnovit.",
345
347
  "cairo.emptyState.premium.title": "Upgradujte pomocí plánu",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Číslo (desetinné)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Alle",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Indtast et navn.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Administrer tags",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Faldende",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Fortryd",
196
197
  "cairo.manageView.Rename.modal.field.title": "Navn",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Annuller eksporten?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Læs mere",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuller",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Dette felt og de oplysninger, der er indsamlet til det, arkiveres og kan ikke gendannes.",
345
347
  "cairo.emptyState.premium.title": "Opgrader med et abonnement",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Tal (decimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Alle",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Gib einen Namen ein.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Tags verwalten",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Absteigend",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Rückgängig",
196
197
  "cairo.manageView.Rename.modal.field.title": "Name",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Exportieren abbrechen?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Mehr erfahren",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Abbrechen",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Dieses Feld und die dazugehörigen Informationen werden archiviert und können nicht wiederhergestellt werden.",
345
347
  "cairo.emptyState.premium.title": "Auf ein Website-Paket upgraden",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Zahl (dezimal)",
@@ -433,5 +433,7 @@
433
433
  "cairo.updatedView.collectionPage.toast.desc": "Refresh to update the view with your recent changes.",
434
434
  "cairo.updatedView.collectionPage.toast.cta": "Refresh View",
435
435
  "cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
436
- "cairo.subtitle.learnMore": "Learn more"
436
+ "cairo.subtitle.learnMore": "Learn more",
437
+ "cairo.tags.creationLimitReached.error": "Unable to create more than 100 tags.",
438
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit."
437
439
  }
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Todo",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Escribe un nombre.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Administrar etiquetas",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Descendente",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Deshacer",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nombre",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "¿Cancelar la exportación?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Leer más",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancelar",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Este campo y la información recopilada en él se archivarán y no se podrán restaurar.",
345
347
  "cairo.emptyState.premium.title": "Haz Upgrade con un plan",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Número (decimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Tout",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Saisissez un nom.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Gérer les libellés",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Ordre décroissant",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Annuler",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nom",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Annuler l'exportation ?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "En savoir plus",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuler",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Ce champ et les informations qui y sont collectées seront archivés et ne pourront pas être restaurés.",
345
347
  "cairo.emptyState.premium.title": "Booster avec un forfait",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Nombre (décimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "सभी",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Enter a name.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Manage Tags",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "अवरोही",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Undo",
196
197
  "cairo.manageView.Rename.modal.field.title": "नाम",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "क्या निर्यात रद्द करें?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "और अधिक जानें",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancel",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "यह फ़ील्ड और इसमें एकत्र की गई जानकारी संग्रहीत की जाएगी और इसे बहाल नहीं किया जा सकता।",
345
347
  "cairo.emptyState.premium.title": "Upgrade to a plan",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Number (decimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Semua",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Masukkan nama.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Kelola Tag",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Turun",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Batalkan",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nama",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Batalkan ekspor?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Pelajari selengkapnya",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Batal",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Kolom ini dan informasi yang dikumpulkan ke dalamnya akan diarsipkan dan tidak dapat dipulihkan.",
345
347
  "cairo.emptyState.premium.title": "Upgrade dengan paket",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Angka (desimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Tutti",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Inserisci un nome.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Gestisci tag",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Discendente",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Annulla",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nome",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Annullare l'esportazione?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Scopri di più",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annulla",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Questo campo e le informazioni che ha raccolto saranno archiviate e non potrai ripristinarle.",
345
347
  "cairo.emptyState.premium.title": "Fai l'upgrade con un pacchetto",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Numero (decimale)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "すべて",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "名前を入力してください。",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "タグを管理する",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "降順",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "元に戻す",
196
197
  "cairo.manageView.Rename.modal.field.title": "名前",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "エクスポートをキャンセルしますか?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "詳しくはこちら",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "キャンセル",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "この項目および収集された情報はアーカイブされ、復元することはできません。",
345
347
  "cairo.emptyState.premium.title": "プランでアップグレード",
346
348
  "cairo.customFields.fieldType.numberDecimal": "数字(10進数)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "전체",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "이름을 입력하세요.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "태그 관리",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "내림차순",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "실행 취소",
196
197
  "cairo.manageView.Rename.modal.field.title": "이름",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "내보내기 취소",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "자세히 보기",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "취소",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "입력란 및 수집된 정보가 보관 처리되며 보관 후에는 복구할 수 없습니다.",
345
347
  "cairo.emptyState.premium.title": "플랜으로 업그레이드하기",
346
348
  "cairo.customFields.fieldType.numberDecimal": "숫자(소수)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Alle",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Voer een naam in.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Tags beheren",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Aflopend",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Ongedaan maken",
196
197
  "cairo.manageView.Rename.modal.field.title": "Naam",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Export annuleren?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Lees meer",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Annuleren",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Dit veld en de daarin verzamelde informatie wordt gearchiveerd en kan niet hersteld worden.",
345
347
  "cairo.emptyState.premium.title": "Upgrade met een pakket",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Getal (decimaal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Alle",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Angi et navn.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Administrer tagger",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Synkende",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Angre",
196
197
  "cairo.manageView.Rename.modal.field.title": "Navn",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Vil du avbryte eksporten?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Finn ut mer",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Avbryt",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Dette feltet og informasjonen som samles inn til det, vil bli arkivert og kan ikke gjenopprettes.",
345
347
  "cairo.emptyState.premium.title": "Oppgrader med en pakke",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Tall (desimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Wszystkie",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Wpisz nazwę.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Zarządzaj tagami",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Malejąco",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Cofnij",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nazwa",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Anulować eksportowanie?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Dowiedz się więcej",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Anuluj",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "To pole i zebrane w nim informacje zostaną zarchiwizowane i nie będzie można ich przywrócić.",
345
347
  "cairo.emptyState.premium.title": "Przejdź na wyższy plan",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Liczba (dziesiętna)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Todos",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Insira um nome.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Gerenciar tags",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Decrescente",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Desfazer",
196
197
  "cairo.manageView.Rename.modal.field.title": "Nome",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Cancelar a exportação?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Saiba mais",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Cancelar",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Este campo e as informações coletadas nele serão arquivados e não poderão ser restaurados.",
345
347
  "cairo.emptyState.premium.title": "Faça upgrade com um plano",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Número (decimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Все",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Введите название.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Управлять тегами",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "По убыванию",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Отменить",
196
197
  "cairo.manageView.Rename.modal.field.title": "Название",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Отменить экспорт?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Подробнее",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Отменить",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Это поле и информация в нем будут архивированы и не могут быть восстановлены.",
345
347
  "cairo.emptyState.premium.title": "Перейдите на премиум-план",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Число (десятичное)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Alla",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Ange ett namn.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Hantera taggar",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Fallande",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Ångra",
196
197
  "cairo.manageView.Rename.modal.field.title": "Namn",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Avbryt exporten?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": " Läs mer",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Avbryt",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Det här fältet och den insamlade informationen kommer att arkiveras och kan inte återställas.",
345
347
  "cairo.emptyState.premium.title": "Uppgradera med ett paket",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Siffra (decimal)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "ทั้งหมด",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "กรอกชื่อ",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "จัดการแท็ก",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "จากมากไปน้อย",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "เลิกทำ",
196
197
  "cairo.manageView.Rename.modal.field.title": "ชื่อ",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "ยกเลิกการส่งออกข้อมูลหรือไม่",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "ศึกษาเพิ่มเติม",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "ยกเลิก",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "ช่องข้อมูลนี้และข้อมูลที่เก็บไว้จะถูกเก็บถาวรและกู้คืนไม่ได้",
345
347
  "cairo.emptyState.premium.title": "อัปเกรดแพ็กเกจเว็บไซต์",
346
348
  "cairo.customFields.fieldType.numberDecimal": "ตัวเลข (ทศนิยม)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Tümü",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Bir ad girin.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Etiketleri Yönet",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Azalan",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Geri Al",
196
197
  "cairo.manageView.Rename.modal.field.title": "Ad",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Dışa Aktarma İptal Edilsin mi?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Daha Fazla Bilgi",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "İptal",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Bu alan ve alanda toplanan bilgiler arşivlenecek ve geri yüklenemeyecek.",
345
347
  "cairo.emptyState.premium.title": "Sitenizi Bir Paket ile Yükseltin",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Sayı (ondalık)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Усі",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Уведіть назву.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Керувати тегами",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "За спаданням",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Скасувати",
196
197
  "cairo.manageView.Rename.modal.field.title": "Назва",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Скасувати експорт?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Дізнатися більше",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Скасувати",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Це поле та зібрана в ньому інформація заархівуються без можливості відновлення.",
345
347
  "cairo.emptyState.premium.title": "Перейдіть на Преміум",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Число (десяткове)",
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "Tất cả",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "Nhập tên.",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "Quản lý thẻ",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "Giảm dần",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "Hoàn tác",
196
197
  "cairo.manageView.Rename.modal.field.title": "Tên",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "Hủy xuất?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "Tìm hiểu thêm",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "Hủy",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "Trường này và thông tin thu thập vào trường này sẽ được lưu trữ và không thể khôi phục được.",
345
347
  "cairo.emptyState.premium.title": "Nâng cấp bằng gói",
346
348
  "cairo.customFields.fieldType.numberDecimal": "Số (thập phân)",
@@ -290,5 +290,7 @@
290
290
  "cairo.dragAndDrop.live-region.itemDragged.sr": "{currentNumber} of {totalNumber}.",
291
291
  "cairo.dragAndDrop.live-region.itemGrabbed.sr": "Grabbed.",
292
292
  "cairo.dragAndDrop.button-role-label.sr": "Drag {itemName}.",
293
+ "cairo.entityPage.header.cancel.CTA": "Cancel",
294
+ "cairo.entityPage.header.save.CTA": "Save",
293
295
  "cairo.dragAndDrop.live-region.itemDropped.sr": "Dropped at {currentNumber}."
294
296
  }
@@ -191,6 +191,7 @@
191
191
  "cairo.filtersPanel.default.All": "所有",
192
192
  "cairo.tags.manageTags.modal.list.input.validation.noName": "請輸入名稱。",
193
193
  "cairo.tags.collectionPage.popover.manage.CTA": "管理標籤",
194
+ "cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
194
195
  "cairo.table.advanced-sorting.descending.order": "由大至小",
195
196
  "cairo.tags.applyChanges.toast.undo.CTA": "復原",
196
197
  "cairo.manageView.Rename.modal.field.title": "名稱",
@@ -341,6 +342,7 @@
341
342
  "cairo.export.cancelTheExport": "是否取消匯出?",
342
343
  "cairo.customFields.addCustomField.modal.PII.learnMore": "了解更多",
343
344
  "cairo.tags.manageTags.modal.list.input.cancel.CTA": "取消",
345
+ "cairo.tags.popover.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
344
346
  "cairo.customFields.archive.modal.description": "此欄位及收集到的資訊將被封存,且無法還原。",
345
347
  "cairo.emptyState.premium.title": "透過方案升級",
346
348
  "cairo.customFields.fieldType.numberDecimal": "數字(小數)",
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/model/actionMove.ts"],"sourcesContent":["import { KeyedItem } from './keyedItem';\nimport { ComputedQueryFull } from './computedQuery';\n\nexport interface ActionMove<T> extends ActionMoveBase<T> {\n filtersKeyHash: string;\n query: ComputedQueryFull<{}>;\n}\n\nexport interface ActionMoveBase<T> {\n moveId: string;\n from: KeyedItem<T>;\n after: KeyedItem<T> | null;\n over: KeyedItem<T>;\n isFromHandle: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/model/actionMove.ts"],"sourcesContent":["import { KeyedItem } from './keyedItem';\nimport { ComputedQueryFull } from './computedQuery';\n\nexport interface ActionMove<T> extends ActionMoveBase<T> {\n filtersKeyHash: string;\n query: ComputedQueryFull<{}>;\n}\n\nexport interface ActionMoveBase<T> {\n moveId: string;\n from: KeyedItem<T>;\n after: KeyedItem<T> | null | undefined;\n over: KeyedItem<T>;\n isFromHandle: boolean;\n}\n"],"mappings":"","ignoreList":[]}