@wix/auto-patterns 1.1.0 → 1.2.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 (109) hide show
  1. package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +11 -16
  2. package/dist/cjs/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
  3. package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +9 -9
  4. package/dist/cjs/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
  5. package/dist/cjs/config/CmsCompositeConfig.js +85 -0
  6. package/dist/cjs/config/CmsCompositeConfig.js.map +1 -0
  7. package/dist/cjs/config/CompositeConfig.js +4 -0
  8. package/dist/cjs/config/CompositeConfig.js.map +1 -0
  9. package/dist/cjs/config/ConfigFactory.js +12 -0
  10. package/dist/cjs/config/ConfigFactory.js.map +1 -0
  11. package/dist/cjs/config/constants.js +9 -0
  12. package/dist/cjs/config/constants.js.map +1 -0
  13. package/dist/cjs/config/index.js +10 -0
  14. package/dist/cjs/config/index.js.map +1 -0
  15. package/dist/cjs/hooks/useColumns.js +2 -2
  16. package/dist/cjs/hooks/useColumns.js.map +1 -1
  17. package/dist/cjs/hooks/useFeatures.js +4 -4
  18. package/dist/cjs/hooks/useFeatures.js.map +1 -1
  19. package/dist/cjs/hooks/useFilters.js +89 -173
  20. package/dist/cjs/hooks/useFilters.js.map +1 -1
  21. package/dist/cjs/providers/ConfigContext.js +43 -0
  22. package/dist/cjs/providers/ConfigContext.js.map +1 -0
  23. package/dist/cjs/providers/index.js +4 -4
  24. package/dist/cjs/providers/index.js.map +1 -1
  25. package/dist/cjs/types.js.map +1 -1
  26. package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js +7 -12
  27. package/dist/esm/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.js.map +1 -1
  28. package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js +7 -7
  29. package/dist/esm/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.js.map +1 -1
  30. package/dist/esm/config/CmsCompositeConfig.js +80 -0
  31. package/dist/esm/config/CmsCompositeConfig.js.map +1 -0
  32. package/dist/esm/config/CompositeConfig.js +2 -0
  33. package/dist/esm/config/CompositeConfig.js.map +1 -0
  34. package/dist/esm/config/ConfigFactory.js +8 -0
  35. package/dist/esm/config/ConfigFactory.js.map +1 -0
  36. package/dist/esm/config/constants.js +5 -0
  37. package/dist/esm/config/constants.js.map +1 -0
  38. package/dist/esm/config/index.js +2 -0
  39. package/dist/esm/config/index.js.map +1 -0
  40. package/dist/esm/hooks/useColumns.js +3 -3
  41. package/dist/esm/hooks/useColumns.js.map +1 -1
  42. package/dist/esm/hooks/useFeatures.js +5 -5
  43. package/dist/esm/hooks/useFeatures.js.map +1 -1
  44. package/dist/esm/hooks/useFilters.js +86 -170
  45. package/dist/esm/hooks/useFilters.js.map +1 -1
  46. package/dist/esm/providers/ConfigContext.js +29 -0
  47. package/dist/esm/providers/ConfigContext.js.map +1 -0
  48. package/dist/esm/providers/index.js +1 -1
  49. package/dist/esm/providers/index.js.map +1 -1
  50. package/dist/esm/types.js.map +1 -1
  51. package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts +2 -3
  52. package/dist/types/components/AutoPatternsCollectionPage/AutoPatternsCollectionPage.d.ts.map +1 -1
  53. package/dist/types/components/AutoPatternsCollectionPageContent/AutoPatternsCollectionPageContent.d.ts.map +1 -1
  54. package/dist/types/config/CmsCompositeConfig.d.ts +6 -0
  55. package/dist/types/config/CmsCompositeConfig.d.ts.map +1 -0
  56. package/dist/types/config/CompositeConfig.d.ts +8 -0
  57. package/dist/types/config/CompositeConfig.d.ts.map +1 -0
  58. package/dist/types/config/ConfigFactory.d.ts +4 -0
  59. package/dist/types/config/ConfigFactory.d.ts.map +1 -0
  60. package/dist/types/config/constants.d.ts +4 -0
  61. package/dist/types/config/constants.d.ts.map +1 -0
  62. package/dist/types/config/index.d.ts +2 -0
  63. package/dist/types/config/index.d.ts.map +1 -0
  64. package/dist/types/hooks/useColumns.d.ts.map +1 -1
  65. package/dist/types/hooks/useFilters.d.ts +2 -6
  66. package/dist/types/hooks/useFilters.d.ts.map +1 -1
  67. package/dist/types/providers/ConfigContext.d.ts +11 -0
  68. package/dist/types/providers/ConfigContext.d.ts.map +1 -0
  69. package/dist/types/providers/index.d.ts +1 -1
  70. package/dist/types/providers/index.d.ts.map +1 -1
  71. package/dist/types/types.d.ts +19 -5
  72. package/dist/types/types.d.ts.map +1 -1
  73. package/package.json +2 -2
  74. package/dist/cjs/providers/PatternsWizardContext.js +0 -48
  75. package/dist/cjs/providers/PatternsWizardContext.js.map +0 -1
  76. package/dist/cjs/schemas/cms.js +0 -37
  77. package/dist/cjs/schemas/cms.js.map +0 -1
  78. package/dist/cjs/schemas/index.js +0 -10
  79. package/dist/cjs/schemas/index.js.map +0 -1
  80. package/dist/cjs/schemas/schemaHandler.js +0 -4
  81. package/dist/cjs/schemas/schemaHandler.js.map +0 -1
  82. package/dist/cjs/schemas/schemaHandlerFactory.js +0 -15
  83. package/dist/cjs/schemas/schemaHandlerFactory.js.map +0 -1
  84. package/dist/cjs/utils.js +0 -76
  85. package/dist/cjs/utils.js.map +0 -1
  86. package/dist/esm/providers/PatternsWizardContext.js +0 -34
  87. package/dist/esm/providers/PatternsWizardContext.js.map +0 -1
  88. package/dist/esm/schemas/cms.js +0 -31
  89. package/dist/esm/schemas/cms.js.map +0 -1
  90. package/dist/esm/schemas/index.js +0 -2
  91. package/dist/esm/schemas/index.js.map +0 -1
  92. package/dist/esm/schemas/schemaHandler.js +0 -2
  93. package/dist/esm/schemas/schemaHandler.js.map +0 -1
  94. package/dist/esm/schemas/schemaHandlerFactory.js +0 -10
  95. package/dist/esm/schemas/schemaHandlerFactory.js.map +0 -1
  96. package/dist/esm/utils.js +0 -33
  97. package/dist/esm/utils.js.map +0 -1
  98. package/dist/types/providers/PatternsWizardContext.d.ts +0 -17
  99. package/dist/types/providers/PatternsWizardContext.d.ts.map +0 -1
  100. package/dist/types/schemas/cms.d.ts +0 -21
  101. package/dist/types/schemas/cms.d.ts.map +0 -1
  102. package/dist/types/schemas/index.d.ts +0 -2
  103. package/dist/types/schemas/index.d.ts.map +0 -1
  104. package/dist/types/schemas/schemaHandler.d.ts +0 -7
  105. package/dist/types/schemas/schemaHandler.d.ts.map +0 -1
  106. package/dist/types/schemas/schemaHandlerFactory.d.ts +0 -4
  107. package/dist/types/schemas/schemaHandlerFactory.d.ts.map +0 -1
  108. package/dist/types/utils.d.ts +0 -5
  109. package/dist/types/utils.d.ts.map +0 -1
@@ -0,0 +1,80 @@
1
+ import { collections, items } from '@wix/data';
2
+ import { FilterPropToOperator } from './constants';
3
+ const FilterPropToMethod = {
4
+ from: 'ge',
5
+ to: 'le'
6
+ };
7
+ function isValidFilterProp(prop) {
8
+ return Object.prototype.hasOwnProperty.call(FilterPropToMethod, prop);
9
+ }
10
+ function getOperatorForFilter(prop) {
11
+ if (isValidFilterProp(prop)) {
12
+ return FilterPropToMethod[prop];
13
+ }
14
+ return undefined;
15
+ }
16
+ const isSupportedOperator = (schema, filterProp, filterKey) => {
17
+ const field = schema.fields.find(f => f.id === filterKey);
18
+ if (!field) {
19
+ return false;
20
+ }
21
+ if (!isValidFilterProp(filterProp)) {
22
+ return false;
23
+ }
24
+ const operator = FilterPropToOperator[filterProp];
25
+ const supportedOperators = field.capabilities.supportedQueryOperators;
26
+ return supportedOperators.includes(operator);
27
+ };
28
+ export async function fetchCmsSchema(config) {
29
+ const schema = await collections.getDataCollection(config.collectionId);
30
+ return {
31
+ fields: schema.fields.map(field => {
32
+ var _field$capabilities, _field$capabilities2;
33
+ return {
34
+ id: field.key,
35
+ type: field.type,
36
+ capabilities: {
37
+ supportedQueryOperators: ((_field$capabilities = field.capabilities) == null ? void 0 : _field$capabilities.queryOperators) || [],
38
+ sortable: ((_field$capabilities2 = field.capabilities) == null ? void 0 : _field$capabilities2.sortable) || false
39
+ }
40
+ };
41
+ })
42
+ };
43
+ }
44
+ export async function getCmsCompositeConfig(config) {
45
+ const schema = await fetchCmsSchema(config);
46
+ const collection = {
47
+ fetchData: async query => {
48
+ let dataQuery = items.query(config.collectionId);
49
+ const {
50
+ filters
51
+ } = query;
52
+ for (const key in filters) {
53
+ const filter = filters[key];
54
+ if (filter && typeof filter === 'object') {
55
+ const filterObj = filter;
56
+ for (const prop in filterObj) {
57
+ const operator = getOperatorForFilter(prop);
58
+ if (operator && typeof dataQuery[operator] === 'function' && isSupportedOperator(schema, prop, key)) {
59
+ const value = filterObj[prop];
60
+ if (value) {
61
+ dataQuery = dataQuery[operator](key, value);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ const res = await dataQuery.find();
68
+ return {
69
+ items: res.items,
70
+ total: res.totalCount
71
+ };
72
+ }
73
+ };
74
+ return {
75
+ page: config,
76
+ schema,
77
+ collection
78
+ };
79
+ }
80
+ //# sourceMappingURL=CmsCompositeConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["collections","items","FilterPropToOperator","FilterPropToMethod","from","to","isValidFilterProp","prop","Object","prototype","hasOwnProperty","call","getOperatorForFilter","undefined","isSupportedOperator","schema","filterProp","filterKey","field","fields","find","f","id","operator","supportedOperators","capabilities","supportedQueryOperators","includes","fetchCmsSchema","config","getDataCollection","collectionId","map","_field$capabilities","_field$capabilities2","key","type","queryOperators","sortable","getCmsCompositeConfig","collection","fetchData","query","dataQuery","filters","filter","filterObj","value","res","total","totalCount","page"],"sources":["../../../src/config/CmsCompositeConfig.ts"],"sourcesContent":["import { PageConfig, SchemaConfig } from '../types';\nimport { collections, items } from '@wix/data';\nimport { CompositeConfig } from './CompositeConfig';\nimport { FilterProp, FilterPropToOperator } from './constants';\nimport { ComputedQuery } from '@wix/patterns';\n\nexport type CmsOperatorMethod = 'ge' | 'le';\n\nconst FilterPropToMethod: Record<FilterProp, CmsOperatorMethod> = {\n from: 'ge',\n to: 'le',\n};\n\nfunction isValidFilterProp(prop: string): prop is FilterProp {\n return Object.prototype.hasOwnProperty.call(FilterPropToMethod, prop);\n}\n\nfunction getOperatorForFilter(prop: string): CmsOperatorMethod | undefined {\n if (isValidFilterProp(prop)) {\n return FilterPropToMethod[prop];\n }\n return undefined;\n}\n\nconst isSupportedOperator = (\n schema: SchemaConfig,\n filterProp: string,\n filterKey: string,\n) => {\n const field = schema.fields.find((f) => f.id === filterKey);\n if (!field) {\n return false;\n }\n\n if (!isValidFilterProp(filterProp)) {\n return false;\n }\n\n const operator = FilterPropToOperator[filterProp];\n const supportedOperators = field.capabilities.supportedQueryOperators;\n return supportedOperators.includes(operator);\n};\n\nexport async function fetchCmsSchema(\n config: PageConfig,\n): Promise<SchemaConfig> {\n const schema = await collections.getDataCollection(config.collectionId);\n return {\n fields: schema.fields.map((field) => ({\n id: field.key as string,\n type: field.type as string,\n capabilities: {\n supportedQueryOperators: field.capabilities?.queryOperators || [],\n sortable: field.capabilities?.sortable || false,\n },\n })),\n };\n}\n\nexport async function getCmsCompositeConfig(\n config: PageConfig,\n): Promise<CompositeConfig> {\n const schema = await fetchCmsSchema(config);\n\n const collection = {\n fetchData: async (query: ComputedQuery<any>) => {\n let dataQuery = items.query(config.collectionId);\n const { filters } = query;\n for (const key in filters) {\n const filter = filters[key];\n if (filter && typeof filter === 'object') {\n const filterObj = filter as Record<string, any>;\n for (const prop in filterObj) {\n const operator = getOperatorForFilter(prop);\n if (\n operator &&\n typeof dataQuery[operator] === 'function' &&\n isSupportedOperator(schema, prop, key)\n ) {\n const value = filterObj[prop];\n if (value) {\n dataQuery = dataQuery[operator](key, value);\n }\n }\n }\n }\n }\n\n const res = await dataQuery.find();\n return {\n items: res.items,\n total: res.totalCount,\n };\n },\n };\n\n return { page: config, schema, collection };\n}\n"],"mappings":"AACA,SAASA,WAAW,EAAEC,KAAK,QAAQ,WAAW;AAE9C,SAAqBC,oBAAoB,QAAQ,aAAa;AAK9D,MAAMC,kBAAyD,GAAG;EAChEC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE;AACN,CAAC;AAED,SAASC,iBAAiBA,CAACC,IAAY,EAAsB;EAC3D,OAAOC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACR,kBAAkB,EAAEI,IAAI,CAAC;AACvE;AAEA,SAASK,oBAAoBA,CAACL,IAAY,EAAiC;EACzE,IAAID,iBAAiB,CAACC,IAAI,CAAC,EAAE;IAC3B,OAAOJ,kBAAkB,CAACI,IAAI,CAAC;EACjC;EACA,OAAOM,SAAS;AAClB;AAEA,MAAMC,mBAAmB,GAAGA,CAC1BC,MAAoB,EACpBC,UAAkB,EAClBC,SAAiB,KACd;EACH,MAAMC,KAAK,GAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKL,SAAS,CAAC;EAC3D,IAAI,CAACC,KAAK,EAAE;IACV,OAAO,KAAK;EACd;EAEA,IAAI,CAACZ,iBAAiB,CAACU,UAAU,CAAC,EAAE;IAClC,OAAO,KAAK;EACd;EAEA,MAAMO,QAAQ,GAAGrB,oBAAoB,CAACc,UAAU,CAAC;EACjD,MAAMQ,kBAAkB,GAAGN,KAAK,CAACO,YAAY,CAACC,uBAAuB;EACrE,OAAOF,kBAAkB,CAACG,QAAQ,CAACJ,QAAQ,CAAC;AAC9C,CAAC;AAED,OAAO,eAAeK,cAAcA,CAClCC,MAAkB,EACK;EACvB,MAAMd,MAAM,GAAG,MAAMf,WAAW,CAAC8B,iBAAiB,CAACD,MAAM,CAACE,YAAY,CAAC;EACvE,OAAO;IACLZ,MAAM,EAAEJ,MAAM,CAACI,MAAM,CAACa,GAAG,CAAEd,KAAK;MAAA,IAAAe,mBAAA,EAAAC,oBAAA;MAAA,OAAM;QACpCZ,EAAE,EAAEJ,KAAK,CAACiB,GAAa;QACvBC,IAAI,EAAElB,KAAK,CAACkB,IAAc;QAC1BX,YAAY,EAAE;UACZC,uBAAuB,EAAE,EAAAO,mBAAA,GAAAf,KAAK,CAACO,YAAY,qBAAlBQ,mBAAA,CAAoBI,cAAc,KAAI,EAAE;UACjEC,QAAQ,EAAE,EAAAJ,oBAAA,GAAAhB,KAAK,CAACO,YAAY,qBAAlBS,oBAAA,CAAoBI,QAAQ,KAAI;QAC5C;MACF,CAAC;IAAA,CAAC;EACJ,CAAC;AACH;AAEA,OAAO,eAAeC,qBAAqBA,CACzCV,MAAkB,EACQ;EAC1B,MAAMd,MAAM,GAAG,MAAMa,cAAc,CAACC,MAAM,CAAC;EAE3C,MAAMW,UAAU,GAAG;IACjBC,SAAS,EAAE,MAAOC,KAAyB,IAAK;MAC9C,IAAIC,SAAS,GAAG1C,KAAK,CAACyC,KAAK,CAACb,MAAM,CAACE,YAAY,CAAC;MAChD,MAAM;QAAEa;MAAQ,CAAC,GAAGF,KAAK;MACzB,KAAK,MAAMP,GAAG,IAAIS,OAAO,EAAE;QACzB,MAAMC,MAAM,GAAGD,OAAO,CAACT,GAAG,CAAC;QAC3B,IAAIU,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;UACxC,MAAMC,SAAS,GAAGD,MAA6B;UAC/C,KAAK,MAAMtC,IAAI,IAAIuC,SAAS,EAAE;YAC5B,MAAMvB,QAAQ,GAAGX,oBAAoB,CAACL,IAAI,CAAC;YAC3C,IACEgB,QAAQ,IACR,OAAOoB,SAAS,CAACpB,QAAQ,CAAC,KAAK,UAAU,IACzCT,mBAAmB,CAACC,MAAM,EAAER,IAAI,EAAE4B,GAAG,CAAC,EACtC;cACA,MAAMY,KAAK,GAAGD,SAAS,CAACvC,IAAI,CAAC;cAC7B,IAAIwC,KAAK,EAAE;gBACTJ,SAAS,GAAGA,SAAS,CAACpB,QAAQ,CAAC,CAACY,GAAG,EAAEY,KAAK,CAAC;cAC7C;YACF;UACF;QACF;MACF;MAEA,MAAMC,GAAG,GAAG,MAAML,SAAS,CAACvB,IAAI,CAAC,CAAC;MAClC,OAAO;QACLnB,KAAK,EAAE+C,GAAG,CAAC/C,KAAK;QAChBgD,KAAK,EAAED,GAAG,CAACE;MACb,CAAC;IACH;EACF,CAAC;EAED,OAAO;IAAEC,IAAI,EAAEtB,MAAM;IAAEd,MAAM;IAAEyB;EAAW,CAAC;AAC7C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CompositeConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/config/CompositeConfig.ts"],"sourcesContent":["import { SchemaConfig, PageConfig } from '../types';\nimport { CollectionConfig } from '@wix/patterns';\n\nexport interface CompositeConfig {\n page: PageConfig;\n schema: SchemaConfig;\n collection: Pick<CollectionConfig<any, any>, 'fetchData'>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { getCmsCompositeConfig } from './CmsCompositeConfig';
2
+ export async function getCompositeConfig(config) {
3
+ if (config.entityTypeSource === 'cms') {
4
+ return getCmsCompositeConfig(config);
5
+ }
6
+ throw new Error(`Unsupported source type: ${config.entityTypeSource}`);
7
+ }
8
+ //# sourceMappingURL=ConfigFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getCmsCompositeConfig","getCompositeConfig","config","entityTypeSource","Error"],"sources":["../../../src/config/ConfigFactory.ts"],"sourcesContent":["import { PageConfig } from '../types';\nimport { getCmsCompositeConfig } from './CmsCompositeConfig';\nimport { CompositeConfig } from './CompositeConfig';\n\nexport async function getCompositeConfig(\n config: PageConfig,\n): Promise<CompositeConfig> {\n if (config.entityTypeSource === 'cms') {\n return getCmsCompositeConfig(config);\n }\n throw new Error(`Unsupported source type: ${config.entityTypeSource}`);\n}\n"],"mappings":"AACA,SAASA,qBAAqB,QAAQ,sBAAsB;AAG5D,OAAO,eAAeC,kBAAkBA,CACtCC,MAAkB,EACQ;EAC1B,IAAIA,MAAM,CAACC,gBAAgB,KAAK,KAAK,EAAE;IACrC,OAAOH,qBAAqB,CAACE,MAAM,CAAC;EACtC;EACA,MAAM,IAAIE,KAAK,CAAC,4BAA4BF,MAAM,CAACC,gBAAgB,EAAE,CAAC;AACxE","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export const FilterPropToOperator = {
2
+ from: 'GTE',
3
+ to: 'LTE'
4
+ };
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FilterPropToOperator","from","to"],"sources":["../../../src/config/constants.ts"],"sourcesContent":["import { QueryOperator } from '../types';\n\nexport type FilterProp = 'from' | 'to';\n\nexport const FilterPropToOperator: Record<FilterProp, QueryOperator> = {\n from: 'GTE',\n to: 'LTE',\n};\n"],"mappings":"AAIA,OAAO,MAAMA,oBAAuD,GAAG;EACrEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE;AACN,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from './CompositeConfig';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/config/index.ts"],"sourcesContent":["export * from './CompositeConfig';\n"],"mappings":"AAAA,cAAc,mBAAmB","ignoreList":[]}
@@ -1,12 +1,12 @@
1
- import { usePatternsWizardContext, usePatternsWizardOverridesContext } from '../providers';
1
+ import { useConfig, usePatternsWizardOverridesContext } from '../providers';
2
2
  import { SupportedValueTypeEnum } from '../types';
3
3
  import { camelCase, get } from 'lodash';
4
4
  export const useColumns = () => {
5
5
  const {
6
- configuration: {
6
+ page: {
7
7
  columns = []
8
8
  }
9
- } = usePatternsWizardContext();
9
+ } = useConfig();
10
10
  const overrides = usePatternsWizardOverridesContext();
11
11
  return columns.map(column => ({
12
12
  id: column.id,
@@ -1 +1 @@
1
- {"version":3,"names":["usePatternsWizardContext","usePatternsWizardOverridesContext","SupportedValueTypeEnum","camelCase","get","useColumns","configuration","columns","overrides","map","column","id","title","name","width","render","item","_overrides$columns","_overrides$columns$ca","itemValue","call","value","createRenderer","type","BOOLEAN","DATE","Date","toLocaleString"],"sources":["../../../src/hooks/useColumns.ts"],"sourcesContent":["import { TableColumn } from '@wix/patterns';\nimport {\n usePatternsWizardContext,\n usePatternsWizardOverridesContext,\n} from '../providers';\nimport { Column, SupportedValueTypeEnum } from '../types';\nimport { camelCase, get } from 'lodash';\n\nexport const useColumns = (): TableColumn<any>[] => {\n const {\n configuration: { columns = [] },\n } = usePatternsWizardContext();\n\n const overrides = usePatternsWizardOverridesContext();\n\n return columns.map((column) => ({\n id: column.id,\n title: column.name,\n ...(column.width ? { width: column.width } : {}),\n render: (item) => {\n const itemValue = get(item, column.id);\n return (\n overrides?.columns?.[camelCase(column.id)]?.({ value: itemValue }) ??\n createRenderer(column, itemValue)\n );\n },\n }));\n};\n\nconst createRenderer = (column: Column, itemValue: any): string => {\n switch (column.type) {\n case SupportedValueTypeEnum.BOOLEAN:\n return itemValue ? '✔' : '✖';\n case SupportedValueTypeEnum.DATE:\n return itemValue ? new Date(itemValue).toLocaleString() : '';\n default:\n return itemValue;\n }\n};\n"],"mappings":"AACA,SACEA,wBAAwB,EACxBC,iCAAiC,QAC5B,cAAc;AACrB,SAAiBC,sBAAsB,QAAQ,UAAU;AACzD,SAASC,SAAS,EAAEC,GAAG,QAAQ,QAAQ;AAEvC,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAA0B;EAClD,MAAM;IACJC,aAAa,EAAE;MAAEC,OAAO,GAAG;IAAG;EAChC,CAAC,GAAGP,wBAAwB,CAAC,CAAC;EAE9B,MAAMQ,SAAS,GAAGP,iCAAiC,CAAC,CAAC;EAErD,OAAOM,OAAO,CAACE,GAAG,CAAEC,MAAM,KAAM;IAC9BC,EAAE,EAAED,MAAM,CAACC,EAAE;IACbC,KAAK,EAAEF,MAAM,CAACG,IAAI;IAClB,IAAIH,MAAM,CAACI,KAAK,GAAG;MAAEA,KAAK,EAAEJ,MAAM,CAACI;IAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChDC,MAAM,EAAGC,IAAI,IAAK;MAAA,IAAAC,kBAAA,EAAAC,qBAAA;MAChB,MAAMC,SAAS,GAAGf,GAAG,CAACY,IAAI,EAAEN,MAAM,CAACC,EAAE,CAAC;MACtC,OACE,CAAAH,SAAS,aAAAS,kBAAA,GAATT,SAAS,CAAED,OAAO,cAAAW,qBAAA,GAAlBD,kBAAA,CAAqBd,SAAS,CAACO,MAAM,CAACC,EAAE,CAAC,CAAC,qBAA1CO,qBAAA,CAAAE,IAAA,CAAAH,kBAAA,EAA6C;QAAEI,KAAK,EAAEF;MAAU,CAAC,CAAC,KAClEG,cAAc,CAACZ,MAAM,EAAES,SAAS,CAAC;IAErC;EACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAMG,cAAc,GAAGA,CAACZ,MAAc,EAAES,SAAc,KAAa;EACjE,QAAQT,MAAM,CAACa,IAAI;IACjB,KAAKrB,sBAAsB,CAACsB,OAAO;MACjC,OAAOL,SAAS,GAAG,GAAG,GAAG,GAAG;IAC9B,KAAKjB,sBAAsB,CAACuB,IAAI;MAC9B,OAAON,SAAS,GAAG,IAAIO,IAAI,CAACP,SAAS,CAAC,CAACQ,cAAc,CAAC,CAAC,GAAG,EAAE;IAC9D;MACE,OAAOR,SAAS;EACpB;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useConfig","usePatternsWizardOverridesContext","SupportedValueTypeEnum","camelCase","get","useColumns","page","columns","overrides","map","column","id","title","name","width","render","item","_overrides$columns","_overrides$columns$ca","itemValue","call","value","createRenderer","type","BOOLEAN","DATE","Date","toLocaleString"],"sources":["../../../src/hooks/useColumns.ts"],"sourcesContent":["import { TableColumn } from '@wix/patterns';\nimport { useConfig, usePatternsWizardOverridesContext } from '../providers';\nimport { Column, SupportedValueTypeEnum } from '../types';\nimport { camelCase, get } from 'lodash';\n\nexport const useColumns = (): TableColumn<any>[] => {\n const {\n page: { columns = [] },\n } = useConfig();\n\n const overrides = usePatternsWizardOverridesContext();\n\n return columns.map((column) => ({\n id: column.id,\n title: column.name,\n ...(column.width ? { width: column.width } : {}),\n render: (item) => {\n const itemValue = get(item, column.id);\n return (\n overrides?.columns?.[camelCase(column.id)]?.({ value: itemValue }) ??\n createRenderer(column, itemValue)\n );\n },\n }));\n};\n\nconst createRenderer = (column: Column, itemValue: any): string => {\n switch (column.type) {\n case SupportedValueTypeEnum.BOOLEAN:\n return itemValue ? '✔' : '✖';\n case SupportedValueTypeEnum.DATE:\n return itemValue ? new Date(itemValue).toLocaleString() : '';\n default:\n return itemValue;\n }\n};\n"],"mappings":"AACA,SAASA,SAAS,EAAEC,iCAAiC,QAAQ,cAAc;AAC3E,SAAiBC,sBAAsB,QAAQ,UAAU;AACzD,SAASC,SAAS,EAAEC,GAAG,QAAQ,QAAQ;AAEvC,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAA0B;EAClD,MAAM;IACJC,IAAI,EAAE;MAAEC,OAAO,GAAG;IAAG;EACvB,CAAC,GAAGP,SAAS,CAAC,CAAC;EAEf,MAAMQ,SAAS,GAAGP,iCAAiC,CAAC,CAAC;EAErD,OAAOM,OAAO,CAACE,GAAG,CAAEC,MAAM,KAAM;IAC9BC,EAAE,EAAED,MAAM,CAACC,EAAE;IACbC,KAAK,EAAEF,MAAM,CAACG,IAAI;IAClB,IAAIH,MAAM,CAACI,KAAK,GAAG;MAAEA,KAAK,EAAEJ,MAAM,CAACI;IAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChDC,MAAM,EAAGC,IAAI,IAAK;MAAA,IAAAC,kBAAA,EAAAC,qBAAA;MAChB,MAAMC,SAAS,GAAGf,GAAG,CAACY,IAAI,EAAEN,MAAM,CAACC,EAAE,CAAC;MACtC,OACE,CAAAH,SAAS,aAAAS,kBAAA,GAATT,SAAS,CAAED,OAAO,cAAAW,qBAAA,GAAlBD,kBAAA,CAAqBd,SAAS,CAACO,MAAM,CAACC,EAAE,CAAC,CAAC,qBAA1CO,qBAAA,CAAAE,IAAA,CAAAH,kBAAA,EAA6C;QAAEI,KAAK,EAAEF;MAAU,CAAC,CAAC,KAClEG,cAAc,CAACZ,MAAM,EAAES,SAAS,CAAC;IAErC;EACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAMG,cAAc,GAAGA,CAACZ,MAAc,EAAES,SAAc,KAAa;EACjE,QAAQT,MAAM,CAACa,IAAI;IACjB,KAAKrB,sBAAsB,CAACsB,OAAO;MACjC,OAAOL,SAAS,GAAG,GAAG,GAAG,GAAG;IAC9B,KAAKjB,sBAAsB,CAACuB,IAAI;MAC9B,OAAON,SAAS,GAAG,IAAIO,IAAI,CAACP,SAAS,CAAC,CAACQ,cAAc,CAAC,CAAC,GAAG,EAAE;IAC9D;MACE,OAAOR,SAAS;EACpB;AACF,CAAC","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  import React from 'react';
2
2
  import { Views, DataExtension } from '@wix/patterns';
3
- import { usePatternsWizardContext } from '../providers';
3
+ import { useConfig } from '../providers';
4
4
  import { useFilters } from './useFilters';
5
5
  export const useFeatures = () => {
6
6
  const {
7
- configuration
8
- } = usePatternsWizardContext();
7
+ page
8
+ } = useConfig();
9
9
  const {
10
10
  views,
11
11
  customFields
12
- } = configuration;
13
- const filters = useFilters(configuration);
12
+ } = page;
13
+ const filters = useFilters(page);
14
14
  return {
15
15
  views: views != null && views.enabled ? /*#__PURE__*/React.createElement(Views, null) : undefined,
16
16
  dataExtension: customFields != null && customFields.enabled ? /*#__PURE__*/React.createElement(DataExtension, null) : undefined,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Views","DataExtension","usePatternsWizardContext","useFilters","useFeatures","configuration","views","customFields","filters","enabled","createElement","undefined","dataExtension"],"sources":["../../../src/hooks/useFeatures.tsx"],"sourcesContent":["import React from 'react';\nimport { Views, DataExtension } from '@wix/patterns';\nimport { usePatternsWizardContext } from '../providers';\nimport { useFilters } from './useFilters';\n\nexport const useFeatures = () => {\n const { configuration } = usePatternsWizardContext();\n const { views, customFields } = configuration;\n const filters = useFilters(configuration);\n\n return {\n views: views?.enabled ? <Views /> : undefined,\n dataExtension: customFields?.enabled ? <DataExtension /> : undefined,\n filters,\n };\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,EAAEC,aAAa,QAAQ,eAAe;AACpD,SAASC,wBAAwB,QAAQ,cAAc;AACvD,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC;EAAc,CAAC,GAAGH,wBAAwB,CAAC,CAAC;EACpD,MAAM;IAAEI,KAAK;IAAEC;EAAa,CAAC,GAAGF,aAAa;EAC7C,MAAMG,OAAO,GAAGL,UAAU,CAACE,aAAa,CAAC;EAEzC,OAAO;IACLC,KAAK,EAAEA,KAAK,YAALA,KAAK,CAAEG,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACV,KAAK,MAAE,CAAC,GAAGW,SAAS;IAC7CC,aAAa,EAAEL,YAAY,YAAZA,YAAY,CAAEE,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACT,aAAa,MAAE,CAAC,GAAGU,SAAS;IACpEH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Views","DataExtension","useConfig","useFilters","useFeatures","page","views","customFields","filters","enabled","createElement","undefined","dataExtension"],"sources":["../../../src/hooks/useFeatures.tsx"],"sourcesContent":["import React from 'react';\nimport { Views, DataExtension } from '@wix/patterns';\nimport { useConfig } from '../providers';\nimport { useFilters } from './useFilters';\n\nexport const useFeatures = () => {\n const { page } = useConfig();\n const { views, customFields } = page;\n const filters = useFilters(page);\n\n return {\n views: views?.enabled ? <Views /> : undefined,\n dataExtension: customFields?.enabled ? <DataExtension /> : undefined,\n filters,\n };\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,EAAEC,aAAa,QAAQ,eAAe;AACpD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAM;IAAEC;EAAK,CAAC,GAAGH,SAAS,CAAC,CAAC;EAC5B,MAAM;IAAEI,KAAK;IAAEC;EAAa,CAAC,GAAGF,IAAI;EACpC,MAAMG,OAAO,GAAGL,UAAU,CAACE,IAAI,CAAC;EAEhC,OAAO;IACLC,KAAK,EAAEA,KAAK,YAALA,KAAK,CAAEG,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACV,KAAK,MAAE,CAAC,GAAGW,SAAS;IAC7CC,aAAa,EAAEL,YAAY,YAAZA,YAAY,CAAEE,OAAO,gBAAGV,KAAA,CAAAW,aAAA,CAACT,aAAa,MAAE,CAAC,GAAGU,SAAS;IACpEH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,186 +1,104 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
3
  import _ from 'lodash';
4
- import { SupportedValueTypeEnum } from '../types';
5
4
  import { DateRangeFilter, dateRangeFilter, idNameArrayFilter, MultiSelectCheckboxFilter, NumberRangeFilter, numberRangeFilter, RadioGroupFilter, SingleSelectFilter, useStaticListFilterCollection } from '@wix/patterns';
6
5
  export const useFilters = config => {
7
- var _config$filters;
8
- const filters = [];
9
- (_config$filters = config.filters) == null || _config$filters.forEach(filter => {
10
- var _filter$static, _filter$static2, _filter$static3, _filter$numberConfig, _filter$numberConfig2, _filter$numberConfig3;
11
- const key = _.camelCase(filter.displayName);
12
- switch (filter.componentType) {
13
- case 'date-range':
14
- filters.push({
15
- key,
16
- filter: dateRangeFilter(),
17
- component: DateRangeFilter,
18
- props: {
19
- accordionItemProps: {
20
- label: filter.displayName
21
- }
22
- },
23
- query: (acc, values) => {
24
- if (values[key]) {
25
- if (values[key].from) {
26
- acc.$and.push({
27
- [filter.id]: {
28
- $gte: values[key].from.toISOString()
29
- }
30
- });
31
- }
32
- if (values[key].to) {
33
- acc.$and.push({
34
- [filter.id]: {
35
- $lte: values[key].to.toISOString()
36
- }
37
- });
6
+ const filters = React.useMemo(() => {
7
+ var _config$filters;
8
+ const currFilters = [];
9
+ (_config$filters = config.filters) == null || _config$filters.forEach(filter => {
10
+ var _filter$static, _filter$static2, _filter$static3, _filter$numberConfig, _filter$numberConfig2, _filter$numberConfig3;
11
+ const key = _.camelCase(filter.displayName);
12
+ switch (filter.componentType) {
13
+ case 'date-range':
14
+ currFilters.push({
15
+ key,
16
+ filter: dateRangeFilter(),
17
+ component: DateRangeFilter,
18
+ props: {
19
+ accordionItemProps: {
20
+ label: filter.displayName
38
21
  }
39
22
  }
40
- return acc;
41
- }
42
- });
43
- break;
44
- case 'multi-select':
45
- filters.push({
46
- key,
47
- filter: idNameArrayFilter(),
48
- component: MultiSelectCheckboxFilter,
49
- collectionData: ((_filter$static = filter.static) == null ? void 0 : _filter$static.values.map(value => {
50
- return {
51
- id: value.id,
52
- name: value.value
53
- };
54
- })) ?? [],
55
- props: {
56
- accordionItemProps: {
57
- label: filter.displayName
58
- },
59
- popoverProps: {
60
- appendTo: 'window'
61
- }
62
- },
63
- query: (acc, values) => {
64
- if (values[key]) {
65
- acc.$and.push({
66
- [filter.id]: {
67
- $in: values[key].map(item => item.id)
68
- }
69
- });
70
- }
71
- return acc;
72
- }
73
- });
74
- break;
75
- case 'single':
76
- filters.push({
77
- key,
78
- filter: idNameArrayFilter(),
79
- component: SingleSelectFilter,
80
- collectionData: ((_filter$static2 = filter.static) == null ? void 0 : _filter$static2.values.map(value => {
81
- return {
82
- id: value.id,
83
- name: value.value
84
- };
85
- })) ?? [],
86
- props: {
87
- placeholder: `Select ${filter.displayName}`,
88
- accordionItemProps: {
89
- label: filter.displayName
90
- }
91
- },
92
- query: (acc, values) => {
93
- if (values[key]) {
94
- if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {
95
- acc.$and.push({
96
- [filter.id]: {
97
- $eq: values[key].map(item => item.id === 'true' ? true : false)
98
- }
99
- });
100
- } else {
101
- acc.$and.push({
102
- [filter.id]: {
103
- $in: values[key].map(item => item.id)
104
- }
105
- });
23
+ });
24
+ break;
25
+ case 'multi-select':
26
+ currFilters.push({
27
+ key,
28
+ filter: idNameArrayFilter(),
29
+ component: MultiSelectCheckboxFilter,
30
+ collectionData: ((_filter$static = filter.static) == null ? void 0 : _filter$static.values.map(value => {
31
+ return {
32
+ id: value.id,
33
+ name: value.value
34
+ };
35
+ })) ?? [],
36
+ props: {
37
+ accordionItemProps: {
38
+ label: filter.displayName
39
+ },
40
+ popoverProps: {
41
+ appendTo: 'window'
106
42
  }
107
43
  }
108
- return acc;
109
- }
110
- });
111
- break;
112
- case 'radio-group':
113
- filters.push({
114
- key,
115
- filter: idNameArrayFilter(),
116
- component: RadioGroupFilter,
117
- props: {
118
- accordionItemProps: {
119
- label: filter.displayName
120
- },
121
- data: ((_filter$static3 = filter.static) == null ? void 0 : _filter$static3.values.map(value => {
44
+ });
45
+ break;
46
+ case 'single':
47
+ currFilters.push({
48
+ key,
49
+ filter: idNameArrayFilter(),
50
+ component: SingleSelectFilter,
51
+ collectionData: ((_filter$static2 = filter.static) == null ? void 0 : _filter$static2.values.map(value => {
122
52
  return {
123
53
  id: value.id,
124
54
  name: value.value
125
55
  };
126
- })) ?? []
127
- },
128
- query: (acc, values) => {
129
- if (values[key]) {
130
- if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {
131
- acc.$and.push({
132
- [filter.id]: {
133
- $eq: values[key].map(item => item.id === 'true' ? true : false)
134
- }
135
- });
136
- } else {
137
- acc.$and.push({
138
- [filter.id]: {
139
- $in: values[key].map(item => item.id)
140
- }
141
- });
56
+ })) ?? [],
57
+ props: {
58
+ placeholder: `Select ${filter.displayName}`,
59
+ accordionItemProps: {
60
+ label: filter.displayName
142
61
  }
143
62
  }
144
- return acc;
145
- }
146
- });
147
- break;
148
- case 'number':
149
- filters.push({
150
- key,
151
- filter: numberRangeFilter(),
152
- component: NumberRangeFilter,
153
- props: {
154
- accordionItemProps: {
155
- label: filter.displayName
156
- },
157
- min: ((_filter$numberConfig = filter.numberConfig) == null ? void 0 : _filter$numberConfig.min) ?? 0,
158
- max: ((_filter$numberConfig2 = filter.numberConfig) == null ? void 0 : _filter$numberConfig2.max) ?? 100,
159
- decimal: (_filter$numberConfig3 = filter.numberConfig) == null ? void 0 : _filter$numberConfig3.decimal
160
- },
161
- query: (acc, values) => {
162
- if (values[key]) {
163
- if (values[key].from) {
164
- acc.$and.push({
165
- [filter.id]: {
166
- $gte: values[key].from
167
- }
168
- });
169
- }
170
- if (values[key].to) {
171
- acc.$and.push({
172
- [filter.id]: {
173
- $lte: values[key].to
174
- }
175
- });
176
- }
63
+ });
64
+ break;
65
+ case 'radio-group':
66
+ currFilters.push({
67
+ key,
68
+ filter: idNameArrayFilter(),
69
+ component: RadioGroupFilter,
70
+ props: {
71
+ accordionItemProps: {
72
+ label: filter.displayName
73
+ },
74
+ data: ((_filter$static3 = filter.static) == null ? void 0 : _filter$static3.values.map(value => {
75
+ return {
76
+ id: value.id,
77
+ name: value.value
78
+ };
79
+ })) ?? []
177
80
  }
178
- return acc;
179
- }
180
- });
181
- break;
182
- }
183
- });
81
+ });
82
+ break;
83
+ case 'number':
84
+ currFilters.push({
85
+ key,
86
+ filter: numberRangeFilter(),
87
+ component: NumberRangeFilter,
88
+ props: {
89
+ accordionItemProps: {
90
+ label: filter.displayName
91
+ },
92
+ min: ((_filter$numberConfig = filter.numberConfig) == null ? void 0 : _filter$numberConfig.min) ?? 0,
93
+ max: ((_filter$numberConfig2 = filter.numberConfig) == null ? void 0 : _filter$numberConfig2.max) ?? 100,
94
+ decimal: (_filter$numberConfig3 = filter.numberConfig) == null ? void 0 : _filter$numberConfig3.decimal
95
+ }
96
+ });
97
+ break;
98
+ }
99
+ });
100
+ return currFilters;
101
+ }, [config.filters]);
184
102
  const FilterCollectionComponent = _ref => {
185
103
  let {
186
104
  filter
@@ -197,7 +115,6 @@ export const useFilters = config => {
197
115
  };
198
116
  return filters.reduce((acc, filter) => {
199
117
  acc.filters[filter.key] = filter.filter;
200
- acc.queries.push(filter.query);
201
118
  acc.components.push(filter.collectionData ? /*#__PURE__*/React.createElement(FilterCollectionComponent, {
202
119
  filter: filter
203
120
  }) : /*#__PURE__*/React.createElement(filter.component, _extends({
@@ -207,8 +124,7 @@ export const useFilters = config => {
207
124
  return acc;
208
125
  }, {
209
126
  filters: {},
210
- components: [],
211
- queries: []
127
+ components: []
212
128
  });
213
129
  };
214
130
  //# sourceMappingURL=useFilters.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","_","SupportedValueTypeEnum","DateRangeFilter","dateRangeFilter","idNameArrayFilter","MultiSelectCheckboxFilter","NumberRangeFilter","numberRangeFilter","RadioGroupFilter","SingleSelectFilter","useStaticListFilterCollection","useFilters","config","_config$filters","filters","forEach","filter","_filter$static","_filter$static2","_filter$static3","_filter$numberConfig","_filter$numberConfig2","_filter$numberConfig3","key","camelCase","displayName","componentType","push","component","props","accordionItemProps","label","query","acc","values","from","$and","id","$gte","toISOString","to","$lte","collectionData","static","map","value","name","popoverProps","appendTo","$in","item","placeholder","definition","type","BOOLEAN","$eq","data","min","numberConfig","max","decimal","FilterCollectionComponent","_ref","collection","createElement","_extends","reduce","queries","components"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { ProjectConfig, SupportedValueTypeEnum } from '../types';\nimport {\n DateRangeFilter,\n dateRangeFilter,\n Filter,\n idNameArrayFilter,\n MultiSelectCheckboxFilter,\n NumberRangeFilter,\n numberRangeFilter,\n RadioGroupFilter,\n SingleSelectFilter,\n useStaticListFilterCollection,\n} from '@wix/patterns';\n\nexport interface FilterOptions {\n key: string;\n filter: Filter<any>;\n query: (\n acc: { $and: Record<string, any> },\n values: Record<string, any>,\n ) => Record<string, any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n queries: FilterOptions['query'][];\n}\n\nexport const useFilters = (config: ProjectConfig) => {\n const filters: FilterOptions[] = [];\n\n config.filters?.forEach((filter) => {\n const key = _.camelCase(filter.displayName);\n\n switch (filter.componentType) {\n case 'date-range':\n filters.push({\n key,\n filter: dateRangeFilter(),\n component: DateRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n },\n query: (acc, values) => {\n if (values[key]) {\n if (values[key].from) {\n acc.$and.push({\n [filter.id]: {\n $gte: values[key].from.toISOString(),\n },\n });\n }\n\n if (values[key].to) {\n acc.$and.push({\n [filter.id]: {\n $lte: values[key].to.toISOString(),\n },\n });\n }\n }\n\n return acc;\n },\n });\n\n break;\n case 'multi-select':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: MultiSelectCheckboxFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n accordionItemProps: { label: filter.displayName },\n popoverProps: { appendTo: 'window' },\n },\n query: (acc, values) => {\n if (values[key]) {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n\n return acc;\n },\n });\n\n break;\n case 'single':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: SingleSelectFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n placeholder: `Select ${filter.displayName}`,\n accordionItemProps: { label: filter.displayName },\n },\n query: (acc, values) => {\n if (values[key]) {\n if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {\n acc.$and.push({\n [filter.id]: {\n $eq: values[key].map((item: any) =>\n item.id === 'true' ? true : false,\n ),\n },\n });\n } else {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n case 'radio-group':\n filters.push({\n key,\n filter: idNameArrayFilter(),\n component: RadioGroupFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n data:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n },\n query: (acc, values) => {\n if (values[key]) {\n if (filter.definition.type === SupportedValueTypeEnum.BOOLEAN) {\n acc.$and.push({\n [filter.id]: {\n $eq: values[key].map((item: any) =>\n item.id === 'true' ? true : false,\n ),\n },\n });\n } else {\n acc.$and.push({\n [filter.id]: {\n $in: values[key].map((item: any) => item.id),\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n case 'number':\n filters.push({\n key,\n filter: numberRangeFilter(),\n component: NumberRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n min: filter.numberConfig?.min ?? 0,\n max: filter.numberConfig?.max ?? 100,\n decimal: filter.numberConfig?.decimal,\n },\n query: (acc, values) => {\n if (values[key]) {\n if (values[key].from) {\n acc.$and.push({\n [filter.id]: {\n $gte: values[key].from,\n },\n });\n }\n\n if (values[key].to) {\n acc.$and.push({\n [filter.id]: {\n $lte: values[key].to,\n },\n });\n }\n }\n return acc;\n },\n });\n\n break;\n }\n });\n\n const FilterCollectionComponent: React.FC<{\n filter: FilterOptions;\n }> = ({ filter }) => {\n const collection = useStaticListFilterCollection(\n filter.filter,\n filter.collectionData ?? [],\n );\n\n return (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...(filter.collectionData ? { collection } : {})}\n collection={collection}\n {...filter.props}\n />\n );\n };\n\n return filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.queries.push(filter.query);\n acc.components.push(\n filter.collectionData ? (\n <FilterCollectionComponent filter={filter} />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [], queries: [] },\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAAwBC,sBAAsB,QAAQ,UAAU;AAChE,SACEC,eAAe,EACfC,eAAe,EAEfC,iBAAiB,EACjBC,yBAAyB,EACzBC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,6BAA6B,QACxB,eAAe;AAoBtB,OAAO,MAAMC,UAAU,GAAIC,MAAqB,IAAK;EAAA,IAAAC,eAAA;EACnD,MAAMC,OAAwB,GAAG,EAAE;EAEnC,CAAAD,eAAA,GAAAD,MAAM,CAACE,OAAO,aAAdD,eAAA,CAAgBE,OAAO,CAAEC,MAAM,IAAK;IAAA,IAAAC,cAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IAClC,MAAMC,GAAG,GAAGvB,CAAC,CAACwB,SAAS,CAACR,MAAM,CAACS,WAAW,CAAC;IAE3C,QAAQT,MAAM,CAACU,aAAa;MAC1B,KAAK,YAAY;QACfZ,OAAO,CAACa,IAAI,CAAC;UACXJ,GAAG;UACHP,MAAM,EAAEb,eAAe,CAAC,CAAC;UACzByB,SAAS,EAAE1B,eAAe;UAC1B2B,KAAK,EAAE;YACLC,kBAAkB,EAAE;cAAEC,KAAK,EAAEf,MAAM,CAACS;YAAY;UAClD,CAAC;UACDO,KAAK,EAAEA,CAACC,GAAG,EAAEC,MAAM,KAAK;YACtB,IAAIA,MAAM,CAACX,GAAG,CAAC,EAAE;cACf,IAAIW,MAAM,CAACX,GAAG,CAAC,CAACY,IAAI,EAAE;gBACpBF,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXC,IAAI,EAAEJ,MAAM,CAACX,GAAG,CAAC,CAACY,IAAI,CAACI,WAAW,CAAC;kBACrC;gBACF,CAAC,CAAC;cACJ;cAEA,IAAIL,MAAM,CAACX,GAAG,CAAC,CAACiB,EAAE,EAAE;gBAClBP,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXI,IAAI,EAAEP,MAAM,CAACX,GAAG,CAAC,CAACiB,EAAE,CAACD,WAAW,CAAC;kBACnC;gBACF,CAAC,CAAC;cACJ;YACF;YAEA,OAAON,GAAG;UACZ;QACF,CAAC,CAAC;QAEF;MACF,KAAK,cAAc;QACjBnB,OAAO,CAACa,IAAI,CAAC;UACXJ,GAAG;UACHP,MAAM,EAAEZ,iBAAiB,CAAC,CAAC;UAC3BwB,SAAS,EAAEvB,yBAAyB;UACpCqC,cAAc,EACZ,EAAAzB,cAAA,GAAAD,MAAM,CAAC2B,MAAM,qBAAb1B,cAAA,CAAeiB,MAAM,CAACU,GAAG,CAAEC,KAAK,IAAK;YACnC,OAAO;cAAER,EAAE,EAAEQ,KAAK,CAACR,EAAE;cAAES,IAAI,EAAED,KAAK,CAACA;YAAM,CAAC;UAC5C,CAAC,CAAC,KAAI,EAAE;UACVhB,KAAK,EAAE;YACLC,kBAAkB,EAAE;cAAEC,KAAK,EAAEf,MAAM,CAACS;YAAY,CAAC;YACjDsB,YAAY,EAAE;cAAEC,QAAQ,EAAE;YAAS;UACrC,CAAC;UACDhB,KAAK,EAAEA,CAACC,GAAG,EAAEC,MAAM,KAAK;YACtB,IAAIA,MAAM,CAACX,GAAG,CAAC,EAAE;cACfU,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;gBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;kBACXY,GAAG,EAAEf,MAAM,CAACX,GAAG,CAAC,CAACqB,GAAG,CAAEM,IAAS,IAAKA,IAAI,CAACb,EAAE;gBAC7C;cACF,CAAC,CAAC;YACJ;YAEA,OAAOJ,GAAG;UACZ;QACF,CAAC,CAAC;QAEF;MACF,KAAK,QAAQ;QACXnB,OAAO,CAACa,IAAI,CAAC;UACXJ,GAAG;UACHP,MAAM,EAAEZ,iBAAiB,CAAC,CAAC;UAC3BwB,SAAS,EAAEnB,kBAAkB;UAC7BiC,cAAc,EACZ,EAAAxB,eAAA,GAAAF,MAAM,CAAC2B,MAAM,qBAAbzB,eAAA,CAAegB,MAAM,CAACU,GAAG,CAAEC,KAAK,IAAK;YACnC,OAAO;cAAER,EAAE,EAAEQ,KAAK,CAACR,EAAE;cAAES,IAAI,EAAED,KAAK,CAACA;YAAM,CAAC;UAC5C,CAAC,CAAC,KAAI,EAAE;UACVhB,KAAK,EAAE;YACLsB,WAAW,EAAE,UAAUnC,MAAM,CAACS,WAAW,EAAE;YAC3CK,kBAAkB,EAAE;cAAEC,KAAK,EAAEf,MAAM,CAACS;YAAY;UAClD,CAAC;UACDO,KAAK,EAAEA,CAACC,GAAG,EAAEC,MAAM,KAAK;YACtB,IAAIA,MAAM,CAACX,GAAG,CAAC,EAAE;cACf,IAAIP,MAAM,CAACoC,UAAU,CAACC,IAAI,KAAKpD,sBAAsB,CAACqD,OAAO,EAAE;gBAC7DrB,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXkB,GAAG,EAAErB,MAAM,CAACX,GAAG,CAAC,CAACqB,GAAG,CAAEM,IAAS,IAC7BA,IAAI,CAACb,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,KAC9B;kBACF;gBACF,CAAC,CAAC;cACJ,CAAC,MAAM;gBACLJ,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXY,GAAG,EAAEf,MAAM,CAACX,GAAG,CAAC,CAACqB,GAAG,CAAEM,IAAS,IAAKA,IAAI,CAACb,EAAE;kBAC7C;gBACF,CAAC,CAAC;cACJ;YACF;YACA,OAAOJ,GAAG;UACZ;QACF,CAAC,CAAC;QAEF;MACF,KAAK,aAAa;QAChBnB,OAAO,CAACa,IAAI,CAAC;UACXJ,GAAG;UACHP,MAAM,EAAEZ,iBAAiB,CAAC,CAAC;UAC3BwB,SAAS,EAAEpB,gBAAgB;UAC3BqB,KAAK,EAAE;YACLC,kBAAkB,EAAE;cAAEC,KAAK,EAAEf,MAAM,CAACS;YAAY,CAAC;YACjD+B,IAAI,EACF,EAAArC,eAAA,GAAAH,MAAM,CAAC2B,MAAM,qBAAbxB,eAAA,CAAee,MAAM,CAACU,GAAG,CAAEC,KAAK,IAAK;cACnC,OAAO;gBAAER,EAAE,EAAEQ,KAAK,CAACR,EAAE;gBAAES,IAAI,EAAED,KAAK,CAACA;cAAM,CAAC;YAC5C,CAAC,CAAC,KAAI;UACV,CAAC;UACDb,KAAK,EAAEA,CAACC,GAAG,EAAEC,MAAM,KAAK;YACtB,IAAIA,MAAM,CAACX,GAAG,CAAC,EAAE;cACf,IAAIP,MAAM,CAACoC,UAAU,CAACC,IAAI,KAAKpD,sBAAsB,CAACqD,OAAO,EAAE;gBAC7DrB,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXkB,GAAG,EAAErB,MAAM,CAACX,GAAG,CAAC,CAACqB,GAAG,CAAEM,IAAS,IAC7BA,IAAI,CAACb,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,KAC9B;kBACF;gBACF,CAAC,CAAC;cACJ,CAAC,MAAM;gBACLJ,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXY,GAAG,EAAEf,MAAM,CAACX,GAAG,CAAC,CAACqB,GAAG,CAAEM,IAAS,IAAKA,IAAI,CAACb,EAAE;kBAC7C;gBACF,CAAC,CAAC;cACJ;YACF;YACA,OAAOJ,GAAG;UACZ;QACF,CAAC,CAAC;QAEF;MACF,KAAK,QAAQ;QACXnB,OAAO,CAACa,IAAI,CAAC;UACXJ,GAAG;UACHP,MAAM,EAAET,iBAAiB,CAAC,CAAC;UAC3BqB,SAAS,EAAEtB,iBAAiB;UAC5BuB,KAAK,EAAE;YACLC,kBAAkB,EAAE;cAAEC,KAAK,EAAEf,MAAM,CAACS;YAAY,CAAC;YACjDgC,GAAG,EAAE,EAAArC,oBAAA,GAAAJ,MAAM,CAAC0C,YAAY,qBAAnBtC,oBAAA,CAAqBqC,GAAG,KAAI,CAAC;YAClCE,GAAG,EAAE,EAAAtC,qBAAA,GAAAL,MAAM,CAAC0C,YAAY,qBAAnBrC,qBAAA,CAAqBsC,GAAG,KAAI,GAAG;YACpCC,OAAO,GAAAtC,qBAAA,GAAEN,MAAM,CAAC0C,YAAY,qBAAnBpC,qBAAA,CAAqBsC;UAChC,CAAC;UACD5B,KAAK,EAAEA,CAACC,GAAG,EAAEC,MAAM,KAAK;YACtB,IAAIA,MAAM,CAACX,GAAG,CAAC,EAAE;cACf,IAAIW,MAAM,CAACX,GAAG,CAAC,CAACY,IAAI,EAAE;gBACpBF,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXC,IAAI,EAAEJ,MAAM,CAACX,GAAG,CAAC,CAACY;kBACpB;gBACF,CAAC,CAAC;cACJ;cAEA,IAAID,MAAM,CAACX,GAAG,CAAC,CAACiB,EAAE,EAAE;gBAClBP,GAAG,CAACG,IAAI,CAACT,IAAI,CAAC;kBACZ,CAACX,MAAM,CAACqB,EAAE,GAAG;oBACXI,IAAI,EAAEP,MAAM,CAACX,GAAG,CAAC,CAACiB;kBACpB;gBACF,CAAC,CAAC;cACJ;YACF;YACA,OAAOP,GAAG;UACZ;QACF,CAAC,CAAC;QAEF;IACJ;EACF,CAAC,CAAC;EAEF,MAAM4B,yBAEJ,GAAGC,IAAA,IAAgB;IAAA,IAAf;MAAE9C;IAAO,CAAC,GAAA8C,IAAA;IACd,MAAMC,UAAU,GAAGrD,6BAA6B,CAC9CM,MAAM,CAACA,MAAM,EACbA,MAAM,CAAC0B,cAAc,IAAI,EAC3B,CAAC;IAED,oBACE3C,KAAA,CAAAiE,aAAA,CAAChD,MAAM,CAACY,SAAS,EAAAqC,QAAA;MACf1C,GAAG,EAAEP,MAAM,CAACO,GAAI;MAChBP,MAAM,EAAEA,MAAM,CAACA;IAAO,GACjBA,MAAM,CAAC0B,cAAc,GAAG;MAAEqB;IAAW,CAAC,GAAG,CAAC,CAAC;MAChDA,UAAU,EAAEA;IAAW,GACnB/C,MAAM,CAACa,KAAK,CACjB,CAAC;EAEN,CAAC;EAED,OAAOf,OAAO,CAACoD,MAAM,CACnB,CAACjC,GAAG,EAAEjB,MAAM,KAAK;IACfiB,GAAG,CAACnB,OAAO,CAACE,MAAM,CAACO,GAAG,CAAC,GAAGP,MAAM,CAACA,MAAM;IACvCiB,GAAG,CAACkC,OAAO,CAACxC,IAAI,CAACX,MAAM,CAACgB,KAAK,CAAC;IAC9BC,GAAG,CAACmC,UAAU,CAACzC,IAAI,CACjBX,MAAM,CAAC0B,cAAc,gBACnB3C,KAAA,CAAAiE,aAAA,CAACH,yBAAyB;MAAC7C,MAAM,EAAEA;IAAO,CAAE,CAAC,gBAE7CjB,KAAA,CAAAiE,aAAA,CAAChD,MAAM,CAACY,SAAS,EAAAqC,QAAA;MACf1C,GAAG,EAAEP,MAAM,CAACO,GAAI;MAChBP,MAAM,EAAEA,MAAM,CAACA;IAAO,GAClBA,MAAM,CAACa,KAAK,CACjB,CAEL,CAAC;IAED,OAAOI,GAAG;EACZ,CAAC,EACD;IAAEnB,OAAO,EAAE,CAAC,CAAC;IAAEsD,UAAU,EAAE,EAAE;IAAED,OAAO,EAAE;EAAG,CAC7C,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","_","DateRangeFilter","dateRangeFilter","idNameArrayFilter","MultiSelectCheckboxFilter","NumberRangeFilter","numberRangeFilter","RadioGroupFilter","SingleSelectFilter","useStaticListFilterCollection","useFilters","config","filters","useMemo","_config$filters","currFilters","forEach","filter","_filter$static","_filter$static2","_filter$static3","_filter$numberConfig","_filter$numberConfig2","_filter$numberConfig3","key","camelCase","displayName","componentType","push","component","props","accordionItemProps","label","collectionData","static","values","map","value","id","name","popoverProps","appendTo","placeholder","data","min","numberConfig","max","decimal","FilterCollectionComponent","_ref","collection","createElement","_extends","reduce","acc","components"],"sources":["../../../src/hooks/useFilters.tsx"],"sourcesContent":["import React from 'react';\nimport _ from 'lodash';\nimport { PageConfig } from '../types';\nimport {\n DateRangeFilter,\n dateRangeFilter,\n Filter,\n idNameArrayFilter,\n MultiSelectCheckboxFilter,\n NumberRangeFilter,\n numberRangeFilter,\n RadioGroupFilter,\n SingleSelectFilter,\n useStaticListFilterCollection,\n} from '@wix/patterns';\n\nexport interface FilterOptions {\n key: string;\n filter: Filter<any>;\n component: React.ElementType;\n collectionData?: { id: string; name: string }[];\n props: Record<string, any>;\n}\n\nexport interface ReturnValue {\n filters: { [key: string]: Filter<any> };\n components: React.JSX.Element[];\n}\n\nexport const useFilters = (config: PageConfig) => {\n const filters = React.useMemo(() => {\n const currFilters: FilterOptions[] = [];\n config.filters?.forEach((filter) => {\n const key = _.camelCase(filter.displayName);\n\n switch (filter.componentType) {\n case 'date-range':\n currFilters.push({\n key,\n filter: dateRangeFilter(),\n component: DateRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n },\n });\n\n break;\n case 'multi-select':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: MultiSelectCheckboxFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n accordionItemProps: { label: filter.displayName },\n popoverProps: { appendTo: 'window' },\n },\n });\n\n break;\n case 'single':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: SingleSelectFilter,\n collectionData:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n props: {\n placeholder: `Select ${filter.displayName}`,\n accordionItemProps: { label: filter.displayName },\n },\n });\n\n break;\n case 'radio-group':\n currFilters.push({\n key,\n filter: idNameArrayFilter(),\n component: RadioGroupFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n data:\n filter.static?.values.map((value) => {\n return { id: value.id, name: value.value };\n }) ?? [],\n },\n });\n\n break;\n case 'number':\n currFilters.push({\n key,\n filter: numberRangeFilter(),\n component: NumberRangeFilter,\n props: {\n accordionItemProps: { label: filter.displayName },\n min: filter.numberConfig?.min ?? 0,\n max: filter.numberConfig?.max ?? 100,\n decimal: filter.numberConfig?.decimal,\n },\n });\n\n break;\n }\n });\n return currFilters;\n }, [config.filters]);\n\n const FilterCollectionComponent: React.FC<{\n filter: FilterOptions;\n }> = ({ filter }) => {\n const collection = useStaticListFilterCollection(\n filter.filter,\n filter.collectionData ?? [],\n );\n\n return (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...(filter.collectionData ? { collection } : {})}\n collection={collection}\n {...filter.props}\n />\n );\n };\n\n return filters.reduce<ReturnValue>(\n (acc, filter) => {\n acc.filters[filter.key] = filter.filter;\n acc.components.push(\n filter.collectionData ? (\n <FilterCollectionComponent filter={filter} />\n ) : (\n <filter.component\n key={filter.key}\n filter={filter.filter}\n {...filter.props}\n />\n ),\n );\n\n return acc;\n },\n { filters: {}, components: [] },\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import React, { createContext, useContext, useEffect, useState } from 'react';
2
+ import { getCompositeConfig } from '../config/ConfigFactory';
3
+ const ConfigContext = /*#__PURE__*/createContext(null);
4
+ export const ConfigProvider = _ref => {
5
+ let {
6
+ page,
7
+ children
8
+ } = _ref;
9
+ const [config, setConfig] = useState(null);
10
+ useEffect(() => {
11
+ getCompositeConfig(page).then(setConfig).catch(error => {
12
+ console.error('Error fetching config:', error);
13
+ });
14
+ }, [page]);
15
+ if (!config) {
16
+ return null;
17
+ }
18
+ return /*#__PURE__*/React.createElement(ConfigContext.Provider, {
19
+ value: config
20
+ }, children);
21
+ };
22
+ export const useConfig = () => {
23
+ const context = useContext(ConfigContext);
24
+ if (!context) {
25
+ throw new Error('useConfig must be used within a ConfigProvider');
26
+ }
27
+ return context;
28
+ };
29
+ //# sourceMappingURL=ConfigContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useEffect","useState","getCompositeConfig","ConfigContext","ConfigProvider","_ref","page","children","config","setConfig","then","catch","error","console","createElement","Provider","value","useConfig","context","Error"],"sources":["../../../src/providers/ConfigContext.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n} from 'react';\nimport { PageConfig } from '../types';\nimport { CompositeConfig } from '../config/CompositeConfig';\nimport { getCompositeConfig } from '../config/ConfigFactory';\n\nconst ConfigContext = createContext<CompositeConfig | null>(null);\n\ninterface ConfigProviderProps {\n page: PageConfig;\n children: ReactNode;\n}\n\nexport const ConfigProvider = ({ page, children }: ConfigProviderProps) => {\n const [config, setConfig] = useState<CompositeConfig | null>(null);\n\n useEffect(() => {\n getCompositeConfig(page)\n .then(setConfig)\n .catch((error) => {\n console.error('Error fetching config:', error);\n });\n }, [page]);\n\n if (!config) {\n return null;\n }\n\n return (\n <ConfigContext.Provider value={config}>{children}</ConfigContext.Provider>\n );\n};\n\nexport const useConfig = (): CompositeConfig => {\n const context = useContext(ConfigContext);\n if (!context) {\n throw new Error('useConfig must be used within a ConfigProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,QAAQ,QAEH,OAAO;AAGd,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,MAAMC,aAAa,gBAAGL,aAAa,CAAyB,IAAI,CAAC;AAOjE,OAAO,MAAMM,cAAc,GAAGC,IAAA,IAA6C;EAAA,IAA5C;IAAEC,IAAI;IAAEC;EAA8B,CAAC,GAAAF,IAAA;EACpE,MAAM,CAACG,MAAM,EAAEC,SAAS,CAAC,GAAGR,QAAQ,CAAyB,IAAI,CAAC;EAElED,SAAS,CAAC,MAAM;IACdE,kBAAkB,CAACI,IAAI,CAAC,CACrBI,IAAI,CAACD,SAAS,CAAC,CACfE,KAAK,CAAEC,KAAK,IAAK;MAChBC,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;IAChD,CAAC,CAAC;EACN,CAAC,EAAE,CAACN,IAAI,CAAC,CAAC;EAEV,IAAI,CAACE,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EAEA,oBACEX,KAAA,CAAAiB,aAAA,CAACX,aAAa,CAACY,QAAQ;IAACC,KAAK,EAAER;EAAO,GAAED,QAAiC,CAAC;AAE9E,CAAC;AAED,OAAO,MAAMU,SAAS,GAAGA,CAAA,KAAuB;EAC9C,MAAMC,OAAO,GAAGnB,UAAU,CAACI,aAAa,CAAC;EACzC,IAAI,CAACe,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,gDAAgD,CAAC;EACnE;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- export * from './PatternsWizardContext';
1
+ export * from './ConfigContext';
2
2
  export * from './PatternsWizardOverridesContext';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './PatternsWizardContext';\nexport * from './PatternsWizardOverridesContext';\n"],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,kCAAkC","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/providers/index.ts"],"sourcesContent":["export * from './ConfigContext';\nexport * from './PatternsWizardOverridesContext';\n"],"mappings":"AAAA,cAAc,iBAAiB;AAC/B,cAAc,kCAAkC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["CollectionTypeEnum","SupportedValueTypeEnum","ComponentTypeEnum"],"sources":["../../src/types.ts"],"sourcesContent":["export enum CollectionTypeEnum {\n TABLE = 'Table',\n GRID = 'Grid',\n TABLE_GRID_SWITCH = 'TableGridSwitch',\n}\n\nexport enum SupportedValueTypeEnum {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n BOOLEAN = 'BOOLEAN',\n DATE = 'DATE',\n ENUM = 'ENUM',\n}\n\nexport interface Column {\n id: string;\n name: string;\n type: SupportedValueTypeEnum;\n width?: string;\n}\n\nexport interface FilterValue {\n id: string;\n value: string;\n system?: boolean;\n deletable?: boolean;\n}\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport interface FieldDefinition {\n id: string;\n name: string;\n description?: string;\n path: string;\n type?: SupportedValueTypeEnum;\n schemaName?: string;\n enums?: string[];\n}\n\nexport interface Filter {\n id: string;\n displayName: string;\n componentType: ComponentTypeEnum;\n definition: FieldDefinition;\n numberConfig?: {\n min?: number;\n max?: number;\n decimal?: boolean;\n };\n static?: {\n values: FilterValue[];\n };\n}\n\nexport interface CollectionConfig {\n type: CollectionTypeEnum;\n grid?: GridCollectionConfig;\n}\n\nexport interface GridCollectionConfig {\n renderItem: {\n title: string;\n subtitle?: string;\n primaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n secondaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n };\n imagePlacement?: 'top' | 'side';\n renderAddItem?: boolean;\n sections?: {\n title: string;\n action?: {\n label: string;\n // onClick: () => void;\n };\n };\n dragAndDrop?: boolean;\n}\n\ninterface Action {\n id: string;\n text: string;\n icon: string;\n}\nexport interface ProjectConfig {\n pageTitle: string;\n pageSubtitle: string;\n viewType: string;\n collectionId: string;\n entityTypeSource: EntityTypeSource;\n entityId: string;\n entityName: string;\n columns: Column[];\n collectionConfig: CollectionConfig;\n entitySchemaName: string;\n filters?: Filter[];\n actions?: Action[];\n views?: {\n enabled: boolean;\n };\n customFields?: {\n enabled: boolean;\n };\n optimisticActions?: {\n enabled: boolean;\n };\n}\n\nexport interface ProjectDTO {\n key: string;\n id: string;\n userId: string;\n createdAt: Date;\n updatedAt: Date;\n config: ProjectConfig;\n}\n\nexport interface PatternsWizardBaseProps {\n configuration: ProjectConfig;\n}\n\nexport type EntityProps = { [key: string]: any };\n\nexport interface IMenuItem<T extends EntityProps = {}> {\n item: T;\n}\nexport interface IColumnValue<T> {\n value: T;\n}\n\nexport type EntityTypeSource = 'cms';\n\nexport interface Field {\n id: string;\n type: string;\n}\n\n// TODO: fill this out\nexport interface SchemaConfig {\n fields: Field[];\n}\n"],"mappings":"AAAA,WAAYA,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAM9B,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAsBlC,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAyH7B","ignoreList":[]}
1
+ {"version":3,"names":["CollectionTypeEnum","SupportedValueTypeEnum","ComponentTypeEnum"],"sources":["../../src/types.ts"],"sourcesContent":["export enum CollectionTypeEnum {\n TABLE = 'Table',\n GRID = 'Grid',\n TABLE_GRID_SWITCH = 'TableGridSwitch',\n}\n\nexport enum SupportedValueTypeEnum {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n BOOLEAN = 'BOOLEAN',\n DATE = 'DATE',\n ENUM = 'ENUM',\n}\n\nexport interface Column {\n id: string;\n name: string;\n type: SupportedValueTypeEnum;\n width?: string;\n}\n\nexport interface FilterValue {\n id: string;\n value: string;\n system?: boolean;\n deletable?: boolean;\n}\n\nexport enum ComponentTypeEnum {\n SINGLE = 'single',\n MULTI_SELECT = 'multi-select',\n RADIO_GROUP = 'radio-group',\n NUMBER = 'number',\n DATE_RANGE = 'date-range',\n}\n\nexport interface FieldDefinition {\n id: string;\n name: string;\n description?: string;\n path: string;\n type?: SupportedValueTypeEnum;\n schemaName?: string;\n enums?: string[];\n}\n\nexport interface Filter {\n id: string;\n displayName: string;\n componentType: ComponentTypeEnum;\n definition: FieldDefinition;\n numberConfig?: {\n min?: number;\n max?: number;\n decimal?: boolean;\n };\n static?: {\n values: FilterValue[];\n };\n}\n\nexport interface CollectionConfig {\n type: CollectionTypeEnum;\n grid?: GridCollectionConfig;\n}\n\nexport interface GridCollectionConfig {\n renderItem: {\n title: string;\n subtitle?: string;\n primaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n secondaryActionProps?: {\n label: string;\n // onClick: () => void;\n };\n };\n imagePlacement?: 'top' | 'side';\n renderAddItem?: boolean;\n sections?: {\n title: string;\n action?: {\n label: string;\n // onClick: () => void;\n };\n };\n dragAndDrop?: boolean;\n}\n\ninterface Action {\n id: string;\n text: string;\n icon: string;\n}\nexport interface PageConfig {\n pageTitle: { text: string; hideTotal?: boolean };\n pageSubtitle?: {\n text: string;\n learnMore?: {\n url: string;\n label?: string;\n };\n };\n viewType: string;\n collectionId: string;\n entityTypeSource: EntityTypeSource;\n entityId: string;\n entityName: string;\n columns: Column[];\n collectionConfig: CollectionConfig;\n entitySchemaName: string;\n filters?: Filter[];\n actions?: Action[];\n views?: {\n enabled: boolean;\n };\n customFields?: {\n enabled: boolean;\n };\n optimisticActions?: {\n enabled: boolean;\n };\n}\n\nexport interface ProjectDTO {\n key: string;\n id: string;\n userId: string;\n createdAt: Date;\n updatedAt: Date;\n config: PageConfig;\n}\n\nexport interface PatternsWizardBaseProps {\n configuration: PageConfig;\n}\n\nexport type EntityProps = { [key: string]: any };\n\nexport interface IMenuItem<T extends EntityProps = {}> {\n item: T;\n}\nexport interface IColumnValue<T> {\n value: T;\n}\n\nexport type EntityTypeSource = 'cms';\n\nexport type QueryOperator =\n | 'CONTAINS'\n | 'ENDS_WITH'\n | 'EQ'\n | 'EXISTS'\n | 'GT'\n | 'GTE'\n | 'HAS_ALL'\n | 'HAS_SOME'\n | 'LT'\n | 'LTE'\n | 'NE'\n | 'STARTS_WITH'\n | 'URLIZED';\n\nexport interface Field {\n id: string;\n type: string;\n capabilities: {\n supportedQueryOperators: QueryOperator[];\n sortable: boolean;\n };\n}\n\n// TODO: fill this out\nexport interface SchemaConfig {\n fields: Field[];\n}\n"],"mappings":"AAAA,WAAYA,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAM9B,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAsBlC,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAkJ7B","ignoreList":[]}