@mirai/core 0.4.276 → 0.4.277

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/README.md CHANGED
@@ -326,31 +326,52 @@ These variables allow you to control the padding, dimensions, and other styling
326
326
 
327
327
  ### Events
328
328
 
329
- The component has in and out events. For change the state you need to publish the event `setStore`. And for know the state changes you need to subscribe the event `finderChange`.
329
+ The component features input and output events. To modify the state, you must publish the `setStore` event. To track changes in the state, subscribe to the `finderChange` event. To retrieve the values when the finder is initialized, subscribe to the `finderLoaded` event.
330
330
 
331
- Use of `setStore` event:
331
+ To ensure the `Mirai.Event` infrastructure is ready for publishing and subscribing to events, listen for the standard HTML event `MIRAI:EVENT:core:events:ready`:
332
+
333
+ ```javascript
334
+ document.addEventListener('MIRAI:EVENT:core:events:ready', () => {
335
+ // Now you can safely subscribe to finder events
336
+ });
337
+ ```
338
+
339
+ ### Using the `setStore` Event
340
+ The `setStore` event allows you to update the component's state by publishing data. You can include one or more values as needed:
332
341
 
333
342
  ```javascript
334
343
  window.Mirai.Event.publish('setStore', {
335
344
  chainSelectorValue: 111222,
336
- calendar: [new Date(), new Date()],
345
+ calendar: [new Date(), new Date()], // An array representing a date range
337
346
  hsri: '02080',
338
- //type 1: guest,type 2: adult, type 3: children
339
347
  occupation: [
340
- { ages: [null, null], amount: 2, type: 2 },
341
- { ages: [3], amount: 1, type: 3 },
348
+ { ages: [null, null], amount: 2, type: 2 }, // Type 2: adults
349
+ { ages: [3], amount: 1, type: 3 }, // Type 3: children
342
350
  ],
343
351
  promocode: 'TEST',
344
352
  });
345
353
  ```
346
354
 
347
- You can send one or all values
355
+ **Notes:**
356
+ - `type` values: 1 = guest, 2 = adult, 3 = children.
357
+ - You can send partial data (e.g., only `promocode`) or the full object.
348
358
 
349
- Use of `finderChange` event:
359
+ ### Using the `finderChange` Event
360
+ The `finderChange` event notifies you when a field in the finder changes. It provides the affected field, its previous value, and the new value:
350
361
 
351
362
  ```javascript
352
363
  window.Mirai.Event.subscribe('finderChange', ({ field, previousValue, value } = {}) => {
353
- //field can be: place, calendar, occupation, promocode
364
+ // Possible field values: 'place', 'calendar', 'occupation', 'promocode'
365
+ console.log(`Field ${field} changed from ${previousValue} to ${value}`);
366
+ });
367
+ ```
368
+
369
+ ### Using the `finderLoaded` Event
370
+ The `finderLoaded` event fires when the finder is fully loaded, providing the initial values of its fields:
371
+
372
+ ```javascript
373
+ window.Mirai.Event.subscribe('finderLoaded', ({ calendar, occupation, place, promocode } = {}) => {
374
+ console.log('Finder loaded with:', { calendar, occupation, place, promocode });
354
375
  });
355
376
  ```
356
377
 
@@ -29,7 +29,8 @@ const ERROR = exports.ERROR = {
29
29
  UNKNOWN: 1
30
30
  };
31
31
  const EVENT = exports.EVENT = {
32
- CORE_READY: 'core:ready'
32
+ CORE_READY: 'core:ready',
33
+ CORE_EVENTS_READY: 'core:events:ready'
33
34
  };
34
35
  const TYPE = exports.TYPE = {
35
36
  CHAIN: 'chain',
@@ -1 +1 @@
1
- {"version":3,"file":"Core.constants.js","names":["ACCOMMODATION_TYPE","exports","DEFAULT","ROOM","APARTMENT","PITCH","ACCOMMODATION","VILLA","AUTH_TYPE","MIRAI","PESTANA","SENATOR","CALENDAR_FORMAT","COOKIE","CART","VALUES","ERROR","NOT_AVAILABLE","PARAMETER_ERROR","UNKNOWN","EVENT","CORE_READY","TYPE","CHAIN","HOTEL","GUEST","ADULT","CHILD","TYPE_COMMISSION","FINDER_STORAGE_KEY","MIN_STAY_TYPE","CHECK_IN","STAY","PERFORMANCE","ANALYTICS","GOOGLE_ADS","GTM","FACEBOOK","THE_HOTEL_NETWORK","AFFILIRED","BING","COMPARE","REDIRECT_PATH","TAX_DEFAULT","TAX_FREE","TAX_PARTIAL","TAXES","TAXES_TYPE","ALL_EXCLUDED","ALL_INCLUDED","FEES_INCLUDED","FEES_EXCLUDED","FEES_INCLUDED_TAXES_EXCLUDED","TAXES_INCLUDED","TAXES_EXCLUDED","TAXES_INCLUDED_FEES_EXCLUDED","TRACKING","adwordsTracking","affiliredTracking","analyticsTracking","bingTracking","compareTracking","facebookTracking","gtmTracking","miraiTracking","thnTracking","VALIDATE_ERROR","PRICE_CHANGED","NOT_ENOUGH_ROOMS","NOT_ENOUGH_ROOMS_FOR_OFFER","NO_SELECTED_ROOMS","EXTRA_CHANGED","URL_GENERIC"],"sources":["../src/Core.constants.js"],"sourcesContent":["const ACCOMMODATION_TYPE = {\n DEFAULT: 0,\n ROOM: 1,\n APARTMENT: 2,\n PITCH: 3,\n ACCOMMODATION: 4,\n VILLA: 5,\n};\n\nconst AUTH_TYPE = {\n MIRAI: 1,\n PESTANA: 3,\n SENATOR: 2,\n};\n\nconst CALENDAR_FORMAT = 'DD/MM/YYYY';\n\nconst COOKIE = {\n CART: 'CART_COOKIE',\n PESTANA: '_jwt',\n VALUES: 'BOOKING_VALUES',\n};\n\nconst ERROR = {\n NOT_AVAILABLE: 4,\n PARAMETER_ERROR: 3,\n UNKNOWN: 1,\n};\n\nconst EVENT = {\n CORE_READY: 'core:ready',\n};\n\nconst TYPE = {\n CHAIN: 'chain',\n HOTEL: 'hotel',\n GUEST: 1,\n ADULT: 2,\n CHILD: 3,\n};\n\nconst TYPE_COMMISSION = {\n [TYPE.HOTEL]: '02040',\n [TYPE.CHAIN]: '02080',\n};\n\nconst FINDER_STORAGE_KEY = 'MIRAI:FINDER';\n\nconst MIN_STAY_TYPE = {\n CHECK_IN: 1,\n STAY: 2,\n};\n\nconst PERFORMANCE = {\n ANALYTICS: 1,\n GOOGLE_ADS: 2,\n GTM: 3,\n MIRAI: 4,\n FACEBOOK: 5,\n THE_HOTEL_NETWORK: 6,\n AFFILIRED: 7,\n BING: 8,\n COMPARE: 9,\n};\n\nconst REDIRECT_PATH = 'miraiFrontDispatcher.htm';\n\nconst TAX_DEFAULT = 1;\n\nconst TAX_FREE = 2;\n\nconst TAX_PARTIAL = 3;\n\nconst TAXES = [TAX_DEFAULT, TAX_FREE, TAX_PARTIAL];\n\nconst TAXES_TYPE = {\n ALL_EXCLUDED: 1,\n ALL_INCLUDED: 2,\n FEES_INCLUDED: 3,\n FEES_EXCLUDED: 4,\n FEES_INCLUDED_TAXES_EXCLUDED: 5,\n TAXES_INCLUDED: 6,\n TAXES_EXCLUDED: 7,\n TAXES_INCLUDED_FEES_EXCLUDED: 8,\n};\n\nconst TRACKING = {\n adwordsTracking: PERFORMANCE.GOOGLE_ADS,\n affiliredTracking: PERFORMANCE.AFFILIRED,\n analyticsTracking: PERFORMANCE.ANALYTICS,\n bingTracking: PERFORMANCE.BING,\n compareTracking: PERFORMANCE.COMPARE,\n facebookTracking: PERFORMANCE.FACEBOOK,\n gtmTracking: PERFORMANCE.GTM,\n miraiTracking: PERFORMANCE.MIRAI,\n thnTracking: PERFORMANCE.THE_HOTEL_NETWORK,\n};\n\nconst VALIDATE_ERROR = {\n PRICE_CHANGED: 1,\n NOT_ENOUGH_ROOMS: 2,\n NOT_ENOUGH_ROOMS_FOR_OFFER: 3,\n NO_SELECTED_ROOMS: 4,\n EXTRA_CHANGED: 5,\n URL_GENERIC: 6,\n};\n\nexport {\n ACCOMMODATION_TYPE,\n AUTH_TYPE,\n CALENDAR_FORMAT,\n COOKIE,\n ERROR,\n EVENT,\n FINDER_STORAGE_KEY,\n MIN_STAY_TYPE,\n PERFORMANCE,\n REDIRECT_PATH,\n TAX_DEFAULT,\n TAXES_TYPE,\n TAXES,\n TRACKING,\n TYPE_COMMISSION,\n TYPE,\n VALIDATE_ERROR,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Core.constants.js","names":["ACCOMMODATION_TYPE","exports","DEFAULT","ROOM","APARTMENT","PITCH","ACCOMMODATION","VILLA","AUTH_TYPE","MIRAI","PESTANA","SENATOR","CALENDAR_FORMAT","COOKIE","CART","VALUES","ERROR","NOT_AVAILABLE","PARAMETER_ERROR","UNKNOWN","EVENT","CORE_READY","CORE_EVENTS_READY","TYPE","CHAIN","HOTEL","GUEST","ADULT","CHILD","TYPE_COMMISSION","FINDER_STORAGE_KEY","MIN_STAY_TYPE","CHECK_IN","STAY","PERFORMANCE","ANALYTICS","GOOGLE_ADS","GTM","FACEBOOK","THE_HOTEL_NETWORK","AFFILIRED","BING","COMPARE","REDIRECT_PATH","TAX_DEFAULT","TAX_FREE","TAX_PARTIAL","TAXES","TAXES_TYPE","ALL_EXCLUDED","ALL_INCLUDED","FEES_INCLUDED","FEES_EXCLUDED","FEES_INCLUDED_TAXES_EXCLUDED","TAXES_INCLUDED","TAXES_EXCLUDED","TAXES_INCLUDED_FEES_EXCLUDED","TRACKING","adwordsTracking","affiliredTracking","analyticsTracking","bingTracking","compareTracking","facebookTracking","gtmTracking","miraiTracking","thnTracking","VALIDATE_ERROR","PRICE_CHANGED","NOT_ENOUGH_ROOMS","NOT_ENOUGH_ROOMS_FOR_OFFER","NO_SELECTED_ROOMS","EXTRA_CHANGED","URL_GENERIC"],"sources":["../src/Core.constants.js"],"sourcesContent":["const ACCOMMODATION_TYPE = {\n DEFAULT: 0,\n ROOM: 1,\n APARTMENT: 2,\n PITCH: 3,\n ACCOMMODATION: 4,\n VILLA: 5,\n};\n\nconst AUTH_TYPE = {\n MIRAI: 1,\n PESTANA: 3,\n SENATOR: 2,\n};\n\nconst CALENDAR_FORMAT = 'DD/MM/YYYY';\n\nconst COOKIE = {\n CART: 'CART_COOKIE',\n PESTANA: '_jwt',\n VALUES: 'BOOKING_VALUES',\n};\n\nconst ERROR = {\n NOT_AVAILABLE: 4,\n PARAMETER_ERROR: 3,\n UNKNOWN: 1,\n};\n\nconst EVENT = {\n CORE_READY: 'core:ready',\n CORE_EVENTS_READY: 'core:events:ready',\n};\n\nconst TYPE = {\n CHAIN: 'chain',\n HOTEL: 'hotel',\n GUEST: 1,\n ADULT: 2,\n CHILD: 3,\n};\n\nconst TYPE_COMMISSION = {\n [TYPE.HOTEL]: '02040',\n [TYPE.CHAIN]: '02080',\n};\n\nconst FINDER_STORAGE_KEY = 'MIRAI:FINDER';\n\nconst MIN_STAY_TYPE = {\n CHECK_IN: 1,\n STAY: 2,\n};\n\nconst PERFORMANCE = {\n ANALYTICS: 1,\n GOOGLE_ADS: 2,\n GTM: 3,\n MIRAI: 4,\n FACEBOOK: 5,\n THE_HOTEL_NETWORK: 6,\n AFFILIRED: 7,\n BING: 8,\n COMPARE: 9,\n};\n\nconst REDIRECT_PATH = 'miraiFrontDispatcher.htm';\n\nconst TAX_DEFAULT = 1;\n\nconst TAX_FREE = 2;\n\nconst TAX_PARTIAL = 3;\n\nconst TAXES = [TAX_DEFAULT, TAX_FREE, TAX_PARTIAL];\n\nconst TAXES_TYPE = {\n ALL_EXCLUDED: 1,\n ALL_INCLUDED: 2,\n FEES_INCLUDED: 3,\n FEES_EXCLUDED: 4,\n FEES_INCLUDED_TAXES_EXCLUDED: 5,\n TAXES_INCLUDED: 6,\n TAXES_EXCLUDED: 7,\n TAXES_INCLUDED_FEES_EXCLUDED: 8,\n};\n\nconst TRACKING = {\n adwordsTracking: PERFORMANCE.GOOGLE_ADS,\n affiliredTracking: PERFORMANCE.AFFILIRED,\n analyticsTracking: PERFORMANCE.ANALYTICS,\n bingTracking: PERFORMANCE.BING,\n compareTracking: PERFORMANCE.COMPARE,\n facebookTracking: PERFORMANCE.FACEBOOK,\n gtmTracking: PERFORMANCE.GTM,\n miraiTracking: PERFORMANCE.MIRAI,\n thnTracking: PERFORMANCE.THE_HOTEL_NETWORK,\n};\n\nconst VALIDATE_ERROR = {\n PRICE_CHANGED: 1,\n NOT_ENOUGH_ROOMS: 2,\n NOT_ENOUGH_ROOMS_FOR_OFFER: 3,\n NO_SELECTED_ROOMS: 4,\n EXTRA_CHANGED: 5,\n URL_GENERIC: 6,\n};\n\nexport {\n ACCOMMODATION_TYPE,\n AUTH_TYPE,\n CALENDAR_FORMAT,\n COOKIE,\n ERROR,\n EVENT,\n FINDER_STORAGE_KEY,\n MIN_STAY_TYPE,\n PERFORMANCE,\n REDIRECT_PATH,\n TAX_DEFAULT,\n TAXES_TYPE,\n TAXES,\n TRACKING,\n TYPE_COMMISSION,\n TYPE,\n VALIDATE_ERROR,\n};\n"],"mappings":"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"}
@@ -136,12 +136,14 @@ const Finder = _ref => {
136
136
  } = {}
137
137
  } = value || {};
138
138
  const nextPromocode = !is.rates && (promo.variants && promo.variants[hotelId] || promo.code);
139
- if (nextPromocode) setValue({
140
- ...value,
141
- ...{
139
+ if (nextPromocode) {
140
+ const next = {
141
+ ...value,
142
142
  promocode: nextPromocode
143
- }
144
- });
143
+ };
144
+ setValue(next);
145
+ publishChange(next);
146
+ }
145
147
  if (isHotel) {
146
148
  var _fetchUrlParams;
147
149
  if (!((_fetchUrlParams = (0, _helpers2.fetchUrlParams)(window.location.search)) !== null && _fetchUrlParams !== void 0 && _fetchUrlParams.currency)) {
@@ -184,7 +186,10 @@ const Finder = _ref => {
184
186
  ...value,
185
187
  ...storeFinder
186
188
  });
187
- if (JSON.stringify(value) !== JSON.stringify(next)) setValue(next);
189
+ if (JSON.stringify(value) !== JSON.stringify(next)) {
190
+ setValue(next);
191
+ publishChange(next);
192
+ }
188
193
  },
189
194
  // eslint-disable-next-line react-hooks/exhaustive-deps
190
195
  [storeFinder]);
@@ -202,11 +207,7 @@ const Finder = _ref => {
202
207
  };
203
208
  setValue(next);
204
209
  onChange(next, field, fieldValue);
205
- _dataSources.Event.publish(_helpers3.EVENT.FINDER_FIELD_CHANGE, {
206
- field,
207
- previousValue: value[field],
208
- value: fieldValue
209
- });
210
+ publishChange(next);
210
211
  if (metrics) {
211
212
  clearTimeout(timeoutMetricChange);
212
213
  timeoutMetricChange = setTimeout(() => _dataSources.Event.publish(_helpers3.EVENT.METRICS, {
@@ -221,16 +222,18 @@ const Finder = _ref => {
221
222
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
222
223
  return !((_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(target)) && setFocus(undefined);
223
224
  };
224
- const handlePageShow = async function () {
225
+ const handlePageShow = function () {
225
226
  let {
226
227
  persisted
227
228
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
228
229
  if (!persisted) return;
229
230
  setFocus();
230
231
  setVisited();
231
- setValue((0, _helpers.parseValue)(storeFinder));
232
+ const next = (0, _helpers.parseValue)(storeFinder);
233
+ setValue(next);
234
+ publishChange(next);
232
235
  };
233
- const handlePlaceChange = async place => {
236
+ const handlePlaceChange = place => {
234
237
  setWarning(false);
235
238
  handleChange(_Finder2.VIEW.PLACE, place);
236
239
  !is.rates && assistant();
@@ -281,6 +284,15 @@ const Finder = _ref => {
281
284
  } = value;
282
285
  if (focus === _Finder2.VIEW.PLACE && !visited.calendar && calendar.length !== 2) setFocus(_Finder2.VIEW.CALENDAR);else if (!compacted || [_Finder2.VIEW.CALENDAR, _Finder2.VIEW.PLACE].includes(focus)) setFocus(undefined);
283
286
  };
287
+ const publishChange = next => Object.keys(next || []).forEach(field => {
288
+ if (JSON.stringify(value[field]) !== JSON.stringify(next[field])) {
289
+ _dataSources.Event.publish(_helpers3.EVENT.FINDER_FIELD_CHANGE, {
290
+ field,
291
+ previousValue: value[field],
292
+ value: next[field]
293
+ });
294
+ }
295
+ });
284
296
  const {
285
297
  calendar = [],
286
298
  occupation,
@@ -1 +1 @@
1
- {"version":3,"file":"Finder.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_Finder","_Finder2","_Finder3","style","_helpers","_getAvailableWidth","_helpers2","_prepareRoom","_shared__","_Occupation","_helpers3","_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","CHAIN","HOTEL","TYPE","timeoutMetricChange","Finder","_ref","_dataSource$places","_dataSource$places2","_dataSource$places3","_dataSource$places4","compacted","icon","layout","metrics","storage","text","onChange","onSubmit","others","isMobile","width","deviceWidth","useDevice","dateFormat","translate","useLocale","ref","useRef","value","components","currency","propCurrency","finder","storeFinder","forwarder","locale","promo","skeleton","type","store","useStore","setCurrency","useState","error","setError","focus","setFocus","unavailability","setUnavailability","setValue","parseValue","visited","setVisited","warning","setWarning","setWidth","useEffect","occupation","prepareRoom","DATASOURCE","is","debug","console","log","window","addEventListener","handlePageShow","document","handleClickOutside","Event","publish","EVENT","METRICS","id","removeEventListener","current","el","column","observer","IntersectionObserver","isIntersecting","undefined","getAvailableWidth","threshold","observe","unobserve","disabledDates","place","hotelId","isHotel","nextPromocode","rates","variants","code","promocode","_fetchUrlParams","fetchUrlParams","location","search","fetchCurrency","FINDER_READY","event","handleFinder","calendar","handleSubmit","nextValue","subscribe","FINDER","unsubscribe","next","JSON","stringify","concat","handleChange","field","fieldValue","FINDER_FIELD_CHANGE","previousValue","clearTimeout","setTimeout","_ref$current","contains","persisted","handlePlaceChange","VIEW","PLACE","assistant","_value$calendar","_nextValue","dataSource","places","CALENDAR","firstError","keys","filter","forwarderUrl","getForwarderUrl","setStorage","href","includes","ids","getDataSource","hotel","idHotel","separatorColor","fieldVariant","Theme","inline","expand","fieldProps","hasPlaces","getFieldPosition","L10N","ACTION_SEARCH","ACTION_APPLY","variant","className","maxWidth","createElement","Fragment","Compact","onExpand","View","role","row","tag","testId","styles","Field","FIELD","caption","getPlaceCaption","options","label","LABEL_WHERE","markdown","placeholder","LABEL_WHERE_PLACEHOLDER","visible","onPress","Places","autoColumn","separator","getCalendarCaption","centered","LABEL_WHEN","Calendar","parseCalendarProps","rangeMinDays","top","nextCalendar","onError","onValid","FieldOccupation","getOccupationDataSource","hotels","getHotels","placesSource","maxRooms","OCCUPATION","withWarning","onWarning","FieldPromocode","PROMOCODE","onEnter","onLeave","Skeleton","large","button","words","Button","disabled","tabindex","wide","withIcon","Icon","ICON","SEARCH","exports","displayName","propTypes","PropTypes","bool","oneOf","string","func"],"sources":["../../../src/components/Finder/Finder.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Icon, Button, styles, Theme, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Calendar, Places } from './components';\nimport { Compact } from './Finder.compact';\nimport { FIELD, TYPE, VIEW } from './Finder.constants';\nimport { L10N } from './Finder.l10n';\nimport * as style from './Finder.module.css';\nimport {\n getDataSource,\n getFieldPosition,\n getForwarderUrl,\n getHotels,\n getOccupationDataSource,\n getPlaceCaption,\n parseCalendarProps,\n parseValue,\n} from './helpers';\nimport { setStorage } from './helpers';\nimport { getAvailableWidth } from './helpers/getAvailableWidth';\nimport { fetchCurrency, fetchUrlParams } from '../../helpers';\n// ! TODO: Why we don't publish prepareRoom in ../../helpers\nimport { prepareRoom } from '../../helpers/prepareRoom';\nimport { Field, FieldOccupation, FieldPromocode } from '../__shared__';\nimport { Skeleton } from '../__shared__';\nimport { DATASOURCE } from '../__shared__/Occupation/Occupation.constants';\nimport { EVENT, getCalendarCaption, ICON } from '../helpers';\n\nconst { CHAIN, HOTEL } = TYPE;\nlet timeoutMetricChange;\n\nconst Finder = ({\n compacted = false,\n icon = false,\n layout,\n metrics = 'finder',\n storage = true,\n text,\n onChange = () => {},\n onSubmit,\n ...others\n}) => {\n const { isMobile, width: deviceWidth } = useDevice();\n const { dateFormat, translate } = useLocale();\n const ref = useRef(null);\n const {\n set,\n value: {\n components = {},\n currency: propCurrency,\n finder: storeFinder,\n forwarder,\n locale,\n promo = {},\n skeleton = false,\n type = HOTEL,\n ...store\n },\n } = useStore();\n\n const [currency, setCurrency] = useState();\n const [error, setError] = useState({});\n const [focus, setFocus] = useState();\n const [unavailability, setUnavailability] = useState();\n const [value, setValue] = useState(parseValue(storeFinder));\n const [visited, setVisited] = useState({});\n const [warning, setWarning] = useState();\n const [width, setWidth] = useState();\n\n useEffect(() => {\n if (skeleton) return;\n\n if (!storeFinder?.occupation) set({ finder: { ...storeFinder, occupation: [prepareRoom(DATASOURCE)] } });\n\n if (is.debug && !storeFinder?.occupation) {\n // eslint-disable-next-line no-console\n console.log({ finder: { ...storeFinder, occupation: [prepareRoom(DATASOURCE)] } });\n }\n window.addEventListener('pageshow', handlePageShow);\n !isMobile && document.addEventListener('click', handleClickOutside, true);\n\n if (metrics === 'finder') Event.publish(EVENT.METRICS, { id: 'FINDER:RENDER' });\n\n return () => {\n window.removeEventListener('pageshow', handlePageShow);\n !isMobile && document.removeEventListener('click', handleClickOutside, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const { current: el } = ref || {};\n if (!is.column || !el) return;\n\n const observer = new IntersectionObserver(\n ([{ isIntersecting } = {}] = []) => isIntersecting && setWidth(getAvailableWidth(el)),\n { threshold: 0.1 },\n );\n if (el) observer.observe(el);\n\n return () => {\n if (el) observer.unobserve(el);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [deviceWidth]);\n\n useEffect(() => {\n unavailability && setUnavailability({ disabledDates: [] });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.occupation, value?.place]);\n\n useEffect(() => {\n const { place: { id: [hotelId] = [], isHotel } = {} } = value || {};\n const nextPromocode = !is.rates && ((promo.variants && promo.variants[hotelId]) || promo.code);\n if (nextPromocode) setValue({ ...value, ...{ promocode: nextPromocode } });\n\n if (isHotel) {\n if (!fetchUrlParams(window.location.search)?.currency) {\n // ! TODO: Same here, this should be responsibility of <Core>...\n (async () => {\n setCurrency(await fetchCurrency(hotelId));\n })();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.place]);\n\n useEffect(() => {\n !onSubmit && !skeleton && Event.publish(EVENT.FINDER_READY, { event: EVENT.FINDER_READY });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const handleFinder = ({ calendar, finder, focus } = {}) => {\n if (finder) return handleSubmit({ nextValue: finder });\n\n setUnavailability(calendar);\n if (focus) setFocus(focus);\n };\n Event.subscribe(EVENT.FINDER, handleFinder);\n\n return () => Event.unsubscribe(EVENT.FINDER, handleFinder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale, propCurrency]);\n\n // ! TODO: Why this one? Is not responsibility of <Finder> change the currency when prop changes.\n useEffect(() => setCurrency(propCurrency), [propCurrency]);\n\n useEffect(\n () => {\n const next = parseValue({ ...value, ...storeFinder });\n if (JSON.stringify(value) !== JSON.stringify(next)) setValue(next);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [storeFinder],\n );\n\n useEffect(() => {\n focus && setVisited({ ...visited, [`${focus}`]: true });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focus]);\n\n const handleChange = (field, fieldValue) => {\n const next = { ...value, [field]: fieldValue };\n\n setValue(next);\n onChange(next, field, fieldValue);\n\n Event.publish(EVENT.FINDER_FIELD_CHANGE, { field, previousValue: value[field], value: fieldValue });\n if (metrics) {\n clearTimeout(timeoutMetricChange);\n timeoutMetricChange = setTimeout(() => Event.publish(EVENT.METRICS, { id: `${metrics}:CHANGE:${field}` }), 500);\n }\n };\n\n const handleClickOutside = ({ target } = {}) => !ref.current?.contains(target) && setFocus(undefined);\n\n const handlePageShow = async ({ persisted } = {}) => {\n if (!persisted) return;\n\n setFocus();\n setVisited();\n setValue(parseValue(storeFinder));\n };\n\n const handlePlaceChange = async (place) => {\n setWarning(false);\n handleChange(VIEW.PLACE, place);\n !is.rates && assistant();\n };\n\n const handleSubmit = ({ nextValue = value } = {}) => {\n if (dataSource.places && value.place === undefined) return setFocus(VIEW.PLACE);\n\n if (value.calendar?.length !== 2) return setFocus(VIEW.CALENDAR);\n\n const [firstError] = Object.keys(error).filter((key) => !!error[key]);\n if (firstError) return setFocus(firstError);\n\n setWarning(false);\n setFocus(undefined);\n if (!nextValue?.occupation) {\n // eslint-disable-next-line no-console\n console.log('>>>> No occupation');\n nextValue = { ...nextValue, occupation: [prepareRoom(DATASOURCE)] };\n }\n set({ finder: nextValue });\n const forwarderUrl = getForwarderUrl({ ...nextValue, currency, forwarder, locale, store, type });\n\n storage && setStorage(nextValue, store?.id);\n if (onSubmit) onSubmit({ ...nextValue, forwarderUrl });\n else window.location.href = forwarderUrl;\n\n if (metrics) Event.publish(EVENT.METRICS, { id: `${metrics}:SUBMIT`, ...nextValue });\n };\n\n const assistant = () => {\n const { calendar = [] } = value;\n if (focus === VIEW.PLACE && !visited.calendar && calendar.length !== 2) setFocus(VIEW.CALENDAR);\n else if (!compacted || [VIEW.CALENDAR, VIEW.PLACE].includes(focus)) setFocus(undefined);\n };\n\n const { calendar = [], occupation, place = {}, promocode } = value;\n const { id: ids = [], isHotel } = place;\n const dataSource = getDataSource({ type, ...store });\n const { hotel: { id: idHotel } = {} } = store;\n const id = type !== HOTEL ? (isHotel && ids.length === 1 ? ids[0] : undefined) : idHotel;\n\n const { separatorColor = '', ...fieldVariant } = Theme.get('--mirai-finder-field-');\n\n const is = {\n inline: separatorColor !== 'transparent',\n column: layout === 'column',\n expand: !isMobile && layout === 'expand',\n compacted: layout !== 'column' && (isMobile || (compacted && !focus)),\n debug: store?.id === '500138',\n rates: components.rates !== undefined,\n };\n\n const fieldProps = {\n compacted: is.compacted,\n hasPlaces: !!dataSource.places,\n inline: is.inline,\n ...(!is.compacted ? getFieldPosition(ref) : undefined),\n text: is.rates ? translate(L10N.ACTION_SEARCH) : translate(L10N.ACTION_APPLY),\n variant: Object.keys(fieldVariant).length ? fieldVariant : undefined,\n className: style.field,\n style: is.column && width ? { maxWidth: width, width } : undefined,\n };\n\n // eslint-disable-next-line no-console\n is.debug && console.log({ place, calendar, occupation });\n\n return (\n <>\n {is.compacted && (\n <Compact\n {...{ dataSource, skeleton, value }}\n onExpand={setFocus}\n onSubmit={!is.rates || (is.rates && !isMobile) ? handleSubmit : undefined}\n {...others}\n />\n )}\n\n <View\n ref={ref}\n role=\"finder\"\n row={!is.column}\n tag=\"finder\"\n testId={others.testId}\n className={\n !is.compacted\n ? styles(style.finder, is.column && style.column, is.expand && style.expand, others.className)\n : undefined\n }\n >\n {(dataSource.places || (skeleton && type === CHAIN)) && (\n <>\n <Field\n {...FIELD.PLACE}\n caption={getPlaceCaption(place.value, dataSource.places?.options)}\n label={translate(L10N.LABEL_WHERE)}\n markdown={false}\n placeholder={dataSource?.places?.placeholder || translate(L10N.LABEL_WHERE_PLACEHOLDER)}\n visible={focus === VIEW.PLACE}\n onPress={() => setFocus(focus !== VIEW.PLACE ? VIEW.PLACE : undefined)}\n {...fieldProps}\n >\n <Places\n autoColumn={focus === VIEW.PLACE}\n dataSource={dataSource?.places?.options}\n text={compacted ? text : undefined}\n value={place.value}\n onChange={handlePlaceChange}\n onSubmit={is.rates ? handleSubmit : undefined}\n testId={others.testId ? `${others.testId}-places` : undefined}\n />\n </Field>\n\n {is.inline && <View className={style.separator} />}\n </>\n )}\n\n <Field\n {...FIELD.CALENDAR}\n caption={calendar.length ? getCalendarCaption(calendar, translate, dateFormat) : undefined}\n centered={type !== HOTEL && !is.column}\n label={translate(L10N.LABEL_WHEN)}\n placeholder={getCalendarCaption(undefined, translate, dateFormat)}\n visible={focus === VIEW.CALENDAR}\n onPress={() => setFocus(focus !== VIEW.CALENDAR ? VIEW.CALENDAR : undefined)}\n testId={others.testId ? `${others.testId}-calendar-field` : undefined}\n {...fieldProps}\n >\n <Calendar\n {...parseCalendarProps(dataSource.calendar, id, occupation, type, unavailability, dataSource.variants)}\n id={id}\n currency={currency || propCurrency}\n locale={locale}\n rangeMinDays={1}\n text={compacted ? text : undefined}\n top={fieldProps?.top}\n skeleton={skeleton}\n unavailability={unavailability}\n value={calendar}\n onChange={(nextCalendar, event) => {\n handleChange(VIEW.CALENDAR, nextCalendar, event);\n if (nextCalendar.length === 2 && !is.rates) {\n setError({ ...error, calendar: undefined });\n assistant();\n }\n }}\n onError={(calendar) => setError({ ...error, calendar })}\n onSubmit={is.rates ? handleSubmit : undefined}\n onValid={() => setError({ ...error, calendar: undefined })}\n testId={others.testId ? `${others.testId}-calendar` : undefined}\n />\n </Field>\n\n {is.inline && <View className={style.separator} />}\n\n <FieldOccupation\n dataSource={getOccupationDataSource({\n ...dataSource,\n places: dataSource.places?.options,\n place: place?.value,\n })}\n hotels={getHotels(dataSource.placesSource, place.value)}\n maxRooms={dataSource.maxRooms}\n text={compacted ? text : undefined}\n value={occupation}\n visible={focus === VIEW.OCCUPATION}\n withWarning={warning}\n onChange={(occupation, event) => handleChange(VIEW.OCCUPATION, occupation, event)}\n onError={(occupation) => {\n if (!isMobile && focus !== VIEW.OCCUPATION) setFocus(VIEW.OCCUPATION);\n setError({ ...error, occupation });\n }}\n onPress={() => setFocus(focus !== VIEW.OCCUPATION ? VIEW.OCCUPATION : undefined)}\n onSubmit={is.rates ? handleSubmit : isMobile && is.compacted ? () => setFocus() : undefined}\n onValid={() => setError({ ...error, occupation: undefined })}\n onWarning={() => {\n if (!isMobile && focus !== VIEW.OCCUPATION) setFocus(VIEW.OCCUPATION);\n }}\n testId={others.testId ? `${others.testId}-occupation` : undefined}\n {...fieldProps}\n />\n\n {is.inline && <View className={style.separator} />}\n\n <FieldPromocode\n value={promocode}\n visible={focus === VIEW.PROMOCODE}\n onChange={(promocode, event) => handleChange(VIEW.PROMOCODE, promocode, event)}\n onEnter={!is.compacted ? () => setFocus(VIEW.PROMOCODE) : undefined}\n onLeave={!is.compacted ? () => setFocus(undefined) : undefined}\n onPress={\n isMobile && is.compacted ? () => setFocus(focus !== VIEW.PROMOCODE ? VIEW.PROMOCODE : undefined) : undefined\n }\n onSubmit={isMobile && is.compacted ? (is.rates ? handleSubmit : () => setFocus()) : undefined}\n testId={others.testId ? `${others.testId}-promocode` : undefined}\n {...fieldProps}\n />\n\n {!is.compacted ? (\n skeleton ? (\n <Skeleton large button words={1} />\n ) : (\n <Button\n disabled={skeleton}\n large\n tabindex={4}\n role=\"finder-button\"\n wide={is.column}\n onPress={handleSubmit}\n className={styles(style.button, icon && !is.column && style.withIcon)}\n testId={others.testId ? `${others.testId}-submit` : undefined}\n >\n {icon && !is.column ? <Icon value={ICON.SEARCH} /> : text || translate(L10N.ACTION_SEARCH)}\n </Button>\n )\n ) : null}\n </View>\n </>\n );\n};\n\nFinder.displayName = 'Mirai:Core:Finder';\n\nFinder.propTypes = {\n compacted: PropTypes.bool,\n icon: PropTypes.bool,\n layout: PropTypes.oneOf(['column', 'expand']),\n metrics: PropTypes.string,\n storage: PropTypes.bool,\n text: PropTypes.string,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n};\n\nexport { Finder };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Finder.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_Finder","_Finder2","_Finder3","style","_helpers","_getAvailableWidth","_helpers2","_prepareRoom","_shared__","_Occupation","_helpers3","_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","CHAIN","HOTEL","TYPE","timeoutMetricChange","Finder","_ref","_dataSource$places","_dataSource$places2","_dataSource$places3","_dataSource$places4","compacted","icon","layout","metrics","storage","text","onChange","onSubmit","others","isMobile","width","deviceWidth","useDevice","dateFormat","translate","useLocale","ref","useRef","value","components","currency","propCurrency","finder","storeFinder","forwarder","locale","promo","skeleton","type","store","useStore","setCurrency","useState","error","setError","focus","setFocus","unavailability","setUnavailability","setValue","parseValue","visited","setVisited","warning","setWarning","setWidth","useEffect","occupation","prepareRoom","DATASOURCE","is","debug","console","log","window","addEventListener","handlePageShow","document","handleClickOutside","Event","publish","EVENT","METRICS","id","removeEventListener","current","el","column","observer","IntersectionObserver","isIntersecting","undefined","getAvailableWidth","threshold","observe","unobserve","disabledDates","place","hotelId","isHotel","nextPromocode","rates","variants","code","next","promocode","publishChange","_fetchUrlParams","fetchUrlParams","location","search","fetchCurrency","FINDER_READY","event","handleFinder","calendar","handleSubmit","nextValue","subscribe","FINDER","unsubscribe","JSON","stringify","concat","handleChange","field","fieldValue","clearTimeout","setTimeout","_ref$current","contains","persisted","handlePlaceChange","VIEW","PLACE","assistant","_value$calendar","_nextValue","dataSource","places","CALENDAR","firstError","keys","filter","forwarderUrl","getForwarderUrl","setStorage","href","includes","forEach","FINDER_FIELD_CHANGE","previousValue","ids","getDataSource","hotel","idHotel","separatorColor","fieldVariant","Theme","inline","expand","fieldProps","hasPlaces","getFieldPosition","L10N","ACTION_SEARCH","ACTION_APPLY","variant","className","maxWidth","createElement","Fragment","Compact","onExpand","View","role","row","tag","testId","styles","Field","FIELD","caption","getPlaceCaption","options","label","LABEL_WHERE","markdown","placeholder","LABEL_WHERE_PLACEHOLDER","visible","onPress","Places","autoColumn","separator","getCalendarCaption","centered","LABEL_WHEN","Calendar","parseCalendarProps","rangeMinDays","top","nextCalendar","onError","onValid","FieldOccupation","getOccupationDataSource","hotels","getHotels","placesSource","maxRooms","OCCUPATION","withWarning","onWarning","FieldPromocode","PROMOCODE","onEnter","onLeave","Skeleton","large","button","words","Button","disabled","tabindex","wide","withIcon","Icon","ICON","SEARCH","exports","displayName","propTypes","PropTypes","bool","oneOf","string","func"],"sources":["../../../src/components/Finder/Finder.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Icon, Button, styles, Theme, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { Calendar, Places } from './components';\nimport { Compact } from './Finder.compact';\nimport { FIELD, TYPE, VIEW } from './Finder.constants';\nimport { L10N } from './Finder.l10n';\nimport * as style from './Finder.module.css';\nimport {\n getDataSource,\n getFieldPosition,\n getForwarderUrl,\n getHotels,\n getOccupationDataSource,\n getPlaceCaption,\n parseCalendarProps,\n parseValue,\n} from './helpers';\nimport { setStorage } from './helpers';\nimport { getAvailableWidth } from './helpers/getAvailableWidth';\nimport { fetchCurrency, fetchUrlParams } from '../../helpers';\n// ! TODO: Why we don't publish prepareRoom in ../../helpers\nimport { prepareRoom } from '../../helpers/prepareRoom';\nimport { Field, FieldOccupation, FieldPromocode } from '../__shared__';\nimport { Skeleton } from '../__shared__';\nimport { DATASOURCE } from '../__shared__/Occupation/Occupation.constants';\nimport { EVENT, getCalendarCaption, ICON } from '../helpers';\n\nconst { CHAIN, HOTEL } = TYPE;\nlet timeoutMetricChange;\n\nconst Finder = ({\n compacted = false,\n icon = false,\n layout,\n metrics = 'finder',\n storage = true,\n text,\n onChange = () => {},\n onSubmit,\n ...others\n}) => {\n const { isMobile, width: deviceWidth } = useDevice();\n const { dateFormat, translate } = useLocale();\n const ref = useRef(null);\n const {\n set,\n value: {\n components = {},\n currency: propCurrency,\n finder: storeFinder,\n forwarder,\n locale,\n promo = {},\n skeleton = false,\n type = HOTEL,\n ...store\n },\n } = useStore();\n\n const [currency, setCurrency] = useState();\n const [error, setError] = useState({});\n const [focus, setFocus] = useState();\n const [unavailability, setUnavailability] = useState();\n const [value, setValue] = useState(parseValue(storeFinder));\n const [visited, setVisited] = useState({});\n const [warning, setWarning] = useState();\n const [width, setWidth] = useState();\n\n useEffect(() => {\n if (skeleton) return;\n\n if (!storeFinder?.occupation) set({ finder: { ...storeFinder, occupation: [prepareRoom(DATASOURCE)] } });\n\n if (is.debug && !storeFinder?.occupation) {\n // eslint-disable-next-line no-console\n console.log({ finder: { ...storeFinder, occupation: [prepareRoom(DATASOURCE)] } });\n }\n window.addEventListener('pageshow', handlePageShow);\n !isMobile && document.addEventListener('click', handleClickOutside, true);\n\n if (metrics === 'finder') Event.publish(EVENT.METRICS, { id: 'FINDER:RENDER' });\n\n return () => {\n window.removeEventListener('pageshow', handlePageShow);\n !isMobile && document.removeEventListener('click', handleClickOutside, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const { current: el } = ref || {};\n if (!is.column || !el) return;\n\n const observer = new IntersectionObserver(\n ([{ isIntersecting } = {}] = []) => isIntersecting && setWidth(getAvailableWidth(el)),\n { threshold: 0.1 },\n );\n if (el) observer.observe(el);\n\n return () => {\n if (el) observer.unobserve(el);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [deviceWidth]);\n\n useEffect(() => {\n unavailability && setUnavailability({ disabledDates: [] });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.occupation, value?.place]);\n\n useEffect(() => {\n const { place: { id: [hotelId] = [], isHotel } = {} } = value || {};\n const nextPromocode = !is.rates && ((promo.variants && promo.variants[hotelId]) || promo.code);\n if (nextPromocode) {\n const next = { ...value, promocode: nextPromocode };\n setValue(next);\n publishChange(next);\n }\n\n if (isHotel) {\n if (!fetchUrlParams(window.location.search)?.currency) {\n // ! TODO: Same here, this should be responsibility of <Core>...\n (async () => {\n setCurrency(await fetchCurrency(hotelId));\n })();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value?.place]);\n\n useEffect(() => {\n !onSubmit && !skeleton && Event.publish(EVENT.FINDER_READY, { event: EVENT.FINDER_READY });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const handleFinder = ({ calendar, finder, focus } = {}) => {\n if (finder) return handleSubmit({ nextValue: finder });\n\n setUnavailability(calendar);\n if (focus) setFocus(focus);\n };\n Event.subscribe(EVENT.FINDER, handleFinder);\n\n return () => Event.unsubscribe(EVENT.FINDER, handleFinder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale, propCurrency]);\n\n // ! TODO: Why this one? Is not responsibility of <Finder> change the currency when prop changes.\n useEffect(() => setCurrency(propCurrency), [propCurrency]);\n\n useEffect(\n () => {\n const next = parseValue({ ...value, ...storeFinder });\n if (JSON.stringify(value) !== JSON.stringify(next)) {\n setValue(next);\n publishChange(next);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [storeFinder],\n );\n\n useEffect(() => {\n focus && setVisited({ ...visited, [`${focus}`]: true });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focus]);\n\n const handleChange = (field, fieldValue) => {\n const next = { ...value, [field]: fieldValue };\n\n setValue(next);\n onChange(next, field, fieldValue);\n publishChange(next);\n\n if (metrics) {\n clearTimeout(timeoutMetricChange);\n timeoutMetricChange = setTimeout(() => Event.publish(EVENT.METRICS, { id: `${metrics}:CHANGE:${field}` }), 500);\n }\n };\n\n const handleClickOutside = ({ target } = {}) => !ref.current?.contains(target) && setFocus(undefined);\n\n const handlePageShow = ({ persisted } = {}) => {\n if (!persisted) return;\n\n setFocus();\n setVisited();\n\n const next = parseValue(storeFinder);\n setValue(next);\n publishChange(next);\n };\n\n const handlePlaceChange = (place) => {\n setWarning(false);\n handleChange(VIEW.PLACE, place);\n !is.rates && assistant();\n };\n\n const handleSubmit = ({ nextValue = value } = {}) => {\n if (dataSource.places && value.place === undefined) return setFocus(VIEW.PLACE);\n\n if (value.calendar?.length !== 2) return setFocus(VIEW.CALENDAR);\n\n const [firstError] = Object.keys(error).filter((key) => !!error[key]);\n if (firstError) return setFocus(firstError);\n\n setWarning(false);\n setFocus(undefined);\n if (!nextValue?.occupation) {\n // eslint-disable-next-line no-console\n console.log('>>>> No occupation');\n nextValue = { ...nextValue, occupation: [prepareRoom(DATASOURCE)] };\n }\n set({ finder: nextValue });\n const forwarderUrl = getForwarderUrl({ ...nextValue, currency, forwarder, locale, store, type });\n\n storage && setStorage(nextValue, store?.id);\n if (onSubmit) onSubmit({ ...nextValue, forwarderUrl });\n else window.location.href = forwarderUrl;\n\n if (metrics) Event.publish(EVENT.METRICS, { id: `${metrics}:SUBMIT`, ...nextValue });\n };\n\n const assistant = () => {\n const { calendar = [] } = value;\n if (focus === VIEW.PLACE && !visited.calendar && calendar.length !== 2) setFocus(VIEW.CALENDAR);\n else if (!compacted || [VIEW.CALENDAR, VIEW.PLACE].includes(focus)) setFocus(undefined);\n };\n\n const publishChange = (next) =>\n Object.keys(next || []).forEach((field) => {\n if (JSON.stringify(value[field]) !== JSON.stringify(next[field])) {\n Event.publish(EVENT.FINDER_FIELD_CHANGE, { field, previousValue: value[field], value: next[field] });\n }\n });\n\n const { calendar = [], occupation, place = {}, promocode } = value;\n const { id: ids = [], isHotel } = place;\n const dataSource = getDataSource({ type, ...store });\n const { hotel: { id: idHotel } = {} } = store;\n const id = type !== HOTEL ? (isHotel && ids.length === 1 ? ids[0] : undefined) : idHotel;\n\n const { separatorColor = '', ...fieldVariant } = Theme.get('--mirai-finder-field-');\n\n const is = {\n inline: separatorColor !== 'transparent',\n column: layout === 'column',\n expand: !isMobile && layout === 'expand',\n compacted: layout !== 'column' && (isMobile || (compacted && !focus)),\n debug: store?.id === '500138',\n rates: components.rates !== undefined,\n };\n\n const fieldProps = {\n compacted: is.compacted,\n hasPlaces: !!dataSource.places,\n inline: is.inline,\n ...(!is.compacted ? getFieldPosition(ref) : undefined),\n text: is.rates ? translate(L10N.ACTION_SEARCH) : translate(L10N.ACTION_APPLY),\n variant: Object.keys(fieldVariant).length ? fieldVariant : undefined,\n className: style.field,\n style: is.column && width ? { maxWidth: width, width } : undefined,\n };\n\n // eslint-disable-next-line no-console\n is.debug && console.log({ place, calendar, occupation });\n\n return (\n <>\n {is.compacted && (\n <Compact\n {...{ dataSource, skeleton, value }}\n onExpand={setFocus}\n onSubmit={!is.rates || (is.rates && !isMobile) ? handleSubmit : undefined}\n {...others}\n />\n )}\n\n <View\n ref={ref}\n role=\"finder\"\n row={!is.column}\n tag=\"finder\"\n testId={others.testId}\n className={\n !is.compacted\n ? styles(style.finder, is.column && style.column, is.expand && style.expand, others.className)\n : undefined\n }\n >\n {(dataSource.places || (skeleton && type === CHAIN)) && (\n <>\n <Field\n {...FIELD.PLACE}\n caption={getPlaceCaption(place.value, dataSource.places?.options)}\n label={translate(L10N.LABEL_WHERE)}\n markdown={false}\n placeholder={dataSource?.places?.placeholder || translate(L10N.LABEL_WHERE_PLACEHOLDER)}\n visible={focus === VIEW.PLACE}\n onPress={() => setFocus(focus !== VIEW.PLACE ? VIEW.PLACE : undefined)}\n {...fieldProps}\n >\n <Places\n autoColumn={focus === VIEW.PLACE}\n dataSource={dataSource?.places?.options}\n text={compacted ? text : undefined}\n value={place.value}\n onChange={handlePlaceChange}\n onSubmit={is.rates ? handleSubmit : undefined}\n testId={others.testId ? `${others.testId}-places` : undefined}\n />\n </Field>\n\n {is.inline && <View className={style.separator} />}\n </>\n )}\n\n <Field\n {...FIELD.CALENDAR}\n caption={calendar.length ? getCalendarCaption(calendar, translate, dateFormat) : undefined}\n centered={type !== HOTEL && !is.column}\n label={translate(L10N.LABEL_WHEN)}\n placeholder={getCalendarCaption(undefined, translate, dateFormat)}\n visible={focus === VIEW.CALENDAR}\n onPress={() => setFocus(focus !== VIEW.CALENDAR ? VIEW.CALENDAR : undefined)}\n testId={others.testId ? `${others.testId}-calendar-field` : undefined}\n {...fieldProps}\n >\n <Calendar\n {...parseCalendarProps(dataSource.calendar, id, occupation, type, unavailability, dataSource.variants)}\n id={id}\n currency={currency || propCurrency}\n locale={locale}\n rangeMinDays={1}\n text={compacted ? text : undefined}\n top={fieldProps?.top}\n skeleton={skeleton}\n unavailability={unavailability}\n value={calendar}\n onChange={(nextCalendar, event) => {\n handleChange(VIEW.CALENDAR, nextCalendar, event);\n if (nextCalendar.length === 2 && !is.rates) {\n setError({ ...error, calendar: undefined });\n assistant();\n }\n }}\n onError={(calendar) => setError({ ...error, calendar })}\n onSubmit={is.rates ? handleSubmit : undefined}\n onValid={() => setError({ ...error, calendar: undefined })}\n testId={others.testId ? `${others.testId}-calendar` : undefined}\n />\n </Field>\n\n {is.inline && <View className={style.separator} />}\n\n <FieldOccupation\n dataSource={getOccupationDataSource({\n ...dataSource,\n places: dataSource.places?.options,\n place: place?.value,\n })}\n hotels={getHotels(dataSource.placesSource, place.value)}\n maxRooms={dataSource.maxRooms}\n text={compacted ? text : undefined}\n value={occupation}\n visible={focus === VIEW.OCCUPATION}\n withWarning={warning}\n onChange={(occupation, event) => handleChange(VIEW.OCCUPATION, occupation, event)}\n onError={(occupation) => {\n if (!isMobile && focus !== VIEW.OCCUPATION) setFocus(VIEW.OCCUPATION);\n setError({ ...error, occupation });\n }}\n onPress={() => setFocus(focus !== VIEW.OCCUPATION ? VIEW.OCCUPATION : undefined)}\n onSubmit={is.rates ? handleSubmit : isMobile && is.compacted ? () => setFocus() : undefined}\n onValid={() => setError({ ...error, occupation: undefined })}\n onWarning={() => {\n if (!isMobile && focus !== VIEW.OCCUPATION) setFocus(VIEW.OCCUPATION);\n }}\n testId={others.testId ? `${others.testId}-occupation` : undefined}\n {...fieldProps}\n />\n\n {is.inline && <View className={style.separator} />}\n\n <FieldPromocode\n value={promocode}\n visible={focus === VIEW.PROMOCODE}\n onChange={(promocode, event) => handleChange(VIEW.PROMOCODE, promocode, event)}\n onEnter={!is.compacted ? () => setFocus(VIEW.PROMOCODE) : undefined}\n onLeave={!is.compacted ? () => setFocus(undefined) : undefined}\n onPress={\n isMobile && is.compacted ? () => setFocus(focus !== VIEW.PROMOCODE ? VIEW.PROMOCODE : undefined) : undefined\n }\n onSubmit={isMobile && is.compacted ? (is.rates ? handleSubmit : () => setFocus()) : undefined}\n testId={others.testId ? `${others.testId}-promocode` : undefined}\n {...fieldProps}\n />\n\n {!is.compacted ? (\n skeleton ? (\n <Skeleton large button words={1} />\n ) : (\n <Button\n disabled={skeleton}\n large\n tabindex={4}\n role=\"finder-button\"\n wide={is.column}\n onPress={handleSubmit}\n className={styles(style.button, icon && !is.column && style.withIcon)}\n testId={others.testId ? `${others.testId}-submit` : undefined}\n >\n {icon && !is.column ? <Icon value={ICON.SEARCH} /> : text || translate(L10N.ACTION_SEARCH)}\n </Button>\n )\n ) : null}\n </View>\n </>\n );\n};\n\nFinder.displayName = 'Mirai:Core:Finder';\n\nFinder.propTypes = {\n compacted: PropTypes.bool,\n icon: PropTypes.bool,\n layout: PropTypes.oneOf(['column', 'expand']),\n metrics: PropTypes.string,\n storage: PropTypes.bool,\n text: PropTypes.string,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n};\n\nexport { Finder };\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,GAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAC,uBAAA,CAAAN,OAAA;AAEA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,QAAA,GAAAV,OAAA;AACA,IAAAW,KAAA,GAAAL,uBAAA,CAAAN,OAAA;AACA,IAAAY,QAAA,GAAAZ,OAAA;AAWA,IAAAa,kBAAA,GAAAb,OAAA;AACA,IAAAc,SAAA,GAAAd,OAAA;AAEA,IAAAe,YAAA,GAAAf,OAAA;AACA,IAAAgB,SAAA,GAAAhB,OAAA;AAEA,IAAAiB,WAAA,GAAAjB,OAAA;AACA,IAAAkB,SAAA,GAAAlB,OAAA;AAA6D,SAAAmB,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAd,wBAAAc,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAxB,uBAAAoC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAAA,SAAAC,SAAA,IAAAA,QAAA,GAAAV,MAAA,CAAAW,MAAA,GAAAX,MAAA,CAAAW,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAN,CAAA,MAAAA,CAAA,GAAAO,SAAA,CAAAC,MAAA,EAAAR,CAAA,UAAAS,MAAA,GAAAF,SAAA,CAAAP,CAAA,YAAAU,GAAA,IAAAD,MAAA,QAAAhB,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAC,GAAA,KAAAJ,MAAA,CAAAI,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAJ,MAAA,YAAAH,QAAA,CAAAQ,KAAA,OAAAJ,SAAA,KAL7D;AAOA,MAAM;EAAEK,KAAK;EAAEC;AAAM,CAAC,GAAGC,aAAI;AAC7B,IAAIC,mBAAmB;AAEvB,MAAMC,MAAM,GAAGC,IAAA,IAUT;EAAA,IAAAC,kBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA;EAAA,IAVU;IACdC,SAAS,GAAG,KAAK;IACjBC,IAAI,GAAG,KAAK;IACZC,MAAM;IACNC,OAAO,GAAG,QAAQ;IAClBC,OAAO,GAAG,IAAI;IACdC,IAAI;IACJC,QAAQ,GAAGA,CAAA,KAAM,CAAC,CAAC;IACnBC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAAb,IAAA;EACC,MAAM;IAAEc,QAAQ;IAAEC,KAAK,EAAEC;EAAY,CAAC,GAAG,IAAAC,aAAS,EAAC,CAAC;EACpD,MAAM;IAAEC,UAAU;IAAEC;EAAU,CAAC,GAAG,IAAAC,iBAAS,EAAC,CAAC;EAC7C,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EACxB,MAAM;IACJtC,GAAG;IACHuC,KAAK,EAAE;MACLC,UAAU,GAAG,CAAC,CAAC;MACfC,QAAQ,EAAEC,YAAY;MACtBC,MAAM,EAAEC,WAAW;MACnBC,SAAS;MACTC,MAAM;MACNC,KAAK,GAAG,CAAC,CAAC;MACVC,QAAQ,GAAG,KAAK;MAChBC,IAAI,GAAGrC,KAAK;MACZ,GAAGsC;IACL;EACF,CAAC,GAAG,IAAAC,qBAAQ,EAAC,CAAC;EAEd,MAAM,CAACV,QAAQ,EAAEW,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC;EAC1C,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAF,eAAQ,EAAC,CAAC,CAAC,CAAC;EACtC,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,eAAQ,EAAC,CAAC;EACpC,MAAM,CAACK,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAN,eAAQ,EAAC,CAAC;EACtD,MAAM,CAACd,KAAK,EAAEqB,QAAQ,CAAC,GAAG,IAAAP,eAAQ,EAAC,IAAAQ,mBAAU,EAACjB,WAAW,CAAC,CAAC;EAC3D,MAAM,CAACkB,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAV,eAAQ,EAAC,CAAC,CAAC,CAAC;EAC1C,MAAM,CAACW,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAZ,eAAQ,EAAC,CAAC;EACxC,MAAM,CAACtB,KAAK,EAAEmC,QAAQ,CAAC,GAAG,IAAAb,eAAQ,EAAC,CAAC;EAEpC,IAAAc,gBAAS,EAAC,MAAM;IACd,IAAInB,QAAQ,EAAE;IAEd,IAAI,EAACJ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEwB,UAAU,GAAEpE,GAAG,CAAC;MAAE2C,MAAM,EAAE;QAAE,GAAGC,WAAW;QAAEwB,UAAU,EAAE,CAAC,IAAAC,wBAAW,EAACC,sBAAU,CAAC;MAAE;IAAE,CAAC,CAAC;IAExG,IAAIC,EAAE,CAACC,KAAK,IAAI,EAAC5B,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEwB,UAAU,GAAE;MACxC;MACAK,OAAO,CAACC,GAAG,CAAC;QAAE/B,MAAM,EAAE;UAAE,GAAGC,WAAW;UAAEwB,UAAU,EAAE,CAAC,IAAAC,wBAAW,EAACC,sBAAU,CAAC;QAAE;MAAE,CAAC,CAAC;IACpF;IACAK,MAAM,CAACC,gBAAgB,CAAC,UAAU,EAAEC,cAAc,CAAC;IACnD,CAAC/C,QAAQ,IAAIgD,QAAQ,CAACF,gBAAgB,CAAC,OAAO,EAAEG,kBAAkB,EAAE,IAAI,CAAC;IAEzE,IAAIvD,OAAO,KAAK,QAAQ,EAAEwD,kBAAK,CAACC,OAAO,CAACC,eAAK,CAACC,OAAO,EAAE;MAAEC,EAAE,EAAE;IAAgB,CAAC,CAAC;IAE/E,OAAO,MAAM;MACXT,MAAM,CAACU,mBAAmB,CAAC,UAAU,EAAER,cAAc,CAAC;MACtD,CAAC/C,QAAQ,IAAIgD,QAAQ,CAACO,mBAAmB,CAAC,OAAO,EAAEN,kBAAkB,EAAE,IAAI,CAAC;IAC9E,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAZ,gBAAS,EAAC,MAAM;IACd,MAAM;MAAEmB,OAAO,EAAEC;IAAG,CAAC,GAAGlD,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,CAACkC,EAAE,CAACiB,MAAM,IAAI,CAACD,EAAE,EAAE;IAEvB,MAAME,QAAQ,GAAG,IAAIC,oBAAoB,CACvC;MAAA,IAAC,CAAC;QAAEC;MAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAArF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsF,SAAA,GAAAtF,SAAA,MAAG,EAAE;MAAA,OAAKqF,cAAc,IAAIzB,QAAQ,CAAC,IAAA2B,oCAAiB,EAACN,EAAE,CAAC,CAAC;IAAA,GACrF;MAAEO,SAAS,EAAE;IAAI,CACnB,CAAC;IACD,IAAIP,EAAE,EAAEE,QAAQ,CAACM,OAAO,CAACR,EAAE,CAAC;IAE5B,OAAO,MAAM;MACX,IAAIA,EAAE,EAAEE,QAAQ,CAACO,SAAS,CAACT,EAAE,CAAC;IAChC,CAAC;;IAED;EACF,CAAC,EAAE,CAACvD,WAAW,CAAC,CAAC;EAEjB,IAAAmC,gBAAS,EAAC,MAAM;IACdT,cAAc,IAAIC,iBAAiB,CAAC;MAAEsC,aAAa,EAAE;IAAG,CAAC,CAAC;IAC1D;EACF,CAAC,EAAE,CAAC1D,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE6B,UAAU,EAAE7B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE2D,KAAK,CAAC,CAAC;EAErC,IAAA/B,gBAAS,EAAC,MAAM;IACd,MAAM;MAAE+B,KAAK,EAAE;QAAEd,EAAE,EAAE,CAACe,OAAO,CAAC,GAAG,EAAE;QAAEC;MAAQ,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG7D,KAAK,IAAI,CAAC,CAAC;IACnE,MAAM8D,aAAa,GAAG,CAAC9B,EAAE,CAAC+B,KAAK,KAAMvD,KAAK,CAACwD,QAAQ,IAAIxD,KAAK,CAACwD,QAAQ,CAACJ,OAAO,CAAC,IAAKpD,KAAK,CAACyD,IAAI,CAAC;IAC9F,IAAIH,aAAa,EAAE;MACjB,MAAMI,IAAI,GAAG;QAAE,GAAGlE,KAAK;QAAEmE,SAAS,EAAEL;MAAc,CAAC;MACnDzC,QAAQ,CAAC6C,IAAI,CAAC;MACdE,aAAa,CAACF,IAAI,CAAC;IACrB;IAEA,IAAIL,OAAO,EAAE;MAAA,IAAAQ,eAAA;MACX,IAAI,GAAAA,eAAA,GAAC,IAAAC,wBAAc,EAAClC,MAAM,CAACmC,QAAQ,CAACC,MAAM,CAAC,cAAAH,eAAA,eAAtCA,eAAA,CAAwCnE,QAAQ,GAAE;QACrD;QACA,CAAC,YAAY;UACXW,WAAW,CAAC,MAAM,IAAA4D,uBAAa,EAACb,OAAO,CAAC,CAAC;QAC3C,CAAC,EAAE,CAAC;MACN;IACF;IACA;EACF,CAAC,EAAE,CAAC5D,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE2D,KAAK,CAAC,CAAC;EAElB,IAAA/B,gBAAS,EAAC,MAAM;IACd,CAACvC,QAAQ,IAAI,CAACoB,QAAQ,IAAIgC,kBAAK,CAACC,OAAO,CAACC,eAAK,CAAC+B,YAAY,EAAE;MAAEC,KAAK,EAAEhC,eAAK,CAAC+B;IAAa,CAAC,CAAC;IAC1F;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAA9C,gBAAS,EAAC,MAAM;IACd,MAAMgD,YAAY,GAAG,SAAAA,CAAA,EAAsC;MAAA,IAArC;QAAEC,QAAQ;QAAEzE,MAAM;QAAEa;MAAM,CAAC,GAAAlD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsF,SAAA,GAAAtF,SAAA,MAAG,CAAC,CAAC;MACpD,IAAIqC,MAAM,EAAE,OAAO0E,YAAY,CAAC;QAAEC,SAAS,EAAE3E;MAAO,CAAC,CAAC;MAEtDgB,iBAAiB,CAACyD,QAAQ,CAAC;MAC3B,IAAI5D,KAAK,EAAEC,QAAQ,CAACD,KAAK,CAAC;IAC5B,CAAC;IACDwB,kBAAK,CAACuC,SAAS,CAACrC,eAAK,CAACsC,MAAM,EAAEL,YAAY,CAAC;IAE3C,OAAO,MAAMnC,kBAAK,CAACyC,WAAW,CAACvC,eAAK,CAACsC,MAAM,EAAEL,YAAY,CAAC;IAC1D;EACF,CAAC,EAAE,CAACrE,MAAM,EAAEJ,YAAY,CAAC,CAAC;;EAE1B;EACA,IAAAyB,gBAAS,EAAC,MAAMf,WAAW,CAACV,YAAY,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAE1D,IAAAyB,gBAAS,EACP,MAAM;IACJ,MAAMsC,IAAI,GAAG,IAAA5C,mBAAU,EAAC;MAAE,GAAGtB,KAAK;MAAE,GAAGK;IAAY,CAAC,CAAC;IACrD,IAAI8E,IAAI,CAACC,SAAS,CAACpF,KAAK,CAAC,KAAKmF,IAAI,CAACC,SAAS,CAAClB,IAAI,CAAC,EAAE;MAClD7C,QAAQ,CAAC6C,IAAI,CAAC;MACdE,aAAa,CAACF,IAAI,CAAC;IACrB;EACF,CAAC;EACD;EACA,CAAC7D,WAAW,CACd,CAAC;EAED,IAAAuB,gBAAS,EAAC,MAAM;IACdX,KAAK,IAAIO,UAAU,CAAC;MAAE,GAAGD,OAAO;MAAE,IAAA8D,MAAA,CAAIpE,KAAK,IAAK;IAAK,CAAC,CAAC;IACvD;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,MAAMqE,YAAY,GAAGA,CAACC,KAAK,EAAEC,UAAU,KAAK;IAC1C,MAAMtB,IAAI,GAAG;MAAE,GAAGlE,KAAK;MAAE,CAACuF,KAAK,GAAGC;IAAW,CAAC;IAE9CnE,QAAQ,CAAC6C,IAAI,CAAC;IACd9E,QAAQ,CAAC8E,IAAI,EAAEqB,KAAK,EAAEC,UAAU,CAAC;IACjCpB,aAAa,CAACF,IAAI,CAAC;IAEnB,IAAIjF,OAAO,EAAE;MACXwG,YAAY,CAAClH,mBAAmB,CAAC;MACjCA,mBAAmB,GAAGmH,UAAU,CAAC,MAAMjD,kBAAK,CAACC,OAAO,CAACC,eAAK,CAACC,OAAO,EAAE;QAAEC,EAAE,KAAAwC,MAAA,CAAKpG,OAAO,cAAAoG,MAAA,CAAWE,KAAK;MAAG,CAAC,CAAC,EAAE,GAAG,CAAC;IACjH;EACF,CAAC;EAED,MAAM/C,kBAAkB,GAAG,SAAAA,CAAA;IAAA,IAAAmD,YAAA;IAAA,IAAC;MAAE7H;IAAO,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsF,SAAA,GAAAtF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAK,GAAA4H,YAAA,GAAC7F,GAAG,CAACiD,OAAO,cAAA4C,YAAA,eAAXA,YAAA,CAAaC,QAAQ,CAAC9H,MAAM,CAAC,KAAIoD,QAAQ,CAACmC,SAAS,CAAC;EAAA;EAErG,MAAMf,cAAc,GAAG,SAAAA,CAAA,EAAwB;IAAA,IAAvB;MAAEuD;IAAU,CAAC,GAAA9H,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsF,SAAA,GAAAtF,SAAA,MAAG,CAAC,CAAC;IACxC,IAAI,CAAC8H,SAAS,EAAE;IAEhB3E,QAAQ,CAAC,CAAC;IACVM,UAAU,CAAC,CAAC;IAEZ,MAAM0C,IAAI,GAAG,IAAA5C,mBAAU,EAACjB,WAAW,CAAC;IACpCgB,QAAQ,CAAC6C,IAAI,CAAC;IACdE,aAAa,CAACF,IAAI,CAAC;EACrB,CAAC;EAED,MAAM4B,iBAAiB,GAAInC,KAAK,IAAK;IACnCjC,UAAU,CAAC,KAAK,CAAC;IACjB4D,YAAY,CAACS,aAAI,CAACC,KAAK,EAAErC,KAAK,CAAC;IAC/B,CAAC3B,EAAE,CAAC+B,KAAK,IAAIkC,SAAS,CAAC,CAAC;EAC1B,CAAC;EAED,MAAMnB,YAAY,GAAG,SAAAA,CAAA,EAAgC;IAAA,IAAAoB,eAAA,EAAAC,UAAA;IAAA,IAA/B;MAAEpB,SAAS,GAAG/E;IAAM,CAAC,GAAAjC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAsF,SAAA,GAAAtF,SAAA,MAAG,CAAC,CAAC;IAC9C,IAAIqI,UAAU,CAACC,MAAM,IAAIrG,KAAK,CAAC2D,KAAK,KAAKN,SAAS,EAAE,OAAOnC,QAAQ,CAAC6E,aAAI,CAACC,KAAK,CAAC;IAE/E,IAAI,EAAAE,eAAA,GAAAlG,KAAK,CAAC6E,QAAQ,cAAAqB,eAAA,uBAAdA,eAAA,CAAgBlI,MAAM,MAAK,CAAC,EAAE,OAAOkD,QAAQ,CAAC6E,aAAI,CAACO,QAAQ,CAAC;IAEhE,MAAM,CAACC,UAAU,CAAC,GAAGtJ,MAAM,CAACuJ,IAAI,CAACzF,KAAK,CAAC,CAAC0F,MAAM,CAAEvI,GAAG,IAAK,CAAC,CAAC6C,KAAK,CAAC7C,GAAG,CAAC,CAAC;IACrE,IAAIqI,UAAU,EAAE,OAAOrF,QAAQ,CAACqF,UAAU,CAAC;IAE3C7E,UAAU,CAAC,KAAK,CAAC;IACjBR,QAAQ,CAACmC,SAAS,CAAC;IACnB,IAAI,GAAA8C,UAAA,GAACpB,SAAS,cAAAoB,UAAA,eAATA,UAAA,CAAWtE,UAAU,GAAE;MAC1B;MACAK,OAAO,CAACC,GAAG,CAAC,oBAAoB,CAAC;MACjC4C,SAAS,GAAG;QAAE,GAAGA,SAAS;QAAElD,UAAU,EAAE,CAAC,IAAAC,wBAAW,EAACC,sBAAU,CAAC;MAAE,CAAC;IACrE;IACAtE,GAAG,CAAC;MAAE2C,MAAM,EAAE2E;IAAU,CAAC,CAAC;IAC1B,MAAM2B,YAAY,GAAG,IAAAC,wBAAe,EAAC;MAAE,GAAG5B,SAAS;MAAE7E,QAAQ;MAAEI,SAAS;MAAEC,MAAM;MAAEI,KAAK;MAAED;IAAK,CAAC,CAAC;IAEhGxB,OAAO,IAAI,IAAA0H,mBAAU,EAAC7B,SAAS,EAAEpE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEkC,EAAE,CAAC;IAC3C,IAAIxD,QAAQ,EAAEA,QAAQ,CAAC;MAAE,GAAG0F,SAAS;MAAE2B;IAAa,CAAC,CAAC,CAAC,KAClDtE,MAAM,CAACmC,QAAQ,CAACsC,IAAI,GAAGH,YAAY;IAExC,IAAIzH,OAAO,EAAEwD,kBAAK,CAACC,OAAO,CAACC,eAAK,CAACC,OAAO,EAAE;MAAEC,EAAE,KAAAwC,MAAA,CAAKpG,OAAO,YAAS;MAAE,GAAG8F;IAAU,CAAC,CAAC;EACtF,CAAC;EAED,MAAMkB,SAAS,GAAGA,CAAA,KAAM;IACtB,MAAM;MAAEpB,QAAQ,GAAG;IAAG,CAAC,GAAG7E,KAAK;IAC/B,IAAIiB,KAAK,KAAK8E,aAAI,CAACC,KAAK,IAAI,CAACzE,OAAO,CAACsD,QAAQ,IAAIA,QAAQ,CAAC7G,MAAM,KAAK,CAAC,EAAEkD,QAAQ,CAAC6E,aAAI,CAACO,QAAQ,CAAC,CAAC,KAC3F,IAAI,CAACxH,SAAS,IAAI,CAACiH,aAAI,CAACO,QAAQ,EAAEP,aAAI,CAACC,KAAK,CAAC,CAACc,QAAQ,CAAC7F,KAAK,CAAC,EAAEC,QAAQ,CAACmC,SAAS,CAAC;EACzF,CAAC;EAED,MAAMe,aAAa,GAAIF,IAAI,IACzBjH,MAAM,CAACuJ,IAAI,CAACtC,IAAI,IAAI,EAAE,CAAC,CAAC6C,OAAO,CAAExB,KAAK,IAAK;IACzC,IAAIJ,IAAI,CAACC,SAAS,CAACpF,KAAK,CAACuF,KAAK,CAAC,CAAC,KAAKJ,IAAI,CAACC,SAAS,CAAClB,IAAI,CAACqB,KAAK,CAAC,CAAC,EAAE;MAChE9C,kBAAK,CAACC,OAAO,CAACC,eAAK,CAACqE,mBAAmB,EAAE;QAAEzB,KAAK;QAAE0B,aAAa,EAAEjH,KAAK,CAACuF,KAAK,CAAC;QAAEvF,KAAK,EAAEkE,IAAI,CAACqB,KAAK;MAAE,CAAC,CAAC;IACtG;EACF,CAAC,CAAC;EAEJ,MAAM;IAAEV,QAAQ,GAAG,EAAE;IAAEhD,UAAU;IAAE8B,KAAK,GAAG,CAAC,CAAC;IAAEQ;EAAU,CAAC,GAAGnE,KAAK;EAClE,MAAM;IAAE6C,EAAE,EAAEqE,GAAG,GAAG,EAAE;IAAErD;EAAQ,CAAC,GAAGF,KAAK;EACvC,MAAMyC,UAAU,GAAG,IAAAe,sBAAa,EAAC;IAAEzG,IAAI;IAAE,GAAGC;EAAM,CAAC,CAAC;EACpD,MAAM;IAAEyG,KAAK,EAAE;MAAEvE,EAAE,EAAEwE;IAAQ,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG1G,KAAK;EAC7C,MAAMkC,EAAE,GAAGnC,IAAI,KAAKrC,KAAK,GAAIwF,OAAO,IAAIqD,GAAG,CAAClJ,MAAM,KAAK,CAAC,GAAGkJ,GAAG,CAAC,CAAC,CAAC,GAAG7D,SAAS,GAAIgE,OAAO;EAExF,MAAM;IAAEC,cAAc,GAAG,EAAE;IAAE,GAAGC;EAAa,CAAC,GAAGC,SAAK,CAAC3K,GAAG,CAAC,uBAAuB,CAAC;EAEnF,MAAMmF,EAAE,GAAG;IACTyF,MAAM,EAAEH,cAAc,KAAK,aAAa;IACxCrE,MAAM,EAAEjE,MAAM,KAAK,QAAQ;IAC3B0I,MAAM,EAAE,CAACnI,QAAQ,IAAIP,MAAM,KAAK,QAAQ;IACxCF,SAAS,EAAEE,MAAM,KAAK,QAAQ,KAAKO,QAAQ,IAAKT,SAAS,IAAI,CAACmC,KAAM,CAAC;IACrEgB,KAAK,EAAE,CAAAtB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEkC,EAAE,MAAK,QAAQ;IAC7BkB,KAAK,EAAE9D,UAAU,CAAC8D,KAAK,KAAKV;EAC9B,CAAC;EAED,MAAMsE,UAAU,GAAG;IACjB7I,SAAS,EAAEkD,EAAE,CAAClD,SAAS;IACvB8I,SAAS,EAAE,CAAC,CAACxB,UAAU,CAACC,MAAM;IAC9BoB,MAAM,EAAEzF,EAAE,CAACyF,MAAM;IACjB,IAAI,CAACzF,EAAE,CAAClD,SAAS,GAAG,IAAA+I,yBAAgB,EAAC/H,GAAG,CAAC,GAAGuD,SAAS,CAAC;IACtDlE,IAAI,EAAE6C,EAAE,CAAC+B,KAAK,GAAGnE,SAAS,CAACkI,aAAI,CAACC,aAAa,CAAC,GAAGnI,SAAS,CAACkI,aAAI,CAACE,YAAY,CAAC;IAC7EC,OAAO,EAAEhL,MAAM,CAACuJ,IAAI,CAACe,YAAY,CAAC,CAACvJ,MAAM,GAAGuJ,YAAY,GAAGlE,SAAS;IACpE6E,SAAS,EAAErM,KAAK,CAAC0J,KAAK;IACtB1J,KAAK,EAAEmG,EAAE,CAACiB,MAAM,IAAIzD,KAAK,GAAG;MAAE2I,QAAQ,EAAE3I,KAAK;MAAEA;IAAM,CAAC,GAAG6D;EAC3D,CAAC;;EAED;EACArB,EAAE,CAACC,KAAK,IAAIC,OAAO,CAACC,GAAG,CAAC;IAAEwB,KAAK;IAAEkB,QAAQ;IAAEhD;EAAW,CAAC,CAAC;EAExD,oBACEtG,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAA7M,MAAA,CAAAoB,OAAA,CAAA0L,QAAA,QACGrG,EAAE,CAAClD,SAAS,iBACXvD,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAC1M,OAAA,CAAA4M,OAAO,EAAA3K,QAAA;IACAyI,UAAU;IAAE3F,QAAQ;IAAET,KAAK;IACjCuI,QAAQ,EAAErH,QAAS;IACnB7B,QAAQ,EAAE,CAAC2C,EAAE,CAAC+B,KAAK,IAAK/B,EAAE,CAAC+B,KAAK,IAAI,CAACxE,QAAS,GAAGuF,YAAY,GAAGzB;EAAU,GACtE/D,MAAM,CACX,CACF,eAED/D,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAoN,IAAI;IACH1I,GAAG,EAAEA,GAAI;IACT2I,IAAI,EAAC,QAAQ;IACbC,GAAG,EAAE,CAAC1G,EAAE,CAACiB,MAAO;IAChB0F,GAAG,EAAC,QAAQ;IACZC,MAAM,EAAEtJ,MAAM,CAACsJ,MAAO;IACtBV,SAAS,EACP,CAAClG,EAAE,CAAClD,SAAS,GACT,IAAA+J,UAAM,EAAChN,KAAK,CAACuE,MAAM,EAAE4B,EAAE,CAACiB,MAAM,IAAIpH,KAAK,CAACoH,MAAM,EAAEjB,EAAE,CAAC0F,MAAM,IAAI7L,KAAK,CAAC6L,MAAM,EAAEpI,MAAM,CAAC4I,SAAS,CAAC,GAC5F7E;EACL,GAEA,CAAC+C,UAAU,CAACC,MAAM,IAAK5F,QAAQ,IAAIC,IAAI,KAAKtC,KAAM,kBACjD7C,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAA7M,MAAA,CAAAoB,OAAA,CAAA0L,QAAA,qBACE9M,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAClM,SAAA,CAAA4M,KAAK,EAAAnL,QAAA,KACAoL,cAAK,CAAC/C,KAAK;IACfgD,OAAO,EAAE,IAAAC,wBAAe,EAACtF,KAAK,CAAC3D,KAAK,GAAAtB,kBAAA,GAAE0H,UAAU,CAACC,MAAM,cAAA3H,kBAAA,uBAAjBA,kBAAA,CAAmBwK,OAAO,CAAE;IAClEC,KAAK,EAAEvJ,SAAS,CAACkI,aAAI,CAACsB,WAAW,CAAE;IACnCC,QAAQ,EAAE,KAAM;IAChBC,WAAW,EAAE,CAAAlD,UAAU,aAAVA,UAAU,wBAAAzH,mBAAA,GAAVyH,UAAU,CAAEC,MAAM,cAAA1H,mBAAA,uBAAlBA,mBAAA,CAAoB2K,WAAW,KAAI1J,SAAS,CAACkI,aAAI,CAACyB,uBAAuB,CAAE;IACxFC,OAAO,EAAEvI,KAAK,KAAK8E,aAAI,CAACC,KAAM;IAC9ByD,OAAO,EAAEA,CAAA,KAAMvI,QAAQ,CAACD,KAAK,KAAK8E,aAAI,CAACC,KAAK,GAAGD,aAAI,CAACC,KAAK,GAAG3C,SAAS;EAAE,GACnEsE,UAAU,gBAEdpM,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAC3M,WAAA,CAAAiO,MAAM;IACLC,UAAU,EAAE1I,KAAK,KAAK8E,aAAI,CAACC,KAAM;IACjCI,UAAU,EAAEA,UAAU,aAAVA,UAAU,wBAAAxH,mBAAA,GAAVwH,UAAU,CAAEC,MAAM,cAAAzH,mBAAA,uBAAlBA,mBAAA,CAAoBsK,OAAQ;IACxC/J,IAAI,EAAEL,SAAS,GAAGK,IAAI,GAAGkE,SAAU;IACnCrD,KAAK,EAAE2D,KAAK,CAAC3D,KAAM;IACnBZ,QAAQ,EAAE0G,iBAAkB;IAC5BzG,QAAQ,EAAE2C,EAAE,CAAC+B,KAAK,GAAGe,YAAY,GAAGzB,SAAU;IAC9CuF,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,eAAYvF;EAAU,CAC/D,CACI,CAAC,EAEPrB,EAAE,CAACyF,MAAM,iBAAIlM,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAoN,IAAI;IAACN,SAAS,EAAErM,KAAK,CAAC+N;EAAU,CAAE,CACjD,CACH,eAEDrO,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAClM,SAAA,CAAA4M,KAAK,EAAAnL,QAAA,KACAoL,cAAK,CAACzC,QAAQ;IAClB0C,OAAO,EAAEnE,QAAQ,CAAC7G,MAAM,GAAG,IAAA6L,4BAAkB,EAAChF,QAAQ,EAAEjF,SAAS,EAAED,UAAU,CAAC,GAAG0D,SAAU;IAC3FyG,QAAQ,EAAEpJ,IAAI,KAAKrC,KAAK,IAAI,CAAC2D,EAAE,CAACiB,MAAO;IACvCkG,KAAK,EAAEvJ,SAAS,CAACkI,aAAI,CAACiC,UAAU,CAAE;IAClCT,WAAW,EAAE,IAAAO,4BAAkB,EAACxG,SAAS,EAAEzD,SAAS,EAAED,UAAU,CAAE;IAClE6J,OAAO,EAAEvI,KAAK,KAAK8E,aAAI,CAACO,QAAS;IACjCmD,OAAO,EAAEA,CAAA,KAAMvI,QAAQ,CAACD,KAAK,KAAK8E,aAAI,CAACO,QAAQ,GAAGP,aAAI,CAACO,QAAQ,GAAGjD,SAAS,CAAE;IAC7EuF,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,uBAAoBvF;EAAU,GAClEsE,UAAU,gBAEdpM,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAC3M,WAAA,CAAAuO,QAAQ,EAAArM,QAAA,KACH,IAAAsM,2BAAkB,EAAC7D,UAAU,CAACvB,QAAQ,EAAEhC,EAAE,EAAEhB,UAAU,EAAEnB,IAAI,EAAES,cAAc,EAAEiF,UAAU,CAACpC,QAAQ,CAAC;IACtGnB,EAAE,EAAEA,EAAG;IACP3C,QAAQ,EAAEA,QAAQ,IAAIC,YAAa;IACnCI,MAAM,EAAEA,MAAO;IACf2J,YAAY,EAAE,CAAE;IAChB/K,IAAI,EAAEL,SAAS,GAAGK,IAAI,GAAGkE,SAAU;IACnC8G,GAAG,EAAExC,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEwC,GAAI;IACrB1J,QAAQ,EAAEA,QAAS;IACnBU,cAAc,EAAEA,cAAe;IAC/BnB,KAAK,EAAE6E,QAAS;IAChBzF,QAAQ,EAAEA,CAACgL,YAAY,EAAEzF,KAAK,KAAK;MACjCW,YAAY,CAACS,aAAI,CAACO,QAAQ,EAAE8D,YAAY,EAAEzF,KAAK,CAAC;MAChD,IAAIyF,YAAY,CAACpM,MAAM,KAAK,CAAC,IAAI,CAACgE,EAAE,CAAC+B,KAAK,EAAE;QAC1C/C,QAAQ,CAAC;UAAE,GAAGD,KAAK;UAAE8D,QAAQ,EAAExB;QAAU,CAAC,CAAC;QAC3C4C,SAAS,CAAC,CAAC;MACb;IACF,CAAE;IACFoE,OAAO,EAAGxF,QAAQ,IAAK7D,QAAQ,CAAC;MAAE,GAAGD,KAAK;MAAE8D;IAAS,CAAC,CAAE;IACxDxF,QAAQ,EAAE2C,EAAE,CAAC+B,KAAK,GAAGe,YAAY,GAAGzB,SAAU;IAC9CiH,OAAO,EAAEA,CAAA,KAAMtJ,QAAQ,CAAC;MAAE,GAAGD,KAAK;MAAE8D,QAAQ,EAAExB;IAAU,CAAC,CAAE;IAC3DuF,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,iBAAcvF;EAAU,EACjE,CACI,CAAC,EAEPrB,EAAE,CAACyF,MAAM,iBAAIlM,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAoN,IAAI;IAACN,SAAS,EAAErM,KAAK,CAAC+N;EAAU,CAAE,CAAC,eAElDrO,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAClM,SAAA,CAAAqO,eAAe,EAAA5M,QAAA;IACdyI,UAAU,EAAE,IAAAoE,gCAAuB,EAAC;MAClC,GAAGpE,UAAU;MACbC,MAAM,GAAAxH,mBAAA,GAAEuH,UAAU,CAACC,MAAM,cAAAxH,mBAAA,uBAAjBA,mBAAA,CAAmBqK,OAAO;MAClCvF,KAAK,EAAEA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE3D;IAChB,CAAC,CAAE;IACHyK,MAAM,EAAE,IAAAC,kBAAS,EAACtE,UAAU,CAACuE,YAAY,EAAEhH,KAAK,CAAC3D,KAAK,CAAE;IACxD4K,QAAQ,EAAExE,UAAU,CAACwE,QAAS;IAC9BzL,IAAI,EAAEL,SAAS,GAAGK,IAAI,GAAGkE,SAAU;IACnCrD,KAAK,EAAE6B,UAAW;IAClB2H,OAAO,EAAEvI,KAAK,KAAK8E,aAAI,CAAC8E,UAAW;IACnCC,WAAW,EAAErJ,OAAQ;IACrBrC,QAAQ,EAAEA,CAACyC,UAAU,EAAE8C,KAAK,KAAKW,YAAY,CAACS,aAAI,CAAC8E,UAAU,EAAEhJ,UAAU,EAAE8C,KAAK,CAAE;IAClF0F,OAAO,EAAGxI,UAAU,IAAK;MACvB,IAAI,CAACtC,QAAQ,IAAI0B,KAAK,KAAK8E,aAAI,CAAC8E,UAAU,EAAE3J,QAAQ,CAAC6E,aAAI,CAAC8E,UAAU,CAAC;MACrE7J,QAAQ,CAAC;QAAE,GAAGD,KAAK;QAAEc;MAAW,CAAC,CAAC;IACpC,CAAE;IACF4H,OAAO,EAAEA,CAAA,KAAMvI,QAAQ,CAACD,KAAK,KAAK8E,aAAI,CAAC8E,UAAU,GAAG9E,aAAI,CAAC8E,UAAU,GAAGxH,SAAS,CAAE;IACjFhE,QAAQ,EAAE2C,EAAE,CAAC+B,KAAK,GAAGe,YAAY,GAAGvF,QAAQ,IAAIyC,EAAE,CAAClD,SAAS,GAAG,MAAMoC,QAAQ,CAAC,CAAC,GAAGmC,SAAU;IAC5FiH,OAAO,EAAEA,CAAA,KAAMtJ,QAAQ,CAAC;MAAE,GAAGD,KAAK;MAAEc,UAAU,EAAEwB;IAAU,CAAC,CAAE;IAC7D0H,SAAS,EAAEA,CAAA,KAAM;MACf,IAAI,CAACxL,QAAQ,IAAI0B,KAAK,KAAK8E,aAAI,CAAC8E,UAAU,EAAE3J,QAAQ,CAAC6E,aAAI,CAAC8E,UAAU,CAAC;IACvE,CAAE;IACFjC,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,mBAAgBvF;EAAU,GAC9DsE,UAAU,CACf,CAAC,EAED3F,EAAE,CAACyF,MAAM,iBAAIlM,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAoN,IAAI;IAACN,SAAS,EAAErM,KAAK,CAAC+N;EAAU,CAAE,CAAC,eAElDrO,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAClM,SAAA,CAAA8O,cAAc,EAAArN,QAAA;IACbqC,KAAK,EAAEmE,SAAU;IACjBqF,OAAO,EAAEvI,KAAK,KAAK8E,aAAI,CAACkF,SAAU;IAClC7L,QAAQ,EAAEA,CAAC+E,SAAS,EAAEQ,KAAK,KAAKW,YAAY,CAACS,aAAI,CAACkF,SAAS,EAAE9G,SAAS,EAAEQ,KAAK,CAAE;IAC/EuG,OAAO,EAAE,CAAClJ,EAAE,CAAClD,SAAS,GAAG,MAAMoC,QAAQ,CAAC6E,aAAI,CAACkF,SAAS,CAAC,GAAG5H,SAAU;IACpE8H,OAAO,EAAE,CAACnJ,EAAE,CAAClD,SAAS,GAAG,MAAMoC,QAAQ,CAACmC,SAAS,CAAC,GAAGA,SAAU;IAC/DoG,OAAO,EACLlK,QAAQ,IAAIyC,EAAE,CAAClD,SAAS,GAAG,MAAMoC,QAAQ,CAACD,KAAK,KAAK8E,aAAI,CAACkF,SAAS,GAAGlF,aAAI,CAACkF,SAAS,GAAG5H,SAAS,CAAC,GAAGA,SACpG;IACDhE,QAAQ,EAAEE,QAAQ,IAAIyC,EAAE,CAAClD,SAAS,GAAIkD,EAAE,CAAC+B,KAAK,GAAGe,YAAY,GAAG,MAAM5D,QAAQ,CAAC,CAAC,GAAImC,SAAU;IAC9FuF,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,kBAAevF;EAAU,GAC7DsE,UAAU,CACf,CAAC,EAED,CAAC3F,EAAE,CAAClD,SAAS,GACZ2B,QAAQ,gBACNlF,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAClM,SAAA,CAAAkP,QAAQ;IAACC,KAAK;IAACC,MAAM;IAACC,KAAK,EAAE;EAAE,CAAE,CAAC,gBAEnChQ,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAoQ,MAAM;IACLC,QAAQ,EAAEhL,QAAS;IACnB4K,KAAK;IACLK,QAAQ,EAAE,CAAE;IACZjD,IAAI,EAAC,eAAe;IACpBkD,IAAI,EAAE3J,EAAE,CAACiB,MAAO;IAChBwG,OAAO,EAAE3E,YAAa;IACtBoD,SAAS,EAAE,IAAAW,UAAM,EAAChN,KAAK,CAACyP,MAAM,EAAEvM,IAAI,IAAI,CAACiD,EAAE,CAACiB,MAAM,IAAIpH,KAAK,CAAC+P,QAAQ,CAAE;IACtEhD,MAAM,EAAEtJ,MAAM,CAACsJ,MAAM,MAAAvD,MAAA,CAAM/F,MAAM,CAACsJ,MAAM,eAAYvF;EAAU,GAE7DtE,IAAI,IAAI,CAACiD,EAAE,CAACiB,MAAM,gBAAG1H,MAAA,CAAAoB,OAAA,CAAAyL,aAAA,CAAChN,GAAA,CAAAyQ,IAAI;IAAC7L,KAAK,EAAE8L,cAAI,CAACC;EAAO,CAAE,CAAC,GAAG5M,IAAI,IAAIS,SAAS,CAACkI,aAAI,CAACC,aAAa,CACnF,CACT,GACC,IACA,CACN,CAAC;AAEP,CAAC;AAACiE,OAAA,CAAAxN,MAAA,GAAAA,MAAA;AAEFA,MAAM,CAACyN,WAAW,GAAG,mBAAmB;AAExCzN,MAAM,CAAC0N,SAAS,GAAG;EACjBpN,SAAS,EAAEqN,kBAAS,CAACC,IAAI;EACzBrN,IAAI,EAAEoN,kBAAS,CAACC,IAAI;EACpBpN,MAAM,EAAEmN,kBAAS,CAACE,KAAK,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EAC7CpN,OAAO,EAAEkN,kBAAS,CAACG,MAAM;EACzBpN,OAAO,EAAEiN,kBAAS,CAACC,IAAI;EACvBjN,IAAI,EAAEgN,kBAAS,CAACG,MAAM;EACtBlN,QAAQ,EAAE+M,kBAAS,CAACI,IAAI;EACxBlN,QAAQ,EAAE8M,kBAAS,CAACI;AACtB,CAAC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.EVENT = void 0;
7
7
  const EVENT = exports.EVENT = {
8
8
  FINDER_CHANGE: 'finderChange',
9
+ FINDER_LOADED: 'finderLoaded',
9
10
  SET_STORE: 'setStore'
10
11
  };
11
12
  //# sourceMappingURL=EventManager.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventManager.constants.js","names":["EVENT","exports","FINDER_CHANGE","SET_STORE"],"sources":["../../../src/contexts/EventManager/EventManager.constants.js"],"sourcesContent":["const EVENT = {\n FINDER_CHANGE: 'finderChange',\n SET_STORE: 'setStore',\n};\n\nexport { EVENT };\n"],"mappings":";;;;;;AAAA,MAAMA,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG;EACZE,aAAa,EAAE,cAAc;EAC7BC,SAAS,EAAE;AACb,CAAC"}
1
+ {"version":3,"file":"EventManager.constants.js","names":["EVENT","exports","FINDER_CHANGE","FINDER_LOADED","SET_STORE"],"sources":["../../../src/contexts/EventManager/EventManager.constants.js"],"sourcesContent":["const EVENT = {\n FINDER_CHANGE: 'finderChange',\n FINDER_LOADED: 'finderLoaded',\n SET_STORE: 'setStore',\n};\n\nexport { EVENT };\n"],"mappings":";;;;;;AAAA,MAAMA,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG;EACZE,aAAa,EAAE,cAAc;EAC7BC,aAAa,EAAE,cAAc;EAC7BC,SAAS,EAAE;AACb,CAAC"}
@@ -17,6 +17,11 @@ const EventManager = () => {
17
17
  } = {},
18
18
  set
19
19
  } = (0, _dataSources.useStore)();
20
+ (0, _react.useEffect)(() => {
21
+ if (!finder) return;
22
+ _dataSources.Event.publish(_EventManager.EVENT.FINDER_LOADED, finder);
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, []);
20
25
  (0, _react.useEffect)(() => {
21
26
  _dataSources.Event.subscribe(_helpers.EVENT.FINDER_FIELD_CHANGE, handleFinderFieldChange);
22
27
  _dataSources.Event.subscribe(_EventManager.EVENT.SET_STORE, handleSetStore);
@@ -1 +1 @@
1
- {"version":3,"file":"EventManager.js","names":["_dataSources","require","_react","_EventManager","_helpers","EventManager","value","finder","origin","tags","set","useStore","useEffect","Event","subscribe","COMPONENTS_EVENT","FINDER_FIELD_CHANGE","handleFinderFieldChange","EVENT","SET_STORE","handleSetStore","unsubscribe","publish","FINDER_CHANGE","_tags$options","chainSelectorValue","placeId","calendar","hsri","commissionCode","occupation","promocode","arguments","length","undefined","next","place","options","find","exports"],"sources":["../../../src/contexts/EventManager/EventManager.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useEffect } from 'react';\n\nimport { EVENT } from './EventManager.constants';\nimport { EVENT as COMPONENTS_EVENT } from '../../components/helpers';\n\nconst EventManager = () => {\n const { value: { finder = {}, origin = {}, tags = {} } = {}, set } = useStore();\n\n useEffect(() => {\n Event.subscribe(COMPONENTS_EVENT.FINDER_FIELD_CHANGE, handleFinderFieldChange);\n Event.subscribe(EVENT.SET_STORE, handleSetStore);\n\n return () => {\n Event.unsubscribe(COMPONENTS_EVENT.FINDER_FIELD_CHANGE, handleFinderFieldChange);\n Event.unsubscribe(EVENT.SET_STORE, handleSetStore);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [finder, origin]);\n\n const handleFinderFieldChange = (value) => Event.publish(EVENT.FINDER_CHANGE, value);\n\n const handleSetStore = ({\n chainSelectorValue: placeId,\n calendar,\n hsri: commissionCode,\n occupation,\n promocode,\n } = {}) => {\n let next = {};\n\n if (commissionCode) next.origin = { ...origin, commissionCode };\n if (calendar?.length && calendar?.length === 2) next.finder = { calendar };\n if (occupation?.length) next.finder = { ...next.finder, occupation };\n if (promocode !== undefined && promocode !== null) next.finder = { ...next.finder, promocode };\n if (placeId) next.finder = { ...next.finder, place: tags?.options?.find(({ value } = {}) => value === placeId) };\n\n set(next);\n };\n\n return null;\n};\n\nexport { EventManager };\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,MAAMI,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAM;IAAEC,KAAK,EAAE;MAAEC,MAAM,GAAG,CAAC,CAAC;MAAEC,MAAM,GAAG,CAAC,CAAC;MAAEC,IAAI,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC,CAAC;IAAEC;EAAI,CAAC,GAAG,IAAAC,qBAAQ,EAAC,CAAC;EAE/E,IAAAC,gBAAS,EAAC,MAAM;IACdC,kBAAK,CAACC,SAAS,CAACC,cAAgB,CAACC,mBAAmB,EAAEC,uBAAuB,CAAC;IAC9EJ,kBAAK,CAACC,SAAS,CAACI,mBAAK,CAACC,SAAS,EAAEC,cAAc,CAAC;IAEhD,OAAO,MAAM;MACXP,kBAAK,CAACQ,WAAW,CAACN,cAAgB,CAACC,mBAAmB,EAAEC,uBAAuB,CAAC;MAChFJ,kBAAK,CAACQ,WAAW,CAACH,mBAAK,CAACC,SAAS,EAAEC,cAAc,CAAC;IACpD,CAAC;IACD;EACF,CAAC,EAAE,CAACb,MAAM,EAAEC,MAAM,CAAC,CAAC;EAEpB,MAAMS,uBAAuB,GAAIX,KAAK,IAAKO,kBAAK,CAACS,OAAO,CAACJ,mBAAK,CAACK,aAAa,EAAEjB,KAAK,CAAC;EAEpF,MAAMc,cAAc,GAAG,SAAAA,CAAA,EAMZ;IAAA,IAAAI,aAAA;IAAA,IANa;MACtBC,kBAAkB,EAAEC,OAAO;MAC3BC,QAAQ;MACRC,IAAI,EAAEC,cAAc;MACpBC,UAAU;MACVC;IACF,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACJ,IAAIG,IAAI,GAAG,CAAC,CAAC;IAEb,IAAIN,cAAc,EAAEM,IAAI,CAAC3B,MAAM,GAAG;MAAE,GAAGA,MAAM;MAAEqB;IAAe,CAAC;IAC/D,IAAIF,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEM,MAAM,IAAI,CAAAN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEM,MAAM,MAAK,CAAC,EAAEE,IAAI,CAAC5B,MAAM,GAAG;MAAEoB;IAAS,CAAC;IAC1E,IAAIG,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEG,MAAM,EAAEE,IAAI,CAAC5B,MAAM,GAAG;MAAE,GAAG4B,IAAI,CAAC5B,MAAM;MAAEuB;IAAW,CAAC;IACpE,IAAIC,SAAS,KAAKG,SAAS,IAAIH,SAAS,KAAK,IAAI,EAAEI,IAAI,CAAC5B,MAAM,GAAG;MAAE,GAAG4B,IAAI,CAAC5B,MAAM;MAAEwB;IAAU,CAAC;IAC9F,IAAIL,OAAO,EAAES,IAAI,CAAC5B,MAAM,GAAG;MAAE,GAAG4B,IAAI,CAAC5B,MAAM;MAAE6B,KAAK,EAAE3B,IAAI,aAAJA,IAAI,wBAAAe,aAAA,GAAJf,IAAI,CAAE4B,OAAO,cAAAb,aAAA,uBAAbA,aAAA,CAAec,IAAI,CAAC;QAAA,IAAC;UAAEhC;QAAM,CAAC,GAAA0B,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;QAAA,OAAK1B,KAAK,KAAKoB,OAAO;MAAA;IAAE,CAAC;IAEhHhB,GAAG,CAACyB,IAAI,CAAC;EACX,CAAC;EAED,OAAO,IAAI;AACb,CAAC;AAACI,OAAA,CAAAlC,YAAA,GAAAA,YAAA"}
1
+ {"version":3,"file":"EventManager.js","names":["_dataSources","require","_react","_EventManager","_helpers","EventManager","value","finder","origin","tags","set","useStore","useEffect","Event","publish","EVENT","FINDER_LOADED","subscribe","COMPONENTS_EVENT","FINDER_FIELD_CHANGE","handleFinderFieldChange","SET_STORE","handleSetStore","unsubscribe","FINDER_CHANGE","_tags$options","chainSelectorValue","placeId","calendar","hsri","commissionCode","occupation","promocode","arguments","length","undefined","next","place","options","find","exports"],"sources":["../../../src/contexts/EventManager/EventManager.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useEffect } from 'react';\n\nimport { EVENT } from './EventManager.constants';\nimport { EVENT as COMPONENTS_EVENT } from '../../components/helpers';\n\nconst EventManager = () => {\n const { value: { finder = {}, origin = {}, tags = {} } = {}, set } = useStore();\n\n useEffect(() => {\n if (!finder) return;\n\n Event.publish(EVENT.FINDER_LOADED, finder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n Event.subscribe(COMPONENTS_EVENT.FINDER_FIELD_CHANGE, handleFinderFieldChange);\n Event.subscribe(EVENT.SET_STORE, handleSetStore);\n\n return () => {\n Event.unsubscribe(COMPONENTS_EVENT.FINDER_FIELD_CHANGE, handleFinderFieldChange);\n Event.unsubscribe(EVENT.SET_STORE, handleSetStore);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [finder, origin]);\n\n const handleFinderFieldChange = (value) => Event.publish(EVENT.FINDER_CHANGE, value);\n\n const handleSetStore = ({\n chainSelectorValue: placeId,\n calendar,\n hsri: commissionCode,\n occupation,\n promocode,\n } = {}) => {\n let next = {};\n\n if (commissionCode) next.origin = { ...origin, commissionCode };\n if (calendar?.length && calendar?.length === 2) next.finder = { calendar };\n if (occupation?.length) next.finder = { ...next.finder, occupation };\n if (promocode !== undefined && promocode !== null) next.finder = { ...next.finder, promocode };\n if (placeId) next.finder = { ...next.finder, place: tags?.options?.find(({ value } = {}) => value === placeId) };\n\n set(next);\n };\n\n return null;\n};\n\nexport { EventManager };\n"],"mappings":"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"}
package/build/index.js CHANGED
@@ -31,6 +31,7 @@ window.Mirai = {
31
31
  version: _package.version
32
32
  };
33
33
  window.Mirai.core = async () => {
34
+ _dataSources.Event.publish(_Core2.EVENT.CORE_EVENTS_READY);
34
35
  const isProduction = process.env.NODE_ENV === 'production';
35
36
  const isDevelopment = process.env.NODE_ENV === 'development';
36
37
  const isPreproduction = process.env.NODE_ENV === 'preproduction';
@@ -62,7 +63,6 @@ window.Mirai.core = async () => {
62
63
 
63
64
  // 5. Find components
64
65
  const components = (0, _helpers.findComponents)();
65
- if (!components.length) return;
66
66
  window.Mirai = {
67
67
  ...window.Mirai,
68
68
  components
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_dataSources","require","_services","_react","_interopRequireDefault","_reactDom","_contexts","_Core","_Core2","_Core3","_helpers","_package","obj","__esModule","default","window","Mirai","components","undefined","config","environment","process","env","NODE_ENV","Event","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","dictionary","SERVICE_DICTIONARY","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","isProduction","isDevelopment","isPreproduction","log","concat","name","console","Sentry","SENTRY","loadSentry","urlParams","fetchUrlParams","location","search","cookies","fetchCookies","Object","values","COOKIE","session","fetchSession","setUser","loadEnvironment","instance","findInstance","findComponents","length","theme","localeInstance","getLocale","IS_PLAYWRIGHT","ReactDOM","render","createElement","StrictMode","Error","StoreProvider","value","id","skeleton","type","Core","el","fetchConfig","language","checkSession","store","consolidateStore","ServiceFeatures","initialize","ServiceDictionary","cache","locale","get","MetricsProvider","token","METRICS","PerformanceManager","EventManager","ready","setTimeout","publish","EVENT","CORE_READY","error","_window$Mirai$Sentry","captureException","filter","component","arguments","includes","addEventListener","event","persisted"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { Event, MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport { ServiceDictionary, ServiceFeatures } from '@mirai/services';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { EventManager, PerformanceManager } from './contexts';\nimport { Core } from './Core';\nimport { COOKIE, EVENT } from './Core.constants';\nimport { Error } from './Core.Error';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n getLocale,\n loadEnvironment,\n loadSentry,\n theme,\n} from './helpers';\nimport { name, version } from '../package.json';\nimport './helpers/polyfills';\n\nwindow.Mirai = {\n ...window.Mirai,\n components: undefined,\n config: undefined,\n environment: process.env.NODE_ENV,\n Event,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n dictionary: process.env.SERVICE_DICTIONARY,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n const isPreproduction = process.env.NODE_ENV === 'preproduction';\n const log = `${isProduction ? '🟢' : isPreproduction ? '🟡' : isDevelopment ? '🔴' : '⚫️'} ${name} v${version}`;\n\n console.log(log, 'starting...');\n\n // 1. Initialize sentry\n let Sentry = window.Mirai.Sentry;\n if (!Sentry && process.env.SENTRY) {\n Sentry = loadSentry(process.env.SENTRY, version);\n window.Mirai.Sentry = Sentry;\n }\n\n // 2. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search);\n const cookies = fetchCookies(Object.values(COOKIE));\n let session = fetchSession(urlParams);\n\n if (session && Sentry) Sentry.setUser(session);\n\n // 3. Analyze environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 4. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 5. Find components\n const components = findComponents();\n if (!components.length) return;\n window.Mirai = { ...window.Mirai, components };\n\n // 6. Theming\n theme(urlParams);\n\n const localeInstance = getLocale(instance, urlParams);\n\n // 7. 1st render\n window &&\n !window.IS_PLAYWRIGHT &&\n ReactDOM.render(\n <React.StrictMode>\n <Error>\n <StoreProvider\n value={{ id: instance.id, session, skeleton: true, type: instance.type, urlParams, ...localeInstance }}\n >\n <Core {...{ components }} />\n </StoreProvider>\n </Error>\n </React.StrictMode>,\n instance.el,\n );\n\n // 8. Analyze id to fetch its config\n const config = await fetchConfig({ ...instance, language: localeInstance.language });\n if (!config) return;\n window.Mirai.config = config;\n\n // 9. Check session\n if (session && !(await checkSession(instance.id, session, config))) session = undefined;\n\n // 10. Consolidate store\n const store = await consolidateStore({ components, config, cookies, instance, session, urlParams });\n\n // 11. Initialize features\n await ServiceFeatures.initialize();\n\n // 12. Initialize dictionary\n if (!ServiceDictionary.cache(store.locale)) await ServiceDictionary.get(store.locale, false);\n\n // 13. Render components\n ReactDOM.render(\n <React.StrictMode>\n <Error>\n <MetricsProvider token={isProduction ? process.env.METRICS : undefined}>\n <StoreProvider value={store}>\n <PerformanceManager />\n <Core {...{ components }} />\n <EventManager />\n </StoreProvider>\n </MetricsProvider>\n </Error>\n </React.StrictMode>,\n instance.el,\n );\n\n // 14. Up & Ready\n window.Mirai.ready = true;\n setTimeout(() => Event.publish(EVENT.CORE_READY, window.Mirai), 0);\n console.log(log, '[READY]', window.Mirai);\n};\n\n(async () => {\n try {\n await window.Mirai.core();\n } catch (error) {\n window.Mirai.Sentry?.captureException(error);\n\n throw error;\n }\n\n const { components = [], ready } = window.Mirai;\n\n if (ready && components.filter(({ component } = {}) => ['booking', 'checkout', 'rates'].includes(component).length)) {\n window.addEventListener('pageshow', (event) => event.persisted && window.Mirai.core());\n }\n})();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_dataSources","require","_services","_react","_interopRequireDefault","_reactDom","_contexts","_Core","_Core2","_Core3","_helpers","_package","obj","__esModule","default","window","Mirai","components","undefined","config","environment","process","env","NODE_ENV","Event","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","dictionary","SERVICE_DICTIONARY","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","publish","EVENT","CORE_EVENTS_READY","isProduction","isDevelopment","isPreproduction","log","concat","name","console","Sentry","SENTRY","loadSentry","urlParams","fetchUrlParams","location","search","cookies","fetchCookies","Object","values","COOKIE","session","fetchSession","setUser","loadEnvironment","instance","findInstance","findComponents","theme","localeInstance","getLocale","IS_PLAYWRIGHT","ReactDOM","render","createElement","StrictMode","Error","StoreProvider","value","id","skeleton","type","Core","el","fetchConfig","language","checkSession","store","consolidateStore","ServiceFeatures","initialize","ServiceDictionary","cache","locale","get","MetricsProvider","token","METRICS","PerformanceManager","EventManager","ready","setTimeout","CORE_READY","error","_window$Mirai$Sentry","captureException","filter","component","arguments","length","includes","addEventListener","event","persisted"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { Event, MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport { ServiceDictionary, ServiceFeatures } from '@mirai/services';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { EventManager, PerformanceManager } from './contexts';\nimport { Core } from './Core';\nimport { COOKIE, EVENT } from './Core.constants';\nimport { Error } from './Core.Error';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n getLocale,\n loadEnvironment,\n loadSentry,\n theme,\n} from './helpers';\nimport { name, version } from '../package.json';\nimport './helpers/polyfills';\n\nwindow.Mirai = {\n ...window.Mirai,\n components: undefined,\n config: undefined,\n environment: process.env.NODE_ENV,\n Event,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n dictionary: process.env.SERVICE_DICTIONARY,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n Event.publish(EVENT.CORE_EVENTS_READY);\n\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n const isPreproduction = process.env.NODE_ENV === 'preproduction';\n const log = `${isProduction ? '🟢' : isPreproduction ? '🟡' : isDevelopment ? '🔴' : '⚫️'} ${name} v${version}`;\n\n console.log(log, 'starting...');\n\n // 1. Initialize sentry\n let Sentry = window.Mirai.Sentry;\n if (!Sentry && process.env.SENTRY) {\n Sentry = loadSentry(process.env.SENTRY, version);\n window.Mirai.Sentry = Sentry;\n }\n\n // 2. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search);\n const cookies = fetchCookies(Object.values(COOKIE));\n let session = fetchSession(urlParams);\n\n if (session && Sentry) Sentry.setUser(session);\n\n // 3. Analyze environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 4. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 5. Find components\n const components = findComponents();\n\n window.Mirai = { ...window.Mirai, components };\n\n // 6. Theming\n theme(urlParams);\n\n const localeInstance = getLocale(instance, urlParams);\n\n // 7. 1st render\n window &&\n !window.IS_PLAYWRIGHT &&\n ReactDOM.render(\n <React.StrictMode>\n <Error>\n <StoreProvider\n value={{ id: instance.id, session, skeleton: true, type: instance.type, urlParams, ...localeInstance }}\n >\n <Core {...{ components }} />\n </StoreProvider>\n </Error>\n </React.StrictMode>,\n instance.el,\n );\n\n // 8. Analyze id to fetch its config\n const config = await fetchConfig({ ...instance, language: localeInstance.language });\n if (!config) return;\n window.Mirai.config = config;\n\n // 9. Check session\n if (session && !(await checkSession(instance.id, session, config))) session = undefined;\n\n // 10. Consolidate store\n const store = await consolidateStore({ components, config, cookies, instance, session, urlParams });\n\n // 11. Initialize features\n await ServiceFeatures.initialize();\n\n // 12. Initialize dictionary\n if (!ServiceDictionary.cache(store.locale)) await ServiceDictionary.get(store.locale, false);\n\n // 13. Render components\n ReactDOM.render(\n <React.StrictMode>\n <Error>\n <MetricsProvider token={isProduction ? process.env.METRICS : undefined}>\n <StoreProvider value={store}>\n <PerformanceManager />\n <Core {...{ components }} />\n <EventManager />\n </StoreProvider>\n </MetricsProvider>\n </Error>\n </React.StrictMode>,\n instance.el,\n );\n\n // 14. Up & Ready\n window.Mirai.ready = true;\n setTimeout(() => Event.publish(EVENT.CORE_READY, window.Mirai), 0);\n console.log(log, '[READY]', window.Mirai);\n};\n\n(async () => {\n try {\n await window.Mirai.core();\n } catch (error) {\n window.Mirai.Sentry?.captureException(error);\n\n throw error;\n }\n\n const { components = [], ready } = window.Mirai;\n\n if (ready && components.filter(({ component } = {}) => ['booking', 'checkout', 'rates'].includes(component).length)) {\n window.addEventListener('pageshow', (event) => event.persisted && window.Mirai.core());\n }\n})();\n"],"mappings":";;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AAEA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AAcA,IAAAU,QAAA,GAAAV,OAAA;AACAA,OAAA;AAA6B,SAAAG,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAzB7B;;AA2BAG,MAAM,CAACC,KAAK,GAAG;EACb,GAAGD,MAAM,CAACC,KAAK;EACfC,UAAU,EAAEC,SAAS;EACrBC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ;EACjCC,KAAK,EAALA,kBAAK;EACLC,QAAQ,EAAE;IACRC,OAAO,EAAEL,OAAO,CAACC,GAAG,CAACK,eAAe;IACpCC,IAAI,EAAEP,OAAO,CAACC,GAAG,CAACO,YAAY;IAC9BC,UAAU,EAAET,OAAO,CAACC,GAAG,CAACS,kBAAkB;IAC1CC,MAAM,EAAEX,OAAO,CAACC,GAAG,CAACW,cAAc;IAClCC,MAAM,EAAEb,OAAO,CAACC,GAAG,CAACa,cAAc;IAClCC,IAAI,EAAEf,OAAO,CAACC,GAAG,CAACe;EACpB,CAAC;EACDC,OAAO,EAAPA;AACF,CAAC;AAEDvB,MAAM,CAACC,KAAK,CAACuB,IAAI,GAAG,YAAY;EAC9Bf,kBAAK,CAACgB,OAAO,CAACC,YAAK,CAACC,iBAAiB,CAAC;EAEtC,MAAMC,YAAY,GAAGtB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;EAC1D,MAAMqB,aAAa,GAAGvB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa;EAC5D,MAAMsB,eAAe,GAAGxB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,eAAe;EAChE,MAAMuB,GAAG,MAAAC,MAAA,CAAMJ,YAAY,GAAG,IAAI,GAAGE,eAAe,GAAG,IAAI,GAAGD,aAAa,GAAG,IAAI,GAAG,IAAI,OAAAG,MAAA,CAAIC,aAAI,QAAAD,MAAA,CAAKT,gBAAO,CAAE;EAE/GW,OAAO,CAACH,GAAG,CAACA,GAAG,EAAE,aAAa,CAAC;;EAE/B;EACA,IAAII,MAAM,GAAGnC,MAAM,CAACC,KAAK,CAACkC,MAAM;EAChC,IAAI,CAACA,MAAM,IAAI7B,OAAO,CAACC,GAAG,CAAC6B,MAAM,EAAE;IACjCD,MAAM,GAAG,IAAAE,mBAAU,EAAC/B,OAAO,CAACC,GAAG,CAAC6B,MAAM,EAAEb,gBAAO,CAAC;IAChDvB,MAAM,CAACC,KAAK,CAACkC,MAAM,GAAGA,MAAM;EAC9B;;EAEA;EACA,MAAMG,SAAS,GAAG,IAAAC,uBAAc,EAACC,QAAQ,CAACC,MAAM,CAAC;EACjD,MAAMC,OAAO,GAAG,IAAAC,qBAAY,EAACC,MAAM,CAACC,MAAM,CAACC,aAAM,CAAC,CAAC;EACnD,IAAIC,OAAO,GAAG,IAAAC,qBAAY,EAACV,SAAS,CAAC;EAErC,IAAIS,OAAO,IAAIZ,MAAM,EAAEA,MAAM,CAACc,OAAO,CAACF,OAAO,CAAC;;EAE9C;EACA,MAAM1C,WAAW,GAAGiC,SAAS,CAAC/B,GAAG,IAAIqB,YAAY,GAAG,IAAAsB,wBAAe,EAACZ,SAAS,CAAC/B,GAAG,CAAC,GAAGJ,SAAS;EAC9F,IAAIE,WAAW,EAAE;;EAEjB;EACA,MAAM8C,QAAQ,GAAG,IAAAC,qBAAY,EAAC;IAAEd;EAAU,CAAC,CAAC;EAC5C,IAAI,CAACa,QAAQ,EAAE;;EAEf;EACA,MAAMjD,UAAU,GAAG,IAAAmD,uBAAc,EAAC,CAAC;EAEnCrD,MAAM,CAACC,KAAK,GAAG;IAAE,GAAGD,MAAM,CAACC,KAAK;IAAEC;EAAW,CAAC;;EAE9C;EACA,IAAAoD,cAAK,EAAChB,SAAS,CAAC;EAEhB,MAAMiB,cAAc,GAAG,IAAAC,kBAAS,EAACL,QAAQ,EAAEb,SAAS,CAAC;;EAErD;EACAtC,MAAM,IACJ,CAACA,MAAM,CAACyD,aAAa,IACrBC,iBAAQ,CAACC,MAAM,eACbvE,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACxE,MAAA,CAAAW,OAAK,CAAC8D,UAAU,qBACfzE,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAAClE,MAAA,CAAAoE,KAAK,qBACJ1E,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAAC3E,YAAA,CAAA8E,aAAa;IACZC,KAAK,EAAE;MAAEC,EAAE,EAAEd,QAAQ,CAACc,EAAE;MAAElB,OAAO;MAAEmB,QAAQ,EAAE,IAAI;MAAEC,IAAI,EAAEhB,QAAQ,CAACgB,IAAI;MAAE7B,SAAS;MAAE,GAAGiB;IAAe;EAAE,gBAEvGnE,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACpE,KAAA,CAAA4E,IAAI;IAAOlE;EAAU,CAAK,CACd,CACV,CACS,CAAC,EACnBiD,QAAQ,CAACkB,EACX,CAAC;;EAEH;EACA,MAAMjE,MAAM,GAAG,MAAM,IAAAkE,oBAAW,EAAC;IAAE,GAAGnB,QAAQ;IAAEoB,QAAQ,EAAEhB,cAAc,CAACgB;EAAS,CAAC,CAAC;EACpF,IAAI,CAACnE,MAAM,EAAE;EACbJ,MAAM,CAACC,KAAK,CAACG,MAAM,GAAGA,MAAM;;EAE5B;EACA,IAAI2C,OAAO,IAAI,EAAE,MAAM,IAAAyB,qBAAY,EAACrB,QAAQ,CAACc,EAAE,EAAElB,OAAO,EAAE3C,MAAM,CAAC,CAAC,EAAE2C,OAAO,GAAG5C,SAAS;;EAEvF;EACA,MAAMsE,KAAK,GAAG,MAAM,IAAAC,yBAAgB,EAAC;IAAExE,UAAU;IAAEE,MAAM;IAAEsC,OAAO;IAAES,QAAQ;IAAEJ,OAAO;IAAET;EAAU,CAAC,CAAC;;EAEnG;EACA,MAAMqC,yBAAe,CAACC,UAAU,CAAC,CAAC;;EAElC;EACA,IAAI,CAACC,2BAAiB,CAACC,KAAK,CAACL,KAAK,CAACM,MAAM,CAAC,EAAE,MAAMF,2BAAiB,CAACG,GAAG,CAACP,KAAK,CAACM,MAAM,EAAE,KAAK,CAAC;;EAE5F;EACArB,iBAAQ,CAACC,MAAM,eACbvE,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACxE,MAAA,CAAAW,OAAK,CAAC8D,UAAU,qBACfzE,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAAClE,MAAA,CAAAoE,KAAK,qBACJ1E,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAAC3E,YAAA,CAAAgG,eAAe;IAACC,KAAK,EAAEtD,YAAY,GAAGtB,OAAO,CAACC,GAAG,CAAC4E,OAAO,GAAGhF;EAAU,gBACrEf,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAAC3E,YAAA,CAAA8E,aAAa;IAACC,KAAK,EAAES;EAAM,gBAC1BrF,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACrE,SAAA,CAAA6F,kBAAkB,MAAE,CAAC,eACtBhG,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACpE,KAAA,CAAA4E,IAAI;IAAOlE;EAAU,CAAK,CAAC,eAC5Bd,MAAA,CAAAW,OAAA,CAAA6D,aAAA,CAACrE,SAAA,CAAA8F,YAAY,MAAE,CACF,CACA,CACZ,CACS,CAAC,EACnBlC,QAAQ,CAACkB,EACX,CAAC;;EAED;EACArE,MAAM,CAACC,KAAK,CAACqF,KAAK,GAAG,IAAI;EACzBC,UAAU,CAAC,MAAM9E,kBAAK,CAACgB,OAAO,CAACC,YAAK,CAAC8D,UAAU,EAAExF,MAAM,CAACC,KAAK,CAAC,EAAE,CAAC,CAAC;EAClEiC,OAAO,CAACH,GAAG,CAACA,GAAG,EAAE,SAAS,EAAE/B,MAAM,CAACC,KAAK,CAAC;AAC3C,CAAC;AAED,CAAC,YAAY;EACX,IAAI;IACF,MAAMD,MAAM,CAACC,KAAK,CAACuB,IAAI,CAAC,CAAC;EAC3B,CAAC,CAAC,OAAOiE,KAAK,EAAE;IAAA,IAAAC,oBAAA;IACd,CAAAA,oBAAA,GAAA1F,MAAM,CAACC,KAAK,CAACkC,MAAM,cAAAuD,oBAAA,uBAAnBA,oBAAA,CAAqBC,gBAAgB,CAACF,KAAK,CAAC;IAE5C,MAAMA,KAAK;EACb;EAEA,MAAM;IAAEvF,UAAU,GAAG,EAAE;IAAEoF;EAAM,CAAC,GAAGtF,MAAM,CAACC,KAAK;EAE/C,IAAIqF,KAAK,IAAIpF,UAAU,CAAC0F,MAAM,CAAC;IAAA,IAAC;MAAEC;IAAU,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA3F,SAAA,GAAA2F,SAAA,MAAG,CAAC,CAAC;IAAA,OAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAACE,QAAQ,CAACH,SAAS,CAAC,CAACE,MAAM;EAAA,EAAC,EAAE;IACnH/F,MAAM,CAACiG,gBAAgB,CAAC,UAAU,EAAGC,KAAK,IAAKA,KAAK,CAACC,SAAS,IAAInG,MAAM,CAACC,KAAK,CAACuB,IAAI,CAAC,CAAC,CAAC;EACxF;AACF,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirai/core",
3
- "version": "0.4.276",
3
+ "version": "0.4.277",
4
4
  "source": "src/index.js",
5
5
  "repository": "https://gitlab.com/miraicorp/dev/frontend/core",
6
6
  "author": "JΛVI <hello@soyjavi.com>",