@mirai/core 0.4.261 → 0.4.263

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/build/components/Rates/Rates.Header.js +27 -7
  2. package/build/components/Rates/Rates.Header.js.map +1 -1
  3. package/build/components/Rates/Rates.constants.js +2 -1
  4. package/build/components/Rates/Rates.constants.js.map +1 -1
  5. package/build/components/Rates/Rates.js +32 -2
  6. package/build/components/Rates/Rates.js.map +1 -1
  7. package/build/components/Rates/Rates.l10n.js +3 -0
  8. package/build/components/Rates/Rates.l10n.js.map +1 -1
  9. package/build/components/Rates/Rates.module.css +4 -0
  10. package/build/components/Rates/components/Filters/Filters.js +10 -0
  11. package/build/components/Rates/components/Filters/Filters.js.map +1 -1
  12. package/build/components/Rates/components/Item/Item.Preview.js +11 -6
  13. package/build/components/Rates/components/Item/Item.Preview.js.map +1 -1
  14. package/build/components/Rates/components/Item/Item.module.css +8 -12
  15. package/build/components/Rates/components/ModalTwin/ModalTwin.Skeleton.js +47 -0
  16. package/build/components/Rates/components/ModalTwin/ModalTwin.Skeleton.js.map +1 -0
  17. package/build/components/Rates/components/ModalTwin/ModalTwin.constants.js +15 -0
  18. package/build/components/Rates/components/ModalTwin/ModalTwin.constants.js.map +1 -0
  19. package/build/components/Rates/components/ModalTwin/ModalTwin.js +294 -0
  20. package/build/components/Rates/components/ModalTwin/ModalTwin.js.map +1 -0
  21. package/build/components/Rates/components/ModalTwin/ModalTwin.l10n.js +27 -0
  22. package/build/components/Rates/components/ModalTwin/ModalTwin.l10n.js.map +1 -0
  23. package/build/components/Rates/components/ModalTwin/ModalTwin.module.css +181 -0
  24. package/build/components/Rates/components/ModalTwin/components/CardExpanded.js +79 -0
  25. package/build/components/Rates/components/ModalTwin/components/CardExpanded.js.map +1 -0
  26. package/build/components/Rates/components/ModalTwin/components/CardReduced.js +64 -0
  27. package/build/components/Rates/components/ModalTwin/components/CardReduced.js.map +1 -0
  28. package/build/components/Rates/components/ModalTwin/components/Prices.js +64 -0
  29. package/build/components/Rates/components/ModalTwin/components/Prices.js.map +1 -0
  30. package/build/components/Rates/components/ModalTwin/components/Slider.js +38 -0
  31. package/build/components/Rates/components/ModalTwin/components/Slider.js.map +1 -0
  32. package/build/components/Rates/components/ModalTwin/components/index.js +50 -0
  33. package/build/components/Rates/components/ModalTwin/components/index.js.map +1 -0
  34. package/build/components/Rates/components/ModalTwin/helpers/getUrl.js +40 -0
  35. package/build/components/Rates/components/ModalTwin/helpers/getUrl.js.map +1 -0
  36. package/build/components/Rates/components/ModalTwin/helpers/index.js +17 -0
  37. package/build/components/Rates/components/ModalTwin/helpers/index.js.map +1 -0
  38. package/build/components/Rates/components/ModalTwin/index.js +17 -0
  39. package/build/components/Rates/components/ModalTwin/index.js.map +1 -0
  40. package/build/components/Rates/components/index.js +11 -0
  41. package/build/components/Rates/components/index.js.map +1 -1
  42. package/build/components/Rates/hooks/useRates.js.map +1 -1
  43. package/build/components/Session/Session.module.css +3 -3
  44. package/build/components/helpers/ICON.js +2 -0
  45. package/build/components/helpers/ICON.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ModalTwin = void 0;
7
+ var _dataSources = require("@mirai/data-sources");
8
+ var _locale = require("@mirai/locale");
9
+ var _ui = require("@mirai/ui");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _components = require("./components");
13
+ var _helpers = require("./helpers");
14
+ var _ModalTwin = require("./ModalTwin.l10n");
15
+ var style = _interopRequireWildcard(require("./ModalTwin.module.css"));
16
+ var _ModalTwin2 = require("./ModalTwin.Skeleton");
17
+ var _helpers2 = require("../../../../helpers");
18
+ var _helpers3 = require("../../../helpers");
19
+ var _helpers4 = require("../../helpers");
20
+ var _Filters = require("../Filters");
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
+ const ModalTwin = _ref => {
26
+ var _select;
27
+ let {
28
+ dataSource,
29
+ filters,
30
+ priceFactor,
31
+ visible,
32
+ onClose = () => {},
33
+ onFilter = () => {},
34
+ onSelect = () => {},
35
+ ...others
36
+ } = _ref;
37
+ const {
38
+ translate
39
+ } = (0, _locale.useLocale)();
40
+ const {
41
+ isMobile
42
+ } = (0, _ui.useDevice)();
43
+ const {
44
+ value: {
45
+ finder: {
46
+ place: {
47
+ id: [hotelId] = [],
48
+ isHotel
49
+ } = {}
50
+ } = {},
51
+ hotel = {},
52
+ language
53
+ } = {}
54
+ } = (0, _dataSources.useStore)();
55
+ const iframeRef = (0, _react.useRef)();
56
+ const itemsRef = (0, _react.useRef)([]);
57
+ const [expanded, setExpanded] = (0, _react.useState)();
58
+ const [loaded, setLoaded] = (0, _react.useState)();
59
+ const [scrollTo, setScrollTo] = (0, _react.useState)();
60
+ const [selectedId, setSelectedId] = (0, _react.useState)();
61
+ (0, _react.useEffect)(() => {
62
+ const callback = _ref2 => {
63
+ let {
64
+ displayName
65
+ } = _ref2;
66
+ if (displayName !== ModalTwin.displayName) {
67
+ visible && _dataSources.Event.publish(_helpers3.EVENT.MODAL_VISIBLE, {
68
+ displayName: ModalTwin.displayName,
69
+ visible: true
70
+ });
71
+ }
72
+ };
73
+ _dataSources.Event.subscribe(_helpers3.EVENT.MODAL_VISIBLE, callback);
74
+ return () => _dataSources.Event.unsubscribe(_helpers3.EVENT.MODAL_VISIBLE, callback);
75
+ }, [visible]);
76
+ (0, _react.useEffect)(() => {
77
+ const callback = function () {
78
+ let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
79
+ const {
80
+ data: {
81
+ isLoaded,
82
+ roomId
83
+ } = {},
84
+ origin
85
+ } = event;
86
+ if (origin !== process.env.TWIN_URL) return;
87
+
88
+ // eslint-disable-next-line no-console
89
+ console.log('Mensaje recibido:', event);
90
+ debounceSelectId(roomId);
91
+ if (isLoaded) setLoaded(true);
92
+ };
93
+ if (!isMobile && selectedId) setTimeout(() => {
94
+ var _itemsRef$current$sel;
95
+ return setScrollTo(((_itemsRef$current$sel = itemsRef.current[selectedId]) === null || _itemsRef$current$sel === void 0 ? void 0 : _itemsRef$current$sel.offsetTop) - 74);
96
+ }, 400);
97
+ window.addEventListener('message', callback);
98
+ return () => window.removeEventListener('message', callback);
99
+ // eslint-disable-next-line react-hooks/exhaustive-deps
100
+ }, [selectedId]);
101
+ (0, _react.useEffect)(() => {
102
+ setExpanded();
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ }, [dataSource, visible]);
105
+ (0, _react.useEffect)(() => {
106
+ if (!loaded) return;
107
+ _dataSources.Event.publish(_helpers3.EVENT.METRICS, {
108
+ id: 'RATES:MODAL_TWIN:LOADED'
109
+ });
110
+ setTimeout(() => handleChange(0), 1500);
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [loaded]);
113
+ (0, _react.useEffect)(() => {
114
+ var _iframeRef$current, _iframeRef$current$co;
115
+ if (!filters || Object.keys(filters).length === 0) return;
116
+ iframeRef === null || iframeRef === void 0 ? void 0 : (_iframeRef$current = iframeRef.current) === null || _iframeRef$current === void 0 ? void 0 : (_iframeRef$current$co = _iframeRef$current.contentWindow) === null || _iframeRef$current$co === void 0 ? void 0 : _iframeRef$current$co.postMessage({
117
+ rooms: filteredItems.filter(function () {
118
+ let {
119
+ soldOut
120
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
121
+ return !soldOut;
122
+ }).map(function () {
123
+ let {
124
+ id
125
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
126
+ return id;
127
+ }).join(','),
128
+ soldOutRooms: filteredItems.filter(function () {
129
+ let {
130
+ soldOut
131
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
132
+ return soldOut;
133
+ }).map(function () {
134
+ let {
135
+ id
136
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
137
+ return id;
138
+ }).join(',')
139
+ }, process.env.TWIN_URL);
140
+ const selectedIndex = filteredItems.findIndex(function () {
141
+ let {
142
+ id
143
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
144
+ return id === selectedId;
145
+ });
146
+ if (selectedIndex === -1) handleChange(0);
147
+ // eslint-disable-next-line react-hooks/exhaustive-deps
148
+ }, [filters]);
149
+ const handleChange = index => {
150
+ if (index < 0 || index === selectedIndex || index >= filteredItems.length) return;
151
+ const {
152
+ id
153
+ } = filteredItems[index];
154
+ if (id !== selectedId) {
155
+ var _iframeRef$current2, _iframeRef$current2$c;
156
+ setSelectedId(id);
157
+ iframeRef === null || iframeRef === void 0 ? void 0 : (_iframeRef$current2 = iframeRef.current) === null || _iframeRef$current2 === void 0 ? void 0 : (_iframeRef$current2$c = _iframeRef$current2.contentWindow) === null || _iframeRef$current2$c === void 0 ? void 0 : _iframeRef$current2$c.postMessage({
158
+ roomId: id
159
+ }, process.env.TWIN_URL);
160
+ }
161
+ };
162
+ const handleClose = () => {
163
+ _dataSources.Event.publish(_helpers3.EVENT.METRICS, {
164
+ id: 'RATES:MODAL_TWIN:CLOSE'
165
+ });
166
+ setSelectedId();
167
+ setLoaded();
168
+ onClose();
169
+ };
170
+ const handleSelect = id => {
171
+ var _filteredItems$find;
172
+ _dataSources.Event.publish(_helpers3.EVENT.METRICS, {
173
+ id: 'RATES:MODAL_TWIN:SELECT'
174
+ });
175
+ onSelect((_filteredItems$find = filteredItems.find(item => item.id === id)) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.boards[0]);
176
+ handleClose();
177
+ };
178
+ const debounceSelectId = (0, _helpers2.debounce)(roomId => {
179
+ if (roomId && Number(roomId) !== selectedId) {
180
+ setSelectedId(Number(roomId));
181
+ }
182
+ });
183
+ const {
184
+ items = []
185
+ } = dataSource || {};
186
+ const filteredItems = ((_select = (0, _helpers4.select)(items, filters, {
187
+ priceFactor
188
+ })) === null || _select === void 0 ? void 0 : _select.map(item => (0, _helpers4.filterItem)(item, filters, priceFactor))) || [];
189
+ const selectedIndex = selectedId ? filteredItems.findIndex(function () {
190
+ let {
191
+ id
192
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
193
+ return id === selectedId;
194
+ }) : undefined;
195
+ const url = (0, _react.useMemo)(() => (0, _helpers.getUrl)({
196
+ filteredItems,
197
+ hotel,
198
+ hotelId,
199
+ isHotel,
200
+ items,
201
+ language
202
+ }),
203
+ // eslint-disable-next-line react-hooks/exhaustive-deps
204
+ [hotel, hotelId, isHotel, language]);
205
+ return /*#__PURE__*/_react.default.createElement(_ui.Modal, _extends({}, others, {
206
+ displayName: ModalTwin.displayName,
207
+ fit: true,
208
+ preventDefault: false,
209
+ title: translate(_ModalTwin.L10N.LABEL_IMMERSIVE_BOOKING),
210
+ visible: visible,
211
+ onClose: handleClose,
212
+ onOverflow: handleClose,
213
+ className: style.modal
214
+ }), /*#__PURE__*/_react.default.createElement(isMobile ? _react.default.Fragment : _ui.View, !isMobile ? {
215
+ className: style.container,
216
+ row: true
217
+ } : undefined, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !isMobile && (loaded ? /*#__PURE__*/_react.default.createElement(_ui.View, {
218
+ className: style.panel
219
+ }, /*#__PURE__*/_react.default.createElement(_ui.ScrollView, {
220
+ horizontal: false,
221
+ scrollIndicator: true,
222
+ scrollTo: scrollTo,
223
+ snap: false,
224
+ className: style.scrollview
225
+ }, filteredItems.map(function () {
226
+ let item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
227
+ let index = arguments.length > 1 ? arguments[1] : undefined;
228
+ return /*#__PURE__*/_react.default.createElement(_ui.View, {
229
+ key: item.id,
230
+ ref: el => itemsRef.current[item.id] = el
231
+ }, selectedId === item.id ? /*#__PURE__*/_react.default.createElement(_components.CardExpanded, _extends({
232
+ item,
233
+ priceFactor
234
+ }, others, {
235
+ onSelect: handleSelect,
236
+ className: (0, _ui.styles)(style.card)
237
+ })) : /*#__PURE__*/_react.default.createElement(_components.CardReduced, _extends({
238
+ item,
239
+ priceFactor
240
+ }, others, {
241
+ onPress: () => handleChange(index)
242
+ })));
243
+ }))) : /*#__PURE__*/_react.default.createElement(_ModalTwin2.ModalTwinSkeleton, null)), /*#__PURE__*/_react.default.createElement(_ui.View, {
244
+ tag: "iframe",
245
+ ref: iframeRef,
246
+ src: url,
247
+ title: "modal",
248
+ className: style.iframe
249
+ }))), loaded && /*#__PURE__*/_react.default.createElement(_ui.View, {
250
+ className: style.filters
251
+ }, /*#__PURE__*/_react.default.createElement(_Filters.Filters, _extends({}, dataSource, {
252
+ filters,
253
+ priceFactor,
254
+ onSubmit: onFilter
255
+ }))), loaded && selectedId !== undefined && isMobile && /*#__PURE__*/_react.default.createElement(_components.Slider, {
256
+ index: selectedIndex,
257
+ onChange: handleChange,
258
+ className: !expanded && style.reduced
259
+ }, filteredItems.map(function () {
260
+ let item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
261
+ let index = arguments.length > 1 ? arguments[1] : undefined;
262
+ const last = index === filteredItems.length - 1;
263
+ return /*#__PURE__*/_react.default.createElement(_ui.View, {
264
+ key: item.id
265
+ }, /*#__PURE__*/_react.default.createElement(_components.CardReduced, _extends({
266
+ item,
267
+ last,
268
+ priceFactor
269
+ }, others, {
270
+ visible: !expanded,
271
+ onPress: () => !expanded && setExpanded(true)
272
+ })), /*#__PURE__*/_react.default.createElement(_components.CardExpanded, _extends({
273
+ item,
274
+ last,
275
+ priceFactor
276
+ }, others, {
277
+ visible: expanded,
278
+ onReduce: () => setExpanded(false),
279
+ onSelect: handleSelect
280
+ })));
281
+ })));
282
+ };
283
+ exports.ModalTwin = ModalTwin;
284
+ ModalTwin.propTypes = {
285
+ dataSource: _propTypes.default.object,
286
+ filters: _propTypes.default.object,
287
+ priceFactor: _propTypes.default.number,
288
+ visible: _propTypes.default.bool,
289
+ onClose: _propTypes.default.func,
290
+ onFilter: _propTypes.default.func,
291
+ onSelect: _propTypes.default.func
292
+ };
293
+ ModalTwin.displayName = 'Mirai:Core:Rates:ModalTwin';
294
+ //# sourceMappingURL=ModalTwin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalTwin.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_helpers","_ModalTwin","style","_ModalTwin2","_helpers2","_helpers3","_helpers4","_Filters","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","ModalTwin","_ref","_select","dataSource","filters","priceFactor","visible","onClose","onFilter","onSelect","others","translate","useLocale","isMobile","useDevice","value","finder","place","id","hotelId","isHotel","hotel","language","useStore","iframeRef","useRef","itemsRef","expanded","setExpanded","useState","loaded","setLoaded","scrollTo","setScrollTo","selectedId","setSelectedId","useEffect","callback","_ref2","displayName","Event","publish","EVENT","MODAL_VISIBLE","subscribe","unsubscribe","event","undefined","data","isLoaded","roomId","origin","process","env","TWIN_URL","console","log","debounceSelectId","setTimeout","_itemsRef$current$sel","current","offsetTop","window","addEventListener","removeEventListener","METRICS","handleChange","_iframeRef$current","_iframeRef$current$co","keys","contentWindow","postMessage","rooms","filteredItems","filter","soldOut","map","join","soldOutRooms","selectedIndex","findIndex","index","_iframeRef$current2","_iframeRef$current2$c","handleClose","handleSelect","_filteredItems$find","find","item","boards","debounce","Number","items","select","filterItem","url","useMemo","getUrl","createElement","Modal","fit","preventDefault","title","L10N","LABEL_IMMERSIVE_BOOKING","onOverflow","className","modal","React","Fragment","View","container","row","panel","ScrollView","horizontal","scrollIndicator","snap","scrollview","ref","el","CardExpanded","styles","card","CardReduced","onPress","ModalTwinSkeleton","tag","src","iframe","Filters","onSubmit","Slider","onChange","reduced","last","onReduce","exports","propTypes","PropTypes","object","number","bool","func"],"sources":["../../../../../src/components/Rates/components/ModalTwin/ModalTwin.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Modal, ScrollView, styles, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useMemo } from 'react';\n\nimport { CardExpanded, CardReduced, Slider } from './components';\nimport { getUrl } from './helpers';\nimport { L10N } from './ModalTwin.l10n';\nimport * as style from './ModalTwin.module.css';\nimport { ModalTwinSkeleton } from './ModalTwin.Skeleton';\nimport { debounce } from '../../../../helpers';\nimport { EVENT } from '../../../helpers';\nimport { filterItem, select } from '../../helpers';\nimport { Filters } from '../Filters';\n\nconst ModalTwin = ({\n dataSource,\n filters,\n priceFactor,\n visible,\n onClose = () => {},\n onFilter = () => {},\n onSelect = () => {},\n ...others\n}) => {\n const { translate } = useLocale();\n const { isMobile } = useDevice();\n\n const { value: { finder: { place: { id: [hotelId] = [], isHotel } = {} } = {}, hotel = {}, language } = {} } =\n useStore();\n\n const iframeRef = useRef();\n const itemsRef = useRef([]);\n\n const [expanded, setExpanded] = useState();\n const [loaded, setLoaded] = useState();\n const [scrollTo, setScrollTo] = useState();\n const [selectedId, setSelectedId] = useState();\n\n useEffect(() => {\n const callback = ({ displayName }) => {\n if (displayName !== ModalTwin.displayName) {\n visible && Event.publish(EVENT.MODAL_VISIBLE, { displayName: ModalTwin.displayName, visible: true });\n }\n };\n\n Event.subscribe(EVENT.MODAL_VISIBLE, callback);\n return () => Event.unsubscribe(EVENT.MODAL_VISIBLE, callback);\n }, [visible]);\n\n useEffect(() => {\n const callback = (event = {}) => {\n const { data: { isLoaded, roomId } = {}, origin } = event;\n if (origin !== process.env.TWIN_URL) return;\n\n // eslint-disable-next-line no-console\n console.log('Mensaje recibido:', event);\n\n debounceSelectId(roomId);\n\n if (isLoaded) setLoaded(true);\n };\n\n if (!isMobile && selectedId) setTimeout(() => setScrollTo(itemsRef.current[selectedId]?.offsetTop - 74), 400);\n\n window.addEventListener('message', callback);\n\n return () => window.removeEventListener('message', callback);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedId]);\n\n useEffect(() => {\n setExpanded();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSource, visible]);\n\n useEffect(() => {\n if (!loaded) return;\n\n Event.publish(EVENT.METRICS, { id: 'RATES:MODAL_TWIN:LOADED' });\n\n setTimeout(() => handleChange(0), 1500);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loaded]);\n\n useEffect(() => {\n if (!filters || Object.keys(filters).length === 0) return;\n\n iframeRef?.current?.contentWindow?.postMessage(\n {\n rooms: filteredItems\n .filter(({ soldOut } = {}) => !soldOut)\n .map(({ id } = {}) => id)\n .join(','),\n soldOutRooms: filteredItems\n .filter(({ soldOut } = {}) => soldOut)\n .map(({ id } = {}) => id)\n .join(','),\n },\n process.env.TWIN_URL,\n );\n\n const selectedIndex = filteredItems.findIndex(({ id } = {}) => id === selectedId);\n if (selectedIndex === -1) handleChange(0);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters]);\n\n const handleChange = (index) => {\n if (index < 0 || index === selectedIndex || index >= filteredItems.length) return;\n\n const { id } = filteredItems[index];\n if (id !== selectedId) {\n setSelectedId(id);\n iframeRef?.current?.contentWindow?.postMessage({ roomId: id }, process.env.TWIN_URL);\n }\n };\n\n const handleClose = () => {\n Event.publish(EVENT.METRICS, { id: 'RATES:MODAL_TWIN:CLOSE' });\n\n setSelectedId();\n setLoaded();\n onClose();\n };\n\n const handleSelect = (id) => {\n Event.publish(EVENT.METRICS, { id: 'RATES:MODAL_TWIN:SELECT' });\n\n onSelect(filteredItems.find((item) => item.id === id)?.boards[0]);\n handleClose();\n };\n\n const debounceSelectId = debounce((roomId) => {\n if (roomId && Number(roomId) !== selectedId) {\n setSelectedId(Number(roomId));\n }\n });\n\n const { items = [] } = dataSource || {};\n const filteredItems =\n select(items, filters, { priceFactor })?.map((item) => filterItem(item, filters, priceFactor)) || [];\n const selectedIndex = selectedId ? filteredItems.findIndex(({ id } = {}) => id === selectedId) : undefined;\n const url = useMemo(\n () => getUrl({ filteredItems, hotel, hotelId, isHotel, items, language }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [hotel, hotelId, isHotel, language],\n );\n\n return (\n <Modal\n {...others}\n displayName={ModalTwin.displayName}\n fit\n preventDefault={false}\n title={translate(L10N.LABEL_IMMERSIVE_BOOKING)}\n visible={visible}\n onClose={handleClose}\n onOverflow={handleClose}\n className={style.modal}\n >\n {React.createElement(\n isMobile ? React.Fragment : View,\n !isMobile ? { className: style.container, row: true } : undefined,\n <>\n {!isMobile &&\n (loaded ? (\n <View className={style.panel}>\n <ScrollView\n horizontal={false}\n scrollIndicator\n scrollTo={scrollTo}\n snap={false}\n className={style.scrollview}\n >\n {filteredItems.map((item = {}, index) => (\n <View key={item.id} ref={(el) => (itemsRef.current[item.id] = el)}>\n {selectedId === item.id ? (\n <CardExpanded\n {...{ item, priceFactor, ...others }}\n onSelect={handleSelect}\n className={styles(style.card)}\n />\n ) : (\n <CardReduced {...{ item, priceFactor, ...others }} onPress={() => handleChange(index)} />\n )}\n </View>\n ))}\n </ScrollView>\n </View>\n ) : (\n <ModalTwinSkeleton />\n ))}\n <View tag=\"iframe\" ref={iframeRef} src={url} title=\"modal\" className={style.iframe} />\n </>,\n )}\n\n {loaded && (\n <View className={style.filters}>\n <Filters {...dataSource} {...{ filters, priceFactor }} onSubmit={onFilter} />\n </View>\n )}\n\n {loaded && selectedId !== undefined && isMobile && (\n <Slider index={selectedIndex} onChange={handleChange} className={!expanded && style.reduced}>\n {filteredItems.map((item = {}, index) => {\n const last = index === filteredItems.length - 1;\n\n return (\n <View key={item.id}>\n <CardReduced\n {...{ item, last, priceFactor, ...others }}\n visible={!expanded}\n onPress={() => !expanded && setExpanded(true)}\n />\n <CardExpanded\n {...{ item, last, priceFactor, ...others }}\n visible={expanded}\n onReduce={() => setExpanded(false)}\n onSelect={handleSelect}\n />\n </View>\n );\n })}\n </Slider>\n )}\n </Modal>\n );\n};\n\nModalTwin.propTypes = {\n dataSource: PropTypes.object,\n filters: PropTypes.object,\n priceFactor: PropTypes.number,\n visible: PropTypes.bool,\n onClose: PropTypes.func,\n onFilter: PropTypes.func,\n onSelect: PropTypes.func,\n};\n\nModalTwin.displayName = 'Mirai:Core:Rates:ModalTwin';\n\nexport { ModalTwin };\n"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.L10N = void 0;
7
+ const L10N = exports.L10N = {
8
+ ACTION_SEE_OPTIONS: {
9
+ id: 'finder.action.see_options'
10
+ },
11
+ LABEL_FOR_NIGHTS: {
12
+ id: 'common.label.for_nights'
13
+ },
14
+ LABEL_FROM: {
15
+ id: 'common.label.from'
16
+ },
17
+ LABEL_IMMERSIVE_BOOKING: {
18
+ id: 'finder.label.immersive_booking'
19
+ },
20
+ LABEL_NOT_AVAILABLE: {
21
+ id: 'common.label.not_available'
22
+ },
23
+ LABEL_PER_NIGHT: {
24
+ id: 'finder.label.per_night'
25
+ }
26
+ };
27
+ //# sourceMappingURL=ModalTwin.l10n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalTwin.l10n.js","names":["L10N","exports","ACTION_SEE_OPTIONS","id","LABEL_FOR_NIGHTS","LABEL_FROM","LABEL_IMMERSIVE_BOOKING","LABEL_NOT_AVAILABLE","LABEL_PER_NIGHT"],"sources":["../../../../../src/components/Rates/components/ModalTwin/ModalTwin.l10n.js"],"sourcesContent":["export const L10N = {\n ACTION_SEE_OPTIONS: { id: 'finder.action.see_options' },\n\n LABEL_FOR_NIGHTS: { id: 'common.label.for_nights' },\n LABEL_FROM: { id: 'common.label.from' },\n LABEL_IMMERSIVE_BOOKING: { id: 'finder.label.immersive_booking' },\n LABEL_NOT_AVAILABLE: { id: 'common.label.not_available' },\n LABEL_PER_NIGHT: { id: 'finder.label.per_night' },\n};\n"],"mappings":";;;;;;AAAO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG;EAClBE,kBAAkB,EAAE;IAAEC,EAAE,EAAE;EAA4B,CAAC;EAEvDC,gBAAgB,EAAE;IAAED,EAAE,EAAE;EAA0B,CAAC;EACnDE,UAAU,EAAE;IAAEF,EAAE,EAAE;EAAoB,CAAC;EACvCG,uBAAuB,EAAE;IAAEH,EAAE,EAAE;EAAiC,CAAC;EACjEI,mBAAmB,EAAE;IAAEJ,EAAE,EAAE;EAA6B,CAAC;EACzDK,eAAe,EAAE;IAAEL,EAAE,EAAE;EAAyB;AAClD,CAAC"}
@@ -0,0 +1,181 @@
1
+ .iframe {
2
+ border: 0;
3
+ height: 100%;
4
+ width: 100%;
5
+ }
6
+
7
+ .container {
8
+ height: 100%;
9
+ width: 100%;
10
+ }
11
+
12
+ .panel {
13
+ border-right: 1px solid var(--mirai-ui-content-border);
14
+ box-sizing: border-box;
15
+ background-color: var(--mirai-ui-content-background);
16
+ height: 100%;
17
+ padding: var(--mirai-ui-space-M);
18
+ }
19
+
20
+ .scrollview {
21
+ max-height: 90svh;
22
+ gap: var(--mirai-ui-space-M);
23
+ }
24
+
25
+ .filters {
26
+ position: absolute;
27
+ top: calc(var(--mirai-ui-space-XXL) + calc(var(--mirai-ui-space-M) / 2));
28
+ right: var(--mirai-ui-space-XS);
29
+ z-index: var(--mirai-ui-layer-M);
30
+ }
31
+
32
+ .collapse {
33
+ align-items: center;
34
+ background-color: var(--mirai-ui-base);
35
+ border-radius: 50%;
36
+ display: flex;
37
+ height: var(--mirai-ui-button-small-height);
38
+ justify-content: center;
39
+ position: absolute;
40
+ top: var(--mirai-ui-space-S);
41
+ left: var(--mirai-ui-space-S);
42
+ transition: transform var(--mirai-ui-motion-collapse) var(--mirai-ui-motion-easing);
43
+ width: var(--mirai-ui-button-small-height);
44
+ z-index: 1;
45
+ }
46
+
47
+ .slider {
48
+ background-color: transparent;
49
+ width: 100svw !important;
50
+ position: absolute;
51
+ left: 0px;
52
+ bottom: var(--mirai-ui-space-M);
53
+ }
54
+
55
+ .slider > * {
56
+ width: 100svw !important;
57
+ overflow-y: clip;
58
+ }
59
+
60
+ .slider.reduced {
61
+ height: 120px;
62
+ }
63
+
64
+ .slider .expanded {
65
+ transform: translateY(150%);
66
+ transition: transform var(--mirai-ui-motion-collapse) var(--mirai-ui-motion-easing);
67
+ bottom: var(--mirai-ui-space-M);
68
+ }
69
+
70
+ .slider .expanded:not(.visible) {
71
+ transform: translateY(150%);
72
+ }
73
+
74
+ .slider .expanded.visible {
75
+ transform: translateY(0);
76
+ transition: transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
77
+ }
78
+
79
+ .slider .reduced {
80
+ transform: translateY(150%);
81
+ transition: transform var(--mirai-ui-motion-collapse) var(--mirai-ui-motion-easing);
82
+ }
83
+
84
+ .slider .reduced:not(.visible) {
85
+ transform: translateY(150%);
86
+ opacity: 0;
87
+ position: absolute;
88
+ }
89
+
90
+ .slider .reduced.visible {
91
+ transform: translateY(0%);
92
+ transition: transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
93
+ opacity: 1;
94
+ }
95
+
96
+ .card {
97
+ background-color: var(--mirai-ui-base);
98
+ border-radius: var(--mirai-ui-border-radius);
99
+ box-shadow: inset 0 0 0 1px var(--mirai-ui-content-border);
100
+ box-sizing: border-box;
101
+ max-width: 320px;
102
+ position: relative;
103
+ }
104
+
105
+ .slider .card {
106
+ margin-left: var(--mirai-ui-space-L);
107
+ }
108
+
109
+ .card.last {
110
+ margin-right: var(--mirai-ui-space-L);
111
+ }
112
+
113
+ .card.disabled {
114
+ filter: grayscale(1);
115
+ }
116
+
117
+ .card .preview {
118
+ min-height: 400px;
119
+ justify-content: space-between;
120
+ }
121
+
122
+ .card .disabled .footer {
123
+ justify-content: end;
124
+ }
125
+
126
+ .image {
127
+ background-color: var(--mirai-ui-content-border);
128
+ background-size: cover;
129
+ border-radius: var(--mirai-ui-border-radius) 0 0 var(--mirai-ui-border-radius);
130
+ height: 120px;
131
+ width: 120px;
132
+ max-height: 120px;
133
+ max-width: 120px;
134
+ }
135
+
136
+ .content {
137
+ padding: var(--mirai-ui-space-S);
138
+ justify-content: space-between;
139
+ width: 220px;
140
+ height: 120px;
141
+ }
142
+
143
+ .content .title {
144
+ display: -webkit-box;
145
+ -webkit-box-orient: vertical;
146
+ -webkit-line-clamp: 2;
147
+ overflow: hidden;
148
+ }
149
+
150
+ .footer {
151
+ border-top: 1px solid var(--mirai-ui-content-border);
152
+ padding: var(--mirai-ui-space-S);
153
+ justify-content: space-between;
154
+ }
155
+
156
+ .footer > .hidden {
157
+ visibility: hidden;
158
+ }
159
+
160
+ .card.disabled .footer {
161
+ justify-content: end;
162
+ }
163
+
164
+ /* S */
165
+ @media only screen and (max-width: 480px) {
166
+ .modal {
167
+ height: 100svh;
168
+ }
169
+ }
170
+
171
+ /* M & L */
172
+ @media only screen and (min-width: 481px) {
173
+ .modal {
174
+ height: 100svh;
175
+ width: 100svw;
176
+ }
177
+
178
+ .filters {
179
+ top: calc(var(--mirai-ui-space-XXL) + var(--mirai-ui-space-S));
180
+ }
181
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CardExpanded = void 0;
7
+ var _locale = require("@mirai/locale");
8
+ var _ui = require("@mirai/ui");
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _Prices = require("./Prices");
12
+ var _helpers = require("../../../../helpers");
13
+ var _Item = require("../../Item/Item.Preview");
14
+ var _ModalTwin = require("../ModalTwin.constants");
15
+ var _ModalTwin2 = require("../ModalTwin.l10n");
16
+ var style = _interopRequireWildcard(require("../ModalTwin.module.css"));
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+ const CardExpanded = _ref => {
22
+ let {
23
+ item: {
24
+ id,
25
+ soldOut,
26
+ ...item
27
+ } = {},
28
+ last = false,
29
+ visible,
30
+ onReduce = () => {},
31
+ onSelect = () => {},
32
+ ...others
33
+ } = _ref;
34
+ const {
35
+ isMobile
36
+ } = (0, _ui.useDevice)();
37
+ const {
38
+ translate
39
+ } = (0, _locale.useLocale)();
40
+ return /*#__PURE__*/_react.default.createElement(_ui.View, {
41
+ className: (0, _ui.styles)(style.expanded, visible && style.visible)
42
+ }, /*#__PURE__*/_react.default.createElement(_ui.View, {
43
+ className: (0, _ui.styles)(style.card, soldOut ? style.disabled : undefined, last ? style.last : undefined, others.className)
44
+ }, isMobile && /*#__PURE__*/_react.default.createElement(_ui.Pressable, {
45
+ onPress: () => onReduce(),
46
+ className: style.collapse
47
+ }, /*#__PURE__*/_react.default.createElement(_ui.Icon, {
48
+ value: _helpers.ICON.CLOSE_FULLSCREEN
49
+ })), /*#__PURE__*/_react.default.createElement(_ui.View, {
50
+ className: style.preview
51
+ }, /*#__PURE__*/_react.default.createElement(_Item.Preview, _extends({
52
+ key: id
53
+ }, item, {
54
+ id,
55
+ soldOut,
56
+ isSoldOut: soldOut,
57
+ showActions: false,
58
+ width: _ModalTwin.CARD_WIDTH
59
+ }))), /*#__PURE__*/_react.default.createElement(_ui.View, {
60
+ row: true,
61
+ className: style.footer
62
+ }, /*#__PURE__*/_react.default.createElement(_Prices.Prices, _extends({}, item, others, {
63
+ className: soldOut && style.hidden
64
+ })), /*#__PURE__*/_react.default.createElement(_ui.Button, {
65
+ disabled: soldOut,
66
+ small: isMobile,
67
+ onPress: soldOut ? undefined : () => onSelect(id)
68
+ }, translate(soldOut ? _ModalTwin2.L10N.LABEL_NOT_AVAILABLE : _ModalTwin2.L10N.ACTION_SEE_OPTIONS)))));
69
+ };
70
+ exports.CardExpanded = CardExpanded;
71
+ CardExpanded.displayName = 'Mirai:Core:Rates:ModalTwin:CardExpanded';
72
+ CardExpanded.propTypes = {
73
+ item: _propTypes.default.object,
74
+ last: _propTypes.default.bool,
75
+ visible: _propTypes.default.bool,
76
+ onReduce: _propTypes.default.func,
77
+ onSelect: _propTypes.default.func
78
+ };
79
+ //# sourceMappingURL=CardExpanded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardExpanded.js","names":["_locale","require","_ui","_propTypes","_interopRequireDefault","_react","_Prices","_helpers","_Item","_ModalTwin","_ModalTwin2","style","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","CardExpanded","_ref","item","id","soldOut","last","visible","onReduce","onSelect","others","isMobile","useDevice","translate","useLocale","createElement","View","className","styles","expanded","card","disabled","undefined","Pressable","onPress","collapse","Icon","value","ICON","CLOSE_FULLSCREEN","preview","Preview","isSoldOut","showActions","width","CARD_WIDTH","row","footer","Prices","hidden","Button","small","L10N","LABEL_NOT_AVAILABLE","ACTION_SEE_OPTIONS","exports","displayName","propTypes","PropTypes","object","bool","func"],"sources":["../../../../../../src/components/Rates/components/ModalTwin/components/CardExpanded.jsx"],"sourcesContent":["import { useLocale } from '@mirai/locale';\nimport { Button, Icon, Pressable, styles, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Prices } from './Prices';\nimport { ICON } from '../../../../helpers';\nimport { Preview } from '../../Item/Item.Preview';\nimport { CARD_WIDTH } from '../ModalTwin.constants';\nimport { L10N } from '../ModalTwin.l10n';\nimport * as style from '../ModalTwin.module.css';\n\nconst CardExpanded = ({\n item: { id, soldOut, ...item } = {},\n last = false,\n visible,\n onReduce = () => {},\n onSelect = () => {},\n ...others\n}) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n\n return (\n <View className={styles(style.expanded, visible && style.visible)}>\n <View\n className={styles(\n style.card,\n soldOut ? style.disabled : undefined,\n last ? style.last : undefined,\n others.className,\n )}\n >\n {isMobile && (\n <Pressable onPress={() => onReduce()} className={style.collapse}>\n <Icon value={ICON.CLOSE_FULLSCREEN} />\n </Pressable>\n )}\n <View className={style.preview}>\n <Preview key={id} {...{ ...item, id, soldOut }} isSoldOut={soldOut} showActions={false} width={CARD_WIDTH} />\n </View>\n <View row className={style.footer}>\n <Prices {...{ ...item, ...others }} className={soldOut && style.hidden} />\n <Button disabled={soldOut} small={isMobile} onPress={soldOut ? undefined : () => onSelect(id)}>\n {translate(soldOut ? L10N.LABEL_NOT_AVAILABLE : L10N.ACTION_SEE_OPTIONS)}\n </Button>\n </View>\n </View>\n </View>\n );\n};\n\nCardExpanded.displayName = 'Mirai:Core:Rates:ModalTwin:CardExpanded';\n\nCardExpanded.propTypes = {\n item: PropTypes.object,\n last: PropTypes.bool,\n visible: PropTypes.bool,\n onReduce: PropTypes.func,\n onSelect: PropTypes.func,\n};\n\nexport { CardExpanded };\n"],"mappings":"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"}