@mirai/core 0.4.174 → 0.4.176
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/build/components/Rates/Rates.js +41 -208
- package/build/components/Rates/Rates.js.map +1 -1
- package/build/components/Rates/components/Filters/Filters.js +8 -2
- package/build/components/Rates/components/Filters/Filters.js.map +1 -1
- package/build/components/Rates/hooks/index.js +17 -0
- package/build/components/Rates/hooks/index.js.map +1 -0
- package/build/components/Rates/hooks/useRates.js +275 -0
- package/build/components/Rates/hooks/useRates.js.map +1 -0
- package/build/contexts/PerformanceManager/providers/analytics/bookingCancel.js +6 -2
- package/build/contexts/PerformanceManager/providers/analytics/bookingCancel.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/bookingResponse.js +12 -4
- package/build/contexts/PerformanceManager/providers/analytics/bookingResponse.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/checkoutForm.js +6 -2
- package/build/contexts/PerformanceManager/providers/analytics/checkoutForm.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/checkoutResponse.js +3 -1
- package/build/contexts/PerformanceManager/providers/analytics/checkoutResponse.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/helpers/parseItems.js +8 -1
- package/build/contexts/PerformanceManager/providers/analytics/helpers/parseItems.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/helpers/parseRate.js +5 -3
- package/build/contexts/PerformanceManager/providers/analytics/helpers/parseRate.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/ratesAddToCart.js +8 -1
- package/build/contexts/PerformanceManager/providers/analytics/ratesAddToCart.js.map +1 -1
- package/build/contexts/PerformanceManager/providers/analytics/ratesResponse.js +6 -4
- package/build/contexts/PerformanceManager/providers/analytics/ratesResponse.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_Filters","_Filters2","_Filters3","_Filters4","_Filters5","style","_helpers","_helpers2","_helpers3","_components2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","memoizeForm","timeoutRange","Filters","_ref","clubConditions","items","propItems","priceFactor","onSubmit","others","isMobile","useDevice","translate","useLocale","value","currency","club","finder","hotel","id","locale","occupation","maxRooms","session","urlParams","idoffers","roomTypeId","useStore","discount","promocode","allAmenities","setAllAmenities","useState","busy","setBusy","counter","setCounter","filters","setFilters","getAvailableFilters","form","setForm","DEFAULT_FORM","setItems","visible","setVisible","useEffect","nextForm","clubDiscount","undefined","offer","roomType","countFilters","priceRange","callback","Event","subscribe","EVENT","RATES_FILTER_CLUB","unsubscribe","JSON","stringify","nextFilters","handleModal","next","publish","METRICS","handleAmenity","amenities","filter","item","amenity","handleOption","field","concat","handleRange","clearTimeout","setTimeout","SUBMIT_DELAY","handleBookingOption","fetch","handleClearAll","handleSubmit","nextCounter","strictSearch","getStrictSearch","cart","params","nextItems","fetchRates","catch","freeCancellation","filteredItems","select","availability","arguments","length","boardsLength","boards","inlineBoards","MAX_BOARDS","name","roomTypeName","find","parseInt","createElement","Fragment","Button","onPress","Modal","fit","portal","title","L10N","LABEL_FILTERS","onClose","className","modal","ScrollView","scrollIndicator","scrollTo","snap","scrollView","View","section","Text","bold","headline","LABEL_BOOKING_OPTIONS","BookingOption","caption","LABEL_CLUB_CONDITIONS","conditions","Action","href","small","target","underline","textInline","ACTION_CLUB_VIEW_CONDITIONS","LABEL_CLUB_BENEFITS","checked","LABEL_CLUB_MEMBERS_EXCLUSIVE","onChange","BOOKING_OPTIONS","map","key","roomName","toUpperCase","LABEL_ACCOMMODATION_PLAN","row","styles","inline","_ref2","text","type","Option","board","outlined","option","prices","InputRange","LABEL_SET_PRICE_RANGE","LABEL_NIGHTLY_PRICES","dataSource","resolution","LABEL_PRICE_RANGE","unit","currencySymbol","wide","LABEL_AMENITIES","highlight","_ref3","Amenity","includes","label","action","textOthers","LABEL_OTHERS","_ref4","ACTION_VIEW_MORE","bedTypes","LABEL_BED_TYPE","bedType","icon","ICON","BED_SINGLE","BED_DOUBLE","LABEL_BED_TYPE_SINGLE","LABEL_BED_TYPE_DOUBLE","sizes","LABEL_ROOM_SIZE","sizeUnit","sizeRange","footer","spaceBetween","transparent","ACTION_CLEAR_ALL","disabled","LABEL_SHOW_COUNT_RESULTS","LABEL_NO_EXACT_MATCHES","count","exports","displayName","propTypes","PropTypes","bool","string","arrayOf","shape","number","func"],"sources":["../../../../../src/components/Rates/components/Filters/Filters.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { currencySymbol, useLocale } from '@mirai/locale';\nimport { Action, Button, Modal, ScrollView, styles, useDevice, Text, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { InputRange } from './components';\nimport { Amenity } from './Filters.Amenity';\nimport { BookingOption } from './Filters.BookingOption';\nimport { Button as ButtonFilters } from './Filters.Button';\nimport { BOOKING_OPTIONS, DEFAULT_FORM, MAX_BOARDS } from './Filters.constants';\nimport { L10N } from './Filters.l10n';\nimport * as style from './Filters.module.css';\nimport { countFilters, getAvailableFilters, getStrictSearch } from './helpers';\nimport { EVENT, ICON, SUBMIT_DELAY } from '../../../helpers';\nimport { fetchRates, select } from '../../helpers';\nimport { Option } from '../Item/components';\n\nlet memoizeForm;\nlet timeoutRange;\n\nconst Filters = ({ clubConditions, items: propItems = [], priceFactor = 1, onSubmit = () => {}, ...others }) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n const {\n value: {\n currency,\n club = {},\n finder = {},\n hotel,\n id,\n locale,\n occupation: { maxRooms } = {},\n session,\n urlParams: { idoffers, roomTypeId } = {},\n } = {},\n } = useStore();\n\n const { discount } = club;\n const { promocode } = finder;\n\n const [allAmenities, setAllAmenities] = useState(false);\n const [busy, setBusy] = useState(false);\n const [counter, setCounter] = useState(0);\n const [filters, setFilters] = useState(getAvailableFilters(propItems, { priceFactor }));\n const [form, setForm] = useState(DEFAULT_FORM);\n const [items, setItems] = useState(propItems);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const nextForm = memoizeForm || {\n ...DEFAULT_FORM,\n clubDiscount: !session && discount !== undefined ? !!discount : undefined,\n offer: idoffers ? !!idoffers : undefined,\n promocode: promocode ? !!promocode : undefined,\n roomType: roomTypeId ? !!roomTypeId : undefined,\n };\n\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!form.priceRange) return;\n const nextForm = { ...form, priceRange: undefined };\n\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currency]);\n\n useEffect(() => {\n const callback = (clubDiscount) => {\n const nextForm = { ...form, clubDiscount };\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n };\n\n Event.subscribe(EVENT.RATES_FILTER_CLUB, callback);\n\n return () => Event.unsubscribe(EVENT.RATES_FILTER_CLUB, callback);\n }, [form]);\n\n useEffect(() => {\n if (JSON.stringify(propItems) !== JSON.stringify(items)) setItems(propItems);\n\n const nextFilters = getAvailableFilters(propItems, { priceFactor });\n if (JSON.stringify(nextFilters) !== JSON.stringify(filters)) setFilters(nextFilters);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propItems]);\n\n const handleModal = () => {\n let next = !visible;\n\n setVisible(next);\n if (next) Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS', counter });\n };\n\n const handleAmenity = (id, value) => {\n setForm({ ...form, amenities: value ? [...form.amenities, id] : form.amenities.filter((item) => item !== id) });\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:AMENITY', amenity: id, value });\n };\n\n const handleOption = (field, id) => {\n setForm({ ...form, [field]: form[field] === id ? undefined : id });\n Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}` });\n };\n\n const handleRange = (field, value) => {\n setForm({ ...form, [field]: value });\n\n clearTimeout(timeoutRange);\n timeoutRange = setTimeout(\n () => Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}`, value }),\n SUBMIT_DELAY / 2,\n );\n };\n\n const handleBookingOption = async (field, value) => {\n const next = { ...form, [field]: value };\n setForm(next);\n\n Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}`, value });\n if (field !== 'freeCancellation') await fetch(next);\n };\n\n const handleClearAll = () => {\n const { clubDiscount, offer, promocode, roomType } = form || {};\n setAllAmenities(false);\n setForm({ ...DEFAULT_FORM, clubDiscount: false });\n\n (clubDiscount || offer || promocode || roomType) && fetch(DEFAULT_FORM);\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:CLEAR_ALL' });\n };\n\n const handleSubmit = () => {\n memoizeForm = form;\n setVisible(false);\n const nextCounter = countFilters(form);\n setCounter(nextCounter);\n onSubmit({ ...form, strictSearch: getStrictSearch(form) });\n Event.publish(EVENT.RATES_FILTER_CLUB, form.clubDiscount);\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:SUBMIT', counter: nextCounter });\n };\n\n const fetch = async (next) => {\n setBusy(true);\n\n const { clubDiscount } = next;\n const strictSearch = getStrictSearch(next);\n const cart = []; // ! TODO: [MF-2006] Store should get the current cart of <Rates>\n const params = { cart, club, clubDiscount, finder, hotel, id, locale, maxRooms, session, strictSearch };\n const { items: nextItems } = (await fetchRates(params).catch(() => {})) || {};\n setItems(nextItems);\n if (nextItems) setFilters(getAvailableFilters(nextItems, { priceFactor }));\n\n setBusy(false);\n };\n\n const has = {\n clubDiscount: (discount !== undefined || clubConditions !== undefined) && !session,\n freeCancellation: true || !!filters.freeCancellation, // * We'll activate freeCancellation filter always.\n offer: !!idoffers,\n promocode: !!promocode,\n roomType: !!roomTypeId,\n };\n\n const filteredItems = select(items, form, { priceFactor }).filter(({ availability = 0 } = {}) => availability > 0);\n const { length: boardsLength } = filters.boards;\n const inlineBoards = !isMobile || (isMobile && boardsLength <= MAX_BOARDS - 1);\n const { name: roomTypeName } = items?.find(({ id } = {}) => id === parseInt(roomTypeId)) || {};\n\n return (\n <>\n <ButtonFilters {...{ counter }} onPress={handleModal} />\n\n <Modal\n fit\n portal\n title={translate(L10N.LABEL_FILTERS)}\n visible={visible}\n onClose={handleModal}\n className={[style.modal, others.className]}\n >\n <ScrollView scrollIndicator scrollTo={visible ? 0.5 : undefined} snap={false} className={style.scrollView}>\n <View className={style.section}>\n <Text bold headline>\n {translate(L10N.LABEL_BOOKING_OPTIONS)}\n </Text>\n\n {has.clubDiscount && (\n <BookingOption\n caption={\n clubConditions\n ? translate(L10N.LABEL_CLUB_CONDITIONS, {\n conditions: (\n <Action href={clubConditions} small target=\"_blank\" underline className={style.textInline}>\n {translate(L10N.ACTION_CLUB_VIEW_CONDITIONS)}\n </Action>\n ),\n })\n : translate(L10N.LABEL_CLUB_BENEFITS)\n }\n checked={form.clubDiscount}\n club={club.name}\n field=\"clubDiscount\"\n title={L10N.LABEL_CLUB_MEMBERS_EXCLUSIVE}\n onChange={(field, value) => handleBookingOption(field, value)}\n />\n )}\n\n {BOOKING_OPTIONS.filter(({ field } = {}) => has[field]).map(({ field, title } = {}) => (\n <BookingOption\n key={field}\n checked={form[field]}\n {...{ field, title, roomName: roomTypeName, promocode: promocode?.toUpperCase() }}\n onChange={handleBookingOption}\n />\n ))}\n </View>\n\n {boardsLength > 1 && (\n <View className={style.section}>\n <Text bold headline>\n {translate(L10N.LABEL_ACCOMMODATION_PLAN)}\n </Text>\n\n <View row={inlineBoards} className={styles(style.boards, inlineBoards && style.inline)}>\n {filters.boards.map(({ id, text, type }) => (\n <Option\n checked={form.board === type}\n key={`board:${id}`}\n inline={inlineBoards}\n outlined\n title={text}\n onPress={() => handleOption('board', type)}\n className={style.option}\n />\n ))}\n </View>\n </View>\n )}\n\n {filters.prices.length > 1 && (\n <InputRange\n caption={translate(priceFactor === 1 ? L10N.LABEL_SET_PRICE_RANGE : L10N.LABEL_NIGHTLY_PRICES)}\n dataSource={filters.prices}\n resolution={isMobile || filters.prices.length <= 8 ? 6 : 10}\n title={translate(L10N.LABEL_PRICE_RANGE)}\n unit={currencySymbol(currency, { locale })}\n value={form.priceRange}\n onChange={(value) => handleRange('priceRange', value)}\n className={style.section}\n />\n )}\n\n <View className={style.section}>\n <Text bold headline wide>\n {translate(L10N.LABEL_AMENITIES)}\n </Text>\n\n <View>\n <View row className={style.amenities}>\n {filters.amenities\n .filter((item) => item.highlight)\n .map(({ id, text }) => (\n <Amenity\n checked={form.amenities.includes(id)}\n id={id}\n key={id}\n label={text}\n onChange={handleAmenity}\n />\n ))}\n </View>\n\n {allAmenities ? (\n <>\n <Text action bold wide className={style.textOthers}>\n {translate(L10N.LABEL_OTHERS)}\n </Text>\n\n <View row className={style.amenities}>\n {filters.amenities\n .filter((item) => !item.highlight)\n .map(({ id, text }) => (\n <Amenity\n checked={form.amenities.includes(id)}\n id={id}\n key={id}\n label={text}\n onChange={handleAmenity}\n />\n ))}\n </View>\n </>\n ) : (\n <Action onPress={() => setAllAmenities(true)}>{translate(L10N.ACTION_VIEW_MORE)}</Action>\n )}\n </View>\n </View>\n\n {filters.bedTypes.length > 1 && (\n <View className={style.section}>\n <Text bold headline wide>\n {translate(L10N.LABEL_BED_TYPE)}\n </Text>\n\n <View row>\n {filters.bedTypes.map((bedType) => (\n <Option\n key={`bedType:${bedType}`}\n checked={form.bedType === bedType}\n icon={bedType === 1 ? ICON.BED_SINGLE : ICON.BED_DOUBLE}\n inline\n outlined\n title={translate(bedType === 1 ? L10N.LABEL_BED_TYPE_SINGLE : L10N.LABEL_BED_TYPE_DOUBLE)}\n onPress={() => handleOption('bedType', bedType)}\n className={style.option}\n />\n ))}\n </View>\n </View>\n )}\n\n {filters.sizes.length > 1 && (\n <InputRange\n dataSource={filters.sizes}\n resolution={isMobile ? 4 : 6}\n title={translate(L10N.LABEL_ROOM_SIZE)}\n unit={filters.sizeUnit}\n value={form.sizeRange}\n onChange={(value) => handleRange('sizeRange', value)}\n className={style.section}\n />\n )}\n </ScrollView>\n\n <View row className={[style.footer, style.spaceBetween]}>\n <Button transparent onPress={handleClearAll}>\n {translate(L10N.ACTION_CLEAR_ALL)}\n </Button>\n <Button busy={busy} disabled={!filteredItems.length} onPress={handleSubmit}>\n {translate(filteredItems.length ? L10N.LABEL_SHOW_COUNT_RESULTS : L10N.LABEL_NO_EXACT_MATCHES, {\n count: filteredItems.length,\n })}\n </Button>\n </View>\n </Modal>\n </>\n );\n};\n\nFilters.displayName = 'Mirai:Core:Rates:Filters';\n\nFilters.propTypes = {\n clubDiscount: PropTypes.bool,\n clubConditions: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n priceFactor: PropTypes.number,\n onSubmit: PropTypes.func,\n};\n\nexport { Filters };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Filters.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_components","_Filters","_Filters2","_Filters3","_Filters4","_Filters5","style","_helpers","_helpers2","_helpers3","_components2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","memoizeForm","timeoutRange","Filters","_ref","clubConditions","items","propItems","priceFactor","onSubmit","others","isMobile","useDevice","translate","useLocale","value","currency","club","finder","hotel","id","locale","occupation","maxRooms","session","urlParams","idoffers","roomTypeId","useStore","discount","promocode","allAmenities","setAllAmenities","useState","busy","setBusy","counter","setCounter","filters","setFilters","getAvailableFilters","form","setForm","DEFAULT_FORM","setItems","visible","setVisible","useEffect","nextForm","clubDiscount","undefined","offer","roomType","countFilters","priceRange","strictSearch","getStrictSearch","callback","Event","subscribe","EVENT","RATES_FILTER_CLUB","unsubscribe","JSON","stringify","nextFilters","handleModal","next","publish","METRICS","handleAmenity","amenities","filter","item","amenity","handleOption","field","concat","handleRange","clearTimeout","setTimeout","SUBMIT_DELAY","handleBookingOption","fetch","handleClearAll","handleSubmit","nextCounter","cart","params","nextItems","fetchRates","catch","freeCancellation","filteredItems","select","availability","arguments","length","boardsLength","boards","inlineBoards","MAX_BOARDS","name","roomTypeName","find","parseInt","createElement","Fragment","Button","onPress","Modal","fit","portal","title","L10N","LABEL_FILTERS","onClose","className","modal","ScrollView","scrollIndicator","scrollTo","snap","scrollView","View","section","Text","bold","headline","LABEL_BOOKING_OPTIONS","BookingOption","caption","LABEL_CLUB_CONDITIONS","conditions","Action","href","small","target","underline","textInline","ACTION_CLUB_VIEW_CONDITIONS","LABEL_CLUB_BENEFITS","checked","LABEL_CLUB_MEMBERS_EXCLUSIVE","onChange","BOOKING_OPTIONS","map","key","roomName","toUpperCase","LABEL_ACCOMMODATION_PLAN","row","styles","inline","_ref2","text","type","Option","board","outlined","option","prices","InputRange","LABEL_SET_PRICE_RANGE","LABEL_NIGHTLY_PRICES","dataSource","resolution","LABEL_PRICE_RANGE","unit","currencySymbol","wide","LABEL_AMENITIES","highlight","_ref3","Amenity","includes","label","action","textOthers","LABEL_OTHERS","_ref4","ACTION_VIEW_MORE","bedTypes","LABEL_BED_TYPE","bedType","icon","ICON","BED_SINGLE","BED_DOUBLE","LABEL_BED_TYPE_SINGLE","LABEL_BED_TYPE_DOUBLE","sizes","LABEL_ROOM_SIZE","sizeUnit","sizeRange","footer","spaceBetween","transparent","ACTION_CLEAR_ALL","disabled","LABEL_SHOW_COUNT_RESULTS","LABEL_NO_EXACT_MATCHES","count","exports","displayName","propTypes","PropTypes","bool","string","arrayOf","shape","number","func"],"sources":["../../../../../src/components/Rates/components/Filters/Filters.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { currencySymbol, useLocale } from '@mirai/locale';\nimport { Action, Button, Modal, ScrollView, styles, useDevice, Text, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { InputRange } from './components';\nimport { Amenity } from './Filters.Amenity';\nimport { BookingOption } from './Filters.BookingOption';\nimport { Button as ButtonFilters } from './Filters.Button';\nimport { BOOKING_OPTIONS, DEFAULT_FORM, MAX_BOARDS } from './Filters.constants';\nimport { L10N } from './Filters.l10n';\nimport * as style from './Filters.module.css';\nimport { countFilters, getAvailableFilters, getStrictSearch } from './helpers';\nimport { EVENT, ICON, SUBMIT_DELAY } from '../../../helpers';\nimport { fetchRates, select } from '../../helpers';\nimport { Option } from '../Item/components';\n\nlet memoizeForm;\nlet timeoutRange;\n\nconst Filters = ({ clubConditions, items: propItems = [], priceFactor = 1, onSubmit = () => {}, ...others }) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n const {\n value: {\n currency,\n club = {},\n finder = {},\n hotel,\n id,\n locale,\n occupation: { maxRooms } = {},\n session,\n urlParams: { idoffers, roomTypeId } = {},\n } = {},\n } = useStore();\n\n const { discount } = club;\n const { promocode } = finder;\n\n const [allAmenities, setAllAmenities] = useState(false);\n const [busy, setBusy] = useState(false);\n const [counter, setCounter] = useState(0);\n const [filters, setFilters] = useState(getAvailableFilters(propItems, { priceFactor }));\n const [form, setForm] = useState(DEFAULT_FORM);\n const [items, setItems] = useState(propItems);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const nextForm = memoizeForm || {\n ...DEFAULT_FORM,\n clubDiscount: !session && discount !== undefined ? !!discount : undefined,\n currency,\n offer: idoffers ? !!idoffers : undefined,\n promocode: promocode ? !!promocode : undefined,\n roomType: roomTypeId ? !!roomTypeId : undefined,\n };\n\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!form.priceRange || form.currency === currency) return;\n\n const nextForm = { ...form, priceRange: undefined, currency };\n\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n onSubmit({ ...nextForm, strictSearch: getStrictSearch(nextForm) });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currency]);\n\n useEffect(() => {\n const callback = (clubDiscount) => {\n const nextForm = { ...form, clubDiscount };\n setForm(nextForm);\n setCounter(countFilters(nextForm));\n };\n\n Event.subscribe(EVENT.RATES_FILTER_CLUB, callback);\n\n return () => Event.unsubscribe(EVENT.RATES_FILTER_CLUB, callback);\n }, [form]);\n\n useEffect(() => {\n if (JSON.stringify(propItems) !== JSON.stringify(items)) setItems(propItems);\n\n const nextFilters = getAvailableFilters(propItems, { priceFactor });\n if (JSON.stringify(nextFilters) !== JSON.stringify(filters)) setFilters(nextFilters);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propItems]);\n\n const handleModal = () => {\n let next = !visible;\n\n setVisible(next);\n if (next) Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS', counter });\n };\n\n const handleAmenity = (id, value) => {\n setForm({ ...form, amenities: value ? [...form.amenities, id] : form.amenities.filter((item) => item !== id) });\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:AMENITY', amenity: id, value });\n };\n\n const handleOption = (field, id) => {\n setForm({ ...form, [field]: form[field] === id ? undefined : id });\n Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}` });\n };\n\n const handleRange = (field, value) => {\n setForm({ ...form, [field]: value });\n\n clearTimeout(timeoutRange);\n timeoutRange = setTimeout(\n () => Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}`, value }),\n SUBMIT_DELAY / 2,\n );\n };\n\n const handleBookingOption = async (field, value) => {\n const next = { ...form, [field]: value };\n setForm(next);\n\n Event.publish(EVENT.METRICS, { id: `RATES:FILTERS:${field}`, value });\n if (field !== 'freeCancellation') await fetch(next);\n };\n\n const handleClearAll = () => {\n const { clubDiscount, offer, promocode, roomType } = form || {};\n setAllAmenities(false);\n setForm({ ...DEFAULT_FORM, clubDiscount: false });\n\n (clubDiscount || offer || promocode || roomType) && fetch(DEFAULT_FORM);\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:CLEAR_ALL' });\n };\n\n const handleSubmit = () => {\n memoizeForm = form;\n setVisible(false);\n const nextCounter = countFilters(form);\n setCounter(nextCounter);\n onSubmit({ ...form, strictSearch: getStrictSearch(form) });\n Event.publish(EVENT.RATES_FILTER_CLUB, form.clubDiscount);\n Event.publish(EVENT.METRICS, { id: 'RATES:FILTERS:SUBMIT', counter: nextCounter });\n };\n\n const fetch = async (next) => {\n setBusy(true);\n\n const { clubDiscount } = next;\n const strictSearch = getStrictSearch(next);\n const cart = []; // ! TODO: [MF-2006] Store should get the current cart of <Rates>\n const params = { cart, club, clubDiscount, finder, hotel, id, locale, maxRooms, session, strictSearch };\n const { items: nextItems } = (await fetchRates(params).catch(() => {})) || {};\n setItems(nextItems);\n if (nextItems) setFilters(getAvailableFilters(nextItems, { priceFactor }));\n\n setBusy(false);\n };\n\n const has = {\n clubDiscount: (discount !== undefined || clubConditions !== undefined) && !session,\n freeCancellation: true || !!filters.freeCancellation, // * We'll activate freeCancellation filter always.\n offer: !!idoffers,\n promocode: !!promocode,\n roomType: !!roomTypeId,\n };\n\n const filteredItems = select(items, form, { priceFactor }).filter(({ availability = 0 } = {}) => availability > 0);\n const { length: boardsLength } = filters.boards;\n const inlineBoards = !isMobile || (isMobile && boardsLength <= MAX_BOARDS - 1);\n const { name: roomTypeName } = items?.find(({ id } = {}) => id === parseInt(roomTypeId)) || {};\n\n return (\n <>\n <ButtonFilters {...{ counter }} onPress={handleModal} />\n\n <Modal\n fit\n portal\n title={translate(L10N.LABEL_FILTERS)}\n visible={visible}\n onClose={handleModal}\n className={[style.modal, others.className]}\n >\n <ScrollView scrollIndicator scrollTo={visible ? 0.5 : undefined} snap={false} className={style.scrollView}>\n <View className={style.section}>\n <Text bold headline>\n {translate(L10N.LABEL_BOOKING_OPTIONS)}\n </Text>\n\n {has.clubDiscount && (\n <BookingOption\n caption={\n clubConditions\n ? translate(L10N.LABEL_CLUB_CONDITIONS, {\n conditions: (\n <Action href={clubConditions} small target=\"_blank\" underline className={style.textInline}>\n {translate(L10N.ACTION_CLUB_VIEW_CONDITIONS)}\n </Action>\n ),\n })\n : translate(L10N.LABEL_CLUB_BENEFITS)\n }\n checked={form.clubDiscount}\n club={club.name}\n field=\"clubDiscount\"\n title={L10N.LABEL_CLUB_MEMBERS_EXCLUSIVE}\n onChange={(field, value) => handleBookingOption(field, value)}\n />\n )}\n\n {BOOKING_OPTIONS.filter(({ field } = {}) => has[field]).map(({ field, title } = {}) => (\n <BookingOption\n key={field}\n checked={form[field]}\n {...{ field, title, roomName: roomTypeName, promocode: promocode?.toUpperCase() }}\n onChange={handleBookingOption}\n />\n ))}\n </View>\n\n {boardsLength > 1 && (\n <View className={style.section}>\n <Text bold headline>\n {translate(L10N.LABEL_ACCOMMODATION_PLAN)}\n </Text>\n\n <View row={inlineBoards} className={styles(style.boards, inlineBoards && style.inline)}>\n {filters.boards.map(({ id, text, type }) => (\n <Option\n checked={form.board === type}\n key={`board:${id}`}\n inline={inlineBoards}\n outlined\n title={text}\n onPress={() => handleOption('board', type)}\n className={style.option}\n />\n ))}\n </View>\n </View>\n )}\n\n {filters.prices.length > 1 && (\n <InputRange\n caption={translate(priceFactor === 1 ? L10N.LABEL_SET_PRICE_RANGE : L10N.LABEL_NIGHTLY_PRICES)}\n dataSource={filters.prices}\n resolution={isMobile || filters.prices.length <= 8 ? 6 : 10}\n title={translate(L10N.LABEL_PRICE_RANGE)}\n unit={currencySymbol(currency, { locale })}\n value={form.priceRange}\n onChange={(value) => handleRange('priceRange', value)}\n className={style.section}\n />\n )}\n\n <View className={style.section}>\n <Text bold headline wide>\n {translate(L10N.LABEL_AMENITIES)}\n </Text>\n\n <View>\n <View row className={style.amenities}>\n {filters.amenities\n .filter((item) => item.highlight)\n .map(({ id, text }) => (\n <Amenity\n checked={form.amenities.includes(id)}\n id={id}\n key={id}\n label={text}\n onChange={handleAmenity}\n />\n ))}\n </View>\n\n {allAmenities ? (\n <>\n <Text action bold wide className={style.textOthers}>\n {translate(L10N.LABEL_OTHERS)}\n </Text>\n\n <View row className={style.amenities}>\n {filters.amenities\n .filter((item) => !item.highlight)\n .map(({ id, text }) => (\n <Amenity\n checked={form.amenities.includes(id)}\n id={id}\n key={id}\n label={text}\n onChange={handleAmenity}\n />\n ))}\n </View>\n </>\n ) : (\n <Action onPress={() => setAllAmenities(true)}>{translate(L10N.ACTION_VIEW_MORE)}</Action>\n )}\n </View>\n </View>\n\n {filters.bedTypes.length > 1 && (\n <View className={style.section}>\n <Text bold headline wide>\n {translate(L10N.LABEL_BED_TYPE)}\n </Text>\n\n <View row>\n {filters.bedTypes.map((bedType) => (\n <Option\n key={`bedType:${bedType}`}\n checked={form.bedType === bedType}\n icon={bedType === 1 ? ICON.BED_SINGLE : ICON.BED_DOUBLE}\n inline\n outlined\n title={translate(bedType === 1 ? L10N.LABEL_BED_TYPE_SINGLE : L10N.LABEL_BED_TYPE_DOUBLE)}\n onPress={() => handleOption('bedType', bedType)}\n className={style.option}\n />\n ))}\n </View>\n </View>\n )}\n\n {filters.sizes.length > 1 && (\n <InputRange\n dataSource={filters.sizes}\n resolution={isMobile ? 4 : 6}\n title={translate(L10N.LABEL_ROOM_SIZE)}\n unit={filters.sizeUnit}\n value={form.sizeRange}\n onChange={(value) => handleRange('sizeRange', value)}\n className={style.section}\n />\n )}\n </ScrollView>\n\n <View row className={[style.footer, style.spaceBetween]}>\n <Button transparent onPress={handleClearAll}>\n {translate(L10N.ACTION_CLEAR_ALL)}\n </Button>\n <Button busy={busy} disabled={!filteredItems.length} onPress={handleSubmit}>\n {translate(filteredItems.length ? L10N.LABEL_SHOW_COUNT_RESULTS : L10N.LABEL_NO_EXACT_MATCHES, {\n count: filteredItems.length,\n })}\n </Button>\n </View>\n </Modal>\n </>\n );\n};\n\nFilters.displayName = 'Mirai:Core:Rates:Filters';\n\nFilters.propTypes = {\n clubDiscount: PropTypes.bool,\n clubConditions: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({})),\n priceFactor: PropTypes.number,\n onSubmit: PropTypes.func,\n};\n\nexport { Filters };\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,QAAA,GAAAR,OAAA;AACA,IAAAS,SAAA,GAAAT,OAAA;AACA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,SAAA,GAAAX,OAAA;AACA,IAAAY,SAAA,GAAAZ,OAAA;AACA,IAAAa,KAAA,GAAAP,uBAAA,CAAAN,OAAA;AACA,IAAAc,QAAA,GAAAd,OAAA;AACA,IAAAe,SAAA,GAAAf,OAAA;AACA,IAAAgB,SAAA,GAAAhB,OAAA;AACA,IAAAiB,YAAA,GAAAjB,OAAA;AAA4C,SAAAkB,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,SAAAb,wBAAAa,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,SAAAvB,uBAAAmC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAE5C,IAAIC,WAAW;AACf,IAAIC,YAAY;AAEhB,MAAMC,OAAO,GAAGC,IAAA,IAAgG;EAAA,IAA/F;IAAEC,cAAc;IAAEC,KAAK,EAAEC,SAAS,GAAG,EAAE;IAAEC,WAAW,GAAG,CAAC;IAAEC,QAAQ,GAAGA,CAAA,KAAM,CAAC,CAAC;IAAE,GAAGC;EAAO,CAAC,GAAAN,IAAA;EACzG,MAAM;IAAEO;EAAS,CAAC,GAAG,IAAAC,aAAS,EAAC,CAAC;EAChC,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,iBAAS,EAAC,CAAC;EACjC,MAAM;IACJC,KAAK,EAAE;MACLC,QAAQ;MACRC,IAAI,GAAG,CAAC,CAAC;MACTC,MAAM,GAAG,CAAC,CAAC;MACXC,KAAK;MACLC,EAAE;MACFC,MAAM;MACNC,UAAU,EAAE;QAAEC;MAAS,CAAC,GAAG,CAAC,CAAC;MAC7BC,OAAO;MACPC,SAAS,EAAE;QAAEC,QAAQ;QAAEC;MAAW,CAAC,GAAG,CAAC;IACzC,CAAC,GAAG,CAAC;EACP,CAAC,GAAG,IAAAC,qBAAQ,EAAC,CAAC;EAEd,MAAM;IAAEC;EAAS,CAAC,GAAGZ,IAAI;EACzB,MAAM;IAAEa;EAAU,CAAC,GAAGZ,MAAM;EAE5B,MAAM,CAACa,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACvD,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EACvC,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAJ,eAAQ,EAAC,CAAC,CAAC;EACzC,MAAM,CAACK,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAN,eAAQ,EAAC,IAAAO,4BAAmB,EAACjC,SAAS,EAAE;IAAEC;EAAY,CAAC,CAAC,CAAC;EACvF,MAAM,CAACiC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAT,eAAQ,EAACU,sBAAY,CAAC;EAC9C,MAAM,CAACrC,KAAK,EAAEsC,QAAQ,CAAC,GAAG,IAAAX,eAAQ,EAAC1B,SAAS,CAAC;EAC7C,MAAM,CAACsC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAb,eAAQ,EAAC,KAAK,CAAC;EAE7C,IAAAc,gBAAS,EAAC,MAAM;IACd,MAAMC,QAAQ,GAAG/C,WAAW,IAAI;MAC9B,GAAG0C,sBAAY;MACfM,YAAY,EAAE,CAACzB,OAAO,IAAIK,QAAQ,KAAKqB,SAAS,GAAG,CAAC,CAACrB,QAAQ,GAAGqB,SAAS;MACzElC,QAAQ;MACRmC,KAAK,EAAEzB,QAAQ,GAAG,CAAC,CAACA,QAAQ,GAAGwB,SAAS;MACxCpB,SAAS,EAAEA,SAAS,GAAG,CAAC,CAACA,SAAS,GAAGoB,SAAS;MAC9CE,QAAQ,EAAEzB,UAAU,GAAG,CAAC,CAACA,UAAU,GAAGuB;IACxC,CAAC;IAEDR,OAAO,CAACM,QAAQ,CAAC;IACjBX,UAAU,CAAC,IAAAgB,qBAAY,EAACL,QAAQ,CAAC,CAAC;IAClC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAI,CAACN,IAAI,CAACa,UAAU,IAAIb,IAAI,CAACzB,QAAQ,KAAKA,QAAQ,EAAE;IAEpD,MAAMgC,QAAQ,GAAG;MAAE,GAAGP,IAAI;MAAEa,UAAU,EAAEJ,SAAS;MAAElC;IAAS,CAAC;IAE7D0B,OAAO,CAACM,QAAQ,CAAC;IACjBX,UAAU,CAAC,IAAAgB,qBAAY,EAACL,QAAQ,CAAC,CAAC;IAClCvC,QAAQ,CAAC;MAAE,GAAGuC,QAAQ;MAAEO,YAAY,EAAE,IAAAC,wBAAe,EAACR,QAAQ;IAAE,CAAC,CAAC;IAClE;EACF,CAAC,EAAE,CAAChC,QAAQ,CAAC,CAAC;EAEd,IAAA+B,gBAAS,EAAC,MAAM;IACd,MAAMU,QAAQ,GAAIR,YAAY,IAAK;MACjC,MAAMD,QAAQ,GAAG;QAAE,GAAGP,IAAI;QAAEQ;MAAa,CAAC;MAC1CP,OAAO,CAACM,QAAQ,CAAC;MACjBX,UAAU,CAAC,IAAAgB,qBAAY,EAACL,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEDU,kBAAK,CAACC,SAAS,CAACC,eAAK,CAACC,iBAAiB,EAAEJ,QAAQ,CAAC;IAElD,OAAO,MAAMC,kBAAK,CAACI,WAAW,CAACF,eAAK,CAACC,iBAAiB,EAAEJ,QAAQ,CAAC;EACnE,CAAC,EAAE,CAAChB,IAAI,CAAC,CAAC;EAEV,IAAAM,gBAAS,EAAC,MAAM;IACd,IAAIgB,IAAI,CAACC,SAAS,CAACzD,SAAS,CAAC,KAAKwD,IAAI,CAACC,SAAS,CAAC1D,KAAK,CAAC,EAAEsC,QAAQ,CAACrC,SAAS,CAAC;IAE5E,MAAM0D,WAAW,GAAG,IAAAzB,4BAAmB,EAACjC,SAAS,EAAE;MAAEC;IAAY,CAAC,CAAC;IACnE,IAAIuD,IAAI,CAACC,SAAS,CAACC,WAAW,CAAC,KAAKF,IAAI,CAACC,SAAS,CAAC1B,OAAO,CAAC,EAAEC,UAAU,CAAC0B,WAAW,CAAC;IACpF;EACF,CAAC,EAAE,CAAC1D,SAAS,CAAC,CAAC;EAEf,MAAM2D,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIC,IAAI,GAAG,CAACtB,OAAO;IAEnBC,UAAU,CAACqB,IAAI,CAAC;IAChB,IAAIA,IAAI,EAAET,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,EAAE,eAAe;MAAEgB;IAAQ,CAAC,CAAC;EAC1E,CAAC;EAED,MAAMkC,aAAa,GAAGA,CAAClD,EAAE,EAAEL,KAAK,KAAK;IACnC2B,OAAO,CAAC;MAAE,GAAGD,IAAI;MAAE8B,SAAS,EAAExD,KAAK,GAAG,CAAC,GAAG0B,IAAI,CAAC8B,SAAS,EAAEnD,EAAE,CAAC,GAAGqB,IAAI,CAAC8B,SAAS,CAACC,MAAM,CAAEC,IAAI,IAAKA,IAAI,KAAKrD,EAAE;IAAE,CAAC,CAAC;IAC/GsC,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,EAAE,uBAAuB;MAAEsD,OAAO,EAAEtD,EAAE;MAAEL;IAAM,CAAC,CAAC;EACnF,CAAC;EAED,MAAM4D,YAAY,GAAGA,CAACC,KAAK,EAAExD,EAAE,KAAK;IAClCsB,OAAO,CAAC;MAAE,GAAGD,IAAI;MAAE,CAACmC,KAAK,GAAGnC,IAAI,CAACmC,KAAK,CAAC,KAAKxD,EAAE,GAAG8B,SAAS,GAAG9B;IAAG,CAAC,CAAC;IAClEsC,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,mBAAAyD,MAAA,CAAmBD,KAAK;IAAG,CAAC,CAAC;EAChE,CAAC;EAED,MAAME,WAAW,GAAGA,CAACF,KAAK,EAAE7D,KAAK,KAAK;IACpC2B,OAAO,CAAC;MAAE,GAAGD,IAAI;MAAE,CAACmC,KAAK,GAAG7D;IAAM,CAAC,CAAC;IAEpCgE,YAAY,CAAC7E,YAAY,CAAC;IAC1BA,YAAY,GAAG8E,UAAU,CACvB,MAAMtB,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,mBAAAyD,MAAA,CAAmBD,KAAK,CAAE;MAAE7D;IAAM,CAAC,CAAC,EAC3EkE,sBAAY,GAAG,CACjB,CAAC;EACH,CAAC;EAED,MAAMC,mBAAmB,GAAG,MAAAA,CAAON,KAAK,EAAE7D,KAAK,KAAK;IAClD,MAAMoD,IAAI,GAAG;MAAE,GAAG1B,IAAI;MAAE,CAACmC,KAAK,GAAG7D;IAAM,CAAC;IACxC2B,OAAO,CAACyB,IAAI,CAAC;IAEbT,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,mBAAAyD,MAAA,CAAmBD,KAAK,CAAE;MAAE7D;IAAM,CAAC,CAAC;IACrE,IAAI6D,KAAK,KAAK,kBAAkB,EAAE,MAAMO,KAAK,CAAChB,IAAI,CAAC;EACrD,CAAC;EAED,MAAMiB,cAAc,GAAGA,CAAA,KAAM;IAC3B,MAAM;MAAEnC,YAAY;MAAEE,KAAK;MAAErB,SAAS;MAAEsB;IAAS,CAAC,GAAGX,IAAI,IAAI,CAAC,CAAC;IAC/DT,eAAe,CAAC,KAAK,CAAC;IACtBU,OAAO,CAAC;MAAE,GAAGC,sBAAY;MAAEM,YAAY,EAAE;IAAM,CAAC,CAAC;IAEjD,CAACA,YAAY,IAAIE,KAAK,IAAIrB,SAAS,IAAIsB,QAAQ,KAAK+B,KAAK,CAACxC,sBAAY,CAAC;IACvEe,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,EAAE;IAA0B,CAAC,CAAC;EACjE,CAAC;EAED,MAAMiE,YAAY,GAAGA,CAAA,KAAM;IACzBpF,WAAW,GAAGwC,IAAI;IAClBK,UAAU,CAAC,KAAK,CAAC;IACjB,MAAMwC,WAAW,GAAG,IAAAjC,qBAAY,EAACZ,IAAI,CAAC;IACtCJ,UAAU,CAACiD,WAAW,CAAC;IACvB7E,QAAQ,CAAC;MAAE,GAAGgC,IAAI;MAAEc,YAAY,EAAE,IAAAC,wBAAe,EAACf,IAAI;IAAE,CAAC,CAAC;IAC1DiB,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACC,iBAAiB,EAAEpB,IAAI,CAACQ,YAAY,CAAC;IACzDS,kBAAK,CAACU,OAAO,CAACR,eAAK,CAACS,OAAO,EAAE;MAAEjD,EAAE,EAAE,sBAAsB;MAAEgB,OAAO,EAAEkD;IAAY,CAAC,CAAC;EACpF,CAAC;EAED,MAAMH,KAAK,GAAG,MAAOhB,IAAI,IAAK;IAC5BhC,OAAO,CAAC,IAAI,CAAC;IAEb,MAAM;MAAEc;IAAa,CAAC,GAAGkB,IAAI;IAC7B,MAAMZ,YAAY,GAAG,IAAAC,wBAAe,EAACW,IAAI,CAAC;IAC1C,MAAMoB,IAAI,GAAG,EAAE,CAAC,CAAC;IACjB,MAAMC,MAAM,GAAG;MAAED,IAAI;MAAEtE,IAAI;MAAEgC,YAAY;MAAE/B,MAAM;MAAEC,KAAK;MAAEC,EAAE;MAAEC,MAAM;MAAEE,QAAQ;MAAEC,OAAO;MAAE+B;IAAa,CAAC;IACvG,MAAM;MAAEjD,KAAK,EAAEmF;IAAU,CAAC,GAAG,CAAC,MAAM,IAAAC,oBAAU,EAACF,MAAM,CAAC,CAACG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E/C,QAAQ,CAAC6C,SAAS,CAAC;IACnB,IAAIA,SAAS,EAAElD,UAAU,CAAC,IAAAC,4BAAmB,EAACiD,SAAS,EAAE;MAAEjF;IAAY,CAAC,CAAC,CAAC;IAE1E2B,OAAO,CAAC,KAAK,CAAC;EAChB,CAAC;EAED,MAAMjD,GAAG,GAAG;IACV+D,YAAY,EAAE,CAACpB,QAAQ,KAAKqB,SAAS,IAAI7C,cAAc,KAAK6C,SAAS,KAAK,CAAC1B,OAAO;IAClFoE,gBAAgB,EAAE,IAAI,IAAI,CAAC,CAACtD,OAAO,CAACsD,gBAAgB;IAAE;IACtDzC,KAAK,EAAE,CAAC,CAACzB,QAAQ;IACjBI,SAAS,EAAE,CAAC,CAACA,SAAS;IACtBsB,QAAQ,EAAE,CAAC,CAACzB;EACd,CAAC;EAED,MAAMkE,aAAa,GAAG,IAAAC,gBAAM,EAACxF,KAAK,EAAEmC,IAAI,EAAE;IAAEjC;EAAY,CAAC,CAAC,CAACgE,MAAM,CAAC;IAAA,IAAC;MAAEuB,YAAY,GAAG;IAAE,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9C,SAAA,GAAA8C,SAAA,MAAG,CAAC,CAAC;IAAA,OAAKD,YAAY,GAAG,CAAC;EAAA,EAAC;EAClH,MAAM;IAAEE,MAAM,EAAEC;EAAa,CAAC,GAAG5D,OAAO,CAAC6D,MAAM;EAC/C,MAAMC,YAAY,GAAG,CAACzF,QAAQ,IAAKA,QAAQ,IAAIuF,YAAY,IAAIG,oBAAU,GAAG,CAAE;EAC9E,MAAM;IAAEC,IAAI,EAAEC;EAAa,CAAC,GAAG,CAAAjG,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEkG,IAAI,CAAC;IAAA,IAAC;MAAEpF;IAAG,CAAC,GAAA4E,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9C,SAAA,GAAA8C,SAAA,MAAG,CAAC,CAAC;IAAA,OAAK5E,EAAE,KAAKqF,QAAQ,CAAC9E,UAAU,CAAC;EAAA,EAAC,KAAI,CAAC,CAAC;EAE9F,oBACE7D,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAA5I,MAAA,CAAAmB,OAAA,CAAA0H,QAAA,qBACE7I,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAACvI,SAAA,CAAAyI,MAAa;IAAOxE,OAAO;IAAIyE,OAAO,EAAE3C;EAAY,CAAE,CAAC,eAExDpG,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmJ,KAAK;IACJC,GAAG;IACHC,MAAM;IACNC,KAAK,EAAEpG,SAAS,CAACqG,cAAI,CAACC,aAAa,CAAE;IACrCtE,OAAO,EAAEA,OAAQ;IACjBuE,OAAO,EAAElD,WAAY;IACrBmD,SAAS,EAAE,CAAC/I,KAAK,CAACgJ,KAAK,EAAE5G,MAAM,CAAC2G,SAAS;EAAE,gBAE3CvJ,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAA4J,UAAU;IAACC,eAAe;IAACC,QAAQ,EAAE5E,OAAO,GAAG,GAAG,GAAGK,SAAU;IAACwE,IAAI,EAAE,KAAM;IAACL,SAAS,EAAE/I,KAAK,CAACqJ;EAAW,gBACxG7J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAACP,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,gBAC7B/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmK,IAAI;IAACC,IAAI;IAACC,QAAQ;EAAA,GAChBnH,SAAS,CAACqG,cAAI,CAACe,qBAAqB,CACjC,CAAC,EAEN/I,GAAG,CAAC+D,YAAY,iBACfnF,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAACxI,SAAA,CAAAgK,aAAa;IACZC,OAAO,EACL9H,cAAc,GACVQ,SAAS,CAACqG,cAAI,CAACkB,qBAAqB,EAAE;MACpCC,UAAU,eACRvK,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAA2K,MAAM;QAACC,IAAI,EAAElI,cAAe;QAACmI,KAAK;QAACC,MAAM,EAAC,QAAQ;QAACC,SAAS;QAACrB,SAAS,EAAE/I,KAAK,CAACqK;MAAW,GACvF9H,SAAS,CAACqG,cAAI,CAAC0B,2BAA2B,CACrC;IAEZ,CAAC,CAAC,GACF/H,SAAS,CAACqG,cAAI,CAAC2B,mBAAmB,CACvC;IACDC,OAAO,EAAErG,IAAI,CAACQ,YAAa;IAC3BhC,IAAI,EAAEA,IAAI,CAACqF,IAAK;IAChB1B,KAAK,EAAC,cAAc;IACpBqC,KAAK,EAAEC,cAAI,CAAC6B,4BAA6B;IACzCC,QAAQ,EAAEA,CAACpE,KAAK,EAAE7D,KAAK,KAAKmE,mBAAmB,CAACN,KAAK,EAAE7D,KAAK;EAAE,CAC/D,CACF,EAEAkI,yBAAe,CAACzE,MAAM,CAAC;IAAA,IAAC;MAAEI;IAAM,CAAC,GAAAoB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9C,SAAA,GAAA8C,SAAA,MAAG,CAAC,CAAC;IAAA,OAAK9G,GAAG,CAAC0F,KAAK,CAAC;EAAA,EAAC,CAACsE,GAAG,CAAC;IAAA,IAAC;MAAEtE,KAAK;MAAEqC;IAAM,CAAC,GAAAjB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9C,SAAA,GAAA8C,SAAA,MAAG,CAAC,CAAC;IAAA,oBAChFlI,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAACxI,SAAA,CAAAgK,aAAa;MACZiB,GAAG,EAAEvE,KAAM;MACXkE,OAAO,EAAErG,IAAI,CAACmC,KAAK,CAAE;MACfA,KAAK;MAAEqC,KAAK;MAAEmC,QAAQ,EAAE7C,YAAY;MAAEzE,SAAS,EAAEA,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEuH,WAAW,CAAC,CAAC;MAC/EL,QAAQ,EAAE9D;IAAoB,CAC/B,CAAC;EAAA,CACH,CACG,CAAC,EAENgB,YAAY,GAAG,CAAC,iBACfpI,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAACP,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,gBAC7B/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmK,IAAI;IAACC,IAAI;IAACC,QAAQ;EAAA,GAChBnH,SAAS,CAACqG,cAAI,CAACoC,wBAAwB,CACpC,CAAC,eAEPxL,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAAC2B,GAAG,EAAEnD,YAAa;IAACiB,SAAS,EAAE,IAAAmC,UAAM,EAAClL,KAAK,CAAC6H,MAAM,EAAEC,YAAY,IAAI9H,KAAK,CAACmL,MAAM;EAAE,GACpFnH,OAAO,CAAC6D,MAAM,CAAC+C,GAAG,CAACQ,KAAA;IAAA,IAAC;MAAEtI,EAAE;MAAEuI,IAAI;MAAEC;IAAK,CAAC,GAAAF,KAAA;IAAA,oBACrC5L,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAChI,YAAA,CAAAmL,MAAM;MACLf,OAAO,EAAErG,IAAI,CAACqH,KAAK,KAAKF,IAAK;MAC7BT,GAAG,WAAAtE,MAAA,CAAWzD,EAAE,CAAG;MACnBqI,MAAM,EAAErD,YAAa;MACrB2D,QAAQ;MACR9C,KAAK,EAAE0C,IAAK;MACZ9C,OAAO,EAAEA,CAAA,KAAMlC,YAAY,CAAC,OAAO,EAAEiF,IAAI,CAAE;MAC3CvC,SAAS,EAAE/I,KAAK,CAAC0L;IAAO,CACzB,CAAC;EAAA,CACH,CACG,CACF,CACP,EAEA1H,OAAO,CAAC2H,MAAM,CAAChE,MAAM,GAAG,CAAC,iBACxBnI,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC1I,WAAA,CAAAkM,UAAU;IACT/B,OAAO,EAAEtH,SAAS,CAACL,WAAW,KAAK,CAAC,GAAG0G,cAAI,CAACiD,qBAAqB,GAAGjD,cAAI,CAACkD,oBAAoB,CAAE;IAC/FC,UAAU,EAAE/H,OAAO,CAAC2H,MAAO;IAC3BK,UAAU,EAAE3J,QAAQ,IAAI2B,OAAO,CAAC2H,MAAM,CAAChE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAG;IAC5DgB,KAAK,EAAEpG,SAAS,CAACqG,cAAI,CAACqD,iBAAiB,CAAE;IACzCC,IAAI,EAAE,IAAAC,sBAAc,EAACzJ,QAAQ,EAAE;MAAEK;IAAO,CAAC,CAAE;IAC3CN,KAAK,EAAE0B,IAAI,CAACa,UAAW;IACvB0F,QAAQ,EAAGjI,KAAK,IAAK+D,WAAW,CAAC,YAAY,EAAE/D,KAAK,CAAE;IACtDsG,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,CAC1B,CACF,eAED/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAACP,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,gBAC7B/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmK,IAAI;IAACC,IAAI;IAACC,QAAQ;IAAC0C,IAAI;EAAA,GACrB7J,SAAS,CAACqG,cAAI,CAACyD,eAAe,CAC3B,CAAC,eAEP7M,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI,qBACH9J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAAC2B,GAAG;IAAClC,SAAS,EAAE/I,KAAK,CAACiG;EAAU,GAClCjC,OAAO,CAACiC,SAAS,CACfC,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACmG,SAAS,CAAC,CAChC1B,GAAG,CAAC2B,KAAA;IAAA,IAAC;MAAEzJ,EAAE;MAAEuI;IAAK,CAAC,GAAAkB,KAAA;IAAA,oBAChB/M,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAACzI,QAAA,CAAA6M,OAAO;MACNhC,OAAO,EAAErG,IAAI,CAAC8B,SAAS,CAACwG,QAAQ,CAAC3J,EAAE,CAAE;MACrCA,EAAE,EAAEA,EAAG;MACP+H,GAAG,EAAE/H,EAAG;MACR4J,KAAK,EAAErB,IAAK;MACZX,QAAQ,EAAE1E;IAAc,CACzB,CAAC;EAAA,CACH,CACC,CAAC,EAENvC,YAAY,gBACXjE,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAA5I,MAAA,CAAAmB,OAAA,CAAA0H,QAAA,qBACE7I,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmK,IAAI;IAACmD,MAAM;IAAClD,IAAI;IAAC2C,IAAI;IAACrD,SAAS,EAAE/I,KAAK,CAAC4M;EAAW,GAChDrK,SAAS,CAACqG,cAAI,CAACiE,YAAY,CACxB,CAAC,eAEPrN,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAAC2B,GAAG;IAAClC,SAAS,EAAE/I,KAAK,CAACiG;EAAU,GAClCjC,OAAO,CAACiC,SAAS,CACfC,MAAM,CAAEC,IAAI,IAAK,CAACA,IAAI,CAACmG,SAAS,CAAC,CACjC1B,GAAG,CAACkC,KAAA;IAAA,IAAC;MAAEhK,EAAE;MAAEuI;IAAK,CAAC,GAAAyB,KAAA;IAAA,oBAChBtN,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAACzI,QAAA,CAAA6M,OAAO;MACNhC,OAAO,EAAErG,IAAI,CAAC8B,SAAS,CAACwG,QAAQ,CAAC3J,EAAE,CAAE;MACrCA,EAAE,EAAEA,EAAG;MACP+H,GAAG,EAAE/H,EAAG;MACR4J,KAAK,EAAErB,IAAK;MACZX,QAAQ,EAAE1E;IAAc,CACzB,CAAC;EAAA,CACH,CACC,CACN,CAAC,gBAEHxG,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAA2K,MAAM;IAACzB,OAAO,EAAEA,CAAA,KAAM7E,eAAe,CAAC,IAAI;EAAE,GAAEnB,SAAS,CAACqG,cAAI,CAACmE,gBAAgB,CAAU,CAEtF,CACF,CAAC,EAEN/I,OAAO,CAACgJ,QAAQ,CAACrF,MAAM,GAAG,CAAC,iBAC1BnI,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAACP,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,gBAC7B/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAmK,IAAI;IAACC,IAAI;IAACC,QAAQ;IAAC0C,IAAI;EAAA,GACrB7J,SAAS,CAACqG,cAAI,CAACqE,cAAc,CAC1B,CAAC,eAEPzN,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAAC2B,GAAG;EAAA,GACNjH,OAAO,CAACgJ,QAAQ,CAACpC,GAAG,CAAEsC,OAAO,iBAC5B1N,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAChI,YAAA,CAAAmL,MAAM;IACLV,GAAG,aAAAtE,MAAA,CAAa2G,OAAO,CAAG;IAC1B1C,OAAO,EAAErG,IAAI,CAAC+I,OAAO,KAAKA,OAAQ;IAClCC,IAAI,EAAED,OAAO,KAAK,CAAC,GAAGE,cAAI,CAACC,UAAU,GAAGD,cAAI,CAACE,UAAW;IACxDnC,MAAM;IACNM,QAAQ;IACR9C,KAAK,EAAEpG,SAAS,CAAC2K,OAAO,KAAK,CAAC,GAAGtE,cAAI,CAAC2E,qBAAqB,GAAG3E,cAAI,CAAC4E,qBAAqB,CAAE;IAC1FjF,OAAO,EAAEA,CAAA,KAAMlC,YAAY,CAAC,SAAS,EAAE6G,OAAO,CAAE;IAChDnE,SAAS,EAAE/I,KAAK,CAAC0L;EAAO,CACzB,CACF,CACG,CACF,CACP,EAEA1H,OAAO,CAACyJ,KAAK,CAAC9F,MAAM,GAAG,CAAC,iBACvBnI,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC1I,WAAA,CAAAkM,UAAU;IACTG,UAAU,EAAE/H,OAAO,CAACyJ,KAAM;IAC1BzB,UAAU,EAAE3J,QAAQ,GAAG,CAAC,GAAG,CAAE;IAC7BsG,KAAK,EAAEpG,SAAS,CAACqG,cAAI,CAAC8E,eAAe,CAAE;IACvCxB,IAAI,EAAElI,OAAO,CAAC2J,QAAS;IACvBlL,KAAK,EAAE0B,IAAI,CAACyJ,SAAU;IACtBlD,QAAQ,EAAGjI,KAAK,IAAK+D,WAAW,CAAC,WAAW,EAAE/D,KAAK,CAAE;IACrDsG,SAAS,EAAE/I,KAAK,CAACuJ;EAAQ,CAC1B,CAEO,CAAC,eAEb/J,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiK,IAAI;IAAC2B,GAAG;IAAClC,SAAS,EAAE,CAAC/I,KAAK,CAAC6N,MAAM,EAAE7N,KAAK,CAAC8N,YAAY;EAAE,gBACtDtO,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiJ,MAAM;IAACyF,WAAW;IAACxF,OAAO,EAAEzB;EAAe,GACzCvE,SAAS,CAACqG,cAAI,CAACoF,gBAAgB,CAC1B,CAAC,eACTxO,MAAA,CAAAmB,OAAA,CAAAyH,aAAA,CAAC/I,GAAA,CAAAiJ,MAAM;IAAC1E,IAAI,EAAEA,IAAK;IAACqK,QAAQ,EAAE,CAAC1G,aAAa,CAACI,MAAO;IAACY,OAAO,EAAExB;EAAa,GACxExE,SAAS,CAACgF,aAAa,CAACI,MAAM,GAAGiB,cAAI,CAACsF,wBAAwB,GAAGtF,cAAI,CAACuF,sBAAsB,EAAE;IAC7FC,KAAK,EAAE7G,aAAa,CAACI;EACvB,CAAC,CACK,CACJ,CACD,CACP,CAAC;AAEP,CAAC;AAAC0G,OAAA,CAAAxM,OAAA,GAAAA,OAAA;AAEFA,OAAO,CAACyM,WAAW,GAAG,0BAA0B;AAEhDzM,OAAO,CAAC0M,SAAS,GAAG;EAClB5J,YAAY,EAAE6J,kBAAS,CAACC,IAAI;EAC5B1M,cAAc,EAAEyM,kBAAS,CAACE,MAAM;EAChC1M,KAAK,EAAEwM,kBAAS,CAACG,OAAO,CAACH,kBAAS,CAACI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C1M,WAAW,EAAEsM,kBAAS,CAACK,MAAM;EAC7B1M,QAAQ,EAAEqM,kBAAS,CAACM;AACtB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _useRates = require("./useRates");
|
|
7
|
+
Object.keys(_useRates).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _useRates[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _useRates[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_useRates","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../../src/components/Rates/hooks/index.js"],"sourcesContent":["export * from './useRates';\n"],"mappings":";;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useRates = void 0;
|
|
7
|
+
var _dataSources = require("@mirai/data-sources");
|
|
8
|
+
var _locale = require("@mirai/locale");
|
|
9
|
+
var _services = require("@mirai/services");
|
|
10
|
+
var _ui = require("@mirai/ui");
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _helpers = require("../../../helpers");
|
|
13
|
+
var _helpers2 = require("../../helpers");
|
|
14
|
+
var _helpers3 = require("../helpers");
|
|
15
|
+
var _Rates = require("../Rates.constants");
|
|
16
|
+
var _Rates2 = require("../Rates.l10n");
|
|
17
|
+
let fetchCall = 0;
|
|
18
|
+
const useRates = () => {
|
|
19
|
+
const {
|
|
20
|
+
isMobile,
|
|
21
|
+
mobile
|
|
22
|
+
} = (0, _ui.useDevice)();
|
|
23
|
+
const {
|
|
24
|
+
translate
|
|
25
|
+
} = (0, _locale.useLocale)();
|
|
26
|
+
const {
|
|
27
|
+
set,
|
|
28
|
+
value: {
|
|
29
|
+
club = {},
|
|
30
|
+
currency,
|
|
31
|
+
finder = {},
|
|
32
|
+
hotel = {},
|
|
33
|
+
id,
|
|
34
|
+
language,
|
|
35
|
+
locale,
|
|
36
|
+
rates: {
|
|
37
|
+
cart: storeCart = [],
|
|
38
|
+
meta
|
|
39
|
+
} = {},
|
|
40
|
+
occupation: {
|
|
41
|
+
maxRooms
|
|
42
|
+
} = {},
|
|
43
|
+
urlParams,
|
|
44
|
+
session,
|
|
45
|
+
skeleton = false
|
|
46
|
+
}
|
|
47
|
+
} = (0, _dataSources.useStore)();
|
|
48
|
+
const refRoomSelector = (0, _react.useRef)();
|
|
49
|
+
const [cart, setCart] = (0, _react.useState)([]);
|
|
50
|
+
const [clubDiscount, setClubDiscount] = (0, _react.useState)(club.discount);
|
|
51
|
+
const [clubRate, setClubRate] = (0, _react.useState)(false);
|
|
52
|
+
const [dataSource, setDataSource] = (0, _react.useState)();
|
|
53
|
+
const [fetching, setFetching] = (0, _react.useState)(false);
|
|
54
|
+
const [metaBoard, setMetaBoard] = (0, _react.useState)();
|
|
55
|
+
const [responseError, setResponseError] = (0, _react.useState)();
|
|
56
|
+
const [room, setRoom] = (0, _react.useState)();
|
|
57
|
+
const [strictSearch, setStrictSearch] = (0, _react.useState)();
|
|
58
|
+
const {
|
|
59
|
+
calendar = [],
|
|
60
|
+
occupation = [],
|
|
61
|
+
place
|
|
62
|
+
} = finder;
|
|
63
|
+
const device = mobile ? 'MOBILE' : 'DESKTOP_TABLET';
|
|
64
|
+
const multiRoom = (occupation === null || occupation === void 0 ? void 0 : occupation.length) > 1;
|
|
65
|
+
|
|
66
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
|
+
(0, _react.useEffect)(() => skeleton && setFetching(true), [skeleton]);
|
|
68
|
+
(0, _react.useEffect)(() => {
|
|
69
|
+
if (multiRoom) {
|
|
70
|
+
if (room > 0) {
|
|
71
|
+
const {
|
|
72
|
+
current: {
|
|
73
|
+
offsetHeight = 0,
|
|
74
|
+
offsetTop = 0
|
|
75
|
+
} = {}
|
|
76
|
+
} = refRoomSelector || {};
|
|
77
|
+
window.scrollTo({
|
|
78
|
+
top: offsetTop + (isMobile ? offsetHeight : 0),
|
|
79
|
+
behavior: 'smooth'
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
setDataSource();
|
|
83
|
+
}
|
|
84
|
+
room !== undefined && fetch({
|
|
85
|
+
nextRoom: room
|
|
86
|
+
});
|
|
87
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
+
}, [room]);
|
|
89
|
+
(0, _react.useEffect)(() => {
|
|
90
|
+
const callback = async next => {
|
|
91
|
+
setClubDiscount(typeof next !== 'object' ? next : undefined);
|
|
92
|
+
clubRate && setClubRate(false);
|
|
93
|
+
};
|
|
94
|
+
_dataSources.Event.subscribe(_helpers2.EVENT.RATES_FILTER_CLUB, callback);
|
|
95
|
+
return () => _dataSources.Event.unsubscribe(_helpers2.EVENT.RATES_FILTER_CLUB, callback);
|
|
96
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
97
|
+
}, [clubRate]);
|
|
98
|
+
(0, _react.useEffect)(() => {
|
|
99
|
+
if (!dataSource && (!responseError || !responseError.tracking) || room) return;
|
|
100
|
+
_dataSources.Event.publish(_helpers2.EVENT.RATES_RESPONSE, {
|
|
101
|
+
error: !!responseError,
|
|
102
|
+
event: _helpers2.EVENT.RATES_RESPONSE,
|
|
103
|
+
response: dataSource || responseError
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
107
|
+
}, [dataSource, responseError]);
|
|
108
|
+
(0, _react.useEffect)(() => {
|
|
109
|
+
if (!dataSource || !storeCart.length) return;
|
|
110
|
+
(0, _helpers3.getBoard)({
|
|
111
|
+
cart,
|
|
112
|
+
dataSource,
|
|
113
|
+
storeCart
|
|
114
|
+
}).then(board => {
|
|
115
|
+
if (!board) return _dataSources.Event.publish(_helpers2.EVENT.METRICS, {
|
|
116
|
+
id: 'RATES:META:ERROR'
|
|
117
|
+
});
|
|
118
|
+
if (meta) {
|
|
119
|
+
_dataSources.Event.publish(_helpers2.EVENT.NOTIFICATION, {
|
|
120
|
+
contrast: true,
|
|
121
|
+
defaultMessage: translate(_Rates2.L10N.NOTIFICATION_META_RATE_FOUND, {
|
|
122
|
+
utm_source: _Rates.UTM_SOURCE_NAME[urlParams.utm_source] || urlParams.utm_source
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
_dataSources.Event.publish(_helpers2.EVENT.METRICS, {
|
|
126
|
+
id: 'RATES:META:SUCCESS'
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
setMetaBoard(board);
|
|
130
|
+
set({
|
|
131
|
+
rates: undefined
|
|
132
|
+
});
|
|
133
|
+
}).catch(() => set({
|
|
134
|
+
rates: undefined
|
|
135
|
+
}));
|
|
136
|
+
|
|
137
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
138
|
+
}, [dataSource, storeCart]);
|
|
139
|
+
(0, _react.useEffect)(() => {
|
|
140
|
+
if (!clubDiscount && !currency && !session && strictSearch === undefined) return;
|
|
141
|
+
!clubRate && setCart([]);
|
|
142
|
+
setRoom(undefined);
|
|
143
|
+
fetch();
|
|
144
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
145
|
+
}, [clubDiscount, currency, session, strictSearch]);
|
|
146
|
+
(0, _react.useEffect)(() => {
|
|
147
|
+
if (!locale) return;
|
|
148
|
+
fetch({
|
|
149
|
+
nextRoom: room
|
|
150
|
+
});
|
|
151
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
152
|
+
}, [locale]);
|
|
153
|
+
const checkNotifications = (nextDataSource, nextPromocode) => {
|
|
154
|
+
const {
|
|
155
|
+
notifications = []
|
|
156
|
+
} = nextDataSource;
|
|
157
|
+
if (notifications.includes(_Rates.NOTIFICATION.PROMOCODE_NOT_FOUND) && nextPromocode) {
|
|
158
|
+
_dataSources.Event.publish(_helpers2.EVENT.NOTIFICATION, {
|
|
159
|
+
contrast: true,
|
|
160
|
+
defaultMessage: translate(_Rates2.L10N.NOTIFICATION_PROMOCODE_NOT_FOUND, {
|
|
161
|
+
promocode: nextPromocode
|
|
162
|
+
})
|
|
163
|
+
});
|
|
164
|
+
set({
|
|
165
|
+
finder: {
|
|
166
|
+
calendar,
|
|
167
|
+
occupation,
|
|
168
|
+
place,
|
|
169
|
+
promocode: ''
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
if (notifications.includes(_Rates.NOTIFICATION.ROOM_NOT_FOUNT) && urlParams.roomTypeId) {
|
|
174
|
+
_dataSources.Event.publish(_helpers2.EVENT.NOTIFICATION, {
|
|
175
|
+
contrast: true,
|
|
176
|
+
defaultMessage: translate(_Rates2.L10N.NOTIFICATION_ROOM_NOT_FOUND)
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
if (notifications.includes(_Rates.NOTIFICATION.OFFER_NOT_FOUND) && urlParams.idoffers) {
|
|
180
|
+
_dataSources.Event.publish(_helpers2.EVENT.NOTIFICATION, {
|
|
181
|
+
contrast: true,
|
|
182
|
+
defaultMessage: translate(_Rates2.L10N.NOTIFICATION_OFFER_NOT_FOUND)
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
const fetch = async function () {
|
|
187
|
+
let {
|
|
188
|
+
nextRoom,
|
|
189
|
+
nextOccupation = occupation,
|
|
190
|
+
nextPromocode = finder.promocode
|
|
191
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
192
|
+
if (skeleton) return;
|
|
193
|
+
_dataSources.Event.publish(_helpers2.EVENT.FINDER, {
|
|
194
|
+
calendar: undefined
|
|
195
|
+
});
|
|
196
|
+
setFetching(true);
|
|
197
|
+
setResponseError();
|
|
198
|
+
let urlParams = (0, _helpers.fetchUrlParams)(location.search);
|
|
199
|
+
if (!urlParams.checkin || !urlParams.nights || !urlParams.parties) {
|
|
200
|
+
urlParams = {
|
|
201
|
+
...urlParams,
|
|
202
|
+
...(0, _helpers3.getFinderParams)({
|
|
203
|
+
...finder,
|
|
204
|
+
hotel
|
|
205
|
+
})
|
|
206
|
+
};
|
|
207
|
+
(0, _helpers2.replaceUrlParams)(urlParams);
|
|
208
|
+
}
|
|
209
|
+
const params = {
|
|
210
|
+
...urlParams,
|
|
211
|
+
...(club.active ? {
|
|
212
|
+
club,
|
|
213
|
+
clubDiscount
|
|
214
|
+
} : undefined),
|
|
215
|
+
id,
|
|
216
|
+
locale,
|
|
217
|
+
maxRooms,
|
|
218
|
+
device,
|
|
219
|
+
occupation: nextOccupation,
|
|
220
|
+
place,
|
|
221
|
+
selectedIds: cart.map(function () {
|
|
222
|
+
let {
|
|
223
|
+
roomId
|
|
224
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
225
|
+
return roomId;
|
|
226
|
+
}).join(','),
|
|
227
|
+
session,
|
|
228
|
+
strictSearch
|
|
229
|
+
};
|
|
230
|
+
if (nextRoom !== undefined) params.parties = (0, _helpers2.parseToParties)([nextOccupation[nextRoom || 0]]);
|
|
231
|
+
const lastFetchCall = ++fetchCall;
|
|
232
|
+
const nextDataSource = await _services.ServiceRates.get(params).catch(setResponseError);
|
|
233
|
+
if (lastFetchCall !== fetchCall) return;
|
|
234
|
+
if (nextDataSource !== null && nextDataSource !== void 0 && nextDataSource.externalSignout) return (0, _helpers3.signout)({
|
|
235
|
+
club,
|
|
236
|
+
language
|
|
237
|
+
});
|
|
238
|
+
if (nextDataSource) {
|
|
239
|
+
checkNotifications(nextDataSource, nextPromocode);
|
|
240
|
+
if ((nextOccupation === null || nextOccupation === void 0 ? void 0 : nextOccupation.length) > 1 && nextRoom === undefined) setRoom(0);
|
|
241
|
+
}
|
|
242
|
+
setDataSource(nextDataSource);
|
|
243
|
+
setFetching(false);
|
|
244
|
+
if (nextDataSource !== null && nextDataSource !== void 0 && nextDataSource.hotels) _dataSources.Event.publish(_helpers2.EVENT.METRICS, {
|
|
245
|
+
id: 'HOTELS:RENDER'
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
return {
|
|
249
|
+
actions: {
|
|
250
|
+
setCart,
|
|
251
|
+
setClubRate,
|
|
252
|
+
setDataSource,
|
|
253
|
+
setMetaBoard,
|
|
254
|
+
setRoom,
|
|
255
|
+
setStrictSearch
|
|
256
|
+
},
|
|
257
|
+
device,
|
|
258
|
+
multiRoom,
|
|
259
|
+
fetch: (0, _helpers.debounce)(fetch, 60),
|
|
260
|
+
refRoomSelector,
|
|
261
|
+
responseError,
|
|
262
|
+
state: {
|
|
263
|
+
cart,
|
|
264
|
+
clubDiscount,
|
|
265
|
+
clubRate,
|
|
266
|
+
dataSource,
|
|
267
|
+
fetching,
|
|
268
|
+
metaBoard,
|
|
269
|
+
room,
|
|
270
|
+
strictSearch
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
exports.useRates = useRates;
|
|
275
|
+
//# sourceMappingURL=useRates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRates.js","names":["_dataSources","require","_locale","_services","_ui","_react","_helpers","_helpers2","_helpers3","_Rates","_Rates2","fetchCall","useRates","isMobile","mobile","useDevice","translate","useLocale","set","value","club","currency","finder","hotel","id","language","locale","rates","cart","storeCart","meta","occupation","maxRooms","urlParams","session","skeleton","useStore","refRoomSelector","useRef","setCart","useState","clubDiscount","setClubDiscount","discount","clubRate","setClubRate","dataSource","setDataSource","fetching","setFetching","metaBoard","setMetaBoard","responseError","setResponseError","room","setRoom","strictSearch","setStrictSearch","calendar","place","device","multiRoom","length","useEffect","current","offsetHeight","offsetTop","window","scrollTo","top","behavior","undefined","fetch","nextRoom","callback","next","Event","subscribe","EVENT","RATES_FILTER_CLUB","unsubscribe","tracking","publish","RATES_RESPONSE","error","event","response","getBoard","then","board","METRICS","NOTIFICATION","contrast","defaultMessage","L10N","NOTIFICATION_META_RATE_FOUND","utm_source","UTM_SOURCE_NAME","catch","checkNotifications","nextDataSource","nextPromocode","notifications","includes","PROMOCODE_NOT_FOUND","NOTIFICATION_PROMOCODE_NOT_FOUND","promocode","ROOM_NOT_FOUNT","roomTypeId","NOTIFICATION_ROOM_NOT_FOUND","OFFER_NOT_FOUND","idoffers","NOTIFICATION_OFFER_NOT_FOUND","nextOccupation","arguments","FINDER","fetchUrlParams","location","search","checkin","nights","parties","getFinderParams","replaceUrlParams","params","active","selectedIds","map","roomId","join","parseToParties","lastFetchCall","ServiceRates","get","externalSignout","signout","hotels","actions","debounce","state","exports"],"sources":["../../../../src/components/Rates/hooks/useRates.js"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { ServiceRates } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { debounce, fetchUrlParams } from '../../../helpers';\nimport { EVENT, parseToParties, replaceUrlParams } from '../../helpers';\nimport { getBoard, getFinderParams, signout } from '../helpers';\nimport { NOTIFICATION, UTM_SOURCE_NAME } from '../Rates.constants';\nimport { L10N } from '../Rates.l10n';\n\nlet fetchCall = 0;\n\nexport const useRates = () => {\n const { isMobile, mobile } = useDevice();\n const { translate } = useLocale();\n const {\n set,\n value: {\n club = {},\n currency,\n finder = {},\n hotel = {},\n id,\n language,\n locale,\n rates: { cart: storeCart = [], meta } = {},\n occupation: { maxRooms } = {},\n urlParams,\n session,\n skeleton = false,\n },\n } = useStore();\n const refRoomSelector = useRef();\n\n const [cart, setCart] = useState([]);\n const [clubDiscount, setClubDiscount] = useState(club.discount);\n const [clubRate, setClubRate] = useState(false);\n const [dataSource, setDataSource] = useState();\n const [fetching, setFetching] = useState(false);\n const [metaBoard, setMetaBoard] = useState();\n const [responseError, setResponseError] = useState();\n const [room, setRoom] = useState();\n const [strictSearch, setStrictSearch] = useState();\n\n const { calendar = [], occupation = [], place } = finder;\n const device = mobile ? 'MOBILE' : 'DESKTOP_TABLET';\n const multiRoom = occupation?.length > 1;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => skeleton && setFetching(true), [skeleton]);\n\n useEffect(() => {\n if (multiRoom) {\n if (room > 0) {\n const { current: { offsetHeight = 0, offsetTop = 0 } = {} } = refRoomSelector || {};\n window.scrollTo({ top: offsetTop + (isMobile ? offsetHeight : 0), behavior: 'smooth' });\n }\n setDataSource();\n }\n\n room !== undefined && fetch({ nextRoom: room });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [room]);\n\n useEffect(() => {\n const callback = async (next) => {\n setClubDiscount(typeof next !== 'object' ? next : undefined);\n clubRate && setClubRate(false);\n };\n Event.subscribe(EVENT.RATES_FILTER_CLUB, callback);\n\n return () => Event.unsubscribe(EVENT.RATES_FILTER_CLUB, callback);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubRate]);\n\n useEffect(() => {\n if ((!dataSource && (!responseError || !responseError.tracking)) || room) return;\n\n Event.publish(EVENT.RATES_RESPONSE, {\n error: !!responseError,\n event: EVENT.RATES_RESPONSE,\n response: dataSource || responseError,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSource, responseError]);\n\n useEffect(() => {\n if (!dataSource || !storeCart.length) return;\n\n getBoard({ cart, dataSource, storeCart })\n .then((board) => {\n if (!board) return Event.publish(EVENT.METRICS, { id: 'RATES:META:ERROR' });\n\n if (meta) {\n Event.publish(EVENT.NOTIFICATION, {\n contrast: true,\n defaultMessage: translate(L10N.NOTIFICATION_META_RATE_FOUND, {\n utm_source: UTM_SOURCE_NAME[urlParams.utm_source] || urlParams.utm_source,\n }),\n });\n Event.publish(EVENT.METRICS, { id: 'RATES:META:SUCCESS' });\n }\n\n setMetaBoard(board);\n set({ rates: undefined });\n })\n .catch(() => set({ rates: undefined }));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataSource, storeCart]);\n\n useEffect(() => {\n if (!clubDiscount && !currency && !session && strictSearch === undefined) return;\n\n !clubRate && setCart([]);\n setRoom(undefined);\n fetch();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clubDiscount, currency, session, strictSearch]);\n\n useEffect(() => {\n if (!locale) return;\n fetch({ nextRoom: room });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [locale]);\n\n const checkNotifications = (nextDataSource, nextPromocode) => {\n const { notifications = [] } = nextDataSource;\n\n if (notifications.includes(NOTIFICATION.PROMOCODE_NOT_FOUND) && nextPromocode) {\n Event.publish(EVENT.NOTIFICATION, {\n contrast: true,\n defaultMessage: translate(L10N.NOTIFICATION_PROMOCODE_NOT_FOUND, { promocode: nextPromocode }),\n });\n set({ finder: { calendar, occupation, place, promocode: '' } });\n }\n if (notifications.includes(NOTIFICATION.ROOM_NOT_FOUNT) && urlParams.roomTypeId) {\n Event.publish(EVENT.NOTIFICATION, {\n contrast: true,\n defaultMessage: translate(L10N.NOTIFICATION_ROOM_NOT_FOUND),\n });\n }\n if (notifications.includes(NOTIFICATION.OFFER_NOT_FOUND) && urlParams.idoffers) {\n Event.publish(EVENT.NOTIFICATION, {\n contrast: true,\n defaultMessage: translate(L10N.NOTIFICATION_OFFER_NOT_FOUND),\n });\n }\n };\n\n const fetch = async ({ nextRoom, nextOccupation = occupation, nextPromocode = finder.promocode } = {}) => {\n if (skeleton) return;\n\n Event.publish(EVENT.FINDER, { calendar: undefined });\n\n setFetching(true);\n setResponseError();\n\n let urlParams = fetchUrlParams(location.search);\n if (!urlParams.checkin || !urlParams.nights || !urlParams.parties) {\n urlParams = { ...urlParams, ...getFinderParams({ ...finder, hotel }) };\n replaceUrlParams(urlParams);\n }\n\n const params = {\n ...urlParams,\n ...(club.active ? { club, clubDiscount } : undefined),\n id,\n locale,\n maxRooms,\n device,\n occupation: nextOccupation,\n place,\n selectedIds: cart.map(({ roomId } = {}) => roomId).join(','),\n session,\n strictSearch,\n };\n if (nextRoom !== undefined) params.parties = parseToParties([nextOccupation[nextRoom || 0]]);\n\n const lastFetchCall = ++fetchCall;\n const nextDataSource = await ServiceRates.get(params).catch(setResponseError);\n if (lastFetchCall !== fetchCall) return;\n\n if (nextDataSource?.externalSignout) return signout({ club, language });\n\n if (nextDataSource) {\n checkNotifications(nextDataSource, nextPromocode);\n\n if (nextOccupation?.length > 1 && nextRoom === undefined) setRoom(0);\n }\n\n setDataSource(nextDataSource);\n setFetching(false);\n\n if (nextDataSource?.hotels) Event.publish(EVENT.METRICS, { id: 'HOTELS:RENDER' });\n };\n\n return {\n actions: { setCart, setClubRate, setDataSource, setMetaBoard, setRoom, setStrictSearch },\n device,\n multiRoom,\n fetch: debounce(fetch, 60),\n refRoomSelector,\n responseError,\n state: { cart, clubDiscount, clubRate, dataSource, fetching, metaBoard, room, strictSearch },\n };\n};\n"],"mappings":"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"}
|
|
@@ -13,7 +13,9 @@ const bookingCancel = function () {
|
|
|
13
13
|
tracking = {}
|
|
14
14
|
} = {},
|
|
15
15
|
store: {
|
|
16
|
-
finder = {}
|
|
16
|
+
finder = {},
|
|
17
|
+
id,
|
|
18
|
+
type
|
|
17
19
|
} = {}
|
|
18
20
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
19
21
|
// ! -- TODO: use of tracking should be a temporary approach ---------------------------------------------------------
|
|
@@ -32,9 +34,11 @@ const bookingCancel = function () {
|
|
|
32
34
|
items: (0, _helpers.parseItems)({
|
|
33
35
|
finder,
|
|
34
36
|
hotelInfo,
|
|
37
|
+
id,
|
|
35
38
|
reservedExtras,
|
|
36
39
|
reservedRooms,
|
|
37
|
-
tracking
|
|
40
|
+
tracking,
|
|
41
|
+
type
|
|
38
42
|
}),
|
|
39
43
|
send_to: instances.map(function () {
|
|
40
44
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookingCancel.js","names":["_helpers","require","_legacy","bookingCancel","instances","response","tracking","store","finder","arguments","length","undefined","hotelInfo","idReservation","reservedExtras","reservedRooms","totalPriceWithoutTaxes","currency","hotelCurrency","value","code","items","parseItems","send_to","map","idAnalytics","transaction_id","formatPrice","window","gtag","exports"],"sources":["../../../../../src/contexts/PerformanceManager/providers/analytics/bookingCancel.js"],"sourcesContent":["import { parseItems } from './helpers';\nimport { formatPrice } from '../helpers/legacy';\n\nexport const bookingCancel = ({\n instances = [],\n response: { tracking = {} } = {},\n store: { finder = {} } = {},\n} = {}) => {\n // ! -- TODO: use of tracking should be a temporary approach ---------------------------------------------------------\n const { hotelInfo = {}, idReservation, reservedExtras = {}, reservedRooms = [], totalPriceWithoutTaxes } = tracking;\n\n const { currency: hotelCurrency = {} } = hotelInfo;\n\n const value = {\n currency: hotelCurrency.code,\n items: parseItems({ finder, hotelInfo, reservedExtras, reservedRooms, tracking }),\n send_to: instances.map(({ idAnalytics } = {}) => idAnalytics),\n transaction_id: idReservation,\n value: formatPrice(totalPriceWithoutTaxes, hotelCurrency),\n };\n\n window.gtag('event', 'refund', value);\n\n return value;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEO,MAAME,aAAa,GAAG,SAAAA,CAAA,EAIlB;EAAA,IAJmB;IAC5BC,SAAS,GAAG,EAAE;IACdC,QAAQ,EAAE;MAAEC,QAAQ,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC,CAAC;IAChCC,KAAK,EAAE;MAAEC,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"bookingCancel.js","names":["_helpers","require","_legacy","bookingCancel","instances","response","tracking","store","finder","id","type","arguments","length","undefined","hotelInfo","idReservation","reservedExtras","reservedRooms","totalPriceWithoutTaxes","currency","hotelCurrency","value","code","items","parseItems","send_to","map","idAnalytics","transaction_id","formatPrice","window","gtag","exports"],"sources":["../../../../../src/contexts/PerformanceManager/providers/analytics/bookingCancel.js"],"sourcesContent":["import { parseItems } from './helpers';\nimport { formatPrice } from '../helpers/legacy';\n\nexport const bookingCancel = ({\n instances = [],\n response: { tracking = {} } = {},\n store: { finder = {}, id, type } = {},\n} = {}) => {\n // ! -- TODO: use of tracking should be a temporary approach ---------------------------------------------------------\n const { hotelInfo = {}, idReservation, reservedExtras = {}, reservedRooms = [], totalPriceWithoutTaxes } = tracking;\n\n const { currency: hotelCurrency = {} } = hotelInfo;\n\n const value = {\n currency: hotelCurrency.code,\n items: parseItems({ finder, hotelInfo, id, reservedExtras, reservedRooms, tracking, type }),\n send_to: instances.map(({ idAnalytics } = {}) => idAnalytics),\n transaction_id: idReservation,\n value: formatPrice(totalPriceWithoutTaxes, hotelCurrency),\n };\n\n window.gtag('event', 'refund', value);\n\n return value;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEO,MAAME,aAAa,GAAG,SAAAA,CAAA,EAIlB;EAAA,IAJmB;IAC5BC,SAAS,GAAG,EAAE;IACdC,QAAQ,EAAE;MAAEC,QAAQ,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC,CAAC;IAChCC,KAAK,EAAE;MAAEC,MAAM,GAAG,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,GAAG,CAAC;EACtC,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACJ;EACA,MAAM;IAAEG,SAAS,GAAG,CAAC,CAAC;IAAEC,aAAa;IAAEC,cAAc,GAAG,CAAC,CAAC;IAAEC,aAAa,GAAG,EAAE;IAAEC;EAAuB,CAAC,GAAGZ,QAAQ;EAEnH,MAAM;IAAEa,QAAQ,EAAEC,aAAa,GAAG,CAAC;EAAE,CAAC,GAAGN,SAAS;EAElD,MAAMO,KAAK,GAAG;IACZF,QAAQ,EAAEC,aAAa,CAACE,IAAI;IAC5BC,KAAK,EAAE,IAAAC,mBAAU,EAAC;MAAEhB,MAAM;MAAEM,SAAS;MAAEL,EAAE;MAAEO,cAAc;MAAEC,aAAa;MAAEX,QAAQ;MAAEI;IAAK,CAAC,CAAC;IAC3Fe,OAAO,EAAErB,SAAS,CAACsB,GAAG,CAAC;MAAA,IAAC;QAAEC;MAAY,CAAC,GAAAhB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;MAAA,OAAKgB,WAAW;IAAA,EAAC;IAC7DC,cAAc,EAAEb,aAAa;IAC7BM,KAAK,EAAE,IAAAQ,mBAAW,EAACX,sBAAsB,EAAEE,aAAa;EAC1D,CAAC;EAEDU,MAAM,CAACC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAEV,KAAK,CAAC;EAErC,OAAOA,KAAK;AACd,CAAC;AAACW,OAAA,CAAA7B,aAAA,GAAAA,aAAA"}
|
|
@@ -10,14 +10,14 @@ const bookingResponse = function () {
|
|
|
10
10
|
instances = [],
|
|
11
11
|
response: {
|
|
12
12
|
tracking = {}
|
|
13
|
-
} = {}
|
|
13
|
+
} = {},
|
|
14
|
+
store = {}
|
|
14
15
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
15
16
|
// ! -- TODO: use of tracking should be a temporary approach ---------------------------------------------------------
|
|
16
17
|
const {
|
|
17
18
|
bookingValues: {
|
|
18
19
|
checkin,
|
|
19
20
|
checkout,
|
|
20
|
-
hotelId,
|
|
21
21
|
occupation,
|
|
22
22
|
coupon = '',
|
|
23
23
|
nights
|
|
@@ -33,8 +33,14 @@ const bookingResponse = function () {
|
|
|
33
33
|
} = tracking;
|
|
34
34
|
const {
|
|
35
35
|
currency: hotelCurrency = {},
|
|
36
|
-
propertyName
|
|
36
|
+
propertyName,
|
|
37
|
+
propertyType
|
|
37
38
|
} = hotelInfo;
|
|
39
|
+
const {
|
|
40
|
+
urlParams: {
|
|
41
|
+
idHotel
|
|
42
|
+
} = {}
|
|
43
|
+
} = store;
|
|
38
44
|
const commonProps = {
|
|
39
45
|
affiliation: propertyName,
|
|
40
46
|
coupon,
|
|
@@ -55,6 +61,8 @@ const bookingResponse = function () {
|
|
|
55
61
|
item_category: 'Habitación',
|
|
56
62
|
item_category2: rateName,
|
|
57
63
|
item_category3: defaultBoardDescription,
|
|
64
|
+
item_category4: propertyType,
|
|
65
|
+
item_category5: idHotel,
|
|
58
66
|
item_name: roomTypeName,
|
|
59
67
|
price: (0, _legacy.formatPrice)(averagePriceWithoutTaxes, hotelCurrency),
|
|
60
68
|
quantity: numRoomsToReserve * nights,
|
|
@@ -99,7 +107,7 @@ const bookingResponse = function () {
|
|
|
99
107
|
window.gtag('event', 'data_search_info', {
|
|
100
108
|
checkin,
|
|
101
109
|
checkout,
|
|
102
|
-
hotelId,
|
|
110
|
+
hotelId: idHotel,
|
|
103
111
|
coupon,
|
|
104
112
|
non_interaction: true,
|
|
105
113
|
occupation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookingResponse.js","names":["_legacy","require","bookingResponse","instances","response","tracking","arguments","length","undefined","bookingValues","checkin","checkout","
|
|
1
|
+
{"version":3,"file":"bookingResponse.js","names":["_legacy","require","bookingResponse","instances","response","tracking","store","arguments","length","undefined","bookingValues","checkin","checkout","occupation","coupon","nights","hotelInfo","idReservation","pendingPayment","reservedExtras","reservedRooms","totalPriceCommission","totalPriceWithoutTaxes","totalTaxes","currency","hotelCurrency","propertyName","propertyType","urlParams","idHotel","commonProps","affiliation","code","item_brand","rooms","map","_ref","averagePriceWithoutTaxes","defaultBoardDescription","numRoomsToReserve","rateId","rateName","roomTypeName","item_category","item_category2","item_category3","item_category4","item_category5","item_name","price","formatPrice","quantity","item_id","concat","extras","Object","keys","key","_ref2","id","name","multiplierPrice","priceWithoutTaxes","type","value","items","shipping","tax","transaction_id","send_to","idAnalytics","window","gtag","hotelId","non_interaction","step","exports"],"sources":["../../../../../src/contexts/PerformanceManager/providers/analytics/bookingResponse.js"],"sourcesContent":["import { formatPrice } from '../helpers/legacy';\n\nexport const bookingResponse = ({ instances = [], response: { tracking = {} } = {}, store = {} } = {}) => {\n // ! -- TODO: use of tracking should be a temporary approach ---------------------------------------------------------\n const {\n bookingValues: { checkin, checkout, occupation, coupon = '', nights } = {},\n hotelInfo = {},\n idReservation,\n pendingPayment,\n reservedExtras = {},\n reservedRooms = [],\n totalPriceCommission,\n totalPriceWithoutTaxes,\n totalTaxes,\n } = tracking;\n\n const { currency: hotelCurrency = {}, propertyName, propertyType } = hotelInfo;\n const { urlParams: { idHotel } = {} } = store;\n\n const commonProps = {\n affiliation: propertyName,\n coupon,\n currency: hotelCurrency.code,\n item_brand: propertyName,\n };\n\n const rooms = reservedRooms.map(\n ({ averagePriceWithoutTaxes, defaultBoardDescription, numRoomsToReserve, rateId, rateName, roomTypeName }) => ({\n ...commonProps,\n item_category: 'Habitación',\n item_category2: rateName,\n item_category3: defaultBoardDescription,\n item_category4: propertyType,\n item_category5: idHotel,\n item_name: roomTypeName,\n price: formatPrice(averagePriceWithoutTaxes, hotelCurrency),\n quantity: numRoomsToReserve * nights,\n item_id: `${rateId}`,\n }),\n );\n\n const extras = Object.keys(reservedExtras)\n .map((key) => reservedExtras[key])\n .map(({ id, name, multiplierPrice, priceWithoutTaxes, type }) => ({\n ...commonProps,\n item_category: 'Extra',\n item_category2: type,\n item_name: name,\n price: formatPrice(priceWithoutTaxes, hotelCurrency),\n quantity: multiplierPrice,\n item_id: `${id}`,\n }));\n\n const value = {\n affiliation: propertyName,\n coupon,\n currency: hotelCurrency.code,\n items: [...rooms, ...extras],\n shipping: totalPriceCommission,\n tax: formatPrice(totalTaxes, hotelCurrency),\n transaction_id: `Reservation code ${idReservation}`,\n value: formatPrice(totalPriceWithoutTaxes, hotelCurrency),\n send_to: instances.map(({ idAnalytics } = {}) => idAnalytics),\n };\n\n window.gtag('event', pendingPayment ? 'BTP' : 'purchase', value);\n window.gtag('event', 'data_search_info', {\n checkin,\n checkout,\n hotelId: idHotel,\n coupon,\n non_interaction: true,\n occupation,\n send_to: instances.map(({ idAnalytics } = {}) => idAnalytics),\n step: 'CONFIRMATION',\n });\n\n return value;\n};\n"],"mappings":"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"}
|