@wix/bex-core 2.158.0 → 2.160.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 (84) hide show
  1. package/dist/cjs/hooks/useAmbassadorCollection.js +48 -18
  2. package/dist/cjs/hooks/useAmbassadorCollection.js.map +1 -1
  3. package/dist/cjs/model/toast.js.map +1 -1
  4. package/dist/cjs/model/wixPatternsEssentials.js.map +1 -1
  5. package/dist/cjs/services/DataExtensionService/dataExtensionService.js +6 -3
  6. package/dist/cjs/services/DataExtensionService/dataExtensionService.js.map +1 -1
  7. package/dist/cjs/services/tagsService/createTagErrors.js.map +1 -1
  8. package/dist/cjs/services/tagsService/tagsService.js +10 -4
  9. package/dist/cjs/services/tagsService/tagsService.js.map +1 -1
  10. package/dist/cjs/state/AppsState.js +4 -2
  11. package/dist/cjs/state/AppsState.js.map +1 -1
  12. package/dist/cjs/state/BulkSelectState.js +12 -4
  13. package/dist/cjs/state/BulkSelectState.js.map +1 -1
  14. package/dist/cjs/state/CollectionOptimisticActions.js +6 -1
  15. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  16. package/dist/cjs/state/CollectionOptimisticExecutor.js +5 -1
  17. package/dist/cjs/state/CollectionOptimisticExecutor.js.map +1 -1
  18. package/dist/cjs/state/CustomFieldModalState.js +4 -1
  19. package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
  20. package/dist/cjs/state/ExportState/createExportAsyncJobErrors.js.map +1 -1
  21. package/dist/cjs/state/ExportState/getExportAsyncJobErrors.js.map +1 -1
  22. package/dist/cjs/state/SelectMapState.js +6 -2
  23. package/dist/cjs/state/SelectMapState.js.map +1 -1
  24. package/dist/cjs/state/TagsState/TagsFormState.js.map +1 -1
  25. package/dist/cjs/state/TagsState/TagsManagementState.js +18 -1
  26. package/dist/cjs/state/TagsState/TagsManagementState.js.map +1 -1
  27. package/dist/cjs/util/showToastCompat.js +4 -2
  28. package/dist/cjs/util/showToastCompat.js.map +1 -1
  29. package/dist/esm/hooks/useAmbassadorCollection.js +24 -14
  30. package/dist/esm/hooks/useAmbassadorCollection.js.map +1 -1
  31. package/dist/esm/services/DataExtensionService/dataExtensionService.js +3 -3
  32. package/dist/esm/services/DataExtensionService/dataExtensionService.js.map +1 -1
  33. package/dist/esm/services/tagsService/createTagErrors.js.map +1 -1
  34. package/dist/esm/services/tagsService/tagsService.js +4 -4
  35. package/dist/esm/services/tagsService/tagsService.js.map +1 -1
  36. package/dist/esm/state/AppsState.js +2 -2
  37. package/dist/esm/state/AppsState.js.map +1 -1
  38. package/dist/esm/state/BulkSelectState.js +13 -5
  39. package/dist/esm/state/BulkSelectState.js.map +1 -1
  40. package/dist/esm/state/CollectionOptimisticActions.js +8 -1
  41. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  42. package/dist/esm/state/CollectionOptimisticExecutor.js +3 -1
  43. package/dist/esm/state/CollectionOptimisticExecutor.js.map +1 -1
  44. package/dist/esm/state/CustomFieldModalState.js +5 -0
  45. package/dist/esm/state/CustomFieldModalState.js.map +1 -1
  46. package/dist/esm/state/ExportState/createExportAsyncJobErrors.js.map +1 -1
  47. package/dist/esm/state/ExportState/getExportAsyncJobErrors.js.map +1 -1
  48. package/dist/esm/state/SelectMapState.js +7 -3
  49. package/dist/esm/state/SelectMapState.js.map +1 -1
  50. package/dist/esm/state/TagsState/TagsFormState.js.map +1 -1
  51. package/dist/esm/state/TagsState/TagsManagementState.js +17 -1
  52. package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
  53. package/dist/esm/util/showToastCompat.js +2 -1
  54. package/dist/esm/util/showToastCompat.js.map +1 -1
  55. package/dist/types/hooks/useAmbassadorCollection.d.ts.map +1 -1
  56. package/dist/types/model/toast.d.ts +4 -0
  57. package/dist/types/model/toast.d.ts.map +1 -1
  58. package/dist/types/model/wixPatternsEssentials.d.ts +1 -0
  59. package/dist/types/model/wixPatternsEssentials.d.ts.map +1 -1
  60. package/dist/types/services/DataExtensionService/dataExtensionService.d.ts.map +1 -1
  61. package/dist/types/services/fetchTranslationsPreBundled.d.ts +1 -1
  62. package/dist/types/services/fetchTranslationsPreBundled.d.ts.map +1 -1
  63. package/dist/types/services/tagsService/createTagErrors.d.ts +2 -2
  64. package/dist/types/services/tagsService/createTagErrors.d.ts.map +1 -1
  65. package/dist/types/services/tagsService/tagsService.d.ts +3 -3
  66. package/dist/types/services/tagsService/tagsService.d.ts.map +1 -1
  67. package/dist/types/state/AppsState.d.ts.map +1 -1
  68. package/dist/types/state/BulkSelectState.d.ts.map +1 -1
  69. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  70. package/dist/types/state/CollectionOptimisticExecutor.d.ts.map +1 -1
  71. package/dist/types/state/CustomFieldModalState.d.ts.map +1 -1
  72. package/dist/types/state/ExportState/createExportAsyncJobErrors.d.ts +2 -2
  73. package/dist/types/state/ExportState/createExportAsyncJobErrors.d.ts.map +1 -1
  74. package/dist/types/state/ExportState/getExportAsyncJobErrors.d.ts +2 -2
  75. package/dist/types/state/ExportState/getExportAsyncJobErrors.d.ts.map +1 -1
  76. package/dist/types/state/SelectMapState.d.ts.map +1 -1
  77. package/dist/types/state/TagsState/TagsFormState.d.ts +1 -1
  78. package/dist/types/state/TagsState/TagsFormState.d.ts.map +1 -1
  79. package/dist/types/state/TagsState/TagsManagementState.d.ts +3 -1
  80. package/dist/types/state/TagsState/TagsManagementState.d.ts.map +1 -1
  81. package/dist/types/state/WixPatternsContainer.d.ts +3 -3
  82. package/dist/types/state/WixPatternsContainer.d.ts.map +1 -1
  83. package/dist/types/util/showToastCompat.d.ts.map +1 -1
  84. package/package.json +2 -2
@@ -10,34 +10,52 @@ var _useCollection = require("./useCollection");
10
10
  var _react = require("react");
11
11
  // TODO: should be exposed by Ambassador
12
12
 
13
- async function fetchData(config, wixPatternsQuery, httpClient) {
13
+ async function fetchData({
14
+ config,
15
+ wixPatternsQuery,
16
+ httpClient,
17
+ errorHandler
18
+ }) {
14
19
  const {
15
20
  ambassador
16
21
  } = config;
17
22
  const transformPlatformizedQuery = config.transformPlatformizedQuery || _identity.default;
18
23
  const platformizedQuery = defaultPlatformizedQuery(wixPatternsQuery);
19
24
  const query = await transformPlatformizedQuery(platformizedQuery, wixPatternsQuery);
20
- return httpClient.request(ambassador.queryEntities({
25
+ return errorHandler == null ? void 0 : errorHandler.withErrorHandler(() => httpClient.request(ambassador.queryEntities({
21
26
  query
22
- }));
27
+ })), {
28
+ errorCodesMap: {}
29
+ });
23
30
  }
24
- function getOffsetConfig(config, httpClient) {
31
+ function getOffsetConfig({
32
+ config,
33
+ httpClient,
34
+ errorHandler
35
+ }) {
25
36
  return {
26
37
  queryName: config.ambassador.fqdn,
27
38
  ...config,
28
39
  paginationMode: 'offset',
29
40
  fetchData: async query => {
30
- const {
31
- data
32
- } = await fetchData(config, query, httpClient);
41
+ const response = await fetchData({
42
+ config,
43
+ wixPatternsQuery: query,
44
+ httpClient,
45
+ errorHandler
46
+ });
33
47
  return {
34
- items: data.entities,
35
- total: data.metadata.total
48
+ items: (response == null ? void 0 : response.data.entities) ?? [],
49
+ total: (response == null ? void 0 : response.data.metadata.total) ?? 0
36
50
  };
37
51
  }
38
52
  };
39
53
  }
40
- function getCursorConfig(config, httpClient) {
54
+ function getCursorConfig({
55
+ config,
56
+ httpClient,
57
+ errorHandler
58
+ }) {
41
59
  const {
42
60
  ambassador
43
61
  } = config;
@@ -46,13 +64,16 @@ function getCursorConfig(config, httpClient) {
46
64
  ...config,
47
65
  paginationMode: 'cursor',
48
66
  fetchData: async query => {
49
- const {
50
- data
51
- } = await fetchData(config, query, httpClient);
67
+ const response = await fetchData({
68
+ config,
69
+ wixPatternsQuery: query,
70
+ httpClient,
71
+ errorHandler
72
+ });
52
73
  return {
53
- items: data.entities,
54
- cursor: data.metadata.cursors.next,
55
- total: data.metadata.total
74
+ items: (response == null ? void 0 : response.data.entities) ?? [],
75
+ cursor: response == null ? void 0 : response.data.metadata.cursors.next,
76
+ total: (response == null ? void 0 : response.data.metadata.total) ?? 0
56
77
  };
57
78
  }
58
79
  };
@@ -60,10 +81,19 @@ function getCursorConfig(config, httpClient) {
60
81
  function useCreateAmbassadorCollection() {
61
82
  const createCollection = (0, _useCollection.useCreateCollection)();
62
83
  const {
63
- httpClient
84
+ httpClient,
85
+ errorHandler
64
86
  } = (0, _providers.useWixPatternsContainer)();
65
87
  return config => {
66
- const collectionConfig = config.ambassador.queryEntities.paginationMode === 'offset' ? getOffsetConfig(config, httpClient) : getCursorConfig(config, httpClient);
88
+ const collectionConfig = config.ambassador.queryEntities.paginationMode === 'offset' ? getOffsetConfig({
89
+ config,
90
+ httpClient,
91
+ errorHandler
92
+ }) : getCursorConfig({
93
+ config,
94
+ httpClient,
95
+ errorHandler
96
+ });
67
97
  return createCollection(collectionConfig);
68
98
  };
69
99
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","wixPatternsQuery","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","_wixPatternsQuery$sor","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 wixPatternsQuery: 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 * - `wixPatternsQuery`: 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 wixPatternsQuery: 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(wixPatternsQuery);\n const query = await transformPlatformizedQuery(\n platformizedQuery,\n wixPatternsQuery,\n );\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(\n wixPatternsQuery: CursorQuery,\n): PlatformizedQuery {\n return {\n filter: {},\n sort: wixPatternsQuery.sort?.map((sort) => ({\n fieldName: sort.fieldName,\n order: sort.order.toUpperCase() as 'ASC' | 'DESC',\n })),\n cursorPaging: {\n cursor: wixPatternsQuery.cursor,\n limit: wixPatternsQuery.limit,\n },\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAMA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAkDA;;AAcA,eAAeI,SAASA,CACtBC,MAAwC,EACxCC,gBAAmE,EACnEC,UAAoD,EACpD;EACA,MAAM;IAAEC;EAAW,CAAC,GAAGH,MAAM;EAC7B,MAAMI,0BAA0B,GAC9BJ,MAAM,CAACI,0BAA0B,IAAIC,iBAAQ;EAC/C,MAAMC,iBAAiB,GAAGC,wBAAwB,CAACN,gBAAgB,CAAC;EACpE,MAAMO,KAAK,GAAG,MAAMJ,0BAA0B,CAC5CE,iBAAiB,EACjBL,gBACF,CAAC;EACD,OAAOC,UAAU,CAACO,OAAO,CAACN,UAAU,CAACO,aAAa,CAAC;IAAEF;EAAM,CAAC,CAAC,CAAC;AAChE;AAEA,SAASG,eAAeA,CACtBX,MAAwC,EACxCE,UAAoD,EACZ;EACxC,OAAO;IACLU,SAAS,EAAEZ,MAAM,CAACG,UAAU,CAACU,IAAI;IACjC,GAAGb,MAAM;IACTc,cAAc,EAAE,QAAQ;IACxBf,SAAS,EAAE,MAAOS,KAA8B,IAAK;MACnD,MAAM;QAAEO;MAAK,CAAC,GAAG,MAAMhB,SAAS,CAACC,MAAM,EAAEQ,KAAK,EAAEN,UAAU,CAAC;MAC3D,OAAO;QACLc,KAAK,EAAED,IAAI,CAACE,QAAQ;QACpBC,KAAK,EAAEH,IAAI,CAACI,QAAQ,CAACD;MACvB,CAAC;IACH;EACF,CAAC;AACH;AAEA,SAASE,eAAeA,CACtBpB,MAAwC,EACxCE,UAAoD,EACZ;EACxC,MAAM;IAAEC;EAAW,CAAC,GAAGH,MAAM;EAE7B,OAAO;IACLY,SAAS,EAAET,UAAU,CAACU,IAAI;IAC1B,GAAGb,MAAM;IACTc,cAAc,EAAE,QAAQ;IACxBf,SAAS,EAAE,MAAOS,KAA8B,IAAK;MACnD,MAAM;QAAEO;MAAK,CAAC,GAAG,MAAMhB,SAAS,CAACC,MAAM,EAAEQ,KAAK,EAAEN,UAAU,CAAC;MAC3D,OAAO;QACLc,KAAK,EAAED,IAAI,CAACE,QAAQ;QACpBI,MAAM,EAAEN,IAAI,CAACI,QAAQ,CAACG,OAAO,CAACC,IAAI;QAClCL,KAAK,EAAEH,IAAI,CAACI,QAAQ,CAACD;MACvB,CAAC;IACH;EACF,CAAC;AACH;AAEO,SAASM,6BAA6BA,CAAA,EAAgC;EAC3E,MAAMC,gBAAgB,GAAG,IAAAC,kCAAmB,EAAC,CAAC;EAC9C,MAAM;IAAExB;EAAW,CAAC,GAAG,IAAAyB,kCAAuB,EAAC,CAAC;EAEhD,OACE3B,MAAwC,IACrC;IACH,MAAM4B,gBAAwD,GAC5D5B,MAAM,CAACG,UAAU,CAACO,aAAa,CAACI,cAAc,KAAK,QAAQ,GACvDH,eAAe,CAACX,MAAM,EAAEE,UAAU,CAAC,GACnCkB,eAAe,CAACpB,MAAM,EAAEE,UAAU,CAAC;IAEzC,OAAOuB,gBAAgB,CAACG,gBAAgB,CAAC;EAC3C,CAAC;AACH;AAEO,SAASC,uBAAuBA,CAGrC7B,MAAwC,EAAyB;EACjE,MAAM8B,0BAA0B,GAAGN,6BAA6B,CAAC,CAAC;EAElE,MAAM,CAACO,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMF,0BAA0B,CAAO9B,MAAM,CAAC,CAAC;EAE7E,OAAO+B,UAAU;AACnB;AAEA,SAASxB,wBAAwBA,CAC/BN,gBAA6B,EACV;EAAA,IAAAgC,qBAAA;EACnB,OAAO;IACLC,MAAM,EAAE,CAAC,CAAC;IACVC,IAAI,GAAAF,qBAAA,GAAEhC,gBAAgB,CAACkC,IAAI,qBAArBF,qBAAA,CAAuBG,GAAG,CAAED,IAAI,KAAM;MAC1CE,SAAS,EAAEF,IAAI,CAACE,SAAS;MACzBC,KAAK,EAAEH,IAAI,CAACG,KAAK,CAACC,WAAW,CAAC;IAChC,CAAC,CAAC,CAAC;IACHC,YAAY,EAAE;MACZnB,MAAM,EAAEpB,gBAAgB,CAACoB,MAAM;MAC/BoB,KAAK,EAAExC,gBAAgB,CAACwC;IAC1B;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_identity","_interopRequireDefault","require","_providers","_useCollection","_react","fetchData","config","wixPatternsQuery","httpClient","errorHandler","ambassador","transformPlatformizedQuery","identity","platformizedQuery","defaultPlatformizedQuery","query","withErrorHandler","request","queryEntities","errorCodesMap","getOffsetConfig","queryName","fqdn","paginationMode","response","items","data","entities","total","metadata","getCursorConfig","cursor","cursors","next","useCreateAmbassadorCollection","createCollection","useCreateCollection","useWixPatternsContainer","collectionConfig","useAmbassadorCollection","createAmbassadorCollection","collection","useState","_wixPatternsQuery$sor","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 wixPatternsQuery: 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 * - `wixPatternsQuery`: 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,\n wixPatternsQuery,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n wixPatternsQuery: CursorQuery<Partial<F>> | OffsetQuery<Partial<F>>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\n}) {\n const { ambassador } = config;\n const transformPlatformizedQuery =\n config.transformPlatformizedQuery || identity;\n const platformizedQuery = defaultPlatformizedQuery(wixPatternsQuery);\n const query = await transformPlatformizedQuery(\n platformizedQuery,\n wixPatternsQuery,\n );\n return errorHandler?.withErrorHandler(\n () => httpClient.request(ambassador.queryEntities({ query })),\n { errorCodesMap: {} },\n );\n}\n\nfunction getOffsetConfig<T, F extends FiltersMap = OptionalFiltersMap>({\n config,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\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 response = await fetchData({\n config,\n wixPatternsQuery: query,\n httpClient,\n errorHandler,\n });\n return {\n items: response?.data.entities ?? [],\n total: response?.data.metadata.total ?? 0,\n };\n },\n };\n}\n\nfunction getCursorConfig<T, F extends FiltersMap = OptionalFiltersMap>({\n config,\n httpClient,\n errorHandler,\n}: {\n config: AmbassadorCollectionConfig<T, F>;\n httpClient: WixPatternsContainerParams['httpClient'];\n errorHandler: WixPatternsContainerParams['errorHandler'];\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 response = await fetchData({\n config,\n wixPatternsQuery: query,\n httpClient,\n errorHandler,\n });\n return {\n items: response?.data.entities ?? [],\n cursor: response?.data.metadata.cursors.next,\n total: response?.data.metadata.total ?? 0,\n };\n },\n };\n}\n\nexport function useCreateAmbassadorCollection(): AmbassadorCollectionFactory {\n const createCollection = useCreateCollection();\n const { httpClient, errorHandler } = 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, errorHandler })\n : getCursorConfig({ config, httpClient, errorHandler });\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(\n wixPatternsQuery: CursorQuery,\n): PlatformizedQuery {\n return {\n filter: {},\n sort: wixPatternsQuery.sort?.map((sort) => ({\n fieldName: sort.fieldName,\n order: sort.order.toUpperCase() as 'ASC' | 'DESC',\n })),\n cursorPaging: {\n cursor: wixPatternsQuery.cursor,\n limit: wixPatternsQuery.limit,\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/model/toast.ts"],"sourcesContent":["export type ToastType =\n | 'STANDARD'\n | 'PREMIUM'\n | 'SUCCESS'\n | 'WARNING'\n | 'ERROR';\nexport type ToastTimeout = 'NONE' | 'NORMAL';\nexport type ToastPriority = 'LOW' | 'NORMAL' | 'HIGH';\n\nexport type ToastActionUiType = 'BUTTON' | 'LINK';\n\nexport type ToastAction = {\n text: string;\n onClick?: Function;\n removeToastOnClick?: boolean;\n uiType?: ToastActionUiType;\n navigationTarget?: {\n url: string;\n openInNewTab?: boolean;\n };\n};\n\nexport type ToastConfig = {\n message: string;\n biName?: string;\n timeout?: ToastTimeout;\n priority?: ToastPriority;\n type?: ToastType;\n onCloseClick?: () => unknown;\n onToastSeen?: () => unknown;\n action?: ToastAction;\n};\nexport type RemoveToast = () => void;\n\nexport type ShowToast = (toastConfig: ToastConfig) => {\n remove: RemoveToast;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/model/toast.ts"],"sourcesContent":["export type ToastType =\n | 'STANDARD'\n | 'PREMIUM'\n | 'SUCCESS'\n | 'WARNING'\n | 'ERROR';\nexport type ToastTimeout = 'NONE' | 'NORMAL';\nexport type ToastPriority = 'LOW' | 'NORMAL' | 'HIGH';\n\nexport type ToastActionUiType = 'BUTTON' | 'LINK';\n\nexport type ToastAction = {\n text: string;\n onClick?: Function;\n removeToastOnClick?: boolean;\n uiType?: ToastActionUiType;\n navigationTarget?: {\n url: string;\n openInNewTab?: boolean;\n };\n};\n\nexport type ErrorToastDetails = {\n requestId: string;\n};\n\nexport type ToastConfig = {\n message: string;\n biName?: string;\n timeout?: ToastTimeout;\n priority?: ToastPriority;\n type?: ToastType;\n onCloseClick?: () => unknown;\n onToastSeen?: () => unknown;\n action?: ToastAction;\n details?: ErrorToastDetails;\n};\n\nexport type RemoveToast = () => void;\n\nexport type ShowToast = (toastConfig: ToastConfig) => {\n remove: RemoveToast;\n};\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/model/wixPatternsEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { ErrorHandler } from '@wix/fe-essentials/error-handler';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n EnvironmentBi,\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 type { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface BiLogger {\n report(reportProps: ReportProps): Promise<any>;\n}\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): BiLogger;\n}\n\nexport type PageLocation = {\n pageId: string;\n pathname: string;\n search?: string;\n hash?: string;\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 NavigateToObject = {\n pageId: string;\n relativeUrl?: string;\n appState?: string;\n referrer?: string;\n};\nexport type NavigateOptions = { state?: any };\nexport type NavigateToFunc = (to: NavigateToObject) => void;\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 PatternsErrorHandler {\n withErrorHandler: ErrorHandler['withErrorHandler'];\n getResolvedError?: ErrorHandler['getResolvedError'];\n showError?: ErrorHandler['showError'];\n}\n\nexport interface WixPatternsEssentials {\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 errorHandler?: PatternsErrorHandler;\n biLogger?: BiLogger | null;\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 environmentBI: EnvironmentBi;\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 usePageLocation?: () => PageLocation;\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?: NavigateToFunc;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\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 /** 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 WixPatternsEssentialsOverrides\n extends Omit<Partial<WixPatternsEssentials>, 'environment'> {\n environment: Partial<WixPatternsEssentials['environment']>;\n}\n\nexport type ContextType = 'ACCOUNT' | 'SITE';\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/model/wixPatternsEssentials.ts"],"sourcesContent":["import type { Essentials, EssentialsOptions } from '@wix/fe-essentials/core';\nimport type { LogParams, ReportProps } from '@wix/fe-essentials/bi';\nimport type { ErrorHandler } from '@wix/fe-essentials/error-handler';\nimport type { Trans, useTranslation } from '@wix/fe-essentials/react';\nimport type { ShowToast } from './toast';\nimport type {\n Environment,\n EnvironmentBi,\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 type { DataCapsule } from './dataCapsule';\nimport { HttpClient } from './httpClient';\n\nexport type OnSidePanelOpen = (listener: () => void) => {\n remove(): void;\n};\n\nexport type CloseSidePanel = () => unknown;\n\nexport interface BiLogger {\n report(reportProps: ReportProps): Promise<any>;\n}\n\nexport interface CairoBILoggerFactory {\n updateDefaults(params: LogParams): this;\n logger(): BiLogger;\n}\n\nexport type PageLocation = {\n pageId: string;\n pathname: string;\n search?: string;\n hash?: string;\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 NavigateToObject = {\n pageId: string;\n relativeUrl?: string;\n appState?: string;\n referrer?: string;\n};\nexport type NavigateOptions = { state?: any };\nexport type NavigateToFunc = (to: NavigateToObject) => void;\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 PatternsErrorHandler {\n withErrorHandler: ErrorHandler['withErrorHandler'];\n getResolvedError?: ErrorHandler['getResolvedError'];\n showError?: ErrorHandler['showError'];\n reportRetryAttempt?: ErrorHandler['reportRetryAttempt'];\n}\n\nexport interface WixPatternsEssentials {\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 errorHandler?: PatternsErrorHandler;\n biLogger?: BiLogger | null;\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 environmentBI: EnvironmentBi;\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 usePageLocation?: () => PageLocation;\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?: NavigateToFunc;\n useAppLoaded?: () => void;\n onSidePanelOpen?: OnSidePanelOpen;\n closeSidePanel?: CloseSidePanel;\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 /** 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 WixPatternsEssentialsOverrides\n extends Omit<Partial<WixPatternsEssentials>, 'environment'> {\n environment: Partial<WixPatternsEssentials['environment']>;\n}\n\nexport type ContextType = 'ACCOUNT' | 'SITE';\n"],"mappings":"","ignoreList":[]}
@@ -207,13 +207,16 @@ class DataExtensionSchemaService {
207
207
  }
208
208
  async fetchSchemas(fqdn) {
209
209
  const {
210
- httpClient
210
+ httpClient,
211
+ errorHandler
211
212
  } = this;
212
- const res = await httpClient.request((0, _http.listDataExtensionSchemas)({
213
+ const res = await errorHandler.withErrorHandler(() => httpClient.request((0, _http.listDataExtensionSchemas)({
213
214
  fqdn,
214
215
  namespaces: [],
215
216
  fields: [_types.RequestedField.ARCHIVED]
216
- }));
217
+ })), {
218
+ errorCodesMap: {}
219
+ });
217
220
  return res.data;
218
221
  }
219
222
  async _createDataExtensionSchema(schema) {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_http","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","res","request","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","data","withErrorHandler","createDataExtensionSchema","dataExtensionSchema","errorCodesMap","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient } = this;\n\n const res = await httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_http","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","res","withErrorHandler","request","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","errorCodesMap","data","createDataExtensionSchema","dataExtensionSchema","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient, errorHandler } = this;\n\n const res = await errorHandler.withErrorHandler(\n () =>\n httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n ),\n { errorCodesMap: {} },\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n {\n errorCodesMap: updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n },\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createTagErrors","translate","t","visualType","retryFn","applicationError","FQDN_NOT_FOUND","message","action","text","onClick","TAG_NAME_ALREADY_EXISTS","TAGS_REACHED_LIMIT","getTagsReachedLimitErrorMessage","CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS","EXPOSURE_NOT_SUPPORTED","exports"],"sources":["../../../../src/services/tagsService/createTagErrors.ts"],"sourcesContent":["import { ErrorCodesMap } from '@wix/fe-essentials/error-handler';\nimport { CreateTagApplicationErrors } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagErrorVisualType } from '../../util';\nimport { Translate } from '..';\n\nexport const createTagErrors = ({\n translate: t,\n visualType = 'toast',\n retryFn,\n}: {\n translate: Translate;\n visualType?: TagErrorVisualType;\n retryFn?: () => void;\n}): ErrorCodesMap<CreateTagApplicationErrors> => {\n return {\n applicationError: {\n FQDN_NOT_FOUND: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.fqdn-not-found.error')\n : t('cairo.tags.fqdn-not-found.manageTagsModal.error'),\n action: {\n text: t('cairo.error.contactSupport.cta'),\n onClick: () => {\n // TODO: contact support\n },\n },\n }),\n TAG_NAME_ALREADY_EXISTS: () => ({\n message: t('cairo.tags.manageTags.modal.list.input.validation.exists'),\n }),\n TAGS_REACHED_LIMIT: () => ({\n message: getTagsReachedLimitErrorMessage({\n visualType,\n translate: t,\n }),\n }),\n CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.collectionPage.toast.create.error')\n : t('cairo.tags.manageTags.modal.toast.create.error'),\n action: {\n text: t('cairo.error.tryAgain.cta'),\n onClick: retryFn,\n },\n }),\n EXPOSURE_NOT_SUPPORTED: false,\n },\n };\n};\n\nexport const getTagsReachedLimitErrorMessage = ({\n visualType,\n translate: t,\n}: {\n visualType: TagErrorVisualType;\n translate: Translate;\n}): string =>\n visualType === 'toast'\n ? t('cairo.tags.popover.creationLimitReached.error')\n : t('cairo.tags.creationLimitReached.error');\n"],"mappings":";;;;AAKO,MAAMA,eAAe,GAAGA,CAAC;EAC9BC,SAAS,EAAEC,CAAC;EACZC,UAAU,GAAG,OAAO;EACpBC;AAKF,CAAC,KAAgD;EAC/C,OAAO;IACLC,gBAAgB,EAAE;MAChBC,cAAc,EAAEA,CAAA,MAAO;QACrBC,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,iCAAiC,CAAC,GACpCA,CAAC,CAAC,iDAAiD,CAAC;QAC1DM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,gCAAgC,CAAC;UACzCQ,OAAO,EAAEA,CAAA,KAAM;YACb;UAAA;QAEJ;MACF,CAAC,CAAC;MACFC,uBAAuB,EAAEA,CAAA,MAAO;QAC9BJ,OAAO,EAAEL,CAAC,CAAC,0DAA0D;MACvE,CAAC,CAAC;MACFU,kBAAkB,EAAEA,CAAA,MAAO;QACzBL,OAAO,EAAEM,+BAA+B,CAAC;UACvCV,UAAU;UACVF,SAAS,EAAEC;QACb,CAAC;MACH,CAAC,CAAC;MACFY,kCAAkC,EAAEA,CAAA,MAAO;QACzCP,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,8CAA8C,CAAC,GACjDA,CAAC,CAAC,gDAAgD,CAAC;QACzDM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,0BAA0B,CAAC;UACnCQ,OAAO,EAAEN;QACX;MACF,CAAC,CAAC;MACFW,sBAAsB,EAAE;IAC1B;EACF,CAAC;AACH,CAAC;AAACC,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAEK,MAAMa,+BAA+B,GAAGA,CAAC;EAC9CV,UAAU;EACVF,SAAS,EAAEC;AAIb,CAAC,KACCC,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,+CAA+C,CAAC,GAClDA,CAAC,CAAC,uCAAuC,CAAC;AAACc,OAAA,CAAAH,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["createTagErrors","translate","t","visualType","retryFn","applicationError","FQDN_NOT_FOUND","message","action","text","onClick","TAG_NAME_ALREADY_EXISTS","TAGS_REACHED_LIMIT","getTagsReachedLimitErrorMessage","CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS","EXPOSURE_NOT_SUPPORTED","exports"],"sources":["../../../../src/services/tagsService/createTagErrors.ts"],"sourcesContent":["import { ErrorCodesMapRequiredApplicationError } from '@wix/fe-essentials/error-handler';\nimport { CreateTagApplicationErrors } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { TagErrorVisualType } from '../../util';\nimport { Translate } from '..';\n\nexport const createTagErrors = ({\n translate: t,\n visualType = 'toast',\n retryFn,\n}: {\n translate: Translate;\n visualType?: TagErrorVisualType;\n retryFn?: () => void;\n}): ErrorCodesMapRequiredApplicationError<CreateTagApplicationErrors> => {\n return {\n applicationError: {\n FQDN_NOT_FOUND: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.fqdn-not-found.error')\n : t('cairo.tags.fqdn-not-found.manageTagsModal.error'),\n action: {\n text: t('cairo.error.contactSupport.cta'),\n onClick: () => {\n // TODO: contact support\n },\n },\n }),\n TAG_NAME_ALREADY_EXISTS: () => ({\n message: t('cairo.tags.manageTags.modal.list.input.validation.exists'),\n }),\n TAGS_REACHED_LIMIT: () => ({\n message: getTagsReachedLimitErrorMessage({\n visualType,\n translate: t,\n }),\n }),\n CREATE_ID_EXHAUSTED_RETRY_ATTEMPTS: () => ({\n message:\n visualType === 'toast'\n ? t('cairo.tags.collectionPage.toast.create.error')\n : t('cairo.tags.manageTags.modal.toast.create.error'),\n action: {\n text: t('cairo.error.tryAgain.cta'),\n onClick: retryFn,\n },\n }),\n EXPOSURE_NOT_SUPPORTED: false,\n },\n };\n};\n\nexport const getTagsReachedLimitErrorMessage = ({\n visualType,\n translate: t,\n}: {\n visualType: TagErrorVisualType;\n translate: Translate;\n}): string =>\n visualType === 'toast'\n ? t('cairo.tags.popover.creationLimitReached.error')\n : t('cairo.tags.creationLimitReached.error');\n"],"mappings":";;;;AAKO,MAAMA,eAAe,GAAGA,CAAC;EAC9BC,SAAS,EAAEC,CAAC;EACZC,UAAU,GAAG,OAAO;EACpBC;AAKF,CAAC,KAAwE;EACvE,OAAO;IACLC,gBAAgB,EAAE;MAChBC,cAAc,EAAEA,CAAA,MAAO;QACrBC,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,iCAAiC,CAAC,GACpCA,CAAC,CAAC,iDAAiD,CAAC;QAC1DM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,gCAAgC,CAAC;UACzCQ,OAAO,EAAEA,CAAA,KAAM;YACb;UAAA;QAEJ;MACF,CAAC,CAAC;MACFC,uBAAuB,EAAEA,CAAA,MAAO;QAC9BJ,OAAO,EAAEL,CAAC,CAAC,0DAA0D;MACvE,CAAC,CAAC;MACFU,kBAAkB,EAAEA,CAAA,MAAO;QACzBL,OAAO,EAAEM,+BAA+B,CAAC;UACvCV,UAAU;UACVF,SAAS,EAAEC;QACb,CAAC;MACH,CAAC,CAAC;MACFY,kCAAkC,EAAEA,CAAA,MAAO;QACzCP,OAAO,EACLJ,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,8CAA8C,CAAC,GACjDA,CAAC,CAAC,gDAAgD,CAAC;QACzDM,MAAM,EAAE;UACNC,IAAI,EAAEP,CAAC,CAAC,0BAA0B,CAAC;UACnCQ,OAAO,EAAEN;QACX;MACF,CAAC,CAAC;MACFW,sBAAsB,EAAE;IAC1B;EACF,CAAC;AACH,CAAC;AAACC,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAEK,MAAMa,+BAA+B,GAAGA,CAAC;EAC9CV,UAAU;EACVF,SAAS,EAAEC;AAIb,CAAC,KACCC,UAAU,KAAK,OAAO,GAClBD,CAAC,CAAC,+CAA+C,CAAC,GAClDA,CAAC,CAAC,uCAAuC,CAAC;AAACc,OAAA,CAAAH,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -18,13 +18,15 @@ class TagsService {
18
18
  getContextFunction(accountFn, siteFn) {
19
19
  return this.container.contextType === 'ACCOUNT' ? accountFn : siteFn;
20
20
  }
21
- async listTags(request) {
21
+ async listTags(request, errorCodesMap) {
22
22
  const fn = this.getContextFunction(_http.listTagsForAccount, _http.listTags);
23
23
  const {
24
24
  data: {
25
25
  tags = []
26
26
  }
27
- } = await this.httpClient.request(fn(request));
27
+ } = await this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
28
+ errorCodesMap
29
+ });
28
30
  return tags.filter(({
29
31
  id,
30
32
  name
@@ -58,12 +60,16 @@ class TagsService {
58
60
  data: {
59
61
  tag
60
62
  }
61
- } = await this.httpClient.request(fn(request));
63
+ } = await this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
64
+ errorCodesMap: {}
65
+ });
62
66
  return tag;
63
67
  }
64
68
  async deleteTag(request) {
65
69
  const fn = this.getContextFunction(_http.deleteTagForAccount, _http.deleteTag);
66
- return this.httpClient.request(fn(request));
70
+ return this.container.errorHandler.withErrorHandler(() => this.httpClient.request(fn(request)), {
71
+ errorCodesMap: {}
72
+ });
67
73
  }
68
74
  }
69
75
  exports.TagsService = TagsService;
@@ -1 +1 @@
1
- {"version":3,"names":["_http","require","TagsService","constructor","container","_defineProperty2","default","httpClient","getContextFunction","accountFn","siteFn","contextType","listTags","request","fn","listTagsForAccount","data","tags","filter","id","name","createTag","errorCodesMap","tag","errorHandler","withErrorHandler","createTagForAccount","updateTag","updateTagForAccount","deleteTag","deleteTagForAccount","exports"],"sources":["../../../../src/services/tagsService/tagsService.ts"],"sourcesContent":["import {\n listTags,\n listTagsForAccount,\n createTag,\n createTagForAccount,\n updateTag,\n updateTagForAccount,\n deleteTag,\n deleteTagForAccount,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/http';\nimport {\n CreateTagApplicationErrors,\n CreateTagRequest,\n DeleteTagRequest,\n DeleteTagResponse,\n ListTagsRequest,\n Tag,\n UpdateTagRequest,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { WixPatternsContainer } from '../../state';\nimport { ErrorCodesMap } from '@wix/fe-essentials/error-handler';\n\nexport interface TagsServiceParams {\n readonly container: WixPatternsContainer;\n}\n\nexport class TagsService {\n private readonly container: WixPatternsContainer;\n\n constructor({ container }: TagsServiceParams) {\n this.container = container;\n }\n\n private get httpClient() {\n return this.container.httpClient;\n }\n\n private getContextFunction<T, U>(accountFn: T, siteFn: U): T | U {\n return this.container.contextType === 'ACCOUNT' ? accountFn : siteFn;\n }\n\n async listTags(request: ListTagsRequest): Promise<Tag[]> {\n const fn = this.getContextFunction(listTagsForAccount, listTags);\n const {\n data: { tags = [] },\n } = await this.httpClient.request(fn(request));\n return tags.filter(({ id, name }) => id && name);\n }\n\n async createTag(\n request: CreateTagRequest,\n errorCodesMap: ErrorCodesMap<CreateTagApplicationErrors>,\n ): Promise<Tag> {\n // We cannot use getContextFunction because createTagForAccount and createTag have different return signatures due to error handling\n if (this.container.contextType === 'SITE') {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTag(request)),\n { errorCodesMap },\n );\n return tag!;\n } else {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTagForAccount(request)),\n { errorCodesMap },\n );\n return tag!;\n }\n }\n\n async updateTag(request: UpdateTagRequest): Promise<Tag> {\n const fn = this.getContextFunction(updateTagForAccount, updateTag);\n const {\n data: { tag },\n } = await this.httpClient.request(fn(request));\n return tag!;\n }\n\n async deleteTag(request: DeleteTagRequest): Promise<DeleteTagResponse> {\n const fn = this.getContextFunction(deleteTagForAccount, deleteTag);\n return this.httpClient.request(fn(request));\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AA0BO,MAAMC,WAAW,CAAC;EAGvBC,WAAWA,CAAC;IAAEC;EAA6B,CAAC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC5C,IAAI,CAACF,SAAS,GAAGA,SAAS;EAC5B;EAEA,IAAYG,UAAUA,CAAA,EAAG;IACvB,OAAO,IAAI,CAACH,SAAS,CAACG,UAAU;EAClC;EAEQC,kBAAkBA,CAAOC,SAAY,EAAEC,MAAS,EAAS;IAC/D,OAAO,IAAI,CAACN,SAAS,CAACO,WAAW,KAAK,SAAS,GAAGF,SAAS,GAAGC,MAAM;EACtE;EAEA,MAAME,QAAQA,CAACC,OAAwB,EAAkB;IACvD,MAAMC,EAAE,GAAG,IAAI,CAACN,kBAAkB,CAACO,wBAAkB,EAAEH,cAAQ,CAAC;IAChE,MAAM;MACJI,IAAI,EAAE;QAAEC,IAAI,GAAG;MAAG;IACpB,CAAC,GAAG,MAAM,IAAI,CAACV,UAAU,CAACM,OAAO,CAACC,EAAE,CAACD,OAAO,CAAC,CAAC;IAC9C,OAAOI,IAAI,CAACC,MAAM,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAKD,EAAE,IAAIC,IAAI,CAAC;EAClD;EAEA,MAAMC,SAASA,CACbR,OAAyB,EACzBS,aAAwD,EAC1C;IACd;IACA,IAAI,IAAI,CAAClB,SAAS,CAACO,WAAW,KAAK,MAAM,EAAE;MACzC,MAAM;QACJK,IAAI,EAAE;UAAEO;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACnB,SAAS,CAACoB,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAAClB,UAAU,CAACM,OAAO,CAAC,IAAAQ,eAAS,EAACR,OAAO,CAAC,CAAC,EACjD;QAAES;MAAc,CAClB,CAAC;MACD,OAAOC,GAAG;IACZ,CAAC,MAAM;MACL,MAAM;QACJP,IAAI,EAAE;UAAEO;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACnB,SAAS,CAACoB,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAAClB,UAAU,CAACM,OAAO,CAAC,IAAAa,yBAAmB,EAACb,OAAO,CAAC,CAAC,EAC3D;QAAES;MAAc,CAClB,CAAC;MACD,OAAOC,GAAG;IACZ;EACF;EAEA,MAAMI,SAASA,CAACd,OAAyB,EAAgB;IACvD,MAAMC,EAAE,GAAG,IAAI,CAACN,kBAAkB,CAACoB,yBAAmB,EAAED,eAAS,CAAC;IAClE,MAAM;MACJX,IAAI,EAAE;QAAEO;MAAI;IACd,CAAC,GAAG,MAAM,IAAI,CAAChB,UAAU,CAACM,OAAO,CAACC,EAAE,CAACD,OAAO,CAAC,CAAC;IAC9C,OAAOU,GAAG;EACZ;EAEA,MAAMM,SAASA,CAAChB,OAAyB,EAA8B;IACrE,MAAMC,EAAE,GAAG,IAAI,CAACN,kBAAkB,CAACsB,yBAAmB,EAAED,eAAS,CAAC;IAClE,OAAO,IAAI,CAACtB,UAAU,CAACM,OAAO,CAACC,EAAE,CAACD,OAAO,CAAC,CAAC;EAC7C;AACF;AAACkB,OAAA,CAAA7B,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_http","require","TagsService","constructor","container","_defineProperty2","default","httpClient","getContextFunction","accountFn","siteFn","contextType","listTags","request","errorCodesMap","fn","listTagsForAccount","data","tags","errorHandler","withErrorHandler","filter","id","name","createTag","tag","createTagForAccount","updateTag","updateTagForAccount","deleteTag","deleteTagForAccount","exports"],"sources":["../../../../src/services/tagsService/tagsService.ts"],"sourcesContent":["import {\n listTags,\n listTagsForAccount,\n createTag,\n createTagForAccount,\n updateTag,\n updateTagForAccount,\n deleteTag,\n deleteTagForAccount,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/http';\nimport {\n CreateTagApplicationErrors,\n CreateTagRequest,\n DeleteTagRequest,\n DeleteTagResponse,\n ListTagsRequest,\n Tag,\n UpdateTagRequest,\n} from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';\nimport { WixPatternsContainer } from '../../state';\nimport {\n ErrorCodesMap,\n ErrorCodesMapRequiredApplicationError,\n} from '@wix/fe-essentials/error-handler';\n\nexport interface TagsServiceParams {\n readonly container: WixPatternsContainer;\n}\n\nexport class TagsService {\n private readonly container: WixPatternsContainer;\n\n constructor({ container }: TagsServiceParams) {\n this.container = container;\n }\n\n private get httpClient() {\n return this.container.httpClient;\n }\n\n private getContextFunction<T, U>(accountFn: T, siteFn: U): T | U {\n return this.container.contextType === 'ACCOUNT' ? accountFn : siteFn;\n }\n\n async listTags(\n request: ListTagsRequest,\n errorCodesMap: ErrorCodesMap,\n ): Promise<Tag[]> {\n const fn = this.getContextFunction(listTagsForAccount, listTags);\n const {\n data: { tags = [] },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap },\n );\n return tags.filter(({ id, name }) => id && name);\n }\n\n async createTag(\n request: CreateTagRequest,\n errorCodesMap: ErrorCodesMapRequiredApplicationError<CreateTagApplicationErrors>,\n ): Promise<Tag> {\n // We cannot use getContextFunction because createTagForAccount and createTag have different return signatures due to error handling\n if (this.container.contextType === 'SITE') {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTag(request)),\n { errorCodesMap },\n );\n return tag!;\n } else {\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(createTagForAccount(request)),\n { errorCodesMap },\n );\n return tag!;\n }\n }\n\n async updateTag(request: UpdateTagRequest): Promise<Tag> {\n const fn = this.getContextFunction(updateTagForAccount, updateTag);\n const {\n data: { tag },\n } = await this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap: {} },\n );\n return tag!;\n }\n\n async deleteTag(request: DeleteTagRequest): Promise<DeleteTagResponse> {\n const fn = this.getContextFunction(deleteTagForAccount, deleteTag);\n return this.container.errorHandler.withErrorHandler(\n () => this.httpClient.request(fn(request)),\n { errorCodesMap: {} },\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AA6BO,MAAMC,WAAW,CAAC;EAGvBC,WAAWA,CAAC;IAAEC;EAA6B,CAAC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAC5C,IAAI,CAACF,SAAS,GAAGA,SAAS;EAC5B;EAEA,IAAYG,UAAUA,CAAA,EAAG;IACvB,OAAO,IAAI,CAACH,SAAS,CAACG,UAAU;EAClC;EAEQC,kBAAkBA,CAAOC,SAAY,EAAEC,MAAS,EAAS;IAC/D,OAAO,IAAI,CAACN,SAAS,CAACO,WAAW,KAAK,SAAS,GAAGF,SAAS,GAAGC,MAAM;EACtE;EAEA,MAAME,QAAQA,CACZC,OAAwB,EACxBC,aAA4B,EACZ;IAChB,MAAMC,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACQ,wBAAkB,EAAEJ,cAAQ,CAAC;IAChE,MAAM;MACJK,IAAI,EAAE;QAAEC,IAAI,GAAG;MAAG;IACpB,CAAC,GAAG,MAAM,IAAI,CAACd,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC;IAAc,CAClB,CAAC;IACD,OAAOI,IAAI,CAACG,MAAM,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAKD,EAAE,IAAIC,IAAI,CAAC;EAClD;EAEA,MAAMC,SAASA,CACbX,OAAyB,EACzBC,aAAgF,EAClE;IACd;IACA,IAAI,IAAI,CAACV,SAAS,CAACO,WAAW,KAAK,MAAM,EAAE;MACzC,MAAM;QACJM,IAAI,EAAE;UAAEQ;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAAC,IAAAW,eAAS,EAACX,OAAO,CAAC,CAAC,EACjD;QAAEC;MAAc,CAClB,CAAC;MACD,OAAOW,GAAG;IACZ,CAAC,MAAM;MACL,MAAM;QACJR,IAAI,EAAE;UAAEQ;QAAI;MACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAAC,IAAAa,yBAAmB,EAACb,OAAO,CAAC,CAAC,EAC3D;QAAEC;MAAc,CAClB,CAAC;MACD,OAAOW,GAAG;IACZ;EACF;EAEA,MAAME,SAASA,CAACd,OAAyB,EAAgB;IACvD,MAAME,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACoB,yBAAmB,EAAED,eAAS,CAAC;IAClE,MAAM;MACJV,IAAI,EAAE;QAAEQ;MAAI;IACd,CAAC,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACpD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC,aAAa,EAAE,CAAC;IAAE,CACtB,CAAC;IACD,OAAOW,GAAG;EACZ;EAEA,MAAMI,SAASA,CAAChB,OAAyB,EAA8B;IACrE,MAAME,EAAE,GAAG,IAAI,CAACP,kBAAkB,CAACsB,yBAAmB,EAAED,eAAS,CAAC;IAClE,OAAO,IAAI,CAACzB,SAAS,CAACe,YAAY,CAACC,gBAAgB,CACjD,MAAM,IAAI,CAACb,UAAU,CAACM,OAAO,CAACE,EAAE,CAACF,OAAO,CAAC,CAAC,EAC1C;MAAEC,aAAa,EAAE,CAAC;IAAE,CACtB,CAAC;EACH;AACF;AAACiB,OAAA,CAAA7B,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -72,7 +72,7 @@ class AppsState {
72
72
  const batchRequests = [];
73
73
  for (let i = 0; i < numBatches; i++) {
74
74
  const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);
75
- const request = this.container.httpClient.request((0, _http.queryMarketListing)({
75
+ const request = this.container.errorHandler.withErrorHandler(() => this.container.httpClient.request((0, _http.queryMarketListing)({
76
76
  query: {
77
77
  filter: {
78
78
  appId: batchAppIds,
@@ -80,7 +80,9 @@ class AppsState {
80
80
  status: 'APPROVED'
81
81
  }
82
82
  }
83
- }));
83
+ })), {
84
+ errorCodesMap: {}
85
+ });
84
86
  batchRequests.push(request);
85
87
  }
86
88
  return batchRequests;
@@ -1 +1 @@
1
- {"version":3,"names":["_TaskState","require","_mobx","_http","AppsState","constructor","params","_defineProperty2","default","TaskState","container","dataExtension","makeObservable","apps","observable","ref","appNames","computed","init","initTask","runOnce","status","promise","appIds","appSchemas","map","schema","appDefId","filter","Boolean","_fetchApps","length","appRequests","_getAppsRequests","responses","Promise","allSettled","allApps","_aggregateAppsFromResponses","runInAction","sort","_sortByEnglishFirst","reduce","_extractAppNames","a","b","languageCode","acc","app","_app$basicInfo","appId","basicInfo","name","batchSize","numBatches","Math","ceil","batchRequests","i","batchAppIds","slice","request","httpClient","queryMarketListing","query","environment","language","push","forEach","response","data","marketListing","value","exports"],"sources":["../../../src/state/AppsState.ts"],"sourcesContent":["import { TaskState } from './TaskState';\nimport { computed, makeObservable, observable, runInAction } from 'mobx';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { queryMarketListing } from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/http';\nimport {\n MarketListing,\n QueryMarketListingResponse,\n} from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/types';\nimport { DataExtensionState } from './DataExtensionState';\n\nexport interface AppsStateParams {\n container: WixPatternsContainer;\n dataExtension: DataExtensionState;\n}\n\nexport class AppsState {\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n readonly dataExtension;\n\n apps: MarketListing[] = [];\n\n constructor(params: Readonly<AppsStateParams>) {\n this.container = params.container;\n this.dataExtension = params.dataExtension;\n\n makeObservable(this, {\n apps: observable.ref,\n appNames: computed,\n });\n }\n\n init() {\n const { initTask, dataExtension } = this;\n\n initTask.runOnce(async () => {\n await dataExtension.initTask.status.promise;\n const appIds = (dataExtension.appSchemas || [])\n .map((schema) => schema.appDefId)\n .filter(Boolean) as string[];\n\n await this._fetchApps(appIds);\n });\n\n return () => {};\n }\n\n async _fetchApps(appIds: string[]) {\n if (!appIds.length) {\n return;\n }\n\n const appRequests = this._getAppsRequests(appIds);\n\n // Don't care if one of the requests fails, we want to have as many apps as possible\n const responses = await Promise.allSettled(appRequests);\n const allApps = this._aggregateAppsFromResponses(responses);\n runInAction(() => {\n this.apps = allApps;\n });\n }\n\n get appNames(): Record<string, string> {\n // Prioritize English, allowing other languages to override it.\n return this.apps\n .sort(this._sortByEnglishFirst)\n .reduce(this._extractAppNames, {});\n }\n\n private _sortByEnglishFirst(a: MarketListing, b: MarketListing): number {\n if (a.languageCode === 'en' && b.languageCode !== 'en') {\n return -1;\n } else if (a.languageCode !== 'en' && b.languageCode === 'en') {\n return 1;\n } else {\n return 0;\n }\n }\n\n private _extractAppNames(\n acc: Record<string, string>,\n app: MarketListing,\n ): Record<string, string> {\n if (app.appId && app.basicInfo?.name) {\n acc[app.appId] = app.basicInfo.name;\n }\n return acc;\n }\n\n private _getAppsRequests(appIds: string[]) {\n // Call the API with batches of 50, since the limit is 100, and we get two languages per app (the requested one + english)\n const batchSize = 50;\n const numBatches = Math.ceil(appIds.length / batchSize);\n\n const batchRequests = [];\n\n for (let i = 0; i < numBatches; i++) {\n const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);\n const request = this.container.httpClient.request(\n queryMarketListing({\n query: {\n filter: {\n appId: batchAppIds,\n languageCode: [this.container.environment.language, 'en'],\n status: 'APPROVED',\n },\n },\n }),\n );\n batchRequests.push(request);\n }\n\n return batchRequests;\n }\n\n private _aggregateAppsFromResponses(\n responses: PromiseSettledResult<{\n data: QueryMarketListingResponse;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n }>[],\n ) {\n const allApps: MarketListing[] = [];\n\n responses.forEach((response) => {\n if (response.status === 'fulfilled') {\n const {\n data: { marketListing: apps },\n } = response.value;\n if (apps) {\n allApps.push(...apps);\n }\n }\n });\n\n return allApps;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_TaskState","require","_mobx","_http","AppsState","constructor","params","_defineProperty2","default","TaskState","container","dataExtension","makeObservable","apps","observable","ref","appNames","computed","init","initTask","runOnce","status","promise","appIds","appSchemas","map","schema","appDefId","filter","Boolean","_fetchApps","length","appRequests","_getAppsRequests","responses","Promise","allSettled","allApps","_aggregateAppsFromResponses","runInAction","sort","_sortByEnglishFirst","reduce","_extractAppNames","a","b","languageCode","acc","app","_app$basicInfo","appId","basicInfo","name","batchSize","numBatches","Math","ceil","batchRequests","i","batchAppIds","slice","request","errorHandler","withErrorHandler","httpClient","queryMarketListing","query","environment","language","errorCodesMap","push","forEach","response","data","marketListing","value","exports"],"sources":["../../../src/state/AppsState.ts"],"sourcesContent":["import { TaskState } from './TaskState';\nimport { computed, makeObservable, observable, runInAction } from 'mobx';\nimport { WixPatternsContainer } from './WixPatternsContainer';\nimport { queryMarketListing } from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/http';\nimport {\n MarketListing,\n QueryMarketListingResponse,\n} from '@wix/bex-utils/@wix/ambassador-devcenter-app-market-listing-v1-market-listing/types';\nimport { DataExtensionState } from './DataExtensionState';\n\nexport interface AppsStateParams {\n container: WixPatternsContainer;\n dataExtension: DataExtensionState;\n}\n\nexport class AppsState {\n readonly initTask = new TaskState();\n readonly container: WixPatternsContainer;\n readonly dataExtension;\n\n apps: MarketListing[] = [];\n\n constructor(params: Readonly<AppsStateParams>) {\n this.container = params.container;\n this.dataExtension = params.dataExtension;\n\n makeObservable(this, {\n apps: observable.ref,\n appNames: computed,\n });\n }\n\n init() {\n const { initTask, dataExtension } = this;\n\n initTask.runOnce(async () => {\n await dataExtension.initTask.status.promise;\n const appIds = (dataExtension.appSchemas || [])\n .map((schema) => schema.appDefId)\n .filter(Boolean) as string[];\n\n await this._fetchApps(appIds);\n });\n\n return () => {};\n }\n\n async _fetchApps(appIds: string[]) {\n if (!appIds.length) {\n return;\n }\n\n const appRequests = this._getAppsRequests(appIds);\n\n // Don't care if one of the requests fails, we want to have as many apps as possible\n const responses = await Promise.allSettled(appRequests);\n const allApps = this._aggregateAppsFromResponses(responses);\n runInAction(() => {\n this.apps = allApps;\n });\n }\n\n get appNames(): Record<string, string> {\n // Prioritize English, allowing other languages to override it.\n return this.apps\n .sort(this._sortByEnglishFirst)\n .reduce(this._extractAppNames, {});\n }\n\n private _sortByEnglishFirst(a: MarketListing, b: MarketListing): number {\n if (a.languageCode === 'en' && b.languageCode !== 'en') {\n return -1;\n } else if (a.languageCode !== 'en' && b.languageCode === 'en') {\n return 1;\n } else {\n return 0;\n }\n }\n\n private _extractAppNames(\n acc: Record<string, string>,\n app: MarketListing,\n ): Record<string, string> {\n if (app.appId && app.basicInfo?.name) {\n acc[app.appId] = app.basicInfo.name;\n }\n return acc;\n }\n\n private _getAppsRequests(appIds: string[]) {\n // Call the API with batches of 50, since the limit is 100, and we get two languages per app (the requested one + english)\n const batchSize = 50;\n const numBatches = Math.ceil(appIds.length / batchSize);\n\n const batchRequests = [];\n\n for (let i = 0; i < numBatches; i++) {\n const batchAppIds = appIds.slice(i * batchSize, (i + 1) * batchSize);\n const request = this.container.errorHandler.withErrorHandler(\n () =>\n this.container.httpClient.request(\n queryMarketListing({\n query: {\n filter: {\n appId: batchAppIds,\n languageCode: [this.container.environment.language, 'en'],\n status: 'APPROVED',\n },\n },\n }),\n ),\n { errorCodesMap: {} },\n );\n batchRequests.push(request);\n }\n\n return batchRequests;\n }\n\n private _aggregateAppsFromResponses(\n responses: PromiseSettledResult<{\n data: QueryMarketListingResponse;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n }>[],\n ) {\n const allApps: MarketListing[] = [];\n\n responses.forEach((response) => {\n if (response.status === 'fulfilled') {\n const {\n data: { marketListing: apps },\n } = response.value;\n if (apps) {\n allApps.push(...apps);\n }\n }\n });\n\n return allApps;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -143,7 +143,9 @@ class BulkSelectState {
143
143
  const {
144
144
  select
145
145
  } = this;
146
- select.defaultStatus = select.defaultStatus.start();
146
+ (0, _mobx.runInAction)(() => {
147
+ select.defaultStatus = select.defaultStatus.start();
148
+ });
147
149
  select.startAll();
148
150
  }
149
151
  selectOneItem(item) {
@@ -153,7 +155,9 @@ class BulkSelectState {
153
155
  } = this;
154
156
  select.set(item);
155
157
  if (!useNewSelectAllLogic) {
156
- select.defaultStatus = select.defaultStatus.start();
158
+ (0, _mobx.runInAction)(() => {
159
+ select.defaultStatus = select.defaultStatus.start();
160
+ });
157
161
  }
158
162
  }
159
163
  selectOne(key) {
@@ -175,7 +179,9 @@ class BulkSelectState {
175
179
  } = this;
176
180
  select.delete(keyedItem);
177
181
  if (!useNewSelectAllLogic) {
178
- select.defaultStatus = select.defaultStatus.start();
182
+ (0, _mobx.runInAction)(() => {
183
+ select.defaultStatus = select.defaultStatus.start();
184
+ });
179
185
  }
180
186
  }
181
187
  deselectOne(key) {
@@ -195,7 +201,9 @@ class BulkSelectState {
195
201
  const {
196
202
  select
197
203
  } = this;
198
- select.defaultStatus = select.defaultStatus.start();
204
+ (0, _mobx.runInAction)(() => {
205
+ select.defaultStatus = select.defaultStatus.start();
206
+ });
199
207
  select.clear();
200
208
  }
201
209
  init() {
@@ -1 +1 @@
1
- {"version":3,"names":["_SelectState","require","_mobx","_snapshot","_util","_events","BulkSelectState","allSelected","select","defaultStatus","isChecked","hasUnchecked","uncheckedValues","length","constructor","params","_defineProperty2","default","EventEmitter","events","emit","action","isEmptyEnabledItems","deselectAll","selectAll","collection","scrollToTop","disableAutoSelectAllCount","useNewSelectAllLogic","SelectState","keyGetter","item","key","totalSnapshot","Snapshot","expression","effect","result","total","makeObservable","computed","observable","ref","selectOne","selectOneItem","deselectOne","deselectOneItem","resetToDefaults","bound","selectedIds","uncheckedIds","selectedValues","selectedKeyedItems","uncheckedInCurrentCollection","selectedCountOrTotal","checkedSet","indeterminateSet","getCollectionItem","_keyedItemsMap","get","selectedKeys","toArray","filter","status","map","value","selectedCount","allSelectedItemsFetched","items","Set","isIndeterminate","final","keyedItems","finalizeMany","start","startAll","set","keyedItem","delete","clear","init","disposers","addEventListener","emitter","forceUpdate","reaction","syncValues","e","forEach","disposer","id","isEmpty","itemKey","has","toggle","exports"],"sources":["../../../src/state/BulkSelectState.ts"],"sourcesContent":["import { SelectState } from './SelectState';\nimport { action, computed, makeObservable, observable, reaction } from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Snapshot } from './snapshot';\nimport { addEventListener, TypedEmitter } from '../util';\nimport { EventEmitter } from 'events';\nimport { KeyedItem } from '../model';\n\nexport interface BulkSelectKeyedItem<T> {\n item: T;\n key: string;\n}\n\nexport interface BulkSelectStateParams<T> {\n collection: CollectionState<T, any>;\n disableAutoSelectAllCount?: boolean;\n maxSelection?: number;\n scrollToTop: () => unknown;\n useNewSelectAllLogic?: boolean;\n}\n\nexport class BulkSelectState<T> {\n readonly select: SelectState<BulkSelectKeyedItem<T>>;\n readonly events = new EventEmitter() as TypedEmitter<{\n openModal: () => unknown;\n closeModal: () => unknown;\n }>;\n readonly collection;\n readonly scrollToTop;\n useNewSelectAllLogic;\n disableAutoSelectAllCount?: boolean;\n totalSnapshot;\n\n get allSelected() {\n return this.select.defaultStatus.isChecked;\n }\n\n get hasUnchecked() {\n return !!this.uncheckedValues.length;\n }\n\n constructor(params: Readonly<BulkSelectStateParams<T>>) {\n this.collection = params.collection;\n this.scrollToTop = params.scrollToTop;\n this.disableAutoSelectAllCount = params.disableAutoSelectAllCount;\n this.useNewSelectAllLogic = params.useNewSelectAllLogic;\n\n this.select = new SelectState<BulkSelectKeyedItem<T>>({\n keyGetter: (item) => item.key,\n });\n\n this.totalSnapshot = new Snapshot({\n expression: () => this.allSelected,\n effect: () => this.collection.result.total,\n });\n\n makeObservable(this, {\n allSelected: computed,\n disableAutoSelectAllCount: observable.ref,\n selectAll: action,\n selectOne: action,\n selectOneItem: action,\n deselectOne: action,\n deselectOneItem: action,\n resetToDefaults: action.bound,\n hasUnchecked: computed,\n selectedIds: computed,\n uncheckedIds: computed,\n selectedValues: computed,\n selectedKeyedItems: computed,\n uncheckedValues: computed,\n uncheckedInCurrentCollection: computed,\n selectedCountOrTotal: computed,\n checkedSet: computed,\n indeterminateSet: computed,\n });\n }\n\n getCollectionItem(key: string) {\n return this.collection.result._keyedItemsMap.get(key);\n }\n\n get selectedIds() {\n return this.select.selectedKeys;\n }\n\n get uncheckedIds() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.key);\n }\n\n get selectedCount(): number {\n return this.select.selectedCount;\n }\n\n get allSelectedItemsFetched() {\n return this.selectedCountOrTotal <= this.collection.result.items.length;\n }\n\n get selectedValues() {\n return this.select.selectedValues.map(({ item }) => item);\n }\n\n get checkedSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isChecked)\n .map(({ value }) => value.key),\n );\n }\n\n get indeterminateSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isIndeterminate)\n .map(({ value }) => value.key),\n );\n }\n\n get uncheckedValues() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.item);\n }\n\n isChecked(key: string) {\n const { select } = this;\n return select.isChecked(key);\n }\n\n selectAll() {\n const { select, collection } = this;\n select.defaultStatus = select.defaultStatus.final();\n const {\n result: { keyedItems },\n } = collection;\n select.finalizeMany(keyedItems);\n }\n\n deselectAll() {\n const { select } = this;\n select.defaultStatus = select.defaultStatus.start();\n select.startAll();\n }\n\n selectOneItem(item: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.set(item);\n\n if (!useNewSelectAllLogic) {\n select.defaultStatus = select.defaultStatus.start();\n }\n }\n\n selectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n if (keyedItem) {\n this.selectOneItem(keyedItem);\n }\n }\n\n deselectOneItem(keyedItem: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.delete(keyedItem);\n\n if (!useNewSelectAllLogic) {\n select.defaultStatus = select.defaultStatus.start();\n }\n }\n\n deselectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n\n if (keyedItem == null) {\n return;\n }\n\n this.deselectOneItem(keyedItem);\n }\n\n openModal = () => {\n this.events.emit('openModal');\n };\n\n closeModal = () => {\n this.events.emit('closeModal');\n };\n\n resetToDefaults() {\n const { select } = this;\n select.defaultStatus = select.defaultStatus.start();\n select.clear();\n }\n\n init() {\n const disposers = [\n this.totalSnapshot.init(),\n addEventListener(this.collection.emitter, 'ready', () => {\n this.totalSnapshot.forceUpdate();\n }),\n reaction(\n () => this.collection.result.keyedItems,\n (keyedItems) => {\n const {\n select,\n allSelected,\n disableAutoSelectAllCount,\n collection: {\n result: { _keyedItemsMap },\n },\n } = this;\n if (allSelected && !disableAutoSelectAllCount) {\n select.syncValues(keyedItems);\n } else {\n select.syncValues(\n select.selectedKeys\n .map(\n (key) =>\n _keyedItemsMap.get(key) as\n | BulkSelectKeyedItem<T>\n | null\n | undefined,\n )\n .filter((e): e is BulkSelectKeyedItem<T> => e != null),\n );\n }\n },\n ),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n get selectedKeyedItems() {\n return this.selectedIds\n .map((id) => this.collection.result.get(id))\n .filter((item): item is KeyedItem<T> => !!item);\n }\n\n get isEmpty() {\n return this.select.isEmpty;\n }\n\n get uncheckedInCurrentCollection() {\n const { uncheckedValues, collection } = this;\n const { itemKey } = collection;\n\n return uncheckedValues.filter((item) =>\n collection.result.has(itemKey(item)),\n );\n }\n\n get selectedCountOrTotal() {\n const {\n allSelected,\n disableAutoSelectAllCount,\n selectedIds,\n useNewSelectAllLogic,\n uncheckedInCurrentCollection,\n collection: {\n result: { total },\n },\n } = this;\n\n if (!allSelected || disableAutoSelectAllCount) {\n return selectedIds.length;\n }\n\n if (useNewSelectAllLogic) {\n return total - uncheckedInCurrentCollection.length;\n }\n\n return total;\n }\n\n toggleIsSelectAll = action(() => {\n const {\n allSelected,\n select: { isEmptyEnabledItems },\n } = this;\n if (allSelected || !isEmptyEnabledItems) {\n this.deselectAll();\n } else {\n this.selectAll();\n }\n });\n\n toggle(keyedItem: BulkSelectKeyedItem<T>) {\n this.select.toggle(keyedItem);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_SelectState","require","_mobx","_snapshot","_util","_events","BulkSelectState","allSelected","select","defaultStatus","isChecked","hasUnchecked","uncheckedValues","length","constructor","params","_defineProperty2","default","EventEmitter","events","emit","action","isEmptyEnabledItems","deselectAll","selectAll","collection","scrollToTop","disableAutoSelectAllCount","useNewSelectAllLogic","SelectState","keyGetter","item","key","totalSnapshot","Snapshot","expression","effect","result","total","makeObservable","computed","observable","ref","selectOne","selectOneItem","deselectOne","deselectOneItem","resetToDefaults","bound","selectedIds","uncheckedIds","selectedValues","selectedKeyedItems","uncheckedInCurrentCollection","selectedCountOrTotal","checkedSet","indeterminateSet","getCollectionItem","_keyedItemsMap","get","selectedKeys","toArray","filter","status","map","value","selectedCount","allSelectedItemsFetched","items","Set","isIndeterminate","final","keyedItems","finalizeMany","runInAction","start","startAll","set","keyedItem","delete","clear","init","disposers","addEventListener","emitter","forceUpdate","reaction","syncValues","e","forEach","disposer","id","isEmpty","itemKey","has","toggle","exports"],"sources":["../../../src/state/BulkSelectState.ts"],"sourcesContent":["import { SelectState } from './SelectState';\nimport {\n action,\n computed,\n makeObservable,\n observable,\n reaction,\n runInAction,\n} from 'mobx';\nimport { CollectionState } from './CollectionState';\nimport { Snapshot } from './snapshot';\nimport { addEventListener, TypedEmitter } from '../util';\nimport { EventEmitter } from 'events';\nimport { KeyedItem } from '../model';\n\nexport interface BulkSelectKeyedItem<T> {\n item: T;\n key: string;\n}\n\nexport interface BulkSelectStateParams<T> {\n collection: CollectionState<T, any>;\n disableAutoSelectAllCount?: boolean;\n maxSelection?: number;\n scrollToTop: () => unknown;\n useNewSelectAllLogic?: boolean;\n}\n\nexport class BulkSelectState<T> {\n readonly select: SelectState<BulkSelectKeyedItem<T>>;\n readonly events = new EventEmitter() as TypedEmitter<{\n openModal: () => unknown;\n closeModal: () => unknown;\n }>;\n readonly collection;\n readonly scrollToTop;\n useNewSelectAllLogic;\n disableAutoSelectAllCount?: boolean;\n totalSnapshot;\n\n get allSelected() {\n return this.select.defaultStatus.isChecked;\n }\n\n get hasUnchecked() {\n return !!this.uncheckedValues.length;\n }\n\n constructor(params: Readonly<BulkSelectStateParams<T>>) {\n this.collection = params.collection;\n this.scrollToTop = params.scrollToTop;\n this.disableAutoSelectAllCount = params.disableAutoSelectAllCount;\n this.useNewSelectAllLogic = params.useNewSelectAllLogic;\n\n this.select = new SelectState<BulkSelectKeyedItem<T>>({\n keyGetter: (item) => item.key,\n });\n\n this.totalSnapshot = new Snapshot({\n expression: () => this.allSelected,\n effect: () => this.collection.result.total,\n });\n\n makeObservable(this, {\n allSelected: computed,\n disableAutoSelectAllCount: observable.ref,\n selectAll: action,\n selectOne: action,\n selectOneItem: action,\n deselectOne: action,\n deselectOneItem: action,\n resetToDefaults: action.bound,\n hasUnchecked: computed,\n selectedIds: computed,\n uncheckedIds: computed,\n selectedValues: computed,\n selectedKeyedItems: computed,\n uncheckedValues: computed,\n uncheckedInCurrentCollection: computed,\n selectedCountOrTotal: computed,\n checkedSet: computed,\n indeterminateSet: computed,\n });\n }\n\n getCollectionItem(key: string) {\n return this.collection.result._keyedItemsMap.get(key);\n }\n\n get selectedIds() {\n return this.select.selectedKeys;\n }\n\n get uncheckedIds() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.key);\n }\n\n get selectedCount(): number {\n return this.select.selectedCount;\n }\n\n get allSelectedItemsFetched() {\n return this.selectedCountOrTotal <= this.collection.result.items.length;\n }\n\n get selectedValues() {\n return this.select.selectedValues.map(({ item }) => item);\n }\n\n get checkedSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isChecked)\n .map(({ value }) => value.key),\n );\n }\n\n get indeterminateSet() {\n return new Set(\n this.select.toArray\n .filter(({ status }) => status.isIndeterminate)\n .map(({ value }) => value.key),\n );\n }\n\n get uncheckedValues() {\n return this.select.toArray\n .filter(({ status }) => !status.isChecked)\n .map(({ value }) => value.item);\n }\n\n isChecked(key: string) {\n const { select } = this;\n return select.isChecked(key);\n }\n\n selectAll() {\n const { select, collection } = this;\n select.defaultStatus = select.defaultStatus.final();\n const {\n result: { keyedItems },\n } = collection;\n select.finalizeMany(keyedItems);\n }\n\n deselectAll() {\n const { select } = this;\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n select.startAll();\n }\n\n selectOneItem(item: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.set(item);\n\n if (!useNewSelectAllLogic) {\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n }\n }\n\n selectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n if (keyedItem) {\n this.selectOneItem(keyedItem);\n }\n }\n\n deselectOneItem(keyedItem: BulkSelectKeyedItem<T>) {\n const { select, useNewSelectAllLogic } = this;\n\n select.delete(keyedItem);\n\n if (!useNewSelectAllLogic) {\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n }\n }\n\n deselectOne(key: string) {\n const { collection } = this;\n const { result } = collection;\n const keyedItem = result.get(key);\n\n if (keyedItem == null) {\n return;\n }\n\n this.deselectOneItem(keyedItem);\n }\n\n openModal = () => {\n this.events.emit('openModal');\n };\n\n closeModal = () => {\n this.events.emit('closeModal');\n };\n\n resetToDefaults() {\n const { select } = this;\n runInAction(() => {\n select.defaultStatus = select.defaultStatus.start();\n });\n select.clear();\n }\n\n init() {\n const disposers = [\n this.totalSnapshot.init(),\n addEventListener(this.collection.emitter, 'ready', () => {\n this.totalSnapshot.forceUpdate();\n }),\n reaction(\n () => this.collection.result.keyedItems,\n (keyedItems) => {\n const {\n select,\n allSelected,\n disableAutoSelectAllCount,\n collection: {\n result: { _keyedItemsMap },\n },\n } = this;\n if (allSelected && !disableAutoSelectAllCount) {\n select.syncValues(keyedItems);\n } else {\n select.syncValues(\n select.selectedKeys\n .map(\n (key) =>\n _keyedItemsMap.get(key) as\n | BulkSelectKeyedItem<T>\n | null\n | undefined,\n )\n .filter((e): e is BulkSelectKeyedItem<T> => e != null),\n );\n }\n },\n ),\n ];\n\n return () => {\n disposers.forEach((disposer) => disposer());\n };\n }\n\n get selectedKeyedItems() {\n return this.selectedIds\n .map((id) => this.collection.result.get(id))\n .filter((item): item is KeyedItem<T> => !!item);\n }\n\n get isEmpty() {\n return this.select.isEmpty;\n }\n\n get uncheckedInCurrentCollection() {\n const { uncheckedValues, collection } = this;\n const { itemKey } = collection;\n\n return uncheckedValues.filter((item) =>\n collection.result.has(itemKey(item)),\n );\n }\n\n get selectedCountOrTotal() {\n const {\n allSelected,\n disableAutoSelectAllCount,\n selectedIds,\n useNewSelectAllLogic,\n uncheckedInCurrentCollection,\n collection: {\n result: { total },\n },\n } = this;\n\n if (!allSelected || disableAutoSelectAllCount) {\n return selectedIds.length;\n }\n\n if (useNewSelectAllLogic) {\n return total - uncheckedInCurrentCollection.length;\n }\n\n return total;\n }\n\n toggleIsSelectAll = action(() => {\n const {\n allSelected,\n select: { isEmptyEnabledItems },\n } = this;\n if (allSelected || !isEmptyEnabledItems) {\n this.deselectAll();\n } else {\n this.selectAll();\n }\n });\n\n toggle(keyedItem: BulkSelectKeyedItem<T>) {\n this.select.toggle(keyedItem);\n }\n}\n"],"mappings":"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","ignoreList":[]}