@fast-simon/dashboard-utilities 1.0.3 → 1.0.4

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 (215) hide show
  1. package/dist/@types/banner.d.ts +7 -0
  2. package/dist/@types/banner.js +2 -0
  3. package/dist/@types/banner.js.map +1 -0
  4. package/dist/@types/categories.d.ts +16 -0
  5. package/dist/@types/categories.js +2 -0
  6. package/dist/@types/categories.js.map +1 -0
  7. package/dist/@types/currency.d.ts +1 -0
  8. package/dist/@types/currency.js +2 -0
  9. package/dist/@types/currency.js.map +1 -0
  10. package/dist/@types/editorProduct.d.ts +26 -0
  11. package/dist/@types/editorProduct.js +6 -0
  12. package/dist/@types/editorProduct.js.map +1 -0
  13. package/dist/@types/iconProps.d.ts +9 -0
  14. package/dist/@types/iconProps.js +2 -0
  15. package/dist/@types/iconProps.js.map +1 -0
  16. package/dist/@types/product.d.ts +158 -0
  17. package/dist/@types/product.js +8 -0
  18. package/dist/@types/product.js.map +1 -0
  19. package/dist/@types/productLabel.d.ts +1 -0
  20. package/dist/@types/productLabel.js +2 -0
  21. package/dist/@types/productLabel.js.map +1 -0
  22. package/dist/@types/promoTile.d.ts +11 -0
  23. package/dist/@types/promoTile.js +2 -0
  24. package/dist/@types/promoTile.js.map +1 -0
  25. package/dist/@types/results.d.ts +42 -0
  26. package/dist/@types/results.js +2 -0
  27. package/dist/@types/results.js.map +1 -0
  28. package/dist/@types/sideMenu.d.ts +19 -0
  29. package/dist/@types/sideMenu.js +2 -0
  30. package/dist/@types/sideMenu.js.map +1 -0
  31. package/dist/@types/sortBy.d.ts +3 -0
  32. package/dist/@types/sortBy.js +2 -0
  33. package/dist/@types/sortBy.js.map +1 -0
  34. package/dist/App.d.ts +3 -0
  35. package/dist/App.js +15 -0
  36. package/dist/App.js.map +1 -0
  37. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.d.ts +9 -0
  38. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js +74 -0
  39. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js.map +1 -0
  40. package/dist/components/BackOfficeFiltersMenu/index.d.ts +1 -0
  41. package/dist/components/BackOfficeFiltersMenu/index.js +2 -0
  42. package/dist/components/BackOfficeFiltersMenu/index.js.map +1 -0
  43. package/dist/components/BackOfficeFiltersMenu/styles.module.css +10 -0
  44. package/dist/components/BackOfficeFiltersMenu/utils.d.ts +7 -0
  45. package/dist/components/BackOfficeFiltersMenu/utils.js +239 -0
  46. package/dist/components/BackOfficeFiltersMenu/utils.js.map +1 -0
  47. package/dist/components/CheckboxFilter/Checkbox/Checkbox.d.ts +10 -0
  48. package/dist/components/CheckboxFilter/Checkbox/Checkbox.js +7 -0
  49. package/dist/components/CheckboxFilter/Checkbox/Checkbox.js.map +1 -0
  50. package/dist/components/CheckboxFilter/Checkbox/styles.module.css +143 -0
  51. package/dist/components/CheckboxFilter/CheckboxFilter.d.ts +6 -0
  52. package/dist/components/CheckboxFilter/CheckboxFilter.js +9 -0
  53. package/dist/components/CheckboxFilter/CheckboxFilter.js.map +1 -0
  54. package/dist/components/CheckboxFilter/styles.module.css +5 -0
  55. package/dist/components/DragAndDrop/DndContextWrapper.d.ts +20 -0
  56. package/dist/components/DragAndDrop/DndContextWrapper.js +33 -0
  57. package/dist/components/DragAndDrop/DndContextWrapper.js.map +1 -0
  58. package/dist/components/DragAndDrop/Droppable.d.ts +7 -0
  59. package/dist/components/DragAndDrop/Droppable.js +10 -0
  60. package/dist/components/DragAndDrop/Droppable.js.map +1 -0
  61. package/dist/components/DragAndDrop/SortableItem.d.ts +13 -0
  62. package/dist/components/DragAndDrop/SortableItem.js +39 -0
  63. package/dist/components/DragAndDrop/SortableItem.js.map +1 -0
  64. package/dist/components/DragAndDrop/styles.module.css +21 -0
  65. package/dist/components/FacetItem/FacetItem.d.ts +13 -0
  66. package/dist/components/FacetItem/FacetItem.js +40 -0
  67. package/dist/components/FacetItem/FacetItem.js.map +1 -0
  68. package/dist/components/FacetItem/styles.module.css +55 -0
  69. package/dist/components/FastSimonApi/FastSimonApi.d.ts +32 -0
  70. package/dist/components/FastSimonApi/FastSimonApi.js +398 -0
  71. package/dist/components/FastSimonApi/FastSimonApi.js.map +1 -0
  72. package/dist/components/FastSimonApi/context.d.ts +50 -0
  73. package/dist/components/FastSimonApi/context.js +10 -0
  74. package/dist/components/FastSimonApi/context.js.map +1 -0
  75. package/dist/components/FastSimonApi/index.d.ts +3 -0
  76. package/dist/components/FastSimonApi/index.js +3 -0
  77. package/dist/components/FastSimonApi/index.js.map +1 -0
  78. package/dist/components/FastSimonApi/reducer.d.ts +172 -0
  79. package/dist/components/FastSimonApi/reducer.js +67 -0
  80. package/dist/components/FastSimonApi/reducer.js.map +1 -0
  81. package/dist/components/FromToFilter/From/From.d.ts +17 -0
  82. package/dist/components/FromToFilter/From/From.js +22 -0
  83. package/dist/components/FromToFilter/From/From.js.map +1 -0
  84. package/dist/components/FromToFilter/From/styles.module.css +9 -0
  85. package/dist/components/FromToFilter/FromToFilter.d.ts +14 -0
  86. package/dist/components/FromToFilter/FromToFilter.js +58 -0
  87. package/dist/components/FromToFilter/FromToFilter.js.map +1 -0
  88. package/dist/components/FromToFilter/To/To.d.ts +18 -0
  89. package/dist/components/FromToFilter/To/To.js +23 -0
  90. package/dist/components/FromToFilter/To/To.js.map +1 -0
  91. package/dist/components/FromToFilter/To/styles.module.css +9 -0
  92. package/dist/components/FromToFilter/styles.module.css +34 -0
  93. package/dist/components/FromToFilter/utils.d.ts +25 -0
  94. package/dist/components/FromToFilter/utils.js +7 -0
  95. package/dist/components/FromToFilter/utils.js.map +1 -0
  96. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.d.ts +10 -0
  97. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js +34 -0
  98. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js.map +1 -0
  99. package/dist/components/InStoreFiltersMenu/index.d.ts +1 -0
  100. package/dist/components/InStoreFiltersMenu/index.js +2 -0
  101. package/dist/components/InStoreFiltersMenu/index.js.map +1 -0
  102. package/dist/components/InStoreFiltersMenu/styles.module.css +10 -0
  103. package/dist/components/Input/Input.d.ts +22 -0
  104. package/dist/components/Input/Input.js +49 -0
  105. package/dist/components/Input/Input.js.map +1 -0
  106. package/dist/components/Input/index.d.ts +1 -0
  107. package/dist/components/Input/index.js +2 -0
  108. package/dist/components/Input/index.js.map +1 -0
  109. package/dist/components/Input/styles.module.css +3 -0
  110. package/dist/components/LastReceivedDateFilter/LastReceivedDate.d.ts +9 -0
  111. package/dist/components/LastReceivedDateFilter/LastReceivedDate.js +88 -0
  112. package/dist/components/LastReceivedDateFilter/LastReceivedDate.js.map +1 -0
  113. package/dist/components/LastReceivedDateFilter/styles.module.css +41 -0
  114. package/dist/components/LastReceivedDateFilter/utils.d.ts +3 -0
  115. package/dist/components/LastReceivedDateFilter/utils.js +43 -0
  116. package/dist/components/LastReceivedDateFilter/utils.js.map +1 -0
  117. package/dist/components/RadioFilter/Radio/Radio.d.ts +10 -0
  118. package/dist/components/RadioFilter/Radio/Radio.js +7 -0
  119. package/dist/components/RadioFilter/Radio/Radio.js.map +1 -0
  120. package/dist/components/RadioFilter/Radio/styles.module.css +145 -0
  121. package/dist/components/RadioFilter/RadioFilter.d.ts +9 -0
  122. package/dist/components/RadioFilter/RadioFilter.js +45 -0
  123. package/dist/components/RadioFilter/RadioFilter.js.map +1 -0
  124. package/dist/components/RadioFilter/styles.module.css +23 -0
  125. package/dist/components/RadioFilter/utils.d.ts +1 -0
  126. package/dist/components/RadioFilter/utils.js +8 -0
  127. package/dist/components/RadioFilter/utils.js.map +1 -0
  128. package/dist/components/ReactDatePicker/ReactDatePicker.d.ts +11 -0
  129. package/dist/components/ReactDatePicker/ReactDatePicker.js +16 -0
  130. package/dist/components/ReactDatePicker/ReactDatePicker.js.map +1 -0
  131. package/dist/components/ReactDatePicker/index.d.ts +1 -0
  132. package/dist/components/ReactDatePicker/index.js +2 -0
  133. package/dist/components/ReactDatePicker/index.js.map +1 -0
  134. package/dist/components/ReactDatePicker/styles.module.css +3 -0
  135. package/dist/components/RenderIfVisible/RenderIfVisible.d.ts +12 -0
  136. package/dist/components/RenderIfVisible/RenderIfVisible.js +59 -0
  137. package/dist/components/RenderIfVisible/RenderIfVisible.js.map +1 -0
  138. package/dist/components/RenderIfVisible/index.d.ts +1 -0
  139. package/dist/components/RenderIfVisible/index.js +2 -0
  140. package/dist/components/RenderIfVisible/index.js.map +1 -0
  141. package/dist/components/SingleFilter/SingleFilter.d.ts +11 -0
  142. package/dist/components/SingleFilter/SingleFilter.js +90 -0
  143. package/dist/components/SingleFilter/SingleFilter.js.map +1 -0
  144. package/dist/components/SingleFilter/styles.module.css +23 -0
  145. package/dist/components/SingleFilter/utils.d.ts +3 -0
  146. package/dist/components/SingleFilter/utils.js +42 -0
  147. package/dist/components/SingleFilter/utils.js.map +1 -0
  148. package/dist/components/SliderFilter/SliderFilter.d.ts +20 -0
  149. package/dist/components/SliderFilter/SliderFilter.js +46 -0
  150. package/dist/components/SliderFilter/SliderFilter.js.map +1 -0
  151. package/dist/components/SliderFilter/index.d.ts +1 -0
  152. package/dist/components/SliderFilter/index.js +2 -0
  153. package/dist/components/SliderFilter/index.js.map +1 -0
  154. package/dist/components/SliderFilter/styles.module.css +16 -0
  155. package/dist/components/Tooltip/Tooltip.d.ts +8 -0
  156. package/dist/components/Tooltip/Tooltip.js +9 -0
  157. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  158. package/dist/components/Tooltip/styles.module.css +34 -0
  159. package/dist/components/common.d.ts +34 -0
  160. package/dist/components/common.js +80 -0
  161. package/dist/components/common.js.map +1 -0
  162. package/dist/components/productGrid/ProductGrid.d.ts +7 -0
  163. package/dist/components/productGrid/ProductGrid.js +11 -0
  164. package/dist/components/productGrid/ProductGrid.js.map +1 -0
  165. package/dist/components/productGrid/index.d.ts +1 -0
  166. package/dist/components/productGrid/index.js +2 -0
  167. package/dist/components/productGrid/index.js.map +1 -0
  168. package/dist/components/productGrid/styles.module.css +23 -0
  169. package/dist/icons/BackOfficeFiltersIcon.d.ts +2 -0
  170. package/dist/icons/BackOfficeFiltersIcon.js +7 -0
  171. package/dist/icons/BackOfficeFiltersIcon.js.map +1 -0
  172. package/dist/icons/BannersIcon.d.ts +2 -0
  173. package/dist/icons/BannersIcon.js +7 -0
  174. package/dist/icons/BannersIcon.js.map +1 -0
  175. package/dist/icons/HelpIcon.d.ts +7 -0
  176. package/dist/icons/HelpIcon.js +5 -0
  177. package/dist/icons/HelpIcon.js.map +1 -0
  178. package/dist/icons/InStoreFiltersIcon.d.ts +2 -0
  179. package/dist/icons/InStoreFiltersIcon.js +7 -0
  180. package/dist/icons/InStoreFiltersIcon.js.map +1 -0
  181. package/dist/icons/PromoteIcon.d.ts +2 -0
  182. package/dist/icons/PromoteIcon.js +7 -0
  183. package/dist/icons/PromoteIcon.js.map +1 -0
  184. package/dist/icons/RemoveIcon.d.ts +2 -0
  185. package/dist/icons/RemoveIcon.js +7 -0
  186. package/dist/icons/RemoveIcon.js.map +1 -0
  187. package/dist/icons/RestoreIcon.d.ts +2 -0
  188. package/dist/icons/RestoreIcon.js +7 -0
  189. package/dist/icons/RestoreIcon.js.map +1 -0
  190. package/dist/icons/index.d.ts +7 -0
  191. package/dist/icons/index.js +8 -0
  192. package/dist/icons/index.js.map +1 -0
  193. package/dist/icons/styles.module.css +61 -0
  194. package/dist/main.d.ts +1 -0
  195. package/dist/main.js +6 -0
  196. package/dist/main.js.map +1 -0
  197. package/dist/services/API.d.ts +21 -0
  198. package/dist/services/API.js +50 -0
  199. package/dist/services/API.js.map +1 -0
  200. package/dist/services/landingPage.d.ts +28 -0
  201. package/dist/services/landingPage.js +153 -0
  202. package/dist/services/landingPage.js.map +1 -0
  203. package/dist/utils/customTagsFilters.d.ts +4 -0
  204. package/dist/utils/customTagsFilters.js +10 -0
  205. package/dist/utils/customTagsFilters.js.map +1 -0
  206. package/dist/utils/products.d.ts +30 -0
  207. package/dist/utils/products.js +39 -0
  208. package/dist/utils/products.js.map +1 -0
  209. package/dist/utils/shopifyMarkets.d.ts +3 -0
  210. package/dist/utils/shopifyMarkets.js +7 -0
  211. package/dist/utils/shopifyMarkets.js.map +1 -0
  212. package/dist/utils/useDragToSelect.d.ts +13 -0
  213. package/dist/utils/useDragToSelect.js +177 -0
  214. package/dist/utils/useDragToSelect.js.map +1 -0
  215. package/package.json +17 -22
@@ -0,0 +1,153 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { fastSimonGet } from "./API";
11
+ import { FacetsParser } from "@fast-simon/utilities";
12
+ // const BASE_URL = import.meta.env.VITE_SERVING_BASE_URL ?? "https://internal-v3joil6oqa-uc.a.run.app/search";
13
+ const BASE_URL = "https://yslp---internal-v3joil6oqa-uc.a.run.app/search";
14
+ export const LandingPage = {
15
+ landingPage: ({ uuid, storeID, landingPage, page = 1, sortBy = "relevency", facets = true, narrow, productsPerPage, withProductAttributes = undefined, searchWithinResultsQuery, type, // }: LandingPageRequest): Promise<LandingPageResponse> => {
16
+ // const narrowParm = narrow ? new NarrowParser().toServerNarrow(narrow) : undefined;
17
+ //
18
+ // const data = await fastSimonGet<LandingPageServerResponseAll>(BASE_URL, 'landing_page_editor', {
19
+ // UUID: uuid,
20
+ // store_id: storeID,
21
+ // facets_required: facets ? 1 : 0,
22
+ // products_per_page: productsPerPage,
23
+ // narrow: JSON.stringify(narrow),
24
+ // lp: landingPage,
25
+ // page_num: page,
26
+ // type: type,
27
+ // // sort_by: sortBy,
28
+ // // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,
29
+ // with_product_attributes: withProductAttributes,
30
+ // search_within_search: searchWithinResultsQuery ? searchWithinResultsQuery : undefined,
31
+ // visual_merchandising: !searchWithinResultsQuery && !narrow.length ? JSON.stringify(visualMerchandising).replaceAll('"[', '[').replaceAll(']"', ']') : undefined,
32
+ // // merchandising_editor: 1,
33
+ // // disable_merchandising: 1,
34
+ // // related_search: 1
35
+ // m: 1
36
+ // });
37
+ visualMerchandising, merchandisingRules, }) => __awaiter(void 0, void 0, void 0, function* () {
38
+ const params = {
39
+ UUID: uuid,
40
+ store_id: storeID,
41
+ facets_required: facets ? 1 : 0,
42
+ products_per_page: productsPerPage,
43
+ narrow: JSON.stringify(narrow),
44
+ lp: landingPage,
45
+ page_num: page,
46
+ type: type,
47
+ // sort_by: sortBy,
48
+ // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,
49
+ with_product_attributes: withProductAttributes,
50
+ search_within_search: searchWithinResultsQuery
51
+ ? searchWithinResultsQuery
52
+ : undefined,
53
+ visual_merchandising: type == 0
54
+ ? JSON.stringify(visualMerchandising)
55
+ .replaceAll('"[', "[")
56
+ .replaceAll(']"', "]")
57
+ : undefined,
58
+ // merchandising_editor: 1,
59
+ // disable_merchandising: 1,
60
+ // related_search: 1
61
+ m: 1,
62
+ // merchandising_rules: merchandising_rules ? JSON.stringify(merchandising_rules).replaceAll('"[', '[').replaceAll(']"', ']') : undefined
63
+ merchandising_rules: type == 1 ? JSON.stringify(merchandisingRules) : undefined,
64
+ };
65
+ // if(lastProduct) {
66
+ // params['last_product'] = lastProduct
67
+ // }
68
+ const res = yield yield fastSimonGet(BASE_URL, "landing_page_editor", params);
69
+ // const res = await API.post<LandingPageResponse>({url: BASE_URL+'/landing_page_editor', data: params, config: {headers: {'content-type': 'text/plain'}}});
70
+ return {
71
+ data: res,
72
+ getFacets: () => __awaiter(void 0, void 0, void 0, function* () {
73
+ return (res === null || res === void 0 ? void 0 : res.facets_completed)
74
+ ? transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes)
75
+ : yield LandingPage.landingPageFacetsOnly({
76
+ uuid,
77
+ storeID,
78
+ landingPage,
79
+ page,
80
+ narrow,
81
+ type,
82
+ productsPerPage,
83
+ searchWithinResultsQuery,
84
+ withProductAttributes,
85
+ visualMerchandising,
86
+ merchandisingRules,
87
+ });
88
+ }),
89
+ };
90
+ // return {
91
+ // data: data,
92
+ // getFacets: async () => (data?.facets_completed ? transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes) : await LandingPage.landingPageFacetsOnly({uuid,
93
+ // storeID,
94
+ // landingPage,
95
+ // narrow,
96
+ // type,
97
+ // page,
98
+ // productsPerPage,
99
+ // searchWithinResultsQuery})
100
+ // )
101
+ // }
102
+ }),
103
+ landingPageFacetsOnly: ({ uuid, storeID, landingPage, page = 1, narrow, type, productsPerPage, searchWithinResultsQuery, withProductAttributes = false, visualMerchandising, merchandisingRules, }) => __awaiter(void 0, void 0, void 0, function* () {
104
+ // }: LandingPageFacetsOnly): Promise<Facet[]> => {
105
+ const data = yield fastSimonGet(BASE_URL, "landing_page_editor", {
106
+ UUID: uuid,
107
+ store_id: storeID,
108
+ facets_required: 2,
109
+ products_per_page: productsPerPage,
110
+ narrow: JSON.stringify(narrow),
111
+ type: type,
112
+ lp: landingPage,
113
+ page_num: page !== null && page !== void 0 ? page : 1,
114
+ // sort_by: sortBy,
115
+ // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,
116
+ with_product_attributes: withProductAttributes,
117
+ search_within_search: searchWithinResultsQuery
118
+ ? searchWithinResultsQuery
119
+ : undefined,
120
+ visual_merchandising: type == 0
121
+ ? JSON.stringify(visualMerchandising)
122
+ .replaceAll('"[', "[")
123
+ .replaceAll(']"', "]")
124
+ : undefined,
125
+ merchandising_rules: merchandisingRules
126
+ ? JSON.stringify(merchandisingRules)
127
+ : undefined,
128
+ m: 1,
129
+ });
130
+ return transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes);
131
+ }),
132
+ };
133
+ // const transformData = (r: LandingPageServerResponseAll): LandingPageResults => ({
134
+ // narrow: r.narrow ? new NarrowParser().toNarrow(r.narrow) : {},
135
+ // sortBy: r.sort_by,
136
+ // totalResults: r.total_results,
137
+ // page: r.p,
138
+ // totalPages: r.total_p,
139
+ // lpSlug: r.lp_slug,
140
+ // // products: ProductParser.parseProducts(r.items),
141
+ // products: r.items,
142
+ // productIDS: r.items.map(product => String(product.id)),
143
+ // facets: new FacetsParser().parseFacets(r.facets, r.avoid_tag_prefixes ? r.avoid_tag_prefixes.split(",") : []),
144
+ // avoidTagPrefixes: r.avoid_tag_prefixes ? r.avoid_tag_prefixes.split(",") : [],
145
+ // bannerHTML: r?.banner_html ?? "",
146
+ // bannerHTMLMobile: r?.banner_html_mobile ?? "",
147
+ // indexPage: r.index_page,
148
+ // title: r.title,
149
+ // sort: r.sort_by,
150
+ // ancestors: new FacetsParser().parseAncestors(r?.ancestor_categories)
151
+ // });
152
+ export const transformFacetsOnlyData = (r, avoidTagPrefixes) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(",") : []);
153
+ //# sourceMappingURL=landingPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"landingPage.js","sourceRoot":"","sources":["../../src/services/landingPage.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SortBy} from \"../@types/sortBy\";\r\nimport type {Narrow, ServerNarrow} from \"@fast-simon/utilities\";\r\nimport { fastSimonGet } from \"./API\";\r\nimport {FacetsParser, ServerFacet} from \"@fast-simon/utilities\"\r\nimport {AncestorCategory} from \"../@types/categories\";\r\nimport {EditorProduct} from \"../@types/editorProduct\";\r\ninterface LandingPageRequest {\r\n uuid: string;\r\n storeID: string;\r\n landingPage: string\r\n type: number\r\n page?: number\r\n sortBy?: SortBy\r\n facets?: boolean\r\n narrow?: Narrow\r\n productsPerPage?: number\r\n withProductAttributes?: boolean\r\n searchWithinResultsQuery?: string\r\n}\r\n\r\ninterface LandingPageFacetsOnly extends Omit<LandingPageRequest, \"facets\"> {\r\n avoid_tag_prefixes?: string\r\n}\r\n\r\ninterface LandingPageServerResponseFacetsOnly {\r\n total_results: number\r\n term: string\r\n narrow?: ServerNarrow\r\n facets_completed: true\r\n facets: ServerFacet[],\r\n}\r\n\r\ninterface LandingPageServerResponseAll {\r\n items: EditorProduct[]\r\n alternatives?: string[]\r\n facets_completed: boolean\r\n narrow?: ServerNarrow[]\r\n p: number\r\n total_p: number\r\n total_results: number\r\n term: string\r\n lp_slug: string\r\n title: string\r\n index_page: number\r\n banner_html: string\r\n banner_html_mobile: string\r\n facets: ServerFacet[]\r\n sort_by: SortBy\r\n avoid_tag_prefixes?: string\r\n cms_number_found?: number\r\n within_search_results_for?: string,\r\n ancestor_categories?: AncestorCategory[]\r\n}\r\n\r\n// const BASE_URL = import.meta.env.VITE_SERVING_BASE_URL ?? \"https://internal-v3joil6oqa-uc.a.run.app/search\";\r\nconst BASE_URL = \"https://yslp---internal-v3joil6oqa-uc.a.run.app/search\"\r\n\r\ninterface LandingPageResponse {\r\n items: EditorProduct[]\r\n facets_completed: boolean\r\n narrow?: Narrow[]\r\n p: number\r\n total_p: number\r\n isp_quick_view_mode: number\r\n related_results: boolean\r\n total_results: number\r\n lp_slug: string\r\n title: string\r\n facets: ServerFacet[]\r\n sort_by: SortBy\r\n avoid_tag_prefixes?: string\r\n // data: LandingPageResults,\r\n // getFacetsOnly?: () => Promise<Facet[]>\r\n}\r\n\r\nexport const LandingPage = {\r\n landingPage: async ({\r\n uuid,\r\n storeID,\r\n landingPage,\r\n page = 1,\r\n sortBy = \"relevency\",\r\n facets = true,\r\n narrow,\r\n productsPerPage,\r\n withProductAttributes = undefined,\r\n searchWithinResultsQuery,\r\n type, // }: LandingPageRequest): Promise<LandingPageResponse> => {\r\n // const narrowParm = narrow ? new NarrowParser().toServerNarrow(narrow) : undefined;\r\n //\r\n // const data = await fastSimonGet<LandingPageServerResponseAll>(BASE_URL, 'landing_page_editor', {\r\n // UUID: uuid,\r\n // store_id: storeID,\r\n // facets_required: facets ? 1 : 0,\r\n // products_per_page: productsPerPage,\r\n // narrow: JSON.stringify(narrow),\r\n // lp: landingPage,\r\n // page_num: page,\r\n // type: type,\r\n // // sort_by: sortBy,\r\n // // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,\r\n // with_product_attributes: withProductAttributes,\r\n // search_within_search: searchWithinResultsQuery ? searchWithinResultsQuery : undefined,\r\n // visual_merchandising: !searchWithinResultsQuery && !narrow.length ? JSON.stringify(visualMerchandising).replaceAll('\"[', '[').replaceAll(']\"', ']') : undefined,\r\n // // merchandising_editor: 1,\r\n // // disable_merchandising: 1,\r\n // // related_search: 1\r\n // m: 1\r\n // });\r\n visualMerchandising,\r\n merchandisingRules,\r\n }: any) => {\r\n const params: Record<string, any> = {\r\n UUID: uuid,\r\n store_id: storeID,\r\n facets_required: facets ? 1 : 0,\r\n products_per_page: productsPerPage,\r\n narrow: JSON.stringify(narrow),\r\n lp: landingPage,\r\n page_num: page,\r\n type: type,\r\n // sort_by: sortBy,\r\n // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,\r\n with_product_attributes: withProductAttributes,\r\n search_within_search: searchWithinResultsQuery\r\n ? searchWithinResultsQuery\r\n : undefined,\r\n visual_merchandising:\r\n type == 0\r\n ? JSON.stringify(visualMerchandising)\r\n .replaceAll('\"[', \"[\")\r\n .replaceAll(']\"', \"]\")\r\n : undefined,\r\n // merchandising_editor: 1,\r\n // disable_merchandising: 1,\r\n // related_search: 1\r\n m: 1,\r\n // merchandising_rules: merchandising_rules ? JSON.stringify(merchandising_rules).replaceAll('\"[', '[').replaceAll(']\"', ']') : undefined\r\n merchandising_rules:\r\n type == 1 ? JSON.stringify(merchandisingRules) : undefined,\r\n };\r\n // if(lastProduct) {\r\n // params['last_product'] = lastProduct\r\n // }\r\n const res = await await fastSimonGet<LandingPageResponse>(\r\n BASE_URL,\r\n \"landing_page_editor\",\r\n params\r\n );\r\n // const res = await API.post<LandingPageResponse>({url: BASE_URL+'/landing_page_editor', data: params, config: {headers: {'content-type': 'text/plain'}}});\r\n return {\r\n data: res,\r\n getFacets: async () =>\r\n res?.facets_completed\r\n ? transformFacetsOnlyData(\r\n res.facets,\r\n res.avoid_tag_prefixes\r\n )\r\n : await LandingPage.landingPageFacetsOnly({\r\n uuid,\r\n storeID,\r\n landingPage,\r\n page,\r\n narrow,\r\n type,\r\n productsPerPage,\r\n searchWithinResultsQuery,\r\n withProductAttributes,\r\n visualMerchandising,\r\n merchandisingRules,\r\n }),\r\n };\r\n // return {\r\n // data: data,\r\n // getFacets: async () => (data?.facets_completed ? transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes) : await LandingPage.landingPageFacetsOnly({uuid,\r\n // storeID,\r\n // landingPage,\r\n // narrow,\r\n // type,\r\n // page,\r\n // productsPerPage,\r\n // searchWithinResultsQuery})\r\n // )\r\n // }\r\n },\r\n\r\n landingPageFacetsOnly: async ({\r\n uuid,\r\n storeID,\r\n landingPage,\r\n page = 1,\r\n narrow,\r\n type,\r\n productsPerPage,\r\n searchWithinResultsQuery,\r\n withProductAttributes = false,\r\n visualMerchandising,\r\n merchandisingRules,\r\n }: any) => {\r\n // }: LandingPageFacetsOnly): Promise<Facet[]> => {\r\n\r\n const data = await fastSimonGet<LandingPageServerResponseAll>(\r\n BASE_URL,\r\n \"landing_page_editor\",\r\n {\r\n UUID: uuid,\r\n store_id: storeID,\r\n facets_required: 2,\r\n products_per_page: productsPerPage,\r\n narrow: JSON.stringify(narrow),\r\n type: type,\r\n lp: landingPage,\r\n page_num: page ?? 1,\r\n // sort_by: sortBy,\r\n // with_product_attributes: withProductAttributes || get(ispOptions)?.with_product_attributes,\r\n with_product_attributes: withProductAttributes,\r\n search_within_search: searchWithinResultsQuery\r\n ? searchWithinResultsQuery\r\n : undefined,\r\n visual_merchandising:\r\n type == 0\r\n ? JSON.stringify(visualMerchandising)\r\n .replaceAll('\"[', \"[\")\r\n .replaceAll(']\"', \"]\")\r\n : undefined,\r\n merchandising_rules: merchandisingRules\r\n ? JSON.stringify(merchandisingRules)\r\n : undefined,\r\n m: 1,\r\n }\r\n );\r\n\r\n return transformFacetsOnlyData(data.facets, data.avoid_tag_prefixes);\r\n },\r\n};\r\n\r\n// const transformData = (r: LandingPageServerResponseAll): LandingPageResults => ({\r\n // narrow: r.narrow ? new NarrowParser().toNarrow(r.narrow) : {},\r\n // sortBy: r.sort_by,\r\n // totalResults: r.total_results,\r\n // page: r.p,\r\n // totalPages: r.total_p,\r\n // lpSlug: r.lp_slug,\r\n // // products: ProductParser.parseProducts(r.items),\r\n // products: r.items,\r\n // productIDS: r.items.map(product => String(product.id)),\r\n // facets: new FacetsParser().parseFacets(r.facets, r.avoid_tag_prefixes ? r.avoid_tag_prefixes.split(\",\") : []),\r\n // avoidTagPrefixes: r.avoid_tag_prefixes ? r.avoid_tag_prefixes.split(\",\") : [],\r\n // bannerHTML: r?.banner_html ?? \"\",\r\n // bannerHTMLMobile: r?.banner_html_mobile ?? \"\",\r\n // indexPage: r.index_page,\r\n // title: r.title,\r\n // sort: r.sort_by,\r\n // ancestors: new FacetsParser().parseAncestors(r?.ancestor_categories)\r\n// });\r\n\r\nexport const transformFacetsOnlyData = (r: ServerFacet[], avoidTagPrefixes?: string) => new FacetsParser().parseFacets(r, avoidTagPrefixes ? avoidTagPrefixes.split(\",\") : []);"]}
@@ -0,0 +1,4 @@
1
+ export declare class CustomTagsFilters {
2
+ static setCustomTagsFilters(customTagsFilters: string[]): void;
3
+ static getCustomTagsFilters(): string[];
4
+ }
@@ -0,0 +1,10 @@
1
+ export class CustomTagsFilters {
2
+ static setCustomTagsFilters(customTagsFilters) {
3
+ localStorage.setItem('customTagsFilters', JSON.stringify(customTagsFilters));
4
+ }
5
+ static getCustomTagsFilters() {
6
+ const storedFilters = localStorage.getItem('customTagsFilters');
7
+ return storedFilters ? JSON.parse(storedFilters) : [];
8
+ }
9
+ }
10
+ //# sourceMappingURL=customTagsFilters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customTagsFilters.js","sourceRoot":"","sources":["../../src/utils/customTagsFilters.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IAC1B,MAAM,CAAC,oBAAoB,CAAC,iBAA2B;QACnD,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,oBAAoB;QACvB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChE,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;CACJ","sourcesContent":["export class CustomTagsFilters {\r\n static setCustomTagsFilters(customTagsFilters: string[]) {\r\n localStorage.setItem('customTagsFilters', JSON.stringify(customTagsFilters));\r\n }\r\n\r\n static getCustomTagsFilters(): string[] {\r\n const storedFilters = localStorage.getItem('customTagsFilters');\r\n return storedFilters ? JSON.parse(storedFilters) : [];\r\n }\r\n}\r\n"]}
@@ -0,0 +1,30 @@
1
+ import { EditorProduct } from "../@types/editorProduct";
2
+ export declare const ProductsUtils: {
3
+ /**
4
+ * Change the position of multiple products, starting from index a and moving n products to index b, in use for multiple product actions
5
+ * Use the splice method to extract and remove the products from their original positions, then use the splice method again to insert them into the new positions
6
+ * Time complexity O(n), where n is the number of elements in the array that being modified
7
+ * @param products - is the current products state
8
+ * @param startIndex - is the starting index
9
+ * @param numberOfProducts - is the number of products to move
10
+ * @param destIndex - is the destination index you want to insert the product into
11
+ **/
12
+ changeProductsPosition: (products: EditorProduct[], startIndex: number, numberOfProducts: number, destIndex: number) => EditorProduct[];
13
+ /**
14
+ * Change position of a single product
15
+ * Use the splice method to remove the product from its original position and insert it into the new position.
16
+ * time complexity O(n)
17
+ * @param gridItems - is the current products state
18
+ * @param oldIndex - is the index of the product to move
19
+ * @param newIndex - is the destination index
20
+ **/
21
+ changeProductPosition: (gridItems: EditorProduct[], oldIndex: number, newIndex: number) => EditorProduct[];
22
+ /**
23
+ * Add product (hidden/unpublished/promotile) to specific position in the products array
24
+ * Use the splice method to remove the product from its original position and insert it into the new position.
25
+ * @param products - is the current products state
26
+ * @param productToAdd - is the new product to add
27
+ * @param destIndex - is the destination index
28
+ **/
29
+ addProductToIndex: (products: EditorProduct[], productToAdd: EditorProduct, destIndex: number) => EditorProduct[];
30
+ };
@@ -0,0 +1,39 @@
1
+ export const ProductsUtils = {
2
+ /**
3
+ * Change the position of multiple products, starting from index a and moving n products to index b, in use for multiple product actions
4
+ * Use the splice method to extract and remove the products from their original positions, then use the splice method again to insert them into the new positions
5
+ * Time complexity O(n), where n is the number of elements in the array that being modified
6
+ * @param products - is the current products state
7
+ * @param startIndex - is the starting index
8
+ * @param numberOfProducts - is the number of products to move
9
+ * @param destIndex - is the destination index you want to insert the product into
10
+ **/
11
+ changeProductsPosition: (products, startIndex, numberOfProducts, destIndex) => {
12
+ products.splice(destIndex - numberOfProducts + 1, 0, ...products.splice(startIndex, numberOfProducts));
13
+ return products;
14
+ },
15
+ /**
16
+ * Change position of a single product
17
+ * Use the splice method to remove the product from its original position and insert it into the new position.
18
+ * time complexity O(n)
19
+ * @param gridItems - is the current products state
20
+ * @param oldIndex - is the index of the product to move
21
+ * @param newIndex - is the destination index
22
+ **/
23
+ changeProductPosition: (gridItems, oldIndex, newIndex) => {
24
+ gridItems.splice(newIndex, 0, gridItems.splice(oldIndex, 1)[0]);
25
+ return gridItems;
26
+ },
27
+ /**
28
+ * Add product (hidden/unpublished/promotile) to specific position in the products array
29
+ * Use the splice method to remove the product from its original position and insert it into the new position.
30
+ * @param products - is the current products state
31
+ * @param productToAdd - is the new product to add
32
+ * @param destIndex - is the destination index
33
+ **/
34
+ addProductToIndex: (products, productToAdd, destIndex) => {
35
+ products.splice(destIndex, 0, productToAdd);
36
+ return products;
37
+ }
38
+ };
39
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/utils/products.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG;IAEzB;;;;;;;;QAQI;IACJ,sBAAsB,EAAE,CAAC,QAAyB,EAAE,UAAkB,EAAE,gBAAwB,EAAE,SAAiB,EAAE,EAAE;QACnH,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAC,gBAAgB,GAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACnG,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;QAOI;IACJ,qBAAqB,EAAE,CAAC,SAA0B,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;QACtF,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;QAMI;IACJ,iBAAiB,EAAE,CAAC,QAAyB,EAAE,YAA2B,EAAE,SAAiB,EAAE,EAAE;QAC7F,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACpB,CAAC;CAGJ,CAAA","sourcesContent":["import {EditorProduct} from \"../@types/editorProduct\";\r\n\r\nexport const ProductsUtils = {\r\n\r\n /**\r\n * Change the position of multiple products, starting from index a and moving n products to index b, in use for multiple product actions\r\n * Use the splice method to extract and remove the products from their original positions, then use the splice method again to insert them into the new positions\r\n * Time complexity O(n), where n is the number of elements in the array that being modified\r\n * @param products - is the current products state\r\n * @param startIndex - is the starting index\r\n * @param numberOfProducts - is the number of products to move\r\n * @param destIndex - is the destination index you want to insert the product into\r\n **/\r\n changeProductsPosition: (products: EditorProduct[], startIndex: number, numberOfProducts: number, destIndex: number) => {\r\n products.splice(destIndex-numberOfProducts+1, 0, ...products.splice(startIndex, numberOfProducts));\r\n return products;\r\n },\r\n\r\n /**\r\n * Change position of a single product\r\n * Use the splice method to remove the product from its original position and insert it into the new position.\r\n * time complexity O(n)\r\n * @param gridItems - is the current products state\r\n * @param oldIndex - is the index of the product to move\r\n * @param newIndex - is the destination index\r\n **/\r\n changeProductPosition: (gridItems: EditorProduct[], oldIndex: number, newIndex: number) => {\r\n gridItems.splice(newIndex, 0, gridItems.splice(oldIndex, 1)[0]);\r\n return gridItems;\r\n },\r\n\r\n /**\r\n * Add product (hidden/unpublished/promotile) to specific position in the products array\r\n * Use the splice method to remove the product from its original position and insert it into the new position.\r\n * @param products - is the current products state\r\n * @param productToAdd - is the new product to add\r\n * @param destIndex - is the destination index\r\n **/\r\n addProductToIndex: (products: EditorProduct[], productToAdd: EditorProduct, destIndex: number) => {\r\n products.splice(destIndex, 0, productToAdd);\r\n return products;\r\n }\r\n\r\n\r\n}"]}
@@ -0,0 +1,3 @@
1
+ export default class ShopifyMarkets {
2
+ static getCountry(): any;
3
+ }
@@ -0,0 +1,7 @@
1
+ export default class ShopifyMarkets {
2
+ static getCountry() {
3
+ var _a;
4
+ return (_a = window === null || window === void 0 ? void 0 : window.Shopify) === null || _a === void 0 ? void 0 : _a.country;
5
+ }
6
+ }
7
+ //# sourceMappingURL=shopifyMarkets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopifyMarkets.js","sourceRoot":"","sources":["../../src/utils/shopifyMarkets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,cAAc;IAChC,MAAM,CAAC,UAAU;;QACZ,OAAO,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,OAAO,0CAAE,OAAO,CAAC;IAC7C,CAAC;CACJ","sourcesContent":["export default class ShopifyMarkets {\r\n static getCountry() {\r\n return (window as any)?.Shopify?.country;\r\n }\r\n}"]}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ interface Props {
3
+ areaRef: React.RefObject<HTMLDivElement>;
4
+ selectables: HTMLElement[];
5
+ areaId: string;
6
+ onSelectCommitted?: (selectedIDS: string[]) => void;
7
+ onSelect: (ids: Record<string, number>) => void;
8
+ isDragAndDropActive: boolean;
9
+ disabled?: boolean;
10
+ onDispatch: (key: string, value: any) => void;
11
+ }
12
+ export declare const useDragToSelect: ({ areaRef, selectables, areaId, onSelectCommitted, onSelect, isDragAndDropActive, disabled, onDispatch, }: Props) => void;
13
+ export {};
@@ -0,0 +1,177 @@
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import DragSelect from "dragselect";
3
+ export const useDragToSelect = ({ areaRef, selectables, areaId, onSelectCommitted, onSelect, isDragAndDropActive, disabled, onDispatch, }) => {
4
+ // const { state, dispatcher } = useVisualEditorContext();
5
+ const [dragselect, setDragSelect] = React.useState();
6
+ const [prevSelectables, setPrevSelectables] = useState([]);
7
+ const setSelected = useCallback((items) => {
8
+ const selected = items.map((el) => {
9
+ const wrapper = el.closest(".main-product-container") ||
10
+ el.querySelector(".main-product-container");
11
+ return {
12
+ id: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id"),
13
+ pos: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-index"),
14
+ };
15
+ });
16
+ const ids = {};
17
+ selected.forEach((el) => {
18
+ const id = el.id.includes("_")
19
+ ? el.id.split("_")[1]
20
+ : String(el.id);
21
+ ids[id] = parseInt(el.pos);
22
+ });
23
+ onSelect(ids);
24
+ }, [onSelect]);
25
+ const onselect = (callback_object) => {
26
+ var _a;
27
+ if (window.isDragAndDropActive ||
28
+ (callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
29
+ !((_a = callback_object.event) === null || _a === void 0 ? void 0 : _a.target) ||
30
+ callback_object.event.target.localName === "svg") {
31
+ return;
32
+ }
33
+ if (callback_object.event.target.classList.contains("material-symbols-outlined") ||
34
+ callback_object.event.target.className.includes("icon") ||
35
+ callback_object.event.target.className.includes("Tooltip")) {
36
+ return;
37
+ }
38
+ setSelected(callback_object.items);
39
+ };
40
+ const commit = (callback_object) => {
41
+ var _a, _b, _c;
42
+ // dispatcher.setIsDragToSelectActive(false);
43
+ onDispatch("setIsDragToSelectActive", false);
44
+ if ((callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
45
+ window.isDragAndDropActive) {
46
+ const area = document.getElementById(areaId);
47
+ if (area) {
48
+ area.style.userSelect = "";
49
+ area.style.webkitUserSelect = "";
50
+ }
51
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
52
+ return;
53
+ }
54
+ if ((_c = (_b = (_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.event) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.closest) === null || _c === void 0 ? void 0 : _c.call(_b, ".main-product-container")) {
55
+ return;
56
+ }
57
+ onselect(callback_object);
58
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
59
+ };
60
+ const onSelectStart = (callback_object) => {
61
+ var _a, _b, _c, _d;
62
+ // dispatcher.setIsDragToSelectActive(true);
63
+ onDispatch("setIsDragToSelectActive", true);
64
+ if (!(callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) &&
65
+ !window.isDragAndDropActive &&
66
+ callback_object.items.length !== 1) {
67
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
68
+ }
69
+ if (window.getSelection) {
70
+ (_b = (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges) === null || _b === void 0 ? void 0 : _b.call(_a);
71
+ }
72
+ else if (document.getSelection) {
73
+ (_d = (_c = document.getSelection()) === null || _c === void 0 ? void 0 : _c.empty) === null || _d === void 0 ? void 0 : _d.call(_c);
74
+ }
75
+ const area = document.getElementById(areaId);
76
+ if (area) {
77
+ area.style.userSelect = "none";
78
+ area.style.webkitUserSelect = "none";
79
+ }
80
+ };
81
+ const onscroll = (callback_object) => {
82
+ var _a;
83
+ if (((_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.items) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
84
+ !window.isDragAndDropActive) {
85
+ setSelected(callback_object.items);
86
+ }
87
+ };
88
+ useEffect(() => {
89
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragmove", onselect);
90
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("callback", commit);
91
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragstart", onSelectStart);
92
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("autoscroll", onscroll);
93
+ return () => {
94
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragmove", onselect);
95
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("callback", commit);
96
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragstart", onSelectStart);
97
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("autoscroll", onscroll);
98
+ };
99
+ }, [dragselect, setSelected]);
100
+ useEffect(() => {
101
+ const prevIds = prevSelectables.map((el) => {
102
+ const wrapper = el.closest(".main-product-container");
103
+ return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
104
+ });
105
+ const currentIds = selectables.map((el) => {
106
+ const wrapper = el.closest(".main-product-container");
107
+ return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
108
+ });
109
+ if (!dragselect && areaRef.current) {
110
+ if (onSelectCommitted) {
111
+ console.log("init dragselect");
112
+ }
113
+ setDragSelect(new DragSelect({
114
+ selectables: selectables,
115
+ area: document.getElementById(areaId),
116
+ autoScrollSpeed: 15,
117
+ overflowTolerance: { x: 0, y: 0 },
118
+ }));
119
+ }
120
+ else if (dragselect &&
121
+ JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&
122
+ !isDragAndDropActive) {
123
+ dragselect.setSettings({
124
+ selectables: selectables,
125
+ overflowTolerance: { x: 0, y: 0 },
126
+ });
127
+ setPrevSelectables(selectables);
128
+ }
129
+ }, [selectables, areaRef, disabled, isDragAndDropActive]);
130
+ useEffect(() => {
131
+ const mousedownCallback = (e) => {
132
+ var _a;
133
+ if (e.target.closest("#page_top")) {
134
+ return;
135
+ }
136
+ if (e.target.closest(".actions-bar-container") ||
137
+ e.target.closest(".scroll-to-top-btn") ||
138
+ e.target.closest(".paste-button-container")) {
139
+ return;
140
+ }
141
+ if (!((_a = e.target) === null || _a === void 0 ? void 0 : _a.closest("#" + areaId))) {
142
+ // dispatcher.setIsCutting(false);
143
+ // dispatcher.setSelectedProducts([]);
144
+ onDispatch("setIsCutting", false);
145
+ onDispatch("setSelectedProducts", []);
146
+ onSelect({});
147
+ }
148
+ };
149
+ document.addEventListener("mousedown", mousedownCallback);
150
+ return () => {
151
+ document.removeEventListener("mousedown", mousedownCallback);
152
+ };
153
+ }, []);
154
+ useEffect(() => {
155
+ document.querySelectorAll(".ds-selector-area").forEach((el) => {
156
+ el.style.visibility = isDragAndDropActive ? "hidden" : "visible";
157
+ });
158
+ }, [isDragAndDropActive]);
159
+ useEffect(() => {
160
+ if (dragselect && disabled) {
161
+ dragselect.clearSelection();
162
+ dragselect.setSettings({
163
+ selectables: [],
164
+ area: document.createElement("div"),
165
+ overflowTolerance: { x: 0, y: 0 },
166
+ });
167
+ }
168
+ else if (dragselect && disabled === false) {
169
+ dragselect.setSettings({
170
+ selectables: selectables,
171
+ area: document.getElementById(areaId),
172
+ overflowTolerance: { x: 0, y: 0 },
173
+ });
174
+ }
175
+ }, [dragselect, disabled]);
176
+ };
177
+ //# sourceMappingURL=useDragToSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDragToSelect.js","sourceRoot":"","sources":["../../src/utils/useDragToSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport DragSelect from \"dragselect\";\ninterface Props {\n areaRef: React.RefObject<HTMLDivElement>;\n selectables: HTMLElement[];\n areaId: string;\n onSelectCommitted?: (selectedIDS: string[]) => void;\n onSelect: (ids: Record<string, number>) => void;\n isDragAndDropActive: boolean;\n disabled?: boolean;\n onDispatch: (key: string, value: any) => void;\n}\nexport const useDragToSelect = ({\n areaRef,\n selectables,\n areaId,\n onSelectCommitted,\n onSelect,\n isDragAndDropActive,\n disabled,\n onDispatch,\n}: Props) => {\n // const { state, dispatcher } = useVisualEditorContext();\n\n const [dragselect, setDragSelect] = React.useState<DragSelect>();\n\n const [prevSelectables, setPrevSelectables] = useState<HTMLElement[]>([]);\n\n const setSelected = useCallback(\n (items: HTMLElement[]) => {\n const selected = items.map((el: HTMLElement) => {\n const wrapper =\n el.closest(\".main-product-container\") ||\n el.querySelector(\".main-product-container\");\n return {\n id: wrapper?.getAttribute(\"product-id\"),\n pos: wrapper?.getAttribute(\"product-index\"),\n };\n });\n const ids: Record<string, number> = {};\n selected.forEach((el: any) => {\n const id = el.id.includes(\"_\")\n ? el.id.split(\"_\")[1]\n : String(el.id);\n ids[id] = parseInt(el.pos);\n });\n\n onSelect(ids);\n },\n [onSelect]\n );\n\n const onselect = (callback_object: any) => {\n if (\n (window as any).isDragAndDropActive ||\n callback_object?.isDragging ||\n !callback_object.event?.target ||\n callback_object.event.target.localName === \"svg\"\n ) {\n return;\n }\n if (\n callback_object.event.target.classList.contains(\n \"material-symbols-outlined\"\n ) ||\n callback_object.event.target.className.includes(\"icon\") ||\n callback_object.event.target.className.includes(\"Tooltip\")\n ) {\n return;\n }\n\n setSelected(callback_object.items);\n };\n\n const commit = (callback_object: any) => {\n // dispatcher.setIsDragToSelectActive(false);\n onDispatch(\"setIsDragToSelectActive\", false);\n if (\n callback_object?.isDragging ||\n (window as any).isDragAndDropActive\n ) {\n const area = document.getElementById(areaId) as HTMLElement;\n if (area) {\n area.style.userSelect = \"\";\n area.style.webkitUserSelect = \"\";\n }\n dragselect?.clearSelection();\n return;\n }\n if (\n callback_object?.event?.target?.closest?.(\".main-product-container\")\n ) {\n return;\n }\n onselect(callback_object);\n dragselect?.clearSelection();\n };\n\n const onSelectStart = (callback_object: any) => {\n // dispatcher.setIsDragToSelectActive(true);\n onDispatch(\"setIsDragToSelectActive\", true);\n\n if (\n !callback_object?.isDragging &&\n !(window as any).isDragAndDropActive &&\n callback_object.items.length !== 1\n ) {\n dragselect?.clearSelection();\n }\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges?.();\n } else if (document.getSelection) {\n document.getSelection()?.empty?.();\n }\n const area = document.getElementById(areaId) as HTMLElement;\n if (area) {\n area.style.userSelect = \"none\";\n area.style.webkitUserSelect = \"none\";\n }\n };\n\n const onscroll = (callback_object: any) => {\n if (\n callback_object?.items?.length > 1 &&\n !(window as any).isDragAndDropActive\n ) {\n setSelected(callback_object.items);\n }\n };\n\n useEffect(() => {\n dragselect?.subscribe(\"dragmove\", onselect);\n dragselect?.subscribe(\"callback\", commit);\n dragselect?.subscribe(\"dragstart\", onSelectStart);\n dragselect?.subscribe(\"autoscroll\", onscroll);\n return () => {\n dragselect?.unsubscribe(\"dragmove\", onselect);\n dragselect?.unsubscribe(\"callback\", commit);\n dragselect?.unsubscribe(\"dragstart\", onSelectStart);\n dragselect?.unsubscribe(\"autoscroll\", onscroll);\n };\n }, [dragselect, setSelected]);\n\n useEffect(() => {\n const prevIds = prevSelectables.map((el: HTMLElement) => {\n const wrapper = el.closest(\".main-product-container\");\n return wrapper?.getAttribute(\"product-id\");\n });\n const currentIds = selectables.map((el: HTMLElement) => {\n const wrapper = el.closest(\".main-product-container\");\n return wrapper?.getAttribute(\"product-id\");\n });\n\n if (!dragselect && areaRef.current) {\n if (onSelectCommitted) {\n console.log(\"init dragselect\");\n }\n setDragSelect(\n new DragSelect({\n selectables: selectables as HTMLElement[],\n area: document.getElementById(areaId) as HTMLElement,\n autoScrollSpeed: 15,\n overflowTolerance: { x: 0, y: 0 },\n })\n );\n } else if (\n dragselect &&\n JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&\n !isDragAndDropActive\n ) {\n dragselect.setSettings({\n selectables: selectables as HTMLElement[],\n overflowTolerance: { x: 0, y: 0 },\n });\n setPrevSelectables(selectables);\n }\n }, [selectables, areaRef, disabled, isDragAndDropActive]);\n\n useEffect(() => {\n const mousedownCallback = (e: any) => {\n if (e.target.closest(\"#page_top\")) {\n return;\n }\n if (\n e.target.closest(\".actions-bar-container\") ||\n e.target.closest(\".scroll-to-top-btn\") ||\n e.target.closest(\".paste-button-container\")\n ) {\n return;\n }\n if (!e.target?.closest(\"#\" + areaId)) {\n // dispatcher.setIsCutting(false);\n // dispatcher.setSelectedProducts([]);\n onDispatch(\"setIsCutting\", false);\n onDispatch(\"setSelectedProducts\", []);\n onSelect({});\n }\n };\n\n document.addEventListener(\"mousedown\", mousedownCallback);\n return () => {\n document.removeEventListener(\"mousedown\", mousedownCallback);\n };\n }, []);\n\n useEffect(() => {\n document.querySelectorAll(\".ds-selector-area\").forEach((el: any) => {\n el.style.visibility = isDragAndDropActive ? \"hidden\" : \"visible\";\n });\n }, [isDragAndDropActive]);\n\n useEffect(() => {\n if (dragselect && disabled) {\n dragselect.clearSelection();\n dragselect.setSettings({\n selectables: [],\n area: document.createElement(\"div\"),\n overflowTolerance: { x: 0, y: 0 },\n });\n } else if (dragselect && disabled === false) {\n dragselect.setSettings({\n selectables: selectables as HTMLElement[],\n area: document.getElementById(areaId) as HTMLElement,\n overflowTolerance: { x: 0, y: 0 },\n });\n }\n }, [dragselect, disabled]);\n};\n"]}
package/package.json CHANGED
@@ -1,22 +1,19 @@
1
1
  {
2
2
  "name": "@fast-simon/dashboard-utilities",
3
- "files": [
4
- "lib/**/*"
5
- ],
6
- "version": "1.0.3",
3
+ "version": "1.0.4",
7
4
  "scripts": {
8
5
  "dev": "vite",
9
- "build": "tsc && vite build",
10
6
  "preview": "vite preview",
7
+ "build": "tsc -p tsconfig-build.json",
11
8
  "prepublishOnly": "npm version patch && npm run build",
12
- "tsc": "tsc"
13
- },
14
- "main": "lib/main.js",
15
- "type": "module",
16
- "types": "lib/main.d.ts",
17
- "directories": {
18
- "lib": "lib"
9
+ "postbuild": "copyfiles -u 2 src/components/**/*.css dist/components && copyfiles -u 2 src/icons/**/*.css dist/icons && copyfiles -u 2 src/assets/**/*.gif dist/assets"
19
10
  },
11
+ "main": "dist/index.js",
12
+ "module": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist"
16
+ ],
20
17
  "dependencies": {
21
18
  "@babel/core": "^7.20.12",
22
19
  "@dnd-kit/core": "^6.0.8",
@@ -36,21 +33,21 @@
36
33
  "moment": "^2.29.1",
37
34
  "rc-slider": "^10.1.1",
38
35
  "react-datepicker": "^4.10.0",
39
- "react-select": "^5.2.1",
40
- "tss-react": "^3.6.0",
41
- "usehooks-ts": "^2.9.1",
42
36
  "react-jss": "^10.6.0",
43
37
  "react-loading-skeleton": "^2.2.0",
44
38
  "react-multi-carousel": "^2.6.3",
45
- "react-switch": "^6.0.0"
39
+ "react-select": "^5.2.1",
40
+ "react-switch": "^6.0.0",
41
+ "tss-react": "^3.6.0",
42
+ "usehooks-ts": "^2.9.1"
46
43
  },
47
44
  "devDependencies": {
48
45
  "@types/node": "^18.13.0",
49
- "@types/react": "^17.0.33",
46
+ "@types/react": "^18.3.3",
50
47
  "@types/react-datepicker": "^4.10.0",
51
- "@types/react-dom": "^17.0.10",
48
+ "@types/react-dom": "^18.3.0",
52
49
  "@types/react-modal": "^3.13.1",
53
- "@types/react-router-dom": "^5.1.5",
50
+ "@types/react-redux": "^7.1.25",
54
51
  "@vitejs/plugin-react": "^1.0.7",
55
52
  "axios": "^0.24.0",
56
53
  "copyfiles": "^2.4.1",
@@ -60,9 +57,7 @@
60
57
  "react-datepicker": "^4.10.0",
61
58
  "react-dom": "^17.0.2",
62
59
  "react-modal": "3.14.4",
63
- "react-router-dom": "^5.2.0",
64
- "rimraf": "^3.0.2",
65
- "typescript": "^4.4.4",
60
+ "typescript": "^4.9.5",
66
61
  "vite": "^2.7.2"
67
62
  }
68
63
  }