@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.
- package/dist/@types/banner.d.ts +7 -0
- package/dist/@types/banner.js +2 -0
- package/dist/@types/banner.js.map +1 -0
- package/dist/@types/categories.d.ts +16 -0
- package/dist/@types/categories.js +2 -0
- package/dist/@types/categories.js.map +1 -0
- package/dist/@types/currency.d.ts +1 -0
- package/dist/@types/currency.js +2 -0
- package/dist/@types/currency.js.map +1 -0
- package/dist/@types/editorProduct.d.ts +26 -0
- package/dist/@types/editorProduct.js +6 -0
- package/dist/@types/editorProduct.js.map +1 -0
- package/dist/@types/iconProps.d.ts +9 -0
- package/dist/@types/iconProps.js +2 -0
- package/dist/@types/iconProps.js.map +1 -0
- package/dist/@types/product.d.ts +158 -0
- package/dist/@types/product.js +8 -0
- package/dist/@types/product.js.map +1 -0
- package/dist/@types/productLabel.d.ts +1 -0
- package/dist/@types/productLabel.js +2 -0
- package/dist/@types/productLabel.js.map +1 -0
- package/dist/@types/promoTile.d.ts +11 -0
- package/dist/@types/promoTile.js +2 -0
- package/dist/@types/promoTile.js.map +1 -0
- package/dist/@types/results.d.ts +42 -0
- package/dist/@types/results.js +2 -0
- package/dist/@types/results.js.map +1 -0
- package/dist/@types/sideMenu.d.ts +19 -0
- package/dist/@types/sideMenu.js +2 -0
- package/dist/@types/sideMenu.js.map +1 -0
- package/dist/@types/sortBy.d.ts +3 -0
- package/dist/@types/sortBy.js +2 -0
- package/dist/@types/sortBy.js.map +1 -0
- package/dist/App.d.ts +3 -0
- package/dist/App.js +15 -0
- package/dist/App.js.map +1 -0
- package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.d.ts +9 -0
- package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js +74 -0
- package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js.map +1 -0
- package/dist/components/BackOfficeFiltersMenu/index.d.ts +1 -0
- package/dist/components/BackOfficeFiltersMenu/index.js +2 -0
- package/dist/components/BackOfficeFiltersMenu/index.js.map +1 -0
- package/dist/components/BackOfficeFiltersMenu/styles.module.css +10 -0
- package/dist/components/BackOfficeFiltersMenu/utils.d.ts +7 -0
- package/dist/components/BackOfficeFiltersMenu/utils.js +239 -0
- package/dist/components/BackOfficeFiltersMenu/utils.js.map +1 -0
- package/dist/components/CheckboxFilter/Checkbox/Checkbox.d.ts +10 -0
- package/dist/components/CheckboxFilter/Checkbox/Checkbox.js +7 -0
- package/dist/components/CheckboxFilter/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/CheckboxFilter/Checkbox/styles.module.css +143 -0
- package/dist/components/CheckboxFilter/CheckboxFilter.d.ts +6 -0
- package/dist/components/CheckboxFilter/CheckboxFilter.js +9 -0
- package/dist/components/CheckboxFilter/CheckboxFilter.js.map +1 -0
- package/dist/components/CheckboxFilter/styles.module.css +5 -0
- package/dist/components/DragAndDrop/DndContextWrapper.d.ts +20 -0
- package/dist/components/DragAndDrop/DndContextWrapper.js +33 -0
- package/dist/components/DragAndDrop/DndContextWrapper.js.map +1 -0
- package/dist/components/DragAndDrop/Droppable.d.ts +7 -0
- package/dist/components/DragAndDrop/Droppable.js +10 -0
- package/dist/components/DragAndDrop/Droppable.js.map +1 -0
- package/dist/components/DragAndDrop/SortableItem.d.ts +13 -0
- package/dist/components/DragAndDrop/SortableItem.js +39 -0
- package/dist/components/DragAndDrop/SortableItem.js.map +1 -0
- package/dist/components/DragAndDrop/styles.module.css +21 -0
- package/dist/components/FacetItem/FacetItem.d.ts +13 -0
- package/dist/components/FacetItem/FacetItem.js +40 -0
- package/dist/components/FacetItem/FacetItem.js.map +1 -0
- package/dist/components/FacetItem/styles.module.css +55 -0
- package/dist/components/FastSimonApi/FastSimonApi.d.ts +32 -0
- package/dist/components/FastSimonApi/FastSimonApi.js +398 -0
- package/dist/components/FastSimonApi/FastSimonApi.js.map +1 -0
- package/dist/components/FastSimonApi/context.d.ts +50 -0
- package/dist/components/FastSimonApi/context.js +10 -0
- package/dist/components/FastSimonApi/context.js.map +1 -0
- package/dist/components/FastSimonApi/index.d.ts +3 -0
- package/dist/components/FastSimonApi/index.js +3 -0
- package/dist/components/FastSimonApi/index.js.map +1 -0
- package/dist/components/FastSimonApi/reducer.d.ts +172 -0
- package/dist/components/FastSimonApi/reducer.js +67 -0
- package/dist/components/FastSimonApi/reducer.js.map +1 -0
- package/dist/components/FromToFilter/From/From.d.ts +17 -0
- package/dist/components/FromToFilter/From/From.js +22 -0
- package/dist/components/FromToFilter/From/From.js.map +1 -0
- package/dist/components/FromToFilter/From/styles.module.css +9 -0
- package/dist/components/FromToFilter/FromToFilter.d.ts +14 -0
- package/dist/components/FromToFilter/FromToFilter.js +58 -0
- package/dist/components/FromToFilter/FromToFilter.js.map +1 -0
- package/dist/components/FromToFilter/To/To.d.ts +18 -0
- package/dist/components/FromToFilter/To/To.js +23 -0
- package/dist/components/FromToFilter/To/To.js.map +1 -0
- package/dist/components/FromToFilter/To/styles.module.css +9 -0
- package/dist/components/FromToFilter/styles.module.css +34 -0
- package/dist/components/FromToFilter/utils.d.ts +25 -0
- package/dist/components/FromToFilter/utils.js +7 -0
- package/dist/components/FromToFilter/utils.js.map +1 -0
- package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.d.ts +10 -0
- package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js +34 -0
- package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js.map +1 -0
- package/dist/components/InStoreFiltersMenu/index.d.ts +1 -0
- package/dist/components/InStoreFiltersMenu/index.js +2 -0
- package/dist/components/InStoreFiltersMenu/index.js.map +1 -0
- package/dist/components/InStoreFiltersMenu/styles.module.css +10 -0
- package/dist/components/Input/Input.d.ts +22 -0
- package/dist/components/Input/Input.js +49 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/index.d.ts +1 -0
- package/dist/components/Input/index.js +2 -0
- package/dist/components/Input/index.js.map +1 -0
- package/dist/components/Input/styles.module.css +3 -0
- package/dist/components/LastReceivedDateFilter/LastReceivedDate.d.ts +9 -0
- package/dist/components/LastReceivedDateFilter/LastReceivedDate.js +88 -0
- package/dist/components/LastReceivedDateFilter/LastReceivedDate.js.map +1 -0
- package/dist/components/LastReceivedDateFilter/styles.module.css +41 -0
- package/dist/components/LastReceivedDateFilter/utils.d.ts +3 -0
- package/dist/components/LastReceivedDateFilter/utils.js +43 -0
- package/dist/components/LastReceivedDateFilter/utils.js.map +1 -0
- package/dist/components/RadioFilter/Radio/Radio.d.ts +10 -0
- package/dist/components/RadioFilter/Radio/Radio.js +7 -0
- package/dist/components/RadioFilter/Radio/Radio.js.map +1 -0
- package/dist/components/RadioFilter/Radio/styles.module.css +145 -0
- package/dist/components/RadioFilter/RadioFilter.d.ts +9 -0
- package/dist/components/RadioFilter/RadioFilter.js +45 -0
- package/dist/components/RadioFilter/RadioFilter.js.map +1 -0
- package/dist/components/RadioFilter/styles.module.css +23 -0
- package/dist/components/RadioFilter/utils.d.ts +1 -0
- package/dist/components/RadioFilter/utils.js +8 -0
- package/dist/components/RadioFilter/utils.js.map +1 -0
- package/dist/components/ReactDatePicker/ReactDatePicker.d.ts +11 -0
- package/dist/components/ReactDatePicker/ReactDatePicker.js +16 -0
- package/dist/components/ReactDatePicker/ReactDatePicker.js.map +1 -0
- package/dist/components/ReactDatePicker/index.d.ts +1 -0
- package/dist/components/ReactDatePicker/index.js +2 -0
- package/dist/components/ReactDatePicker/index.js.map +1 -0
- package/dist/components/ReactDatePicker/styles.module.css +3 -0
- package/dist/components/RenderIfVisible/RenderIfVisible.d.ts +12 -0
- package/dist/components/RenderIfVisible/RenderIfVisible.js +59 -0
- package/dist/components/RenderIfVisible/RenderIfVisible.js.map +1 -0
- package/dist/components/RenderIfVisible/index.d.ts +1 -0
- package/dist/components/RenderIfVisible/index.js +2 -0
- package/dist/components/RenderIfVisible/index.js.map +1 -0
- package/dist/components/SingleFilter/SingleFilter.d.ts +11 -0
- package/dist/components/SingleFilter/SingleFilter.js +90 -0
- package/dist/components/SingleFilter/SingleFilter.js.map +1 -0
- package/dist/components/SingleFilter/styles.module.css +23 -0
- package/dist/components/SingleFilter/utils.d.ts +3 -0
- package/dist/components/SingleFilter/utils.js +42 -0
- package/dist/components/SingleFilter/utils.js.map +1 -0
- package/dist/components/SliderFilter/SliderFilter.d.ts +20 -0
- package/dist/components/SliderFilter/SliderFilter.js +46 -0
- package/dist/components/SliderFilter/SliderFilter.js.map +1 -0
- package/dist/components/SliderFilter/index.d.ts +1 -0
- package/dist/components/SliderFilter/index.js +2 -0
- package/dist/components/SliderFilter/index.js.map +1 -0
- package/dist/components/SliderFilter/styles.module.css +16 -0
- package/dist/components/Tooltip/Tooltip.d.ts +8 -0
- package/dist/components/Tooltip/Tooltip.js +9 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/styles.module.css +34 -0
- package/dist/components/common.d.ts +34 -0
- package/dist/components/common.js +80 -0
- package/dist/components/common.js.map +1 -0
- package/dist/components/productGrid/ProductGrid.d.ts +7 -0
- package/dist/components/productGrid/ProductGrid.js +11 -0
- package/dist/components/productGrid/ProductGrid.js.map +1 -0
- package/dist/components/productGrid/index.d.ts +1 -0
- package/dist/components/productGrid/index.js +2 -0
- package/dist/components/productGrid/index.js.map +1 -0
- package/dist/components/productGrid/styles.module.css +23 -0
- package/dist/icons/BackOfficeFiltersIcon.d.ts +2 -0
- package/dist/icons/BackOfficeFiltersIcon.js +7 -0
- package/dist/icons/BackOfficeFiltersIcon.js.map +1 -0
- package/dist/icons/BannersIcon.d.ts +2 -0
- package/dist/icons/BannersIcon.js +7 -0
- package/dist/icons/BannersIcon.js.map +1 -0
- package/dist/icons/HelpIcon.d.ts +7 -0
- package/dist/icons/HelpIcon.js +5 -0
- package/dist/icons/HelpIcon.js.map +1 -0
- package/dist/icons/InStoreFiltersIcon.d.ts +2 -0
- package/dist/icons/InStoreFiltersIcon.js +7 -0
- package/dist/icons/InStoreFiltersIcon.js.map +1 -0
- package/dist/icons/PromoteIcon.d.ts +2 -0
- package/dist/icons/PromoteIcon.js +7 -0
- package/dist/icons/PromoteIcon.js.map +1 -0
- package/dist/icons/RemoveIcon.d.ts +2 -0
- package/dist/icons/RemoveIcon.js +7 -0
- package/dist/icons/RemoveIcon.js.map +1 -0
- package/dist/icons/RestoreIcon.d.ts +2 -0
- package/dist/icons/RestoreIcon.js +7 -0
- package/dist/icons/RestoreIcon.js.map +1 -0
- package/dist/icons/index.d.ts +7 -0
- package/dist/icons/index.js +8 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/styles.module.css +61 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -0
- package/dist/services/API.d.ts +21 -0
- package/dist/services/API.js +50 -0
- package/dist/services/API.js.map +1 -0
- package/dist/services/landingPage.d.ts +28 -0
- package/dist/services/landingPage.js +153 -0
- package/dist/services/landingPage.js.map +1 -0
- package/dist/utils/customTagsFilters.d.ts +4 -0
- package/dist/utils/customTagsFilters.js +10 -0
- package/dist/utils/customTagsFilters.js.map +1 -0
- package/dist/utils/products.d.ts +30 -0
- package/dist/utils/products.js +39 -0
- package/dist/utils/products.js.map +1 -0
- package/dist/utils/shopifyMarkets.d.ts +3 -0
- package/dist/utils/shopifyMarkets.js +7 -0
- package/dist/utils/shopifyMarkets.js.map +1 -0
- package/dist/utils/useDragToSelect.d.ts +13 -0
- package/dist/utils/useDragToSelect.js +177 -0
- package/dist/utils/useDragToSelect.js.map +1 -0
- 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,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 @@
|
|
|
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":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAW,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,UAAU,MAAM,YAAY,CAAC;AAWpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC5B,OAAO,EACP,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,UAAU,GACN,EAAE,EAAE;IACR,0DAA0D;IAE1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAc,CAAC;IAEjE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAE1E,MAAM,WAAW,GAAG,WAAW,CAC3B,CAAC,KAAoB,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAe,EAAE,EAAE;YAC3C,MAAM,OAAO,GACT,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC;gBACrC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;YAChD,OAAO;gBACH,EAAE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,YAAY,CAAC;gBACvC,GAAG,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,eAAe,CAAC;aAC9C,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,eAAoB,EAAE,EAAE;;QACtC,IACK,MAAc,CAAC,mBAAmB;aACnC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,CAAA;YAC3B,CAAC,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,MAAM,CAAA;YAC9B,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,EAClD;YACE,OAAO;SACV;QACD,IACI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAC3C,2BAA2B,CAC9B;YACD,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvD,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC5D;YACE,OAAO;SACV;QAED,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,eAAoB,EAAE,EAAE;;QACpC,6CAA6C;QAC7C,UAAU,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAC7C,IACI,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU;YAC1B,MAAc,CAAC,mBAAmB,EACrC;YACE,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAgB,CAAC;YAC5D,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;aACpC;YACD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,EAAE,CAAC;YAC7B,OAAO;SACV;QACD,IACI,MAAA,MAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,MAAM,0CAAE,OAAO,mDAAG,yBAAyB,CAAC,EACtE;YACE,OAAO;SACV;QACD,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC1B,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,EAAE,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,eAAoB,EAAE,EAAE;;QAC3C,4CAA4C;QAC5C,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAE5C,IACI,CAAC,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,CAAA;YAC5B,CAAE,MAAc,CAAC,mBAAmB;YACpC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EACpC;YACE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,EAAE,CAAC;SAChC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,MAAA,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,eAAe,kDAAI,CAAC;SAC9C;aAAM,IAAI,QAAQ,CAAC,YAAY,EAAE;YAC9B,MAAA,MAAA,QAAQ,CAAC,YAAY,EAAE,0CAAE,KAAK,kDAAI,CAAC;SACtC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAgB,CAAC;QAC5D,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;SACxC;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,eAAoB,EAAE,EAAE;;QACtC,IACI,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,MAAM,IAAG,CAAC;YAClC,CAAE,MAAc,CAAC,mBAAmB,EACtC;YACE,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SACtC;IACL,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE;YACR,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC9C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5C,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACpD,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAe,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YACtD,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAe,EAAE,EAAE;YACnD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YACtD,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE;YAChC,IAAI,iBAAiB,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;aAClC;YACD,aAAa,CACT,IAAI,UAAU,CAAC;gBACX,WAAW,EAAE,WAA4B;gBACzC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAgB;gBACpD,eAAe,EAAE,EAAE;gBACnB,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACpC,CAAC,CACL,CAAC;SACL;aAAM,IACH,UAAU;YACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACtD,CAAC,mBAAmB,EACtB;YACE,UAAU,CAAC,WAAW,CAAC;gBACnB,WAAW,EAAE,WAA4B;gBACzC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACpC,CAAC,CAAC;YACH,kBAAkB,CAAC,WAAW,CAAC,CAAC;SACnC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAE,EAAE;;YACjC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/B,OAAO;aACV;YACD,IACI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBACtC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAC7C;gBACE,OAAO;aACV;YACD,IAAI,CAAC,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,CAAA,EAAE;gBAClC,kCAAkC;gBAClC,sCAAsC;gBACtC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBAClC,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;gBACtC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAChB;QACL,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACjE,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YAC/D,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,UAAU,IAAI,QAAQ,EAAE;YACxB,UAAU,CAAC,cAAc,EAAE,CAAC;YAC5B,UAAU,CAAC,WAAW,CAAC;gBACnB,WAAW,EAAE,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;gBACnC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACpC,CAAC,CAAC;SACN;aAAM,IAAI,UAAU,IAAI,QAAQ,KAAK,KAAK,EAAE;YACzC,UAAU,CAAC,WAAW,CAAC;gBACnB,WAAW,EAAE,WAA4B;gBACzC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAgB;gBACpD,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;aACpC,CAAC,CAAC;SACN;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC","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
|
-
"
|
|
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
|
-
"
|
|
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-
|
|
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": "^
|
|
46
|
+
"@types/react": "^18.3.3",
|
|
50
47
|
"@types/react-datepicker": "^4.10.0",
|
|
51
|
-
"@types/react-dom": "^
|
|
48
|
+
"@types/react-dom": "^18.3.0",
|
|
52
49
|
"@types/react-modal": "^3.13.1",
|
|
53
|
-
"@types/react-
|
|
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
|
-
"
|
|
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
|
}
|