ublo-lib 1.39.13 → 1.39.15
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/es/future/components/msem-preset-editor/components/stay-picker.js +1 -1
- package/es/future/components/msem-preset-editor/msem-preset-editor.d.ts +2 -1
- package/es/future/components/msem-preset-editor/msem-preset-editor.d.ts.map +1 -1
- package/es/future/components/msem-preset-editor/msem-preset-editor.js +9 -8
- package/package.json +1 -1
- package/es/common/components/msem-preset-editor/components/facet-selector.d.ts +0 -6
- package/es/common/components/msem-preset-editor/components/facet-selector.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/components/facet-selector.js +0 -23
- package/es/common/components/msem-preset-editor/components/form.d.ts +0 -8
- package/es/common/components/msem-preset-editor/components/form.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/components/form.js +0 -9
- package/es/common/components/msem-preset-editor/components/form.module.css +0 -39
- package/es/common/components/msem-preset-editor/components/stay-picker.d.ts +0 -14
- package/es/common/components/msem-preset-editor/components/stay-picker.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/components/stay-picker.js +0 -35
- package/es/common/components/msem-preset-editor/components/stay-picker.module.css +0 -5
- package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts +0 -12
- package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/components/widget-list-item.js +0 -55
- package/es/common/components/msem-preset-editor/components/widget-list-item.module.css +0 -115
- package/es/common/components/msem-preset-editor/components/widget-list.d.ts +0 -17
- package/es/common/components/msem-preset-editor/components/widget-list.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/components/widget-list.js +0 -34
- package/es/common/components/msem-preset-editor/components/widget-list.module.css +0 -21
- package/es/common/components/msem-preset-editor/editor-dialog.d.ts +0 -30
- package/es/common/components/msem-preset-editor/editor-dialog.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editor-dialog.js +0 -27
- package/es/common/components/msem-preset-editor/editor-dialog.module.css +0 -31
- package/es/common/components/msem-preset-editor/editors/elloha.d.ts +0 -15
- package/es/common/components/msem-preset-editor/editors/elloha.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/elloha.js +0 -79
- package/es/common/components/msem-preset-editor/editors/elloha.module.css +0 -14
- package/es/common/components/msem-preset-editor/editors/index.d.ts +0 -16
- package/es/common/components/msem-preset-editor/editors/index.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/index.js +0 -15
- package/es/common/components/msem-preset-editor/editors/lodgings.d.ts +0 -17
- package/es/common/components/msem-preset-editor/editors/lodgings.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/lodgings.js +0 -192
- package/es/common/components/msem-preset-editor/editors/lodgings.module.css +0 -21
- package/es/common/components/msem-preset-editor/editors/ski-passes-jb.d.ts +0 -16
- package/es/common/components/msem-preset-editor/editors/ski-passes-jb.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/ski-passes-jb.js +0 -85
- package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts +0 -16
- package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/ski-passes.js +0 -198
- package/es/common/components/msem-preset-editor/editors/ski-passes.module.css +0 -25
- package/es/common/components/msem-preset-editor/editors/standard-products.d.ts +0 -16
- package/es/common/components/msem-preset-editor/editors/standard-products.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/standard-products.js +0 -65
- package/es/common/components/msem-preset-editor/editors/vakario.d.ts +0 -15
- package/es/common/components/msem-preset-editor/editors/vakario.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/editors/vakario.js +0 -179
- package/es/common/components/msem-preset-editor/index.d.ts +0 -3
- package/es/common/components/msem-preset-editor/index.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/index.js +0 -2
- package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts +0 -28
- package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/msem-preset-editor.js +0 -161
- package/es/common/components/msem-preset-editor/msem-preset-editor.module.css +0 -38
- package/es/common/components/msem-preset-editor/services/api.d.ts +0 -15
- package/es/common/components/msem-preset-editor/services/api.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/services/api.js +0 -71
- package/es/common/components/msem-preset-editor/services/offers.d.ts +0 -23
- package/es/common/components/msem-preset-editor/services/offers.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/services/offers.js +0 -50
- package/es/common/components/msem-preset-editor/services/preset.d.ts +0 -32
- package/es/common/components/msem-preset-editor/services/preset.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/services/preset.js +0 -19
- package/es/common/components/msem-preset-editor/services/url-params.d.ts +0 -3
- package/es/common/components/msem-preset-editor/services/url-params.d.ts.map +0 -1
- package/es/common/components/msem-preset-editor/services/url-params.js +0 -26
- package/es/common/components/msem-preset-linker/components/actions.d.ts +0 -11
- package/es/common/components/msem-preset-linker/components/actions.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/components/actions.js +0 -45
- package/es/common/components/msem-preset-linker/components/actions.module.css +0 -65
- package/es/common/components/msem-preset-linker/components/overlays.d.ts +0 -8
- package/es/common/components/msem-preset-linker/components/overlays.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/components/overlays.js +0 -52
- package/es/common/components/msem-preset-linker/components/overlays.module.css +0 -64
- package/es/common/components/msem-preset-linker/components/resort-selector.d.ts +0 -6
- package/es/common/components/msem-preset-linker/components/resort-selector.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/components/resort-selector.js +0 -12
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts +0 -5
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/hooks/use-msem-presets.js +0 -37
- package/es/common/components/msem-preset-linker/index.d.ts +0 -3
- package/es/common/components/msem-preset-linker/index.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/index.js +0 -2
- package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts +0 -30
- package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/msem-preset-linker.js +0 -54
- package/es/common/components/msem-preset-linker/msem-preset-linker.module.css +0 -27
- package/es/common/components/msem-preset-linker/services/url-params.d.ts +0 -2
- package/es/common/components/msem-preset-linker/services/url-params.d.ts.map +0 -1
- package/es/common/components/msem-preset-linker/services/url-params.js +0 -13
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import getConfig from "next/config";
|
|
4
|
-
import classNames from "classnames";
|
|
5
|
-
import Button from "dt-design-system/es/button";
|
|
6
|
-
import Dialog from "dt-design-system/es/dialog";
|
|
7
|
-
import Input from "dt-design-system/es/input";
|
|
8
|
-
import Tooltip from "dt-design-system/es/tooltip";
|
|
9
|
-
import * as Icons from "dt-design-system/es/icons";
|
|
10
|
-
import * as MseM from "../../utils/msem-widget";
|
|
11
|
-
import FacetSelector from "./components/facet-selector";
|
|
12
|
-
import StayPicker from "./components/stay-picker";
|
|
13
|
-
import WidgetList from "./components/widget-list";
|
|
14
|
-
import Editors from "./editors";
|
|
15
|
-
import * as UrlParams from "./services/url-params";
|
|
16
|
-
import * as Preset from "./services/preset";
|
|
17
|
-
import css from "./msem-preset-editor.module.css";
|
|
18
|
-
const { publicRuntimeConfig } = getConfig();
|
|
19
|
-
const { langPrefix } = publicRuntimeConfig;
|
|
20
|
-
export default function MseMPresetEditor({ lang, options, urls, selectedPreset, onChange, noLodgingPage, children, }) {
|
|
21
|
-
const currentPreset = selectedPreset ? JSON.parse(selectedPreset) : undefined;
|
|
22
|
-
const defaultResort = Number(currentPreset ? currentPreset.options.resort : options.resort);
|
|
23
|
-
const [facet, setFacet] = React.useState(currentPreset?.options?.facet?.toString() || "");
|
|
24
|
-
const [stay, setStay] = React.useState(currentPreset?.presets?.stay || { from: "", to: "" });
|
|
25
|
-
const [preset, setPreset] = React.useState(currentPreset || null);
|
|
26
|
-
const [error, setError] = React.useState(null);
|
|
27
|
-
const [showPresetDialog, setShowPresetDialog] = React.useState(false);
|
|
28
|
-
const [presetUrl, setPresetUrl] = React.useState("");
|
|
29
|
-
const [resort, setResort] = React.useState(defaultResort);
|
|
30
|
-
const initialRender = React.useRef(true);
|
|
31
|
-
const showWidgetList = resort && facet !== "";
|
|
32
|
-
const baseUrl = getBaseUrl({
|
|
33
|
-
lang,
|
|
34
|
-
widget: preset?.widget,
|
|
35
|
-
facet,
|
|
36
|
-
urls,
|
|
37
|
-
resort,
|
|
38
|
-
slug: preset?.openPage ? preset?.presets?.accomodation : undefined,
|
|
39
|
-
});
|
|
40
|
-
const updatePreset = React.useCallback((item, subPreset) => {
|
|
41
|
-
let { name, options: itemOptions, presets: itemPresets } = item;
|
|
42
|
-
const widget = subPreset?.widget || item.widget;
|
|
43
|
-
if (!widget) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (subPreset) {
|
|
47
|
-
const formattedSubPreset = Preset.format(subPreset);
|
|
48
|
-
name = subPreset.name;
|
|
49
|
-
itemOptions = formattedSubPreset.options;
|
|
50
|
-
itemPresets = formattedSubPreset.presets;
|
|
51
|
-
}
|
|
52
|
-
if (stay?.from && stay?.to) {
|
|
53
|
-
itemPresets = { ...itemPresets, stay };
|
|
54
|
-
}
|
|
55
|
-
const allOptions = {
|
|
56
|
-
facet: Number(facet),
|
|
57
|
-
...itemOptions,
|
|
58
|
-
...options,
|
|
59
|
-
resort,
|
|
60
|
-
};
|
|
61
|
-
const newPreset = {
|
|
62
|
-
name,
|
|
63
|
-
widget,
|
|
64
|
-
options: allOptions,
|
|
65
|
-
presets: itemPresets,
|
|
66
|
-
url: baseUrl || undefined,
|
|
67
|
-
};
|
|
68
|
-
onChange?.(newPreset);
|
|
69
|
-
setPreset(newPreset);
|
|
70
|
-
}, [baseUrl, facet, onChange, options, stay, resort]);
|
|
71
|
-
const removePreset = React.useCallback(() => {
|
|
72
|
-
onChange?.(null);
|
|
73
|
-
setPreset(null);
|
|
74
|
-
}, [onChange]);
|
|
75
|
-
const testPreset = () => {
|
|
76
|
-
if (!preset)
|
|
77
|
-
return;
|
|
78
|
-
const storageKeysToRemove = [
|
|
79
|
-
"msem-material-rental-state",
|
|
80
|
-
"msem-lift-jb-state",
|
|
81
|
-
];
|
|
82
|
-
storageKeysToRemove.forEach((key) => {
|
|
83
|
-
window.sessionStorage.removeItem(key);
|
|
84
|
-
});
|
|
85
|
-
const { widget, options, presets } = preset;
|
|
86
|
-
MseM.openMseM(widget, options, presets);
|
|
87
|
-
};
|
|
88
|
-
const copyUrl = (e) => {
|
|
89
|
-
e.preventDefault();
|
|
90
|
-
const field = e.target;
|
|
91
|
-
const url = field.value;
|
|
92
|
-
field.select();
|
|
93
|
-
navigator.clipboard.writeText(url);
|
|
94
|
-
window.ubloSnackbar("URL copiée dans le presse papier", "success");
|
|
95
|
-
};
|
|
96
|
-
React.useEffect(() => {
|
|
97
|
-
if (stay?.from && stay?.to) {
|
|
98
|
-
setPreset((current = {}) => {
|
|
99
|
-
const newPreset = {
|
|
100
|
-
...current,
|
|
101
|
-
presets: { ...(current?.presets || {}), stay },
|
|
102
|
-
};
|
|
103
|
-
onChange?.(newPreset);
|
|
104
|
-
return newPreset;
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}, [onChange, stay]);
|
|
108
|
-
React.useEffect(() => {
|
|
109
|
-
if (preset && baseUrl) {
|
|
110
|
-
const url = UrlParams.getPresetUrl(lang, preset, baseUrl);
|
|
111
|
-
setPresetUrl(url);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
setPresetUrl("");
|
|
115
|
-
}
|
|
116
|
-
}, [baseUrl, lang, preset]);
|
|
117
|
-
React.useEffect(() => {
|
|
118
|
-
if (initialRender.current) {
|
|
119
|
-
initialRender.current = false;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
removePreset();
|
|
123
|
-
}
|
|
124
|
-
}, [removePreset, resort]);
|
|
125
|
-
if (!resort)
|
|
126
|
-
return null;
|
|
127
|
-
const CurrentEditor = preset?.widget && Editors[preset.widget];
|
|
128
|
-
const showPresetUrl = Boolean(preset?.widget && presetUrl !== "");
|
|
129
|
-
const footerClasses = classNames(css.footer, {
|
|
130
|
-
[css.footerButtonOnly]: !showPresetUrl,
|
|
131
|
-
});
|
|
132
|
-
return (_jsxs("div", { className: css.editor, children: [children &&
|
|
133
|
-
React.cloneElement(children, {
|
|
134
|
-
resort,
|
|
135
|
-
setResort,
|
|
136
|
-
}), _jsx(FacetSelector, { facet: facet, setFacet: setFacet, setPreset: setPreset }), _jsx(StayPicker, { stay: stay, setStay: setStay, setPreset: setPreset }), showWidgetList && (_jsx(WidgetList, { lang: lang, resort: resort, channel: options.channel, facet: facet, preset: preset, updatePreset: updatePreset, removePreset: removePreset, error: error, setError: setError, setShowPresetDialog: setShowPresetDialog })), _jsx(Dialog, { isOpened: showPresetDialog, close: () => setShowPresetDialog(false), container: null, showAsModal: false, children: showPresetDialog && (_jsx(CurrentEditor, { stay: stay, facet: facet, preset: preset, setPreset: setPreset, setShowPresetDialog: setShowPresetDialog, testPreset: testPreset, onChange: onChange, baseUrl: baseUrl, noLodgingPage: noLodgingPage })) }), error && _jsx("div", { className: css.error, children: error }), _jsxs("div", { className: footerClasses, children: [showPresetUrl ? (_jsx(Tooltip, { content: "Tester dans le widget MseM", children: _jsx(Button, { variant: "secondary", disabled: !preset?.widget, className: css.testButton, onClick: testPreset, children: _jsx(Icons.OpenInBrowser, {}) }) })) : (_jsxs(Button, { variant: "secondary", disabled: !preset?.widget, className: css.testButton, onClick: testPreset, children: [_jsx(Icons.OpenInBrowser, {}), "Tester dans le widget MseM"] })), showPresetUrl && (_jsx(Input, { type: "text", className: css.url, value: presetUrl, onClick: copyUrl, placeholder: !preset
|
|
137
|
-
? "Aucun preset sélectionné"
|
|
138
|
-
: "Preset incompatible au format URL", readOnly: true }))] })] }));
|
|
139
|
-
}
|
|
140
|
-
function getBaseUrl({ lang, widget, facet, urls, slug }) {
|
|
141
|
-
if (facet === "" || !widget || !urls)
|
|
142
|
-
return "";
|
|
143
|
-
if (urls.override)
|
|
144
|
-
return urls.override;
|
|
145
|
-
const facetCode = facet === "0" ? "winter" : "summer";
|
|
146
|
-
let url = "";
|
|
147
|
-
if (widget === "skiPass" && urls?.skiPasses) {
|
|
148
|
-
url = urls?.skiPasses?.[facetCode];
|
|
149
|
-
}
|
|
150
|
-
if (widget === "lodging" && urls?.lodgings) {
|
|
151
|
-
url = urls?.lodgings?.[facetCode];
|
|
152
|
-
}
|
|
153
|
-
if (slug) {
|
|
154
|
-
url = url.concat("/", slug);
|
|
155
|
-
}
|
|
156
|
-
const isExternalUrl = url?.startsWith("http");
|
|
157
|
-
if (!isExternalUrl && url && langPrefix) {
|
|
158
|
-
url = "/".concat(lang, url);
|
|
159
|
-
}
|
|
160
|
-
return url;
|
|
161
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
.editor {
|
|
2
|
-
width: 420px;
|
|
3
|
-
display: flex;
|
|
4
|
-
flex-direction: column;
|
|
5
|
-
gap: 12px;
|
|
6
|
-
margin: 0 auto;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.editor * {
|
|
10
|
-
font-family: inherit;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.error {
|
|
14
|
-
padding: 10px;
|
|
15
|
-
font-size: 12px;
|
|
16
|
-
text-align: center;
|
|
17
|
-
color: var(--ds-red-500, #990700);
|
|
18
|
-
background-color: var(--ds-red-200, #fde7e7);
|
|
19
|
-
border-radius: var(--ds-radius-200, 8px);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.footer {
|
|
23
|
-
display: flex;
|
|
24
|
-
gap: 6px;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.footerButtonOnly {
|
|
28
|
-
justify-content: center;
|
|
29
|
-
white-space: nowrap;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.url {
|
|
33
|
-
flex: 1 1 100%;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.testButton {
|
|
37
|
-
flex: 0 0 40px;
|
|
38
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare function getOffers(lang: "fr" | "en", channel: string, resort: number | string, facet: string): Promise<any>;
|
|
2
|
-
export declare function getOtherOffers(lang: "fr" | "en", channel: string, resort: number | string, facet: string, kind: string): Promise<any>;
|
|
3
|
-
export declare function getRenters(channel: string, resort: number | string): Promise<any>;
|
|
4
|
-
export declare function getSkiPassesCatalogs(merchant: string): Promise<any>;
|
|
5
|
-
export declare function getSkiPassesFilters(merchant: string, catalog: string): Promise<any>;
|
|
6
|
-
export declare function getLodgings(channel: string, resort: string): Promise<any>;
|
|
7
|
-
export declare function getLodgingFilters(channel: string, resort: string, facet: string, language?: string): Promise<any>;
|
|
8
|
-
export declare function getLodgingRooms(id: number, resort: string, facet: string, language?: string, preview?: boolean): Promise<any>;
|
|
9
|
-
export declare function getEllohaGroups(merchant: string, stayFrom: string, language?: string): Promise<any>;
|
|
10
|
-
export declare function getVakarioKinds(channel: string, merchant: string, language?: string): Promise<any>;
|
|
11
|
-
export declare function getVakarioAges(channel: string, merchant: string, kind: string, language?: string): Promise<any>;
|
|
12
|
-
export declare function getVakarioCategories(channel: string, merchant: string, kind: string, age: string, language?: string): Promise<any>;
|
|
13
|
-
export declare function getVakarioLevels(channel: string, merchant: string, kind: string, age: string, category: string, language?: string): Promise<any>;
|
|
14
|
-
export declare function getOtherProductsCategories(facet: string, merchant: string, lang?: string): Promise<any>;
|
|
15
|
-
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/services/api.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,gBAId;AAWD,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,gBAMb;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,gBAGxE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,gBAG1D;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAG1E;AAGD,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAGhE;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,SAAO,EACf,OAAO,UAAQ,gBAIhB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAO,gBAIhB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAO,gBAIZ"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import getConfig from "next/config";
|
|
2
|
-
import * as Fetcher from "../../../utils/fetcher";
|
|
3
|
-
const { publicRuntimeConfig } = getConfig();
|
|
4
|
-
const { msemServicesUrl } = publicRuntimeConfig;
|
|
5
|
-
export function getOffers(lang, channel, resort, facet) {
|
|
6
|
-
const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}`;
|
|
7
|
-
return Fetcher.get(endpoint, { lang, facet });
|
|
8
|
-
}
|
|
9
|
-
const kinds = {
|
|
10
|
-
ACTIVITIES: "activities",
|
|
11
|
-
SERVICE_PLUS: "service_plus",
|
|
12
|
-
RESTAURANT: "restaurant",
|
|
13
|
-
TEXTILE: "textile",
|
|
14
|
-
SKISCHOOL: "skischool",
|
|
15
|
-
PARKING: "parking",
|
|
16
|
-
};
|
|
17
|
-
export async function getOtherOffers(lang, channel, resort, facet, kind) {
|
|
18
|
-
const kindSlug = kinds[kind];
|
|
19
|
-
if (!kindSlug)
|
|
20
|
-
return;
|
|
21
|
-
const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}/${kindSlug}`;
|
|
22
|
-
return Fetcher.get(endpoint, { lang, facet });
|
|
23
|
-
}
|
|
24
|
-
export async function getRenters(channel, resort) {
|
|
25
|
-
const endpoint = `${msemServicesUrl}/api/ski-rental/${resort}/renters`;
|
|
26
|
-
return Fetcher.post(endpoint, { channel });
|
|
27
|
-
}
|
|
28
|
-
export async function getSkiPassesCatalogs(merchant) {
|
|
29
|
-
const endpoint = `${msemServicesUrl}/api/ski-pass/catalogs/${merchant}`;
|
|
30
|
-
return Fetcher.get(endpoint);
|
|
31
|
-
}
|
|
32
|
-
export async function getSkiPassesFilters(merchant, catalog) {
|
|
33
|
-
const endpoint = `${msemServicesUrl}/api/ski-pass/${merchant}/filters`;
|
|
34
|
-
return Fetcher.post(endpoint, undefined, { catalog });
|
|
35
|
-
}
|
|
36
|
-
export async function getLodgings(channel, resort) {
|
|
37
|
-
const endpoint = `${msemServicesUrl}/api/lodging/getAccommodationsStructure`;
|
|
38
|
-
return Fetcher.get(endpoint, { channel, resort });
|
|
39
|
-
}
|
|
40
|
-
export async function getLodgingFilters(channel, resort, facet, language = "fr") {
|
|
41
|
-
const endpoint = `${msemServicesUrl}/api/lodging/resort/${resort}/${channel}`;
|
|
42
|
-
return Fetcher.get(endpoint, { facet, language });
|
|
43
|
-
}
|
|
44
|
-
export async function getLodgingRooms(id, resort, facet, language = "fr", preview = false) {
|
|
45
|
-
const endpoint = `${msemServicesUrl}/api/lodging/accomodation/${id}`;
|
|
46
|
-
return Fetcher.post(endpoint, { resort, facet, language, preview });
|
|
47
|
-
}
|
|
48
|
-
export async function getEllohaGroups(merchant, stayFrom, language = "fr") {
|
|
49
|
-
const endpoint = `${msemServicesUrl}/api/elloha-activity/${merchant}/${language}/kinds`;
|
|
50
|
-
return Fetcher.get(endpoint, { date: stayFrom });
|
|
51
|
-
}
|
|
52
|
-
export async function getVakarioKinds(channel, merchant, language = "fr") {
|
|
53
|
-
const endpoint = `${msemServicesUrl}/api/vakario/${channel}/${merchant}/${language}/kinds`;
|
|
54
|
-
return Fetcher.get(endpoint);
|
|
55
|
-
}
|
|
56
|
-
export async function getVakarioAges(channel, merchant, kind, language = "fr") {
|
|
57
|
-
const endpoint = `${msemServicesUrl}/api/vakario/${channel}/${merchant}/${language}/${kind}/ages`;
|
|
58
|
-
return Fetcher.get(endpoint);
|
|
59
|
-
}
|
|
60
|
-
export async function getVakarioCategories(channel, merchant, kind, age, language = "fr") {
|
|
61
|
-
const endpoint = `${msemServicesUrl}/api/vakario/${channel}/${merchant}/${language}/${kind}/${age}/categories`;
|
|
62
|
-
return Fetcher.get(endpoint);
|
|
63
|
-
}
|
|
64
|
-
export async function getVakarioLevels(channel, merchant, kind, age, category, language = "fr") {
|
|
65
|
-
const endpoint = `${msemServicesUrl}/api/vakario/${channel}/${merchant}/${language}/${kind}/${age}/${category}/levels`;
|
|
66
|
-
return Fetcher.get(endpoint);
|
|
67
|
-
}
|
|
68
|
-
export async function getOtherProductsCategories(facet, merchant, lang = "fr") {
|
|
69
|
-
const endpoint = `${msemServicesUrl}/api/standard-product/merchant/${merchant}`;
|
|
70
|
-
return Fetcher.post(endpoint, { facet: Number(facet), lang });
|
|
71
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export type Offer = {
|
|
2
|
-
kind: string;
|
|
3
|
-
category: string;
|
|
4
|
-
image: string;
|
|
5
|
-
logo: string;
|
|
6
|
-
name: string;
|
|
7
|
-
options: Record<string, any>;
|
|
8
|
-
preset: Record<string, any>;
|
|
9
|
-
presets: Record<string, any>;
|
|
10
|
-
widget: string;
|
|
11
|
-
items?: Offer[];
|
|
12
|
-
};
|
|
13
|
-
export type OtherOffer = {
|
|
14
|
-
code: string;
|
|
15
|
-
name: string;
|
|
16
|
-
slug: string;
|
|
17
|
-
taxonomy: {
|
|
18
|
-
category: string;
|
|
19
|
-
};
|
|
20
|
-
widget: string;
|
|
21
|
-
};
|
|
22
|
-
export declare function get(lang: "fr" | "en", channel: string, resort: number | string, facet: string): Promise<any[]>;
|
|
23
|
-
//# sourceMappingURL=offers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"offers.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/services/offers.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,GAAG,CACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,kBA8Cd"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import * as API from "./api";
|
|
2
|
-
export async function get(lang, channel, resort, facet) {
|
|
3
|
-
const offers = (await API.getOffers(lang, channel, resort, facet));
|
|
4
|
-
const formattedOffers = await Promise.all(offers.map(async (offer) => {
|
|
5
|
-
const { widget, category, kind, options, preset } = offer;
|
|
6
|
-
const isSkiSchool = kind === "SKISCHOOL";
|
|
7
|
-
const hasCategoryGroup = !!options?.categoryGroup || isSkiSchool;
|
|
8
|
-
if (hasCategoryGroup) {
|
|
9
|
-
let items = [];
|
|
10
|
-
const otherOffersKind = isSkiSchool ? kind : options?.categoryGroup;
|
|
11
|
-
const otherOffers = await API.getOtherOffers(lang, channel, resort, facet, otherOffersKind);
|
|
12
|
-
if (otherOffers?.merchants?.length > 0) {
|
|
13
|
-
items = otherOffers.merchants;
|
|
14
|
-
}
|
|
15
|
-
return preset
|
|
16
|
-
? { ...offer, preset: undefined, presets: { ...preset }, items }
|
|
17
|
-
: { ...offer, items };
|
|
18
|
-
}
|
|
19
|
-
const isRental = widget === "skiRental";
|
|
20
|
-
if (isRental) {
|
|
21
|
-
const renters = await API.getRenters(channel, resort);
|
|
22
|
-
const formattedRenters = renters.map((renter) => {
|
|
23
|
-
return { ...renter, widget };
|
|
24
|
-
});
|
|
25
|
-
return { ...offer, items: formattedRenters };
|
|
26
|
-
}
|
|
27
|
-
const isSkipasses = category === "SKIPASS";
|
|
28
|
-
if (isSkipasses) {
|
|
29
|
-
const mergedSkiPasses = mergeSkiPasses(offer);
|
|
30
|
-
return mergedSkiPasses;
|
|
31
|
-
}
|
|
32
|
-
return offer;
|
|
33
|
-
}));
|
|
34
|
-
return formattedOffers;
|
|
35
|
-
}
|
|
36
|
-
function mergeSkiPasses(offer) {
|
|
37
|
-
const { items = [], ...rest } = offer;
|
|
38
|
-
const uniqueItems = items.reduce((acc, item) => {
|
|
39
|
-
const { name } = item;
|
|
40
|
-
const isUnique = !acc.some((i) => i.name === name);
|
|
41
|
-
if (isUnique) {
|
|
42
|
-
return [item, ...acc];
|
|
43
|
-
}
|
|
44
|
-
return acc;
|
|
45
|
-
}, []);
|
|
46
|
-
if (uniqueItems.length === 0) {
|
|
47
|
-
return { ...rest, ...uniqueItems[0] };
|
|
48
|
-
}
|
|
49
|
-
return { ...rest, items: uniqueItems };
|
|
50
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export type Options = {
|
|
2
|
-
merchant?: string;
|
|
3
|
-
categoryGroup?: string;
|
|
4
|
-
catalog?: string;
|
|
5
|
-
};
|
|
6
|
-
export type Presets = {
|
|
7
|
-
lodging?: string;
|
|
8
|
-
stay?: {
|
|
9
|
-
from: string;
|
|
10
|
-
to: string;
|
|
11
|
-
};
|
|
12
|
-
merchantSlug?: string;
|
|
13
|
-
productCategory?: string;
|
|
14
|
-
productId?: string;
|
|
15
|
-
nbStars?: string;
|
|
16
|
-
durations?: string;
|
|
17
|
-
domains?: string;
|
|
18
|
-
firstSkiDate?: string;
|
|
19
|
-
skiers?: string;
|
|
20
|
-
nbRooms?: string;
|
|
21
|
-
accomodation?: string;
|
|
22
|
-
options?: string;
|
|
23
|
-
type?: string;
|
|
24
|
-
meubleType?: string;
|
|
25
|
-
ageCodes?: string;
|
|
26
|
-
levelCodes?: string;
|
|
27
|
-
kindCodes?: string;
|
|
28
|
-
categoryCodes?: string;
|
|
29
|
-
groupNames?: string;
|
|
30
|
-
};
|
|
31
|
-
export declare function format(data: Record<string, any>): Record<string, any>;
|
|
32
|
-
//# sourceMappingURL=preset.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/services/preset.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,uBAuB/C"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export function format(data) {
|
|
2
|
-
const { widget, code, taxonomy, slug } = data;
|
|
3
|
-
const isLift = ["skiPass", "liftJb"].includes(widget);
|
|
4
|
-
if (isLift) {
|
|
5
|
-
return data;
|
|
6
|
-
}
|
|
7
|
-
const isOtherProductsOrSkiRental = ["otherProducts", "skiRental"].includes(widget);
|
|
8
|
-
const merchant = isOtherProductsOrSkiRental ? slug : code;
|
|
9
|
-
const merchantSlug = isOtherProductsOrSkiRental ? slug : undefined;
|
|
10
|
-
const categoryGroup = taxonomy?.category;
|
|
11
|
-
const options = {
|
|
12
|
-
merchant,
|
|
13
|
-
categoryGroup,
|
|
14
|
-
};
|
|
15
|
-
const presets = {
|
|
16
|
-
merchantSlug,
|
|
17
|
-
};
|
|
18
|
-
return { options, presets };
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-params.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-editor/services/url-params.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,yBAWjB,CAAC;AAEF,eAAO,MAAM,YAAY,SACjB,MAAM,UACJ,OAAO,MAAM,EAAE,GAAG,CAAC,WAClB,MAAM,WAahB,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export const build = (params) => {
|
|
2
|
-
return Object.keys(params)
|
|
3
|
-
.map((key, i) => {
|
|
4
|
-
const param = params[key];
|
|
5
|
-
if (!param)
|
|
6
|
-
return "";
|
|
7
|
-
const isObject = typeof param === "object";
|
|
8
|
-
const sign = i === 0 ? "?" : "&";
|
|
9
|
-
const value = isObject ? encodeURI(JSON.stringify(param)) : param;
|
|
10
|
-
return `${sign}${key}=${value}`;
|
|
11
|
-
})
|
|
12
|
-
.join("");
|
|
13
|
-
};
|
|
14
|
-
export const getPresetUrl = (lang, preset, baseUrl) => {
|
|
15
|
-
const { host, protocol } = window.location;
|
|
16
|
-
const isExternalUrl = baseUrl.startsWith("http");
|
|
17
|
-
const alreadyContainsLang = baseUrl.includes(`/${lang}`);
|
|
18
|
-
const encodedParams = build(preset);
|
|
19
|
-
if (isExternalUrl) {
|
|
20
|
-
return baseUrl.concat(encodedParams);
|
|
21
|
-
}
|
|
22
|
-
if (alreadyContainsLang) {
|
|
23
|
-
return `${protocol}//${host}${baseUrl}${encodedParams}`;
|
|
24
|
-
}
|
|
25
|
-
return `${protocol}//${host}/${lang}${baseUrl}${encodedParams}`;
|
|
26
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-linker/components/actions.tsx"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;;;CAAA,2CAiDhD;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,MAAM;QACd,GAAG,EAAE,GAAG,CAAC;QACT,gBAAgB,EAAE,GAAG,CAAC;KACvB;CACF"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import classNames from "classnames";
|
|
4
|
-
import * as Icons from "dt-design-system/es/icons";
|
|
5
|
-
import { MODES } from "../msem-preset-linker";
|
|
6
|
-
import css from "./actions.module.css";
|
|
7
|
-
export default function Actions({ mode, setMode }) {
|
|
8
|
-
const toggleMode = React.useCallback(() => {
|
|
9
|
-
if (mode === MODES.CONNECTED) {
|
|
10
|
-
setMode(MODES.EDITING);
|
|
11
|
-
window.Cms.desactivate();
|
|
12
|
-
window.Cms.hideInfo();
|
|
13
|
-
window.Cms.pageUi.removeAttribute("active");
|
|
14
|
-
window.Cms.pageUi.setAttribute("hidden", "");
|
|
15
|
-
document.body.classList.add("msem-preset-linker--editing");
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
setMode(MODES.CONNECTED);
|
|
19
|
-
window.Cms.pageUi.removeAttribute("hidden");
|
|
20
|
-
document.body.classList.remove("msem-preset-linker--editing");
|
|
21
|
-
}
|
|
22
|
-
}, [mode, setMode]);
|
|
23
|
-
const onSaveClick = async () => {
|
|
24
|
-
if (!window.Cms)
|
|
25
|
-
return;
|
|
26
|
-
window.Cms.pageUi.removeAttribute("hidden");
|
|
27
|
-
window.Cms.pageUi.setAttribute("active", "");
|
|
28
|
-
window.Cms.pageUi.startLoading();
|
|
29
|
-
setMode(MODES.CONNECTED);
|
|
30
|
-
setTimeout(async () => {
|
|
31
|
-
window.Cms.pageUi.unsavedChanges = false;
|
|
32
|
-
await window.Cms.save();
|
|
33
|
-
window.Cms.pageUi.stopLoading();
|
|
34
|
-
window.Cms.pageUi.removeAttribute("active");
|
|
35
|
-
}, 200);
|
|
36
|
-
};
|
|
37
|
-
React.useEffect(() => {
|
|
38
|
-
window.toggleMseMLinker = toggleMode;
|
|
39
|
-
}, [mode, toggleMode]);
|
|
40
|
-
if (mode !== MODES.EDITING)
|
|
41
|
-
return null;
|
|
42
|
-
const cancelClasses = classNames(css.action, css.cancel);
|
|
43
|
-
const saveClasses = classNames(css.action, css.save);
|
|
44
|
-
return (_jsxs(_Fragment, { children: [_jsx("button", { className: cancelClasses, onClick: toggleMode, children: _jsx(Icons.Cross, {}) }), _jsx("button", { className: saveClasses, onClick: onSaveClick, children: _jsx(Icons.Save, {}) })] }));
|
|
45
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
.action {
|
|
2
|
-
position: absolute;
|
|
3
|
-
display: flex;
|
|
4
|
-
align-items: center;
|
|
5
|
-
justify-content: center;
|
|
6
|
-
background-color: #fff;
|
|
7
|
-
border-radius: 50%;
|
|
8
|
-
box-shadow: var(--ds-shadow-100, 0px 3px 6px rgba(0, 0, 0, 0.12));
|
|
9
|
-
cursor: pointer;
|
|
10
|
-
pointer-events: auto;
|
|
11
|
-
transition: box-shadow 160ms
|
|
12
|
-
var(--ds-transition-easing, cubic-bezier(0.4, 0, 0.2, 1));
|
|
13
|
-
animation: action-button-appearance 320ms
|
|
14
|
-
var(--ds-transition-easing, cubic-bezier(0.4, 0, 0.2, 1));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@keyframes action-button-appearance {
|
|
18
|
-
0% {
|
|
19
|
-
opacity: 0;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.toggle {
|
|
24
|
-
bottom: 182px;
|
|
25
|
-
right: 25px;
|
|
26
|
-
width: 36px;
|
|
27
|
-
height: 36px;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.cancel,
|
|
31
|
-
.save {
|
|
32
|
-
bottom: 16px;
|
|
33
|
-
width: 56px;
|
|
34
|
-
height: 56px;
|
|
35
|
-
fill: #fff;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.cancel {
|
|
39
|
-
right: 16px;
|
|
40
|
-
background: var(
|
|
41
|
-
--ds-red-gradient,
|
|
42
|
-
linear-gradient(
|
|
43
|
-
100deg,
|
|
44
|
-
var(--ds-red-300, #f26464) 0%,
|
|
45
|
-
var(--ds-red-400, #ee3535) 100%
|
|
46
|
-
)
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.save {
|
|
51
|
-
right: 86px;
|
|
52
|
-
background: var(
|
|
53
|
-
--ds-green-gradient,
|
|
54
|
-
linear-gradient(
|
|
55
|
-
100deg,
|
|
56
|
-
var(--ds-green-300, #4bde97) 0%,
|
|
57
|
-
var(--ds-green-400, #24c678) 100%
|
|
58
|
-
)
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.action > svg {
|
|
63
|
-
width: 24px;
|
|
64
|
-
height: 24px;
|
|
65
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
type Props = {
|
|
2
|
-
mode: number;
|
|
3
|
-
target: HTMLElement | null;
|
|
4
|
-
setTarget: (target: HTMLElement | null) => void;
|
|
5
|
-
};
|
|
6
|
-
export default function Overlays({ mode, target, setTarget }: Props): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=overlays.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../../../../src/common/components/msem-preset-linker/components/overlays.tsx"],"names":[],"mappings":"AAQA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,2CAiElE"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import * as ReactDOM from "react-dom";
|
|
4
|
-
import classNames from "classnames";
|
|
5
|
-
import Tooltip from "dt-design-system/es/tooltip";
|
|
6
|
-
import * as Icons from "dt-design-system/es/icons";
|
|
7
|
-
import { MODES } from "../msem-preset-linker";
|
|
8
|
-
import css from "./overlays.module.css";
|
|
9
|
-
export default function Overlays({ mode, target, setTarget }) {
|
|
10
|
-
const [sections, setSections] = React.useState([]);
|
|
11
|
-
React.useEffect(() => {
|
|
12
|
-
if (mode === MODES.EDITING) {
|
|
13
|
-
const targets = Array.from(document.querySelectorAll("section[data-class]"));
|
|
14
|
-
setSections(targets);
|
|
15
|
-
targets.forEach((target) => {
|
|
16
|
-
const section = target;
|
|
17
|
-
if (window.getComputedStyle(section).position !== "absolute") {
|
|
18
|
-
section.style.setProperty("position", "relative");
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return () => {
|
|
22
|
-
targets.forEach((target) => {
|
|
23
|
-
const section = target;
|
|
24
|
-
if (window.getComputedStyle(section).position !== "absolute") {
|
|
25
|
-
section.style.removeProperty("position");
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}, [mode]);
|
|
31
|
-
if (mode !== MODES.EDITING)
|
|
32
|
-
return null;
|
|
33
|
-
return (_jsx(_Fragment, { children: sections.map((section) => {
|
|
34
|
-
const hasMseMPreset = section?.hasAttribute("data-msem-preset");
|
|
35
|
-
const hasObsoletePreset = section?.hasAttribute("data-config");
|
|
36
|
-
const hasPreset = hasMseMPreset || hasObsoletePreset;
|
|
37
|
-
const isActive = section === target;
|
|
38
|
-
const updateTarget = () => {
|
|
39
|
-
if (target)
|
|
40
|
-
return;
|
|
41
|
-
setTarget(isActive ? null : section);
|
|
42
|
-
};
|
|
43
|
-
const classes = classNames(css.overlay, {
|
|
44
|
-
[css.active]: isActive,
|
|
45
|
-
[css.obsolete]: hasObsoletePreset,
|
|
46
|
-
});
|
|
47
|
-
const tooltip = hasObsoletePreset
|
|
48
|
-
? "1 preset MseM obsolète"
|
|
49
|
-
: "1 preset MseM";
|
|
50
|
-
return ReactDOM.createPortal(_jsx("div", { className: classes, onClick: updateTarget, "data-cms-remove": "", children: hasPreset && (_jsx(Tooltip, { content: tooltip, children: _jsx("div", { className: css.presetIndicator, children: _jsx(Icons.Tune, { className: css.presetIndicatorIcon }) }) })) }), section);
|
|
51
|
-
}) }));
|
|
52
|
-
}
|