@sledge-app/react-instant-search 1.0.48 → 1.0.49
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sledge-react-instant-search.cjs","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useIntersectionObserver.ts","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share'\n};\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n // cleaning from different token\n const mainUrl = url.split('?')[0];\n const cacheMatches = await cache.matchAll();\n const filteredCaches = await cacheMatches.filter((f: any) => f.url.includes(mainUrl) && f.url !== url);\n for (const c of filteredCaches) {\n await cache.delete(c.url);\n }\n\n cache.put(url, networkResponse.clone());\n\n return networkResponse;\n });\n\n return cachedResponse || fetchedResponse;\n });\n });\n}\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) =>\n text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => setProgress(valueProgress), delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\n\nexport interface ISliderProps {\n value: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { value, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n value={value}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => setValueCommit?.(valueCommit)}\n onValueChange={(valueChange: number[]) => setValueChange?.(valueChange)}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {!value[1] ? null : (\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run) {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setIsLoading(false);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '') : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { stringToSlug } from '@core/lib/helper';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const { id: variant_id = '', admin_graphql_api_id: variant_admin_graphql_api_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n backgroundColor: optionName === 'Color' ? item : null\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return <ProductCard item={item} key={`sledge-product-card_${index}`} handleAddToCart={handleAddToCart} clickedAddToCartId={clickedAddToCartId} {...props} />;\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid,\n Progress\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n HIERARCHICAL_FACET_OBJECT_ALIASES,\n LOCAL_STORAGE_KEY,\n MAX_LIMIT_HIERARCHICAL,\n OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement, stringToSlug } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n showOutOfStock?: boolean;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n handleChangeKeyword?(value: string): void;\n generalDataSettings?: any;\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) onClick?.();\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilters, setAllowedFilters] = React.useState(sledgeSettings?.instantsearch?.filters || []);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [showOutOfStock, setShowOutOfStock] = React.useState(sledgeSettings?.instantsearch?.show_out_of_stock);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value));\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return newItems;\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n responseGeneral = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || '');\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const { allowed_sorts, default_sort, filters, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages, hierarchical_product_type } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setAllowedFilters(filters?.length ? filters : []);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setShowOutOfStock(show_out_of_stock);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n await handleInitStates(response);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings\n } = props || {};\n\n const { collectionId, collectionName } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(Number(defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>([]);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const { button_load_more, button_loading } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n // Define selected facet hierarchical\n let hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n let facetHierarchical = hierarchicalFacetAliases.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(hierarchical_separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n // End define selected facet hierarchical\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) {\n setClickedFacets(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n }\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n };\n\n const handleFilterReset = () => {\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsLoadingButtonLoadMore(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(!hits?.length ? [] : (prevState: any) => (searchResult?.length && isLoadMore ? [...prevState, ...hits] : hits));\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n setSearchFacetDistribution(facetDistribution);\n };\n\n const handleSearchResult = async (props: { isLoadMore?: boolean; isReplaceData?: boolean; onSearch?: boolean }) => {\n if (!clickedTabIndexId) return;\n\n const { isLoadMore = false, isReplaceData = false } = props;\n\n if (isReplaceData) {\n setCurrentPage(1);\n setSearchResult([]);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let isCustom = ['variants.inventory_quantity'].includes(facet[0]);\n let isRange = ['variants.price'].includes(facet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[facet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${facet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n return filterItemHierarchicals;\n }\n\n let filterItem = `'${facet[0]}' IN ${JSON.stringify(facet[1])}`;\n\n if (isRange) filterItem = `'${facet[0]}' >= ${facet[1][0]} AND '${facet[0]}' <= ${facet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(facet[1]) && facet[1]?.length > 1) {\n filterItem = `(${facet[1]\n ?.map((item: any) => {\n return `'${facet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${facet[0]}' ${facet[1]}`;\n }\n }\n\n return filterItem;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`'tags' NOT IN ${JSON.stringify(hiddenTags)}`);\n if (collectionId) filters.push(`'collections.id' = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || hideFilterWhenOneValue) return;\n\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value\n };\n });\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) {\n setAllowedFilter(valueAllowedFilter);\n setClickedOpenFilters(valueAllowedFilter?.length ? valueAllowedFilter.map(({ value }: any) => value) : []);\n }\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isReplaceData = Boolean(\n previousState &&\n (previousState?.keyword !== keyword ||\n previousState?.clickedLimitId !== clickedLimitId ||\n previousState?.clickedSortId !== clickedSortId ||\n previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n let dataClickedFacets: any[] = [];\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const handleConditionNotUpdateFacetDistribution = (value: any) => {\n let arrPriorityFacet = ['vendor'];\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = arrFacetSelected.includes('variants.price');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n };\n\n const facetComponent = (filter: { value: any; label: string; display: string; items: any }) => {\n let { value, label, display, items } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues = [];\n\n for (const item of items) {\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution(getValue)\n ? item?.total || 0\n : searchFacetDistribution[getValue] && searchFacetDistribution[getValue][item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetCheckbox = (facetValues: any) => {\n return handleFacetValues(facetValues)?.map((facetValue: any, index: number) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n return (\n <>\n <li\n key={index}\n className={`sledge-instant-search__result-filter-checkbox-item ${\n isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ''\n }`}\n >\n <Checkbox\n id={`${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n </li>\n {isHasChildren && isChecked ? handleFacetCheckbox(children) : null}\n </>\n );\n });\n };\n\n if (display.toLowerCase() === 'slider') {\n items = defaultFacetStats[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && items?.length) {\n blockComponent = <>{handleFacetCheckbox(items)}</>;\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const handleHierarchicalFacet = ({ indexValue, filter }: { indexValue: any; filter: any }) => {\n const { hide_unrelated } = filter;\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n const facets = searchResultFacets[`${indexValue}.lvl${level}`];\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(hierarchical_separator);\n const selectedFacetHierarchical = facetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hierarchical_hiddens?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n\n // Hide item tree\n if (isWhenSelectedHideSiblings || isHidden) continue;\n\n if (level > 0) {\n parent = hierarchicalFacets;\n\n for (let i = 0; i < names.length - 1; i++) {\n let foundIndex = parent?.findIndex((f: any) => f.name.trim().toLowerCase() === names[i].trim().toLowerCase());\n\n parent = parent?.[foundIndex]?.children;\n }\n\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level: 0,\n children: []\n });\n }\n }\n\n return hierarchicalFacets;\n };\n\n const filterSettings = (filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n }): { isActive: boolean; isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = display.toLowerCase() === 'tree' ? handleHierarchicalFacet({ indexValue: value, filter }) : searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n let getFacetComponent = facetComponent({\n ...filter,\n items\n });\n\n if (display.toLowerCase() === 'swatch' && items?.length) classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n if (display.toLowerCase() === 'tree') classesUlElement.push('sledge-instant-search__result-filter-item-tree');\n\n let isLastIndex = allowedFilter.length - 1 === indexFilter;\n\n return { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings(filter);\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings(filter);\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId(value)}\n className={`${isLastIndex ? (allowedFilter.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && allowedFilter.length ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{filterHorizontalBlockComponent}</div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword, clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [keyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\n\nexport function useIntersectionObserver(options: { threshold?: number; root?: any; rootMargin?: string }) {\n const { threshold = 1, root = null, rootMargin = '0px' } = options || {};\n const [entry, setEntry] = React.useState<any>(null);\n\n const previousObserver: any = React.useRef(null);\n\n const customRef = React.useCallback(\n (node: any) => {\n if (previousObserver.current) {\n previousObserver.current.disconnect();\n previousObserver.current = null;\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(node);\n previousObserver.current = observer;\n }\n },\n [threshold, root, rootMargin]\n );\n\n return [customRef, entry];\n}\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","getData","usePrevious","value","ref","React","useRef","useEffect","current","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","useState","arrowElement","_a","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","SliderElement.Thumb","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","defaultValue","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","isVisibleClearField","setIsVisibleClearField","Boolean","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","Badge","useProxyUrl","propsData","position","positionProp","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","defaultColorIcon","colorIcon","setColorIcon","totalWishlist","setTotalWishlist","total_data","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","proxyUrl","setProxyUrl","proxy_url","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","floating_button_type","launch_point","alert_login","alert","login_button","_b","languages","widget","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeInitSelector","sledgeWishlistSettings","Array","from","querySelectorAll","isElementDetected","isBottomFloatingType","remove","elementContainerWidget","createElement","setAttribute","appendChild","getAttribute","createRoot","render","StrictMode","Provider","productReview","instantSearch","isJsVersion","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","global","show","show_notification","location_notification","_c","notification","title_added_to_wishlist","text_added_to_wishlist","title_removed_to_wishlist","text_removed_to_wishlist","title_fail_add_to_wishlist","text_fail_add_to_wishlist","_d","_e","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","sledgeWishlistTriggerUpdate","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","node","nodeType","matches","elementNode","observe","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","resShopifyAddToCart","push","Shopify","routes","root","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","colors","main_color","background","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","useCallback","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","entry","threshold","rootMargin","setEntry","previousObserver","disconnect","Node","ELEMENT_NODE","observer","IntersectionObserver","useIntersectionObserver","isIntersecting","role","SearchResultWidget","layoutType","collectionId","searchParams","settings","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilters","setAllowedFilters","filters","allowedTabs","setAllowedTabs","facets","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","displaySettings","setDisplaySettings","colorSwatches","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","setLanguageSettings","_j","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","_k","hierarchical_product_type","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","setGeneralDataSettings","general","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_l","searchResultContainerRef","handleInitStates","tabs","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","join","results","facetStats","totalHits","facetDistribution","find","fromEntries","facet","hide_when_one_value","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","responseGeneral","getFirstIndex","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","INSTANT_SEARCH_SETTING","delayDebounceFn","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_m","enable_on_search","_n","layout","filterVerticalSkeleton","_o","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","ResultCategory","handleChangeTabIndex","_w","_x","handleChangeKeyword","searchParams2","set","history","pushState","pathname","collectionName","clickedLimitId","setClickedLimitId","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchFacetDistribution","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","language_result","language_search_form_placeholder","language_limit","add_to_cart","language_add_to_cart","language_filter","clear_filter","language_clear_filter","pagination_info","language_pagination_info","total_result_text","language_total_result_text","separator","hierarchical_separator","hiddens","hierarchical_hiddens","button_load_more","button_loading","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","filter_option_style","hierarchicalFacetAliases","hierarchicalFacetAlias","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","arrItem","isLoadMore","pagination_type","handleQueryStringFilter","valueClickedFacets","searchParamsObject","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","handleFilterReset","handleFilterChange","parentId","force","isRange","facets2","handleSearchResult","isReplaceData","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","arrItemHierarchicals","itemHierarchical","filterHierarchical","filterItem","isArray","sort","page","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","valueAllowedFilter","dataClickedFacets","arrFacetSelected","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","handleConditionNotUpdateFacetDistribution","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","filterSettings","indexFilter","indexValue","hide_unrelated","hierarchicalFacets","level","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","startsWith","foundIndex","findIndex","trim","handleHierarchicalFacet","isRender","classesUlElement","getFacetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","handleFacetValues","facetValues","isFacetHierarchical","labelName","getValue","counter","handleFacetCheckbox","facetValue","itemValue","isHasChildren","isChecked","defaultValueMin","defaultValueMax","getColorSwatch","facetComponent","isLastIndex","filterVerticalComponents","valueClickedOpenFilters","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","setItem","_y","_z","_A","_B","wishlists","reviews","ResultEmpty","isRefreshSearchResult","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"+LAsBa,MCtBAA,EAAU,6BACVC,EAA4B,+CAC5BC,EAAU,uDAEVC,EAAyB,iBACzBC,EAmCC,CACNC,SAAU,gBACVC,eAAgB,sBAChBC,6BAA8B,oCAC9BC,cAAe,qBACfC,cAAe,sBA8BVC,EACE,mBADFA,EAEC,kBAFDA,EAIgB,iCAJhBA,EAKQ,yBALRA,EAMS,0BANTA,EAOe,gCAPfA,EAQe,gCARfA,EAaM,uBAENC,EAIiB,mBAgBjBC,EAAW,CACpBC,OAAQ,CACJC,0BAA2B,IAAIX,0BAEnCY,SAAU,CACNC,cAAe,IAAIb,sBACnBc,wBAAyB,4CACzBC,gBAAiB,IAAIf,wBACrBgB,eAAgB,IAAIhB,uBACpBiB,sBAAuB,IAAIjB,+BAE/BkB,eAAgB,CACZF,eAAgB,IAAIhB,6BACpBmB,6BAA8B,IAAInB,2CAClCoB,eAAgB,IAAIpB,6BACpBqB,oBAAqB,IAAIrB,kCACzBsB,8BAA+B,IAAItB,4CACnCuB,gBAAiB,IAAIvB,+BAEzBwB,eAAgB,CACZC,sBAAuB,IAAIzB,6BAC3B0B,2BAA4B,IAAI1B,kCAChC2B,6BAA8B,IAAI3B,oCAClC4B,mBAAoB,IAAI5B,6CAE5B6B,uBAAwB,CACpBC,wBAAyB,IAAI9B,8CAC7B+B,yBAA0B,IAAI/B,iDAGzBgC,EAAsB,CAAC,GAAI,GAAI,GAAI,GAAI,KACvCC,EAA8B,SAC9BC,EAA4B,sBAE5BC,EACA,IAGAC,EAIK,qBAJLA,EAKG,mBALHA,EAMK,qBANLA,EAOM,sBAPNA,EAQQ,wBARRA,EASO,uBAIPC,EACO,CACZrB,eAAgB,yBAMXsB,EAAsB,CAC/BC,cAAe,gBACfC,OAAQ,gBACRC,IAAK,gBACLC,KAAM,gBACNC,IAAK,gBACLC,OAAQ,iBAECC,EAAyC,CAClDC,YAAa,0BACbC,aAAc,2BCnLYC,eAAAC,EAAIC,EAAaC,GACvC,GAAwB,oBAAjBC,cAAkD,oBAAXC,QAA6C,QAAnBF,EAAQG,SAAqB,MAAAH,OAAA,EAAAA,EAASI,WAGpG,OAAAC,MAAMN,EAAKC,GAASM,MAAMC,GAAaA,EAASC,SAH+D,CACnH,MAAAC,QAKdZ,eAAuBE,GACnB,MACMW,EAAY,WAElB,OAAOR,OAAOS,KAAKD,GAAWJ,MAAMM,GACzBA,EAAMC,MAAMd,GAAKO,MAAMQ,IAC1B,MAAMC,EAAkBV,MAAMN,GAAKO,MAAKT,MAAOmB,IAE3C,MAAMC,EAAUlB,EAAImB,MAAM,KAAK,GACzBC,QAAqBP,EAAMQ,WAC3BC,QAAuBF,EAAaG,QAAQC,GAAWA,EAAExB,IAAIyB,SAASP,IAAYM,EAAExB,MAAQA,IAClG,IAAA,MAAW0B,KAAKJ,QACNT,EAAMc,OAAOD,EAAE1B,KAKlB,OAFPa,EAAMe,IAAI5B,EAAKiB,EAAgBY,SAExBZ,CAAA,IAGX,OAAOF,GAAkBC,CAAA,KAGrC,CA5B2Bc,CAAQ9B,GACpB,aAAMU,EAAKD,MACtB,CACJ,CCHa,MAAAsB,EAAeC,IAClB,MAAAC,EAAMC,EAAMC,SAIlB,OAHAD,EAAME,WAAU,KACZH,EAAII,QAAUL,CAAA,IAEXC,EAAII,OAAA,ECFF,MAAAC,EAAkBC,IAC3B,IAAKA,EAAW,MAAA,GAEZ,IAAAC,EAAQC,OAAOF,GAEnB,GAAIC,EAAMf,SAAS,YAAce,EAAMf,SAAS,KAAM,CAE9C,IAAAiB,EAAQF,EAAMrB,MAAM,KACxB,OAAOuB,EAAMA,EAAMC,OAAS,IAAMH,CAAA,CAE3B,OAAAA,CACX,EA8DSI,EAAclC,GAA+D,mBAATA,EAEpEmC,EAAmBC,IACtB,MAAAC,QAAEA,EAASC,aAAAA,GAAiBF,EAElC,GAAKC,EAAL,CAEI,IACAE,SADkBF,WAASG,wBAAwBC,KAChBC,OAAOC,QAAUL,EAExDI,OAAOE,SAAS,CACZH,IAAKF,EACLM,SAAU,UAPA,CAQb,EAkBQC,EAAW1D,MAAOgD,IAU3B,MAAM9C,IAAEA,EAAKI,OAAAA,EAAAqD,cAAQA,EAAgB,GAAAC,QAAIA,EAAU,CAAA,EAAAC,QAAIA,EAAU,mBAAIC,GAAkB,EAAAC,aAAMA,GAAe,EAAOxD,UAAAA,GAAY,GAAUyC,EAErI,IAAAgB,EAAY,IAAIC,QACfH,IACGH,GAAeK,EAAUE,OAAO,gBAAiB,UAAUP,KAE3DQ,OAAOC,KAAKP,GAAShB,QACrBsB,OAAOC,KAAKP,GAASQ,SAAQ,SAAUC,GACnCN,EAAUE,OAAOI,EAAKT,EAAQS,GAAI,KAI1C,IAAAC,EAAW,IAAIC,UACfV,GAAmBC,KACfJ,GAAiBG,GAA0BS,EAAAL,OAAO5E,EAAoBC,cAAeoE,GAEzFY,EAASL,OAAO5E,EAAoBE,OAAQF,EAAoBgB,IAE5D6D,OAAOC,KAAKR,GAASf,QACrBsB,OAAOC,KAAKR,GAASS,SAAQ,SAAUC,GAC/BP,IAAyB,MAATH,OAAS,EAAAA,EAAAa,QACzB,IAAIb,EAAQa,OAAOC,KAAKC,IACpBJ,EAASL,OAAO,QAASS,EAAMA,EAAKC,KAAI,IAGhDL,EAASL,OAAOI,EAAKV,EAAQU,GAAI,KAIvC,MAAAO,EAAYf,EAAkB,OAASxD,EAC7C,IAAIwE,EAAsB,CACtBxE,OAAQuE,EACRE,SAAU,SACVlB,QAASG,EACTgB,KAAoB,QAAdH,EAAsB,KAAOf,GAAmBC,EAAeQ,EAAWU,KAAKC,UAAUtB,GAC/FrD,aAGJ,aAAaN,EAAI,GAAGC,IAAO4E,EAAc,EAGhCK,EAAc,CACvBC,EACAjF,EAAe,CACXkF,SAAU,eACVC,KAAM,UACNC,MAAO,UACPC,IAAK,aAER,IAAIC,KAAKL,GAAMM,eAAe,QAASvF,GAsJ/BwF,EAAaC,GACfA,EAAKC,QAAQ,gBAAiB,IAe5BC,EAAgBC,GACzBA,EACKC,cACAH,QAAQ,WAAY,IACpBA,QAAQ,MAAO,KC9TXI,EAAU,EACnBC,UACAC,UACAC,SACAC,YACAC,gBACAC,QACAC,YACAC,iBAAgB,EAChBC,aAAY,EACZC,cAAc,GACdC,aAAa,EACbC,cAAc,MAER,MAAC/F,EAAMgG,GAAW1E,EAAM2E,WAASN,GAAgBL,GAYnD,OAVJhE,EAAME,WAAU,WACZ,IAAI0E,EAAe,OAAAC,EAAA,MAAAC,cAAA,EAAAA,SAAUC,cAAc,uBAAkB,EAAAF,EAAAG,cAEzDJ,UAAgBL,WAAa9D,UAC7BmE,EAAaK,MAAMC,QAAU,cAC7BN,EAAaO,UAAYZ,EAC7B,GACD,CAAC7F,MAGA0G,kBAAAC,KAACC,EAAeC,0CAAf,IACQlB,GAAiB,CAClB3F,KAAMsF,MAELC,GAAa,CACduB,aAAe9G,IACXgG,EAAQhG,GACRuF,EAAUvF,EAAI,GAItB+G,SAAA,CAAAC,EAAAN,kBAAAM,IAACC,EAAeC,0CAAf,CAAuBC,SAAO,EAAEJ,SAAQ3B,IACzC4B,wBAACI,EAAAA,0CAAA,CACGL,WAAAL,kBAAAC,KAACU,EAAeC,0CAAf,CACG5B,UAAW,2BAA2BA,GAAwB,KAC9DI,aACAC,cACAN,WACKF,GAAa,CACdgC,gBAAiB,IAAMhC,GAAU,GACjCiC,iBAAkB,IAAMjC,GAAU,IAGrCwB,SAAA,CAAA1B,GACCG,GACGwB,EAAAA,kBAAAA,IAAAS,4CAAA,CAAqB/B,UAAU,eAAe,aAAW,QACtDqB,iCAAC,MAAI,CAAAW,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,0gBACFF,KAAK,eACLG,SAAS,UACTC,SAAS,gBAKxBrC,EAAasC,EAAAxB,kBAAAM,IAAAmB,4CAAA,CAAqBzC,UAAU,iBAAoB,YAEzE,ECvEC0C,EAAW,EAAGhH,QAAOiH,QAAOC,YAAY,GAAIC,eAAe,GAAIC,QAAQ,QAChF,MAAOC,EAAUC,GAAepH,EAAM2E,SAAS,GAc3C,OAZJ3E,EAAME,WAAU,KACR,IAAAmH,GAAkBvH,EAAQiH,EAAS,IAEvC,GAAIG,EAAO,CACP,MAAMI,EAAQC,YAAW,IAAMH,EAAYC,IAAgBH,GACpD,MAAA,IAAMM,aAAaF,EAAK,CAE/BF,EAAYC,EAChB,GACD,MAGCjC,kBAAAM,IAAC+B,EAAgBC,0CAAhB,CACGtD,UAAU,mBACVtE,MAAOqH,EACPlC,MACIgC,EACM,CACIU,YAAa,MACbC,YAAa,QACbC,YAAaZ,GAEjB,CAAC,EAGXxB,WAAAL,kBAAAM,IAACoC,EAAgBC,0CAAhB,CACG3D,UAAU,oBACVa,MAAO,CACE+C,UAAW,eAAe,IAAMb,SACjCH,GAAa,CACbiB,gBAAiBjB,OAG7B,EClCCkB,EAAW,EAAG7H,KAAImC,OAAM1C,QAAOqI,WAAUC,QAAOC,UAASC,aAAa,CAAC,EAAGC,eAE/EnD,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,2BACXqB,SAAA,GAAAL,kBAAAM,IAAC8C,EAAgBC,0CAAhB,CAAqBrE,UAAU,wBAAwBiE,UAAkBhI,KAAQmC,OAAY1C,QAAcqI,WAAoBI,UAC5H9C,SAAAC,EAAAA,kBAAAA,IAACgD,EAAAA,0CAAA,CAA0BtE,UAAU,6BACjCqB,SAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,EAAGC,QAAQ,WAAWC,KAAK,OAAOC,MAAM,6BAC5Df,WAAAL,kBAAAM,IAAC,OAAA,CACGgB,SAAS,UACTC,SAAS,UACTF,EAAE,sYACFF,KAAK,gBAKpB6B,2BACI,QAAM,CAAAhE,UAAU,yBAAyBuE,QAAStI,EAAI4E,MAAOqD,EACzD7C,SACL2C,OCnBHQ,EAAUC,IACb,MAAA/I,MAAEA,MAAOgJ,EAAKC,IAAAA,EAAAC,KAAKA,EAAO,EAAGC,eAAAA,EAAAC,eAAgBA,GAAmBL,EAEtE,+BACK,OACG,CAAApD,WAAAL,kBAAAC,KAAC8D,EAAcC,0CAAd,CACGhF,UAAU,qBACVtE,gBACoB,IAARgJ,EACN,CACIA,OAEJ,CAAC,EACPC,MACAC,OACA,aAAW,SACXK,cAAgBC,GAA2C,MAAjBL,OAAiB,EAAAA,EAAAK,GAC3DC,cAAgBC,GAA2C,MAAjBN,OAAiB,EAAAA,EAAAM,GAE3D/D,SAAA,GAACC,kBAAAA,IAAA+D,EAAAC,0CAAA,CAAoBtF,UAAU,sBAC3BqB,iCAACkE,EAAAA,0CAAA,CAAoBvF,UAAU,4BAEnCgB,kBAAAM,IAACkE,GAAA,CACG7F,QAASjE,EAAM,GACfyE,YAAa,sPACbsF,aAAa,EAEbpE,WAACC,kBAAAA,IAAAoE,EAAAA,0CAAA,CAAoB1F,UAAU,0BAEjCtE,EAAM,KACJsF,kBAAAM,IAACkE,GAAA,CACG7F,QAASjE,EAAM,GACfyE,YAAa,sPACbsF,aAAa,EAEbpE,WAACC,kBAAAA,IAAAoE,EAAAA,0CAAA,CAAoB1F,UAAU,0BAN1B,SAUrB,ECvCK2F,EAAclB,IACvB,IAAImB,YAAEA,EAAaC,UAAAA,EAAAC,YAAWA,WAAaC,EAAUC,SAAUC,GAAiBxB,EAEhF,MAAMyB,EAAyC,IAAhBN,EACzBO,EAAqBP,IAAgBC,GAEpCG,EAAUI,GAAexK,EAAM2E,SAAc,MAuBhD,OALJ3E,EAAME,WAAU,KAhBO,MACb,MAAAuK,IACApF,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,QACQuE,EAAY,OAAKC,EAAU,YAAUC,EAAY,aAI3DG,IACAA,EAAeA,EAAaM,WAAW3N,EAAqCuD,OAAOyJ,IACnFK,EAAeA,EAAaM,WAAW3N,EAAmCuD,OAAO0J,IACjFI,EAAeA,EAAaM,WAAW3N,EAAqCuD,OAAO2J,KAG3EM,EAAAH,GAA8BI,EAAe,OAK1D,MAGCrF,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,qBACXqB,SAAA,GAAAL,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SACLxG,UAAU,mCACLkG,EACC,CACIO,UAAU,GAEd,CACItC,QAAS,IAAM4B,EAASH,EAAc,IAGhDvE,iCAACqF,EAAqB,CAAA1E,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAEvDrF,kBAAAA,IAAC,QAAMD,SAAS2E,MAChBhF,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SACLxG,UAAU,mCACLmG,EACC,CACIM,UAAU,GAEd,CACItC,QAAS,IAAM4B,EAASH,EAAc,IAGhDvE,iCAACuF,EAAsB,CAAA5E,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAE5D,ECvDKE,EAAa,EAAG5K,KAAImC,OAAM2F,WAAU+C,eAAcC,QAAO7C,aAAa,GAAIiB,mBAE9E3C,EAAAxB,kBAAAM,IAAA,MAAA,CAAItB,UAAU,8BACXqB,iCAAC,OACG,CAAAA,WAAAL,kBAAAM,IAAC0F,EAAkBC,0CAAlB,CACGjH,UAAU,2BACV,aAAW,eACX8G,eACA7K,KACAmC,OACA2F,WACAoB,gBAEC9D,SAAM0F,EAAA7I,KAAI,CAACC,EAAwC+I,KAC1C,MAAAlD,MAAEA,EAAOtI,MAAAA,GAAUyC,EAGrB,SAAA6C,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,gCACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC6F,EAAAC,0CAAA,CAAuBpH,UAAU,2BAA2BtE,QAAcO,GAAI,GAAGA,IAAKiL,IACnF7F,iCAACgG,EAAAA,0CAAA,CAA4BrH,UAAU,sCAE1CgB,kBAAAM,IAAA,QAAA,CAAMtB,UAAU,4BAA4BuE,QAAS,GAAGtI,IAAKiL,IAASrG,MAAOqD,EACzE7C,SACL2C,MANgDkD,EAOpD,UC1BfI,EAAc,EAAGrL,KAAImC,OAAM1C,QAAO6L,MAAKC,QAAOzD,WAAU0D,iBAAgBtD,cACjF,MAAMuD,EAAS,WACPF,WAAOnL,QACL,CACIsL,gBAAiB,QAAQH,MACzBI,eAAgB,WAEpB,CACI/D,gBAAiB0D,IAK3BjG,OAAAA,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,+BACXqB,SAAAC,EAAAN,kBAAAM,IAAC8C,EAAgBC,0CAAhB,CACGrE,UAAU,4BACVyH,iBACAxL,KACAmC,OACA1C,QACAqI,WACAI,UACAtD,MAAO6G,KAEf,ECrBKG,EAAS,EAAGzJ,OAAM0J,cAAa/D,WAAU+C,eAAcC,QAAO7C,aAAa,GAAIiB,qBAEpFnE,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,yBACXqB,kCAAC0G,EAAAA,0CAAA,CAAmB3J,OAAY2F,WAAoBoB,gBAChD9D,SAAA,CAAAJ,EAAAA,kBAAAA,KAAC+G,EAAAA,0CAAA,CAAsBhI,UAAU,yBAC7BqB,SAAA,yBAAC4G,EAAAA,0CAAA,CAAoBH,wCACpBI,EAAAA,0CAAA,CAAmBlI,UAAU,sBAC1BqB,SAACmB,EAAAxB,kBAAAM,IAAA,MAAA,CAAIU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,6TACFF,KAAK,eACLG,SAAS,UACTC,SAAS,2CAKxB4F,EAAAA,0CAAA,CACG9G,kCAAC+G,EAAAA,0CAAA,CAAsBpI,UAAU,yBAC7BqB,SAAA,CAAAC,wBAAC+G,EAAAA,0CAAA,CAA6BrI,UAAU,+BACpCqB,iCAAC,MAAI,CAAAW,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,6TACFF,KAAK,eACLG,SAAS,UACTC,SAAS,wCAIpB+F,EAAcC,yCAAd,CAAuBvI,UAAU,0BAC7BqB,SAAM0F,EAAA7I,KACH,CACIC,EAIA+I,KAEM,MAAAlD,MAAEA,EAAOtI,MAAAA,GAAUyC,EAGpBmD,OAAAA,EAAAA,kBAAAA,IAAAkH,EAAA,CAAgC9M,QAC5B2F,SAAA2C,GADqBkD,EAE1B,8BAKfuB,EAAAA,0CAAA,CAA+BzI,UAAU,+BACtCqB,SAACmB,EAAAxB,kBAAAM,IAAA,MAAA,CAAIU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,6TACFF,KAAK,eACLG,SAAS,UACTC,SAAS,0BAWvCiG,EAAsB5M,EAAM8M,YAAW,EAAGrH,WAAUrB,YAAY,MAAOyE,GAAckE,6BAElFC,EAAAA,0CAAA,CAAmB5I,UAAW,uBAAuBA,OAAiByE,EAAO9I,IAAKgN,EAC/EtH,SAAA,yBAACwH,EAAAA,0CAAA,CAAwBxH,qCACxByH,EAAAA,0CAAA,CAA4B9I,UAAU,gCACnCqB,SAACmB,EAAAxB,kBAAAM,IAAA,MAAA,CAAIU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,gXACFF,KAAK,eACLG,SAAS,UACTC,SAAS,qBCrFpBwG,EAAY,EAAG/G,QAAOC,SAAQuE,OAAMG,WAExCrF,EAAAN,kBAAAM,IAAA,OAAA,CAAKtB,UAAU,qBACXqB,SAAS,sCACL,MAAI,CAAAW,QAAcC,SAAgBhG,GAAG,yBAAyBiG,QAAQ,YAAYC,KAAMwE,EACrFtF,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGgB,SAAS,UACTC,SAAS,UACTF,EAAE,mnCAIVf,wBAAC,MAAI,CAAAU,QAAcC,SAAgBhG,GAAG,yBAAyBiG,QAAQ,YAAYC,KAAMwE,EACrFtF,SAAAC,EAAAN,kBAAAM,IAAC,QAAKe,EAAE,4pCCdf2G,EAAuB,EAAGhH,QAAOC,SAAQ0E,WAE9CrF,EAAAA,kBAAAA,IAAC,OAAK,CAAAtB,UAAU,0BACZqB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,iBACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,sCACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,iBACFoF,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGrF,GAAG,WACHoG,EAAE,yXACFF,KAAMwE,cCVzBD,EAAuB,EAAG1E,QAAOC,SAAQ0E,WAE7CrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKtB,UAAU,0BACZqB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,+XACFF,KAAMwE,QCNbC,EAAwB,EAAG5E,QAAOC,SAAQ0E,WAE9CrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKtB,UAAU,2BACZqB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,8XACFF,KAAMwE,QCNbsC,EAAU,EAAGjH,QAAOC,SAAQ0E,aAEjC3F,kBAAAM,IAAC,QAAKtB,UAAU,mBACZqB,iCAAC,MAAI,CAAAW,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAErF,GAAG,oBACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,QACFoF,WAAAL,kBAAAM,IAAC,OAAA,CACGrF,GAAG,SACHoG,EAAE,wlCACFF,KAAMwE,YCTrBuC,GAAY,EAAGlH,QAAOC,SAAQ0E,WAElCrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKtB,UAAU,qBACZqB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIY,QAAQ,YAAYiH,UAAU,QAAQ,cAAY,OAAOnH,QAAcC,SACxEZ,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,oOACFF,KAAMwE,QCNbyC,GAAa,EAAGpH,QAAOC,SAAQ0E,WAEnCrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKtB,UAAU,sBACZqB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGgB,SAAS,UACTC,SAAS,UACTF,EAAE,koBACFF,KAAMwE,QCRb0C,GAAiB,EAAGrH,QAAOC,SAAQ0E,aAExC3F,kBAAAM,IAAC,QAAKtB,UAAU,2BACZqB,iCAAC,MAAI,CAAAW,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAErF,GAAG,0BACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,cACFoF,WAAAL,kBAAAM,IAAC,OAAA,CACGrF,GAAG,SACHoG,EAAE,+rBACFF,KAAMwE,YCTrB2C,GAAW,EAAGtH,QAAOC,SAAQ0E,WAElCrF,EAAAA,kBAAAA,IAAC,OAAK,CAAAtB,UAAU,oBACZqB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,OACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,4BACFoF,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAArF,GAAG,SACFoF,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGrF,GAAG,iBACHoG,EAAE,k7FACFF,KAAMwE,cCVzB4C,GAAW,EAAGvH,QAAOC,SAAQ0E,mCAEjC,OAAK,CAAA3G,UAAU,oBACZqB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAC,KAAA,IAAA,CAAEhF,GAAG,qBACFoF,SAAA,GAAAL,kBAAAM,IAAC,OAAA,CACGrF,GAAG,SACHoG,EAAE,mYACFF,KAAMwE,MAEV3F,kBAAAM,IAAC,OAAA,CACGrF,GAAG,WACHoG,EAAE,m3BACFF,KAAMwE,WCfjB6C,GAAS5N,EAAM8M,YAAW,CAACjE,EAAYgF,KAChD,MAAMzJ,UAAEA,EAAY,GAAIqB,SAAAA,EAAAqI,UAAUA,EAAY,QAASC,UAAAA,GAAY,EAAOC,YAAAA,EAAc,cAAUC,EAAO,GAAAC,SAAIA,KAAaC,GAAetF,EAElI,MAAgB,cAAhBmF,IAAqC,MAANC,OAAM,EAAAA,EAAAxN,gCACvC,IAAE,CAAA2N,KAAMH,EAAM7J,UAAW,kBAAkBA,GAAa,KAAM,yBAAwB0J,EAAW,yBAAwBC,EAAWhO,IAAK8N,KAAeM,EACpJ1I,aAGLC,EAAAN,kBAAAM,IAAC,SAAA,CACGtB,UAAW,kBAAkBA,GAAa,MAAM8J,EAAW,wBAA0B,KACrF,yBAAwBJ,EACxB,yBAAwBC,EACxBhO,IAAK8N,KACDM,EAEH1I,YAAA,ICdA4I,GAAoBxF,IAC7B,MAAMzE,UAAEA,EAAY,GAAIkK,KAAAA,EAAAxO,MAAMA,EAAQ,GAAAyO,eAAIA,EAAgBpE,SAAAA,EAAAqE,aAAUA,EAAcC,SAAAA,KAAaN,GAAetF,GAEvG6F,EAAqBC,GAA0B3O,EAAM2E,UAAS,UAYrE3E,EAAME,WAAU,KACWyO,EAAAC,QAAQ9O,GAAM,GACtC,CAACA,6BAGC,MAAI,CAAAsE,UAAW,sCAAsCA,GAAa,KAC9DqB,SAAA,CAAC6I,EAAc5I,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,kCAAmCqB,SAAK6I,IAA9D,OACRlJ,kBAAAM,IAAA,QAAA,CAAMtB,UAAU,6BAA6BtE,QAAcqK,SAAW0E,GAXrD,CAACA,IACvB1E,GAAYA,EAAS,CAAErK,MAAO+O,EAAEC,OAAOhP,OAAO,EAUmCiP,CAAkBF,GAAI9O,IAAK0O,KAAcN,IACrHO,GAAuBH,EACpB7I,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,8BACXqB,WAACC,kBAAAA,IAAA,SAAA,CAAOtB,UAAU,sBAAsBwG,KAAK,SAASrC,QApB7C,MACX,MAAAkG,OAAA,EAAAA,EAAAtO,UAAWsO,EAAStO,QAAQ6O,QACtC7E,GAAYA,EAAS,CAAErK,MAAO,KAC9B0O,GAAgBA,GAAa,EAkBb/I,SAAAC,EAAAA,kBAAAA,IAAC4H,GAAU,CAAAlH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,gBAGhD,OACR,ECnCKkE,GAAgC,CACzCvQ,KAAM,CAAEwQ,OAAQ,KAChBC,OAAQ,CAAED,OAAQ,GAClBE,WAAY,CACRxE,KAAM,SACNyE,SAAU,KAILC,GAAoB,CAC7BC,OAAQ,CAAEC,QAAS,EAAGC,MAAO,GAC7BC,QAAUC,IACN,MAAMN,SAAEA,GAAaM,GAAU,GAExB,MAAA,CACHH,QAAS,EACTC,MAAO,EACPL,WAAY,CACRxE,KAAM,SACNyE,SAAUA,GAAY,IAC1B,GCZCO,GAAe/G,UACxB,MAAMzE,UAAEA,EAAY,GAAA8H,YAAIA,EAAc,KAAM2D,YAAAA,EAAc,yBAAMC,EAAsB,GAAA3L,MAAIA,EAAQ,MAAOgG,SAAAA,EAAArK,MAAUA,EAAQ,GAAI/B,QAAAA,EAAU,GAAIgS,cAAAA,EAAA9B,KAAeA,GAASpF,GAE9J7E,EAAQC,GAAajE,EAAM2E,UAAS,GAOrCqL,EAAgB9D,IAAgBpM,EAAQoM,EAAc,OAAArH,EAAS,MAAA9G,OAAA,EAAAA,EAAAsB,QAAO,EAAGS,MAAOmQ,KAAuBA,IAAgBnQ,IAAO,SAAI,EAAA+E,EAAAuD,MAExI,+BACK,MAAI,CAAAhE,UAAW,gCAAgCA,GAAa,KACzDqB,SAAAC,EAAAN,kBAAAM,IAAC7B,EAAA,CACGC,QACKuB,EAAAA,kBAAAA,KAAA,SAAA,CAAOuF,KAAK,SAASxG,UAAU,sCAAsC,yBAAuB,QAAQ,yBAAuB,OACvHqB,SAAA,CAACoK,EAAqBnK,EAAAA,kBAAAA,IAAC,OAAK,CAAAtB,UAAU,4BAA6BqB,SAAYoK,IAAhE,KAChBnK,EAAAA,kBAAAA,IAAC,QAAMD,UAAqB,MAAAqK,OAAA,EAAAA,EAAArP,QAAS,GAAGqP,KAAuBE,IAAkBA,IAEjFtK,EAAAA,kBAAAA,IAACwK,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAASrM,EAAS,OAAS,SAAUsM,SAAUrB,GAA+B7K,UAAU,oBACjHqB,iCAAC2H,EAAqB,CAAAhH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAI/DhH,gCACK,KAAG,CAAAK,UAAU,8BACTqB,SAAS,MAAA1H,OAAA,EAAAA,EAAAuE,KAAI,CAACiO,EAAajF,KACxB,MAAMlD,MAAEA,EAAOtI,MAAOmQ,GAAgBM,EAEhCC,EAAO,IACT9K,EAAAN,kBAAAM,IAAC,KAAA,CAEG6C,QAAS,IA5Bf,EAACH,EAAetI,KACtCqK,GAAYA,EAAS,CAAE/B,QAActI,MAAOA,IAC5CmE,GAAU,EAAK,EA0B4B8K,CAAkB3G,EAAO6H,MACnCA,IAAgBnQ,GAAS,CAC1B,iBAAmB,GAGtB2F,SAAA2C,GANIkD,GAUN,OAAAyE,EACFrK,EAAAN,kBAAAM,IAAAqK,EAAA,CAAcU,QAAQ,EAAOC,SAAIzC,WAAMxK,QAAQ,QAASwM,GAAc7B,WAAMH,WAAMxK,QAAQ,QAASwM,GAChGxK,WAACL,kBAAAM,IAAA8K,EAAA,CAAK,IAD6GlF,KAItHlG,kBAAAM,IAAA8K,EAAA,CAAA,EAAUlF,EAAO,MAKlCtH,SACAC,YACAC,eAAa,EACbC,QACAC,UAAU,sCACVE,WAAW,KAEnB,ECvDKqM,GAAS9H,YAClB,MAAM+H,YAAEA,GAAc,EAAOpS,KAAMqS,EAAWC,SAAUC,GAAiBlI,GAEnEmI,YAAEA,iCAAaC,EAAgCC,eAAAA,GAAmBlR,EAAMmR,WAA2BC,EAAAA,gBAEjGC,SAAUC,GAAwBN,GAAe,CAAA,GACjDlR,MAAOyR,EAA0BzN,QAAS0N,IAA+B,OAAA3M,EAAgC,MAAAoM,OAAA,EAAAA,EAAAI,eAAU,EAAAxM,EAAA4M,QAAS,GAE9HC,EAAmB,gBAElBC,EAAWC,GAAgB5R,EAAM2E,SAAS+M,IAC1CG,EAAeC,GAAoB9R,EAAM2E,UAAS,MAAAkM,OAAA,EAAAA,EAAWkB,aAAc,IAC3EC,EAAgBC,GAAqBjS,EAAM2E,UAAUkM,IACrDqB,EAAWC,GAAgBnS,EAAM2E,UAAUkM,IAC3CuB,EAAyBC,GAA8BrS,EAAM2E,UAAS,IACtE2N,EAAUC,GAAevS,EAAM2E,UAAS,MAAAkM,OAAA,EAAAA,EAAW2B,YAAa,KAChEC,EAAcC,GAAmB1S,EAAM2E,SAAc,CAAA,IACrDgO,EAAiBC,GAAsB5S,EAAM2E,UAAS,IAEvDkO,qBAAEA,IAAyB,MAAAJ,OAAA,EAAAA,EAAcK,eAAgB,CAAA,GACzDC,YAAEA,QAAaC,EAAOC,aAAAA,IAAiB,OAAAC,EAAc,MAAAT,OAAA,EAAAA,EAAAU,gBAAW,EAAAD,EAAAE,SAAU,GAE1EC,EAAkBtC,GAAgB8B,EAClC/B,EAAWuC,GAAoC,OAE/CC,EAAwB1V,kBACtB,IAAAU,EAEAiV,EACAC,EAFAC,GAAe,EAInBnV,OCyF4BV,OAAO8V,IACnC,IAAAC,EAAgBD,GAAwC,oBAAjB1V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/H2C,EAAM,GAAGrD,kBAEb,aAAa6G,EAAS,CAClBxD,MACAI,OAAQ,MACRqD,cAAeoS,IAEdtV,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EDxGgBC,GACXN,EAA2B,OAA3B,OAAA5O,EAAU,MAAVvG,OAAU,EAAAA,EAAA0V,aAAVnP,EAAAA,EAAkBoP,QAAgB,EAEnBV,GAAC,OAAAL,EAAU,MAAV5U,OAAU,EAAAA,EAAAE,aAAV0U,EAAgBnB,YAAiBzT,EAASE,KAAKuT,WAAlB,EACnCyB,E1BgGY,wB0B9FxBC,IACA3B,EAAiByB,GACjBlB,EAA2BkB,EAAqB,IAChDhB,E1B2FwB,yB0B1FxBN,GAAkB,GAClBE,GAAa,GACjB,EAgBE+B,EAAuBrF,IACrB8D,IACA9D,EAAEsF,iBACFtF,EAAEuF,mBAGFzB,EACsB,oBAAXzR,QAA0BA,OAAOmT,yBACxCnT,OAAOmT,wBAAwB,CAC3BC,MAAOvB,GAAe,kBACtBwB,QAASvB,GAAS,qDAClBwB,WAAYvB,GAAgB,QAC5BwB,iBAAkB,OAClBC,SAAU,IAAOxT,OAAOyT,SAASvG,KAAO,mBAG5CwC,IAAoB1P,OAAAyT,SAASvG,KAAOkE,GAAY,IACxD,EAGJtS,EAAME,WAAU,KACPoR,GAlCc1T,OAAOgX,IACtB,IAAAtW,EAIJ,GAFWA,EAAAuE,KAAKgS,MAAMD,IAEjBtW,EAAU,OAEf,MAAMwW,kBAAEA,GAAsBxW,GAAY,GAE1CoU,EAAgBpU,GAChBsU,EAAmB1B,GAAkB4D,EAAiB,EA0BtDC,CAAe/W,aAAa4V,QAAQzY,IAAuC,KAAI,GAChF,CAACmW,IAEJtR,EAAME,WAAU,MACO,MAAduS,OAAc,EAAAA,EAAAK,qBAGpB,CAACL,IAEJzS,EAAME,WAAU,KACPqR,IAEDC,GAA4BA,GAA2B,UAG5D,CAACD,IAEJ,MAAMyD,EAAa,MAEV3P,kBAAAA,KAAA,OAAA,CAAKjB,UAAU,yBAAyBmE,QAAS2L,EAAqBe,aAAc,IAAMrD,EAAa,WAAYsD,aAAc,IAAMtD,EAAaF,GACjJjM,SAAA,CAACC,EAAAA,kBAAAA,IAAAyH,EAAA,CAAU/G,MAAO,GAAIC,OAAQ,GAAIuE,KAAK,UAAUG,MAAO4G,KACtDK,2BACG,QAAK5N,UAAW,8EAA6EgO,EAA0B,qCAAuC,IAC1J3M,SAAAyM,GAAaS,EAAkB,EAAI,GAAGP,EAA0B,MAAQP,KAAmB,OAO1GsD,EAAe,MAEbzP,kBAAAA,IAAC,MAAI,CAAAtB,UAAW,0DAA0D0M,IACtErL,SAAAmB,EAAAxB,kBAAAC,KAAC,OAAK,CAAAkD,QAAS2L,EAAqB9P,UAAU,4CAC1CqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,OAAA,CAAKtB,UAAU,uCAAuCqB,SAAW,kBAClEJ,kBAAAA,KAAC,OAAK,CAAAjB,UAAU,8BACZqB,SAAA,CAACC,EAAAA,kBAAAA,IAAAyH,EAAA,CAAU/G,MAAO,GAAIC,OAAQ,GAAIuE,KAAK,OAAOG,MAAM,aAClDiH,2BACG,QAAK5N,UAAW,+EAA8EgO,EAA0B,qCAAuC,IAC3J3M,SAAAyM,GAAaS,EAAkB,EAAI,GAAGP,EAA0B,MAAQP,KAAmB,YASlHuD,EAAe,IAEZ1P,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAW,wEAAwE0M,IACpFrL,SAAAC,EAAAA,kBAAAA,IAAC,OAAK,CAAA6C,QAAS2L,EAAqB9P,UAAU,4CAC1CqB,SAACJ,yBAAA,OAAA,CAAKjB,UAAU,8BACZqB,SAAA,CAACC,EAAAA,kBAAAA,IAAAyH,EAAA,CAAU/G,MAAO,MAAOC,OAAQ,MAAOuE,KAAK,UAAUG,MAAM,aAC3DiH,2BACG,QAAK5N,UAAW,+EAA8EgO,EAA0B,qCAAuC,IAC3J3M,SAAAyM,GAAaS,EAAkB,EAAI,GAAGP,EAA0B,MAAQP,KAAmB,WASxH,OAAOG,EAAiB,KAAOtM,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAGjF,SAAa,WAASC,EAAAA,kBAAAA,IAACsP,GAAW,GAAKzU,OAAOuQ,GAAUvR,SAAS,UAAYqH,EAAAxB,kBAAAM,IAAC0P,8BAAmBD,GAAa,IAAG,EEvJ1IE,GAAoB,KAC7B,MAAMC,EAAyBtX,aAAa4V,QAAQzY,GAAsC0H,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAAuC,IAAM,KAEnK,IAAA0F,EAA8B0U,MAAMC,KAAK1Q,SAAS2Q,iBAAiBpa,EAASG,SAASC,gBAErFia,GAAqB7U,GAAYA,IAAYA,EAAQJ,OAEzD,IAAK6U,GAA0BI,EAAmB,OAElD,MAAM7C,qBAAEA,IAAyB,MAAAyC,OAAA,EAAAA,EAAwBxC,eAAgB,CAAA,EAEnE6C,EAAuBpV,OAAOsS,GAAsBtT,SAAS,UAEtC,SAAzBsT,EACI8C,EACQ9U,EAAAyB,KAAI,CAACC,EAAW+I,KAChB,GAAA/I,IAAS+I,EAAO,CAEZ/I,EAAKwC,cAAc,IAAInK,MAA2BQ,QAC7CmH,EAAAwC,cAAc,IAAInK,MAA2BQ,OAAsDwa,SAGxG,IAAAC,EAAyB/Q,SAASgR,cAAc,OAC7BD,EAAAE,aAAanb,EAAwBQ,GAC5DmH,EAAKyT,YAAYH,GAEjB,MAAM5a,EAAgBsH,EAAK0T,aAAapb,EAA+BI,wBAE9Dib,WAAWL,GAAwBM,OACxCzQ,EAAAA,kBAAAA,IAAC1F,EAAMoW,WAAN,CACG3Q,WAAAL,kBAAAM,IAAC0L,EAAAA,cAAciF,SAAd,CACGvW,MAAO,CACHkR,YAAa,CACTK,UAAU,EACViF,eAAe,EACfC,eAAe,GAEnBrF,eAAgBlT,aAAa4V,QAAQzY,IAAgC,GACrEqb,aAAa,GAGjB/Q,SAAAC,EAAAN,kBAAAM,IAACiL,IAAMC,YAAahC,QAAQ3T,GAAmC,SAAlBA,GAA2B6V,SAAU+B,QAIlG,KAGIhS,EAAAyB,KAAI,CAACC,EAAW+I,KAChB,GAAA/I,IAAS+I,EAAO,CAEZ/I,EAAKwC,cAAc,IAAInK,MAA2BQ,QAC7CmH,EAAAwC,cAAc,IAAInK,MAA2BQ,OAAsDwa,SAGxG,IAAAC,EAAyB/Q,SAASgR,cAAc,OAC7BD,EAAAE,aAAanb,EAAwBQ,GAC5DmH,EAAKyT,YAAYH,GAEjB,MAAM5a,EAAgBsH,EAAK0T,aAAapb,EAA+BI,wBAE9Dib,WAAWL,GAAwBM,OACxCzQ,EAAAA,kBAAAA,IAAC1F,EAAMoW,WAAN,CACG3Q,WAAAL,kBAAAM,IAAC0L,EAAAA,cAAciF,SAAd,CACGvW,MAAO,CACHkR,YAAa,CACTK,UAAU,EACViF,eAAe,EACfC,eAAe,GAEnBrF,eAAgBlT,aAAa4V,QAAQzY,IAAgC,GACrEqb,aAAa,GAGjB/Q,SAAAC,EAAAN,kBAAAM,IAACiL,IAAMC,YAAahC,QAAQ3T,GAAmC,SAAlBA,GAA2B6V,SAAU+B,QAIlG,KAIAhS,EAAAyB,KAAKC,IACT,GAAIA,EAAM,CACN,MAAMtH,EAAgBsH,EAAK0T,aAAapb,EAA+BI,eAGnEsH,EAAKwC,cAAc,IAAInK,MAA2BQ,QAC7CmH,EAAAwC,cAAc,IAAInK,MAA2BQ,OAAsDwa,SAGxG,IAAAC,EAAyB/Q,SAASgR,cAAc,OAC7BD,EAAAE,aAAanb,EAAwBQ,GAC5DmH,EAAKyT,YAAYH,YAERK,WAAWL,GAAwBM,OACxCzQ,EAAAA,kBAAAA,IAAC1F,EAAMoW,WAAN,CACG3Q,WAAAL,kBAAAM,IAAC0L,EAAAA,cAAciF,SAAd,CACGvW,MAAO,CACHkR,YAAa,CACTK,UAAU,EACViF,eAAe,EACfC,eAAe,GAEnBrF,eAAgBlT,aAAa4V,QAAQzY,IAAgC,GACrEqb,aAAa,GAGjB/Q,iCAACkL,GAAM,CAAAC,YAAahC,QAAQ3T,GAAmC,SAAlBA,SAI7D,IAER,ECzFSwb,GAAmD5N,kBACtD,MAAAjI,OAAEA,cAAQ8V,GAAc,EAAAnH,OAAOA,GAAS,EAAOoH,mBAAAA,EAAAC,sBAAoBA,EAAuBC,gBAAAA,GAAoBhO,GAC9GiO,UAAEA,EAAAC,iBAAWA,GAAqBnW,GAAU,CAAA,GAE5CoQ,YAAEA,iCAAaC,EAAgCC,eAAAA,GAAmBlR,EAAMmR,WAA2BC,EAAAA,gBAEjGC,SAAUC,GAAwBN,GAAe,CAAA,GACjDlN,QAAS0N,IAA+B,OAAA3M,mBAAgCwM,eAAhC,EAAAxM,EAA0C4M,QAAS,GAE7FC,EAAmB,UACnBsF,EAAkB,UAClBC,EAAkB,UAClBC,EAAiB,OAEjBC,EAAmD,kBAApBN,EAC/BO,IAAeD,GAAwBN,GAEtClF,EAAWC,GAAgB5R,EAAM2E,SAASyS,EAAeH,EAAkBvF,IAC3E2F,EAAUC,GAAetX,EAAM2E,SAA6ByS,EAAeF,EAAiBF,IAE5FO,EAAYC,GAAiBxX,EAAM2E,WAAWkS,IAC9C3E,EAAWC,GAAgBnS,EAAM2E,UAAUwS,IAC3C1E,EAAcC,GAAmB1S,EAAM2E,SAAc,CAAA,IACrD8S,EAAiBC,GAAuB1X,EAAM2E,SAAS,CAC1DgS,qBACAC,2BAEGjE,EAAiBC,GAAsB5S,EAAM2E,UAAS,IACtDgT,EAAaC,GAAkB5X,EAAM2E,UAAS,IAE/CmQ,kBAAEA,IAAsB,OAAA5B,mBAAchO,cAAd,EAAAgO,EAAuB2E,SAAU,CAAA,GACvDC,KAAMC,EAAmBpD,SAAUqD,IAA0B,OAAAC,EAAc,MAAAxF,OAAA,EAAAA,EAAAvN,cAAS,EAAA+S,EAAAC,eAAgB,IACtGC,wBAAEA,EAAAC,uBAAyBA,GAAwBC,0BAAAA,GAAAC,yBAA2BA,GAA0BC,2BAAAA,GAAAC,0BAA4BA,KACtI,OAAAC,EAAc,MAAAhG,OAAA,EAAAA,EAAAU,gBAAW,EAAAsF,EAAAP,eAAgB,CAAA,GACvCnF,YAAEA,SAAaC,GAAOC,aAAAA,KAAiB,OAAAyF,EAAc,MAAAjG,OAAA,EAAAA,EAAAU,gBAAW,EAAAuF,EAAAtF,SAAU,GAE1EuF,GAAsB/a,UACpB,IAAAU,EAE2B,kBAApBuY,GAAiCc,GAC7BrZ,EAAAuY,EACXe,GAAe,IAEJtZ,OF0EWV,OAAOyC,EAASuY,KAC1C,IAAAC,EAAYzY,EAAeC,GAC3ByY,EAAmBF,EAAYxY,EAAewY,GAAa,GAC3DjF,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G4d,EACA,IACA,IAAIC,gBAAgB,CAChBC,WAAYH,IACbI,WAEHpb,EAAM,GAAGrD,oBAA0Boe,IAAYE,IAEnD,aAAazX,EAAS,CAClBxD,MACAI,OAAQ,MACRqD,cAAeoS,IAEdtV,MAAMwV,GACIjF,QAAQiF,EAAOrV,QAEzBsV,OAAM,KACH,GACH,EEjGoBqF,CAAcrC,EAAWC,GAGhCS,EAAAd,GAA4BpY,EAAQ,EAGhD8a,GAAcxb,MAAOiR,IAIvB,GAHAA,EAAEsF,iBACFtF,EAAEuF,kBAEEzB,EASA,YARsB,oBAAXzR,QAA0BA,OAAOmT,yBACxCnT,OAAOmT,wBAAwB,CAC3BC,MAAOvB,IAAe,kBACtBwB,QAASvB,IAAS,qDAClBwB,WAAYvB,IAAgB,QAC5BwB,iBAAkB,OAClBC,SAAU,IAAOxT,OAAOyT,SAASvG,KAAO,oBAKhD,IAAAiL,OFjEoBzb,OAAOY,IAY7B,MAAAsY,UAAEA,EAAWC,iBAAAA,EAAAuC,YAAkBA,EAAaC,cAAAA,EAAAC,WAAeA,EAAYC,mBAAAA,EAAAC,YAAoBA,EAAaC,aAAAA,EAAAC,gBAAcA,EAAiBC,aAAAA,GAAiBrb,EAE1J,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,aACT+G,EAAU,CACVsY,QAASjX,KAAKC,UAAU,CACpBzC,GAAID,EAAe0W,GACnBmC,WAAY7Y,EAAe2W,GAC3BvU,KAAM8W,EACN1S,OAAQ2S,EACRQ,IAAKP,EACLQ,aAAcP,EACd3b,IAAK4b,EACLO,UAAWN,EACXO,SAAUN,EACVO,MAAON,KAIf,aAAavY,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,YAECnD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EEsB0BsG,CAAYxZ,GAEvC,MAAMoT,OAAEA,EAAQxV,KAAM6b,GAAkBhB,GAAkB,CAAA,GACpDpF,KAAEA,GAASD,GAAU,GAEd,MAATC,GACAuD,GAAeD,GAGX/F,GAA4BA,GAA2B,QAKrC,oBAAXtQ,SACHA,OAAOoZ,gCAAgCpZ,OAAOoZ,iCAC9CpZ,OAAOqZ,kCAAkCrZ,OAAOqZ,yCAKnDhD,EAGeE,EAAAb,uBAAyBa,EAAgBb,sBAAsB,WAF/Da,EAAAd,oBAAsBc,EAAgBd,mBAAmB,WAKvD,oBAAXzV,QAA0BA,OAAOsZ,yBAA2BzC,GACnE7W,OAAOsZ,wBAAwB,CAC3BlG,MAAQiD,EAAuCc,GAA1BF,EACrB5D,QAAUgD,EAAsCe,GAAzBF,GACvBzD,SAAUqD,EACVpN,KAAM,UACN0D,KAAO5I,EAAAN,kBAAAM,IAAAyH,EAAA,CAAU/G,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,gBAG9D2M,EAGeE,EAAAb,uBAAyBa,EAAgBb,sBAAsB,UAF/Da,EAAAd,oBAAsBc,EAAgBd,mBAAmB,UAKvD,oBAAXzV,QAA0BA,OAAOsZ,yBAA2BzC,GACnE7W,OAAOsZ,wBAAwB,CAC3BlG,MAAOiE,IAA8B,SACrChE,QAASiE,IAA6B,2CACtC7D,SAAUqD,EACVpN,KAAM,SACN0D,KAAO5I,EAAAN,kBAAAM,IAAAyH,EAAA,CAAU/G,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,cAEvE,EAgBJ5K,EAAME,WAAU,KACPoR,IAEiB,oBAAXpQ,SACPA,OAAOuZ,4BAA8B,YAjBtB7c,OAAOgX,IAGtB,IAAAtW,EAFJ6T,GAAa,GAIF7T,EAAAuE,KAAKgS,MAAMD,GAEjBtW,IAELoU,EAAgBpU,GAChB6T,GAAa,GAAK,EAYlB4C,CAAe/W,aAAa4V,QAAQzY,IAAuC,MAAI,GAChF,CAACmW,IAEJtR,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,IAEJlR,EAAME,WAAU,KACPoR,UAGN,CAACA,EAAqByF,IAEnB,MAAA7I,IAAYqJ,GAAcb,KAAiB/D,EAa7CjN,OAXJ1F,EAAME,WAAU,KACRgO,IACA0D,EAAaqF,GACbK,EAAYJ,KAEZtF,EAAaF,GACb4F,EAAYN,GAChB,GACD,CAACO,IAGA7R,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,UAACyM,IAAc3C,GACX7J,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,iCACXqB,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGtB,UAAU,2BACVmE,QAAUsG,GAAMuK,GAAYvK,GAC5BoG,aAAc,KACN/G,KAEJ0D,EAAaqF,GACbK,EAAYJ,GAAc,EAE9BhC,aAAc,KACNhH,KAEJ0D,EAAaF,GACb4F,EAAYN,GAAe,EAG/BvR,SAAAC,EAAAN,kBAAAM,IAACyH,GAAU/G,MAAO,MAAOC,OAAQ,MAAOuE,KAAMyM,EAAUtM,MAAO4G,SAI/E,EC5LK+I,GAAsC,EAAG1I,oBAAmBnJ,KAEhEnD,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,iCACVqB,SACGuM,EAAA3M,EAAAD,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTyV,IAAK,MACLvU,MAAO,OACPwU,eAAgB,iBAGpBnV,SAAA,CAACC,EAAAA,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAE1E1V,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTyV,IAAK,OAGTlV,SAAA,CAACC,EAAAA,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAC1EpV,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAC1EpV,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,YAG9E1V,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTyV,IAAK,QAGTlV,SAAA,CAACC,EAAAA,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAC1EpV,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,aAIlF9a,EAAM+a,SAASC,MAAMnS,EAAMpD,WAC3BzF,EAAM+a,SAASzY,IAAIuG,EAAMpD,UAAWwV,GAChCjb,EAAMkb,aAAaD,EAAO,IACnBpS,QAQ3B6R,GAAaS,MC5EoB,EAAGxX,OAAM8O,6BAChC,MACF1H,MAAOqQ,EACPC,UAAWC,EACXC,YAAaC,EACbC,eAAgBC,IAChB,OAAAxI,EAAA,OAAcrO,EAAA,MAAA4N,OAAA,EAAAA,EAAAvN,kBAASkO,aAAvB,EAAAF,EAA+ByI,eAAgB,CAAA,GAC3CA,aAAcC,IAA0B,OAAA3D,mBAAc9E,gBAAd,EAAA8E,EAAyB7E,SAAU,GAE7EyI,EAA6B,IAC3BT,GAA8B,CAAErQ,MAAOqQ,MACvCE,GAAkC,CAAEQ,SAAUR,MAC9CE,GAAoC,CAAEO,WAAYP,MAClDE,GAAuC,CAAEM,cAAeN,IAI3DhW,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,sCACXqB,SAACC,EAAAN,kBAAAM,IAAA,KAAA,CAAGT,MAAO4W,EAA6BpW,SAAO9B,IAAOiY,GAAyB,kBACnF,ED0DRlB,GAAauB,WEtEyB,EAAG9J,eAAc+J,aAAYC,UAASjQ,cAAauG,2BACrF,MAAMvB,eAAEA,GAAmBlR,EAAMmR,WAA2BC,EAAaA,gBAEnE0D,kBAAEA,IAAsB,OAAAjQ,mBAAcK,cAAd,EAAAL,EAAuBgT,SAAU,CAAA,GACzDuE,wBAAEA,IAA4B,OAAAlJ,mBAAcC,gBAAd,EAAAD,EAAyBE,SAAU,CAAA,GAEhET,EAAiBC,GAAsB5S,EAAM2E,UAAS,GAEvD0X,EAAiBrc,EAAMC,OAAyB,MAkBlDyF,OALJ1F,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,IAGAxL,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,UAACkN,GACEjN,EAAAN,kBAAAM,IAAC2I,GAAA,CACGzD,KAAK,OACL0D,6BAAOd,GAAW,CAAApH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/CmB,YAAaA,IAA4BkQ,GAA2B,qBACpEtc,MAAOqc,EACP1N,SAAU4N,EACVlS,SAAU,EAAGrK,WAjBH,CAACA,IACvBoc,GAAcA,EAAWpc,EAAK,EAgBYiP,CAAkBjP,GAChD0O,aAzBS,WACrB2D,GAAgBA,GAAa,GAC7B+J,GAAcA,EAAW,IAEzB,OAAArX,EAAA,MAAAwX,OAAA,EAAAA,EAAgBlc,UAAhB0E,EAAyBmK,OAAA,EAsBb5K,UAAU,0EACVmK,gBAAc,KAG1B,EF+BRmM,GAAa4B,aGjE2B,EAAGC,eAAcC,aAAYC,mBAAkBC,YAAWC,UAASlK,eAAcT,yCACrH,MAAMf,+BAAEA,EAAgCC,eAAAA,GAAmBlR,EAAMmR,WAA2BC,EAAAA,gBAEpFtN,QAAS0N,IAA+B,OAAA3M,mBAAgCwM,eAAhC,EAAAxM,EAA0C4M,QAAS,IAE7FqD,kBAAEA,IAAsB,OAAA5B,mBAAchO,cAAd,EAAAgO,EAAuB2E,SAAU,CAAA,GAE3D+E,WAAYC,EACZC,aAAcC,EACdC,cAAeC,EACfC,YAAaC,EACbC,eAAgBC,EAChBC,aAAcC,EACdC,cAAeC,EACfC,iBAAkBC,EAClBtC,UAAWuC,EACXrC,YAAasC,EACbpC,eAAgBqC,IAChB,OAAArF,EAAA,OAAcR,EAAA,MAAAxF,OAAA,EAAAA,EAAAvN,kBAASkO,aAAvB,EAAAqF,EAA+BsF,eAAgB,CAAA,GAC7CC,qBAAEA,EAAsBC,mCAAAA,EAAAC,kCAAoCA,EAAmCC,oCAAAA,IAAwC,OAAAzF,EAAc,MAAAjG,OAAA,EAAAA,EAAAU,gBAAW,EAAAuF,EAAA0F,QAAS,IACzKL,aAAEA,8BAAcM,IAAgC,OAAAC,mBAAcnL,gBAAd,EAAAmL,EAAyBlL,SAAU,IACjF0E,KAAMC,EAAmBpD,SAAUqD,IAA0B,OAAAuG,EAAc,MAAA9L,OAAA,EAAAA,EAAAvN,cAAS,EAAAqZ,EAAArG,eAAgB,IACtGsG,4BAAEA,EAA6BC,2BAAAA,EAAAlG,2BAA4BA,EAA4BC,0BAAAA,IAA8B,OAAAkG,EAAc,MAAAjM,OAAA,EAAAA,EAAAU,gBAAW,EAAAuL,EAAAxG,eAAgB,IAE7JvF,EAAiBC,GAAsB5S,EAAM2E,UAAS,GAEvDga,EAA6B,IAC3B9B,GAAmC,CAAE9R,MAAO8R,MAC5CE,GAAqC,CAAElV,YAAakV,MACpDE,GAAsC,CAAE2B,aAAc3B,MACtDE,GAAoC,CAAE0B,WAAY1B,MAClDE,GAAuC,CAAEyB,cAAezB,MACxDE,GAAqC,CAAEwB,YAAaxB,MACpDE,GAAsC,CAAEuB,aAAcvB,MACtDE,GAAyC,CAAE1V,gBAAiB0V,MAC5DC,GAAkC,CAAE9B,SAAU8B,MAC9CC,GAAoC,CAAE9B,WAAY8B,MAClDC,GAAuC,CAAE9B,cAAe8B,KAGzDmB,GAAkBC,IAAuBlf,EAAM2E,UAAS,GAE/D,IAAIwa,GAAgB,soBAWpB,MAAMC,GAAwBxhB,gBAC1BshB,IAAoB,GACpB,IAAI1gB,EAAO+d,EAAaja,KAAKC,IACnB,MAAAlC,GAAEA,EAAI4Y,WAAAA,EAAAzW,KAAYA,EAAMwX,aAAAA,EAAAlc,IAAcA,YAAKmc,EAAWC,SAAAA,EAAAC,MAAUA,GAAU5X,EAAKuX,QAE9E,MAAA,CACHhD,UAAWzW,EACX0W,iBAAkBkC,EAClBK,YAAa9W,EACbiX,mBAAoBO,EACpBN,YAAa5b,EACb6b,aAAcM,EACdL,gBAAiBM,EACjBL,aAAcM,EAAA,IAIlBkF,ONTwBzhB,OAChCY,IAWI,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/GmkB,EAAW9gB,EAAK8D,KAAKC,IACf,MAAAuU,UAAEA,mBAAWC,EAAkBuC,YAAAA,EAAAG,mBAAaA,cAAoBC,EAAaC,aAAAA,EAAAC,gBAAcA,EAAiBC,aAAAA,GAAiBtX,EAE5H,MAAA,CACHlC,GAAID,EAAe0W,GACnBmC,WAAY7Y,EAAe2W,GAC3BvU,KAAM8W,EACNU,aAAcP,EACd3b,IAAK4b,EACLO,UAAWN,EACXO,SAAUN,EACVO,MAAON,EAAA,IAIX/b,EAAM,GAAGrD,kBAIT+G,EAAU,CACV8d,YAGJ,aAAahe,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAZU,CACV,eAAgB,oBAYhBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EMzC8ByL,CAAgB/gB,GACN,OAArC,OAAAqG,EAAoB,MAApBwa,OAAoB,EAAAA,EAAArL,aAApBnP,EAAAA,EAA4BoP,OACN,oBAAX/S,SAEHsQ,GAA4BA,GAA2B,QAKvDtQ,OAAOse,iBACPte,OAAOse,gBAAgB,CACnBlL,MAAOkK,EACPjK,QAASkK,KAIrBS,IAAoB,IAEE,oBAAXhe,QAA0BA,OAAOsZ,yBAA2BzC,GACnE7W,OAAOsZ,wBAAwB,CAC3BlG,MAAOiE,GAA8B,SACrChE,QAASiE,GAA6B,2CACtC7D,SAAUqD,EACVpN,KAAM,SACN0D,KAAO5I,EAAAN,kBAAAM,IAAAyH,EAAA,CAAU/G,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,aAEvE,EAwEAlF,OAVJ1F,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,I9BkBoB,GAAGuO,WAAW,KAAMC,OAAO,KAAMC,cAAa,MACjEF,GAAaC,GAGH,IAAIE,kBAAiB,SAAUC,GAChCA,EAAA5d,SAAQ,SAAU6d,GACZvK,MAAMwK,UAAUC,MAAMC,KAAKH,EAASI,YAC1Cje,SAAQ,SAAUke,GAChB,GAAkB,IAAlBA,EAAKC,WAAmBD,EAAKE,QAAQZ,IAAaU,EAAKpb,cAAc0a,IACrE,GAAKE,UAAY,CACb,IAAIW,EAAc/K,MAAMC,KAAK2K,EAAK1K,iBAAiBgK,IAE/Ca,EAAY7f,QACA6f,EAAAhe,KAAKC,IACbmd,EAAKnd,EAAI,GAEjB,CAIR,GACH,GACJ,IAGIge,QAAQzb,SAASlC,KAAM,CAC5B4d,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,eAAe,GAClB,E8B9CYC,CAAA,CACTnB,SAAU,oCACVC,KAjEwB,KACxB,IAAImB,GAAU,EAId,GAFqB/b,SAASC,cAAc,sCAEtB8b,EAAS,CACjBA,GAAA,EACN,IAAAC,EAAqBhc,SAASC,cAAc,0CAE5B,MAAA+b,GAAAA,EAAAC,iBAAiB,SAAS,WAC1C,IAAIrE,EAAY,OAAA7X,EAAAC,SAASC,cAAc,qDAAvBF,EAAqEmc,YAEjFtE,IACUuE,UAAAC,UAAUC,UAAUzE,GAE1BoE,IACmBA,EAAAM,UAAUC,IAAI,UACjCP,EAAmB3b,UAjEvB,miBAkEIoC,YAAW,KACHuZ,IACmBA,EAAAM,UAAUxL,OAAO,UACpCkL,EAAmB3b,UAAYga,GACnC,GACD,OAEX,GAER,KA0CAzZ,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CACKjF,UAACkN,GACEjN,EAAAA,kBAAAA,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,cAEQC,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAAuM,EACItM,wBAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAE1EpV,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,mFACXqB,SAAAC,EAAAN,kBAAAM,IAACkI,GAAA,CACGhD,KAAK,SACL3F,MAAO0Z,KACDhC,IAAYJ,EAAa9b,QAAWwe,GACpC,CACIpU,UAAU,GAEd,CACItC,QAxD1B3K,UAChB,IAAI0jB,EAAapD,EACboD,IAAYA,EAAaA,EAAW3W,WAAW3N,EAAuCuf,EAAa9b,SAEnGkc,GAAWJ,EAAa9b,OACxBS,OAAOmT,wBAAwB,CAC3BC,MAAO2J,GAAsC,uDAC7C1J,QAAS+M,GAAc,0DAA0D/E,EAAa9b,8CAC9F+T,WAAY2J,GAAuC,uBACnD1J,iBAAkB,OAClBC,SAAU0K,IAAyB,CAAC,IAGlB,oBAAXle,QAA0BA,OAAOse,iBACxCte,OAAOse,gBAAgB,CACnBlL,MAAO0J,EACPzJ,QAASmI,EACH,sMAEYyC,qIAEkDzC,8CAE9D,IAGlB,GAiCiCjX,WAEOJ,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAAtB,UAAU,0EAA2EqB,SAAA8W,EAAa9b,SACvGwe,GAAoBrY,EAAAxB,kBAAAM,IAAA6b,GAAA,CAAA,GAAiB,KACrClD,GAA+B,0BAEpC7B,IAGAuB,GAAgB,2BASpD,EH5IRrD,GAAa8G,aIzE2B,EAAGhF,aAAYG,UAASlK,eAAcT,mCAC1E,MAAMd,eAAEA,GAAmBlR,EAAMmR,WAA2BC,EAAaA,gBAEnE0D,kBAAEA,IAAsB,OAAAjQ,mBAAcK,cAAd,EAAAL,EAAuBgT,SAAU,CAAA,GAE3D+E,WAAY6E,EACZ3E,aAAc4E,EACd1E,cAAe2E,EACfzE,YAAa0E,EACbxE,eAAgByE,EAChBvE,aAAcwE,EACdtE,cAAeuE,EACfrE,iBAAkBsE,EAClB3G,UAAW4G,EACX1G,YAAa2G,EACbzG,eAAgB0G,IAChB,OAAAlK,EAAA,OAAc/E,EAAA,MAAAT,OAAA,EAAAA,EAAAvN,kBAASkO,aAAvB,EAAA6E,EAA+BmK,mBAAoB,CAAA,GACjDC,iCAAEA,EAAkCC,gCAAAA,EAAAC,yCAAiCA,EAA0CC,yCAAAA,IACjH,OAAA/J,EAAc,MAAAhG,OAAA,EAAAA,EAAAU,gBAAW,EAAAsF,EAAA2F,QAAS,IAChCgE,iBAAEA,IAAqB,OAAA1J,mBAAcvF,gBAAd,EAAAuF,EAAyBtF,SAAU,CAAA,GAEzDT,EAAiBC,GAAsB5S,EAAM2E,UAAS,GAEvD8d,EAAiC,IAC/BhB,GAAuC,CAAE1W,MAAO0W,MAChDC,GAAyC,CAAE7Z,YAAa6Z,MACxDC,GAA0C,CAAE/C,aAAc+C,MAC1DC,GAAwC,CAAE/C,WAAY+C,MACtDC,GAA2C,CAAE/C,cAAe+C,MAC5DC,GAAyC,CAAE/C,YAAa+C,MACxDC,GAA0C,CAAE/C,aAAc+C,MAC1DC,GAA6C,CAAE/Z,gBAAiB+Z,MAChEC,GAAsC,CAAEnG,SAAUmG,MAClDC,GAAwC,CAAEnG,WAAYmG,MACtDC,GAA2C,CAAEnG,cAAemG,IAGpEniB,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,IAaJ,6DAESzL,UAACkN,yDAEOlN,UAACkX,yDAEOlX,SACGuM,EAAAtM,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAEzEpV,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,sCACXqB,SAAAC,wBAACkI,IAAOhD,KAAK,SAASkD,UAAU,SAASvF,QArBrD,KACM,oBAAXrH,QAA0BA,OAAOmT,yBACxCnT,OAAOmT,wBAAwB,CAC3BC,MAAO+N,EACP9N,QAAS+N,EACT9N,WAAY+N,EACZ9N,iBAAkB,SAClBC,SAAUxT,OAAOwhB,+BAAiC,CAAC,GACtD,EAasFzd,MAAOwd,EACjEhd,aAA0B2c,GAAoB,2BAQ/E,EJGR1H,GAAaiI,KKxEmB,EAAGC,eAAcC,eAAcC,kBAAiBC,yBAAwBtQ,eAAcuQ,gCAClH,MAAM9R,eAAEA,GAAmBlR,EAAMmR,WAA2BC,EAAaA,gBAEnE0D,kBAAEA,IAAsB,OAAAjQ,mBAAcK,cAAd,EAAAL,EAAuBgT,SAAU,CAAA,GAEzDoL,iBAAEA,IAAqB,MAAAD,OAAA,EAAAA,EAAqB7P,YAAa,CAAA,GAExDR,EAAiBC,GAAsB5S,EAAM2E,UAAS,GAW7D,OAJA3E,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,IAIKtK,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAACkN,EAoBE,KAnBAjN,EAAAN,kBAAAM,IAAAgF,6BAAA,CACKjF,SAAgBmd,GAAAhU,QAAsB,MAAdgU,OAAc,EAAAA,EAAAniB,SACnCmG,EAAAxB,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,sCACXqB,WAAAL,kBAAAM,IAACkK,GAAA,CACGzL,MAAM,MACNpG,QAAS6kB,EAAatgB,KAAKC,IACjB,MAAAC,KAAEA,EAAM1C,MAAAA,GAAUyC,EACjB,MAAA,CACH6F,MAAO5F,EACP1C,QAAA,IAGRA,MAAO+iB,EACP1Y,SAAU,EAAGrK,WAzBhB,CAACA,IACtBgjB,GAAmBA,EAAgBhjB,GACnCijB,GAA0BA,GAAuB,EAAI,EAuBCG,CAAiBpjB,GAC/CoM,YAAa+W,GAAoB,oBAMzD,ELgCRvI,GAAayI,MM1EoB,EAAGC,eAAcC,gBAAeC,mBAAkBP,yBAAwBtQ,yBACvG,MAAMvB,eAAEA,GAAmBlR,EAAMmR,WAA2BC,EAAaA,gBAEnE0D,kBAAEA,IAAsB,OAAAjQ,mBAAcK,cAAd,EAAAL,EAAuBgT,SAAU,CAAA,GAExDlF,EAAiBC,GAAsB5S,EAAM2E,UAAS,GAW7D,OAJA3E,EAAME,WAAU,KACZ0S,EAAmB1B,GAAkB4D,EAAiB,GACvD,CAAC5D,IAIKtK,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAACkN,EAkBE,KAjBAjN,EAAAN,kBAAAM,IAAAgF,6BAAA,CACKjF,SAAgB2d,GAAAxU,QAAsB,MAAdwU,OAAc,EAAAA,EAAA3iB,SACnCmG,EAAAxB,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,sCACXqB,WAAAL,kBAAAM,IAACkK,GAAA,CACGzL,MAAM,MACNpG,QAASqlB,EAAa9gB,KAAKC,IAChB,CACH6F,MAAO7F,EACPzC,MAAOyC,MAGfzC,MAAOujB,GAAiBD,EAAa,GACrCjZ,SAAU,EAAGrK,WAxBf,CAACA,IACvBwjB,GAAoBA,EAAiBxjB,GACrCijB,GAA0BA,GAAuB,EAAI,EAsBCQ,CAAkBzjB,UAMxE,EClBK,MAAA0jB,GAAqB5lB,MAAOiL,IACrC,MAAMiO,UAAEA,EAAY,KAAA2M,MAAMA,EAAQ,MAAS5a,GAAS,GAEpD,IAAIgQ,EAAY/B,EAAY1W,EAAe0W,GAAa,GACpDnD,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G4d,EACA,IACA,IAAIC,gBAAgB,CAChB,CAAC9b,EAAoBC,eAAgBwW,KAClC8P,IACJvK,WAEHpb,EAAM,GAAGrD,iBAAuBoe,IAAYE,IAEhD,aAAazX,EAAS,CAClBxD,MACAI,OAAQ,MACRqD,cAAeoS,EACfjS,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,ECrBI4P,GAAU7a,cACb,MAAA9B,MACFA,EAAA4c,QACAA,EAAAC,KACAA,EAAO,KAAAhjB,OACPA,EAAAijB,oBACAA,GAAsB,EAAAC,UACtBA,GAAY,EAAAC,wBACZA,GAA0B,EAC1BvlB,KAAMqS,EAAAmT,eACNA,EAAAhd,UACAA,EAAY,GAAAC,aACZA,EAAe,GAAAgd,iBACfA,GAAmB,EAAAC,kBACnBA,EAAoB,GAAAC,cACpBA,EAAgB,GAChBtb,GACEiO,UAAEA,GAAclW,GAAU,IAE1BoQ,YAAEA,EAAaC,+BAAAA,GAAmCjR,EAAMmR,WAA2BC,EAAAA,gBAEjFkF,cAAe8N,GAA6BpT,GAAe,CAAA,GAC3DlR,MAAOukB,EAAgCvgB,QAASwgB,IAAqC,OAAAzf,EAAgC,MAAAoM,OAAA,EAAAA,EAAAqF,oBAAe,EAAAzR,EAAA0f,SAAU,GAEhJC,GAAc3T,QAA8B,IAAV9J,QAA4C,IAAZ4c,GACjE3R,EAAgBC,GAAqBjS,EAAM2E,SAAS6f,IACpDtS,EAAWC,GAAgBnS,EAAM2E,SAAS6f,IAC1CC,EAAQC,GAAa1kB,EAAM2E,SAC9BkM,QAA8B,IAAV9J,QAA4C,IAAZ4c,EAC9CC,GAAwB,iBAATA,EACXe,GAAUf,GACV,CACIxd,MAAa,MAANwd,OAAM,EAAAA,EAAAxd,MACbC,OAAc,MAANud,OAAM,EAAAA,EAAAvd,QAEtB,CACID,MAAO,EACPC,OAAQ,KAGfue,EAAaC,GAAkB7kB,EAAM2E,UAAS,MAAAkM,OAAA,EAAAA,EAAWiU,eAAgB/d,GAAS,IAClFge,EAAeC,GAAoBhlB,EAAM2E,UAAS,OAAAuO,EAAA,MAAArC,OAAA,EAAAA,EAAW0T,aAAX,EAAArR,EAAmByQ,UAAWA,GAAW,MAC3FlR,EAAcC,GAAmB1S,EAAM2E,UAAc,MAAAqf,OAAA,EAAAA,EAAgBiB,SAAU,CAAA,IAC/EtN,EAAaC,GAAkB5X,EAAM2E,UAAS,GAE/CugB,EAAqBrlB,EAAY,CAAEiX,eAEnCqO,WAAEA,EAAa,UAAAC,cAAWA,EAAgB,YAAc,OAAAnN,EAAc,MAAAxF,OAAA,EAAAA,EAAAvN,cAAS,EAAA+S,EAAAsM,SAAU,GAEzFc,EnCSsB,CAACzkB,IAC7B,MAAM0kB,YAAEA,EAAc,EAAAC,cAAGA,EAAgB,OAAU3kB,GAAU,GAE7D,IAAI4kB,EAAW,EASf,OAPIF,IACsB,QAAlBC,IAAoCC,EAAc,GAAdF,EAAmB,GAAK,IAC1C,SAAlBC,IAA0BC,EAAyB,GAAdF,EAAmB,IACtC,WAAlBC,IAA4BC,EAAyB,GAAdF,GACrB,WAAlBC,IAAuCC,EAAAF,IAGxCG,KAAKC,MAAMriB,KAAKsiB,MAAQ,KAAQH,CAAA,EmCrBjBI,GAEhBC,EAA0BjoB,MAAOkoB,EAAsBC,GAA0B,WACnF,GAAID,IAAoBhP,EAAW,OAE/B,IAAAxY,EAGA0nB,EAEAxnB,EAJAiV,GAAe,EACfwS,EAA2B,EAI/B,GAAIpV,GAAa8G,EACNnZ,EAAAqS,EACD4C,GAAA,EACNmE,GAAe,OACZ,CAKH,GAJAtZ,QAAiBklB,GAAc,CAC3B1M,UAAWgP,KAGVxnB,EAAU,OAET,MAAA0V,OAAEA,GAAW1V,EACnBE,EAAOF,EAASE,KACV,MAAAyV,KAAEA,GAASD,EAEjBP,EAAe,MAATQ,IAAgB,CAC1B,CAEmBgS,GAAA,MAAAznB,OAAA,EAAAA,EAAMsmB,cAAetmB,EAAKsmB,aAAe,EACvCjgB,GAAA,OAAAA,QAAArG,WAAM+lB,aAAN,EAAA1f,EAAc8e,SAAUnlB,EAAK+lB,OAAOZ,QAAU,EAE/DlQ,IACAoR,EAAeoB,GACfjB,EAAiBgB,GACjB7T,GAAa,GACbF,GAAkB,GAEd8T,GAA2B1B,GAAkCC,GAAkCA,EAAiC,IACxI,EAWEvP,EAAiBnX,MAAOsoB,IAGtB,IAAA5nB,EAFJ6T,GAAa,GAIF7T,EAAAuE,KAAKgS,MAAMqR,GAEjB5nB,IAELoU,EAAgBpU,QAjBeV,gBACV,IAAVmJ,QAA4C,IAAZ4c,EACvCxR,GAAa,GAEb0T,EAAwB/O,EAC5B,EAcMqP,GAA2B,EAoDjC,OAtCJnmB,EAAME,WAAU,KACZ,IAAKkkB,EAA0B,OAElB,OAATR,EACUc,EAAA,CACNte,MAAO,GACPC,OAAQ,KAEI,OAATud,EACGc,EAAA,CACNte,MAAO,GACPC,OAAQ,KAEI,OAATud,GACGc,EAAA,CACNte,MAAO,GACPC,OAAQ,KAISuI,QAAQsW,IAAiB,MAAAA,OAAA,EAAAA,EAAepO,aAAcA,IAEvD7E,GAAkB,GAE1C8C,EAAe/W,aAAa4V,QAAQzY,IAA6C,KAAI,GACtF,CAACipB,EAA0BtN,IAE9B9W,EAAME,WAAU,MACP4W,GAAcA,GAAauN,IAAmCvN,IAE/DwN,GAAkCA,EAAiC,IAEvErS,GAAkB,GAElB4T,EAAwBxB,GAAgC,GAAI,GAC7D,CAACvN,EAAWuN,MAGXjf,kBAAAM,IAAC,MAAA,CACGtB,UAAU,gCACVmE,QAnDc,KACbwb,GAELxc,YAAW,KACS5G,EAAA,CACZE,QAASiE,SAASshB,eAAenpB,EAA0BrB,gBAC3DkF,aAAc,IACjB,GACF,IAAG,KA4CmB,iBAAT8iB,EACN,CACI,mBAAsBA,GAE1B,CAAC,EAENne,YAAkBoe,EACfne,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAGrEpV,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,UAACyM,GAEO7M,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAI,CAACC,EAAM+I,KACxB,KAAM/I,GAAQ4hB,GAAgB,OAE9B,MAAMkC,iBAAEA,EAAkBC,iBAAAA,EAAAC,OAAkBA,iBAAQC,EAAgBC,UAAAA,GnCcvE,GACzB9C,UACAphB,OACA+I,QACAwL,YACAoN,oBACAmB,oBASA,IAcIkB,EAdAG,EAAcjB,KAAKC,MAAMiB,WAAWhD,IAEpCiD,EAAgBrmB,OAAOojB,GAASpkB,SAAS,KAAOgB,OAAOojB,GAAS1kB,MAAM,KAAO,GAC7E4nB,EAAmBtmB,OAAOojB,GAASpkB,SAAS,KAAOgB,OAAOojB,GAAS1kB,MAAM,KAAO,GAEhF6nB,EADmBF,EAAcnmB,QAAUomB,EAAiBpmB,OAC5BmmB,EAAc,IAAMC,EAAiB,GAAK,EAC1EJ,EAAY,SAEZlkB,EAAOmkB,GAAeA,EAAc,IAAMnkB,IAC1CkkB,EAAY,QAAQK,KAGZL,EAAAlkB,GAAQmkB,EAAc,OAASD,EAIzB,WAAdA,IACSF,EAAA,MAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,WAAdE,IACSF,EAAA,OAGK,SAAdE,IACSF,EAAA,QAGb,IAAID,EAAmB,IAAIG,KAAanb,KAASwL,GAAwBuO,IAAgBnB,EAAoB,IAAIA,IAAsB,KAIhI,MAAA,CACHoC,mBACAD,iBALmB,gBAAgBC,IAMnCE,eALiB,kBAAkBF,IAMnCC,SACAE,YAAA,EmClG0GM,CAAc,CAC5FpD,QAASoB,EACTxiB,OACA+I,QACAwL,YACAuO,gBACAnB,sBAIA,SAAApO,cAAC,MAAI,CAAAtP,MAAM,gCAAiCie,EAAQne,QAAQ,YAAYpE,IAAKokB,GACzEjhB,EAAAD,kBAAAC,KAAC,OACG,CAAAI,SAAA,GAACJ,kBAAAA,KAAA,iBAAA,CAAehF,GAAIgmB,EAChB5gB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAA6gB,SAAgBS,UAAWhgB,GAAame,IAC9Czf,EAAAA,kBAAAA,IAAC,QAAK6gB,SAAgBS,UAAyB,SAAdP,EAAuBzf,GAAame,EAAale,GAAgBme,SAEtG/f,kBAAAA,KAAC,iBAAe,CAAAhF,GAAImmB,EAChB/gB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAA6gB,SAAgBS,UAAWhgB,GAAame,IAC7Czf,EAAAA,kBAAAA,IAAA,OAAA,CAAK6gB,SAAgBS,UAAU,sBAGxCthB,EAAAN,kBAAAM,IAAC,OAAA,CACGa,KAAM,QAAQigB,KACd/f,EAAE,4qBACGwd,EACC,CACIgD,OAAQ,QAAQZ,KAChBa,YAAa,OAEjB,CAAC,IAEf,IAGPpD,IAAY1e,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,8CAA8CqB,SAAA,CAAA,IAAEmf,EAAY,OAAYlf,EAAAA,kBAAAA,IAAAgF,EAAAtF,kBAAAsF,SAAA,UAGhH,EAMVia,GAAaf,GACF,OAATA,EACO,CACHxd,MAAO,GACPC,OAAQ,IAEI,OAATud,EACA,CACHxd,MAAO,GACPC,OAAQ,IAGL,CACHD,MAAO,GACPC,OAAQ,ICjQPqU,GAAuC7R,IAC1C,MAACqJ,EAAWC,GAAgBnS,EAAM2E,UAAUkE,EAAMrK,MAQ/CkH,OANT1F,EAAME,WAAU,KACZiS,GAAa,EAAK,GACnB,IAIMzM,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAACyM,GACEtL,EAAAxB,kBAAAM,IAAC,OAAItB,UAAU,uCACVqB,SAAMzF,EAAA+a,SAASC,MAAMnS,EAAMpD,WACxBzF,EAAM+a,SAASzY,IAAIuG,EAAMpD,UAAWwV,GAChCjb,EAAMkb,aAAaD,EAAO,IACnBpS,SAK3B,EAIR6R,GAAaiI,KC3BmB,EAAGwE,uBAAsBC,oBAAmB3U,eAAcqQ,kBAAiBC,uCACjG,MAAAsE,aAAEA,uBAAcC,IAAyB,OAAAziB,mBAAcK,cAAd,EAAAL,EAAuBuO,SAAU,IACxEmU,QAASC,IAAqB,OAAAtU,mBAAcC,gBAAd,EAAAD,EAAyBE,SAAU,IAElEqU,EAAeC,GAAoB1nB,EAAM2E,SAAiC0iB,GAAgB,MAQ3FM,EAAkBF,IAAiB,OAAAxP,EAAkBmP,EAAA,SAAI,EAAAnP,EAAAnY,OAG3D,+BAAA4K,EAAAA,kBAAAA,SAAA,CACKjF,SAAC6hB,0BACG,MAAI,CAAAljB,UAAU,4CACVqB,SACG0hB,IAAA/hB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAOyU,QAAQ,KAAK/P,MAAM,cAErE3F,kBAAAM,IAACkK,GAAA,CACGzL,MAAM,MACN0L,oCAAcnC,GAAS,CAAAtH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACpD+E,oBAAqB0X,GAAoB,UACzCzpB,QAASqpB,EAAkB9kB,KAAKC,IACtB,MAAAC,KAAEA,EAAM1C,MAAAA,GAAUyC,EACjB,MAAA,CACH6F,MAAO5F,EACP1C,QAAA,IAGRA,MAAO6nB,EACPxd,SAAU,EAAGrK,WA3BZ,CAACA,IACtB4nB,EAAiB5nB,GACjBijB,GAA0BA,GAAuB,GACjDD,GAAmBA,EAAgBhjB,EAAK,EAwBUojB,CAAiBpjB,GAC/CmO,KAAK,yBAlBI,MAuB7B,EDXRyM,GAAakN,WExByB,EAAGT,uBAAsBxjB,OAAM8O,eAAc7R,SAAQinB,mBAAkBC,yBACnG,MACFlL,WAAYmL,EACZjL,aAAckL,EACdhL,cAAeiL,EACf/K,YAAagL,EACb9K,eAAgB+K,EAChB7K,aAAc8K,EACd5K,cAAe6K,EACf3K,iBAAkB4K,EAClBjN,UAAWkN,EACXhN,YAAaiN,EACb/M,eAAgBgN,IAChB,OAAAvV,EAAA,OAAcrO,EAAA,MAAA4N,OAAA,EAAAA,EAAAvN,kBAASkO,aAAvB,EAAAF,EAA+BwV,sBAAuB,CAAA,GACpDA,oBAAEA,IAAwB,OAAAzQ,mBAAc9E,gBAAd,EAAA8E,EAAyB7E,SAAU,CAAA,EAE7DuV,EAAoC,IAClCZ,GAA0C,CAAEhd,MAAOgd,MACnDC,GAA4C,CAAEngB,YAAamgB,MAC3DC,GAA6C,CAAErJ,aAAcqJ,MAC7DC,GAA2C,CAAErJ,WAAYqJ,MACzDC,GAA8C,CAAErJ,cAAeqJ,MAC/DC,GAA4C,CAAErJ,YAAaqJ,MAC3DC,GAA6C,CAAErJ,aAAcqJ,MAC7DC,GAAgD,CAAErgB,gBAAiBqgB,MACnEC,GAAyC,CAAEzM,SAAUyM,MACrDC,GAA2C,CAAEzM,WAAYyM,MACzDC,GAA8C,CAAEzM,cAAeyM,mCAIlE,MAAI,CAAArkB,UAAU,4CACVqB,SAAA0hB,0BACItM,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAOyU,QAAQ,KAAK/P,MAAM,YAErE1F,EAAAD,kBAAAC,KAACuI,GAAA,CACGhD,KAAK,SACLkD,UAAU,UACV1J,UAAU,mDACVmE,QAAS,IAAwB,oBAAXrH,QAA0BA,OAAO0nB,kCAAoC1nB,OAAO0nB,iCAAiChoB,EAAQinB,EAAkBC,GAC7J7iB,MAAO0jB,EAEPljB,SAAA,CAAAC,wBAAC+H,IAAerH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAC5CpH,IAAc+kB,GAAuB,kBAGlD,EFrBRhO,GAAamO,QGhBuBhgB,gBAChC,MAAMjI,OAAEA,EAAA6R,aAAQA,EAAcqW,YAAAA,EAAA9E,eAAaA,GAAmBnb,GACxDiO,UAAEA,GAAclW,GAAU,IACxBukB,WAAY4D,EAAgC3D,cAAe4D,IAAsC,OAAA9V,EAAA,OAAcrO,EAAA,MAAA4N,OAAA,EAAAA,EAAAvN,cAAS,EAAAL,EAAAuO,aAAQ,EAAAF,EAAA+V,cAAe,IACjJC,gBAAEA,gBAAiBC,IAAkB,OAAAlR,mBAAc9E,gBAAd,EAAA8E,EAAyB7E,SAAU,IAEvEpB,EAAgBC,GAAqBjS,EAAM2E,UAAS,IACpDykB,EAAuBC,GAA4BrpB,EAAM2E,UAAS,IAClEuN,EAAWC,GAAgBnS,EAAM2E,UAAS,IAC1C2kB,EAAiBC,GAAsBvpB,EAAM2E,UAASmkB,IACtD9kB,EAAQC,GAAajE,EAAM2E,UAAS,IACpCigB,EAAaC,GAAkB7kB,EAAM2E,UAAS,MAAAmkB,OAAA,EAAAA,EAAahE,eAAgB,IAC3E0E,EAAYC,GAAiBzpB,EAAM2E,gBACtCmkB,WAAavE,SAAU,CACnB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,KAGJQ,EAAeC,GAAoBhlB,EAAM2E,UAAS,OAAA8T,EAAa,MAAAqQ,OAAA,EAAAA,EAAAvE,aAAQ,EAAA9L,EAAAkL,UAAW,MAClFhM,EAAaC,GAAkB5X,EAAM2E,UAAS,GAE/CugB,EAAqBrlB,EAAY,CAAEiX,cAEnC4S,EAA0B9rB,gBACxB,IAAAU,EACAE,EAGAmrB,EACA3D,EAHAvS,GAAe,EACfwS,EAA2B,EAI/B,GAAI6C,GAAenR,EACRnZ,EAAAsqB,EACDrV,GAAA,EACNmE,GAAe,OACZ,CAKH,GAJAtZ,QAAiBklB,GAAc,CAC3B1M,eAGCxY,EAAU,OAET,MAAA0V,OAAEA,GAAW1V,GACb2V,KAAEA,GAASD,EACjBxV,EAAOF,EAASE,KAEhBiV,EAAe,MAATQ,IAAgB,CAC1B,CAEmBgS,GAAA,MAAAznB,OAAA,EAAAA,EAAMsmB,cAAetmB,EAAKsmB,aAAe,EAC5D6E,SAAkBnrB,WAAM+lB,QAClB,CACI,EAAG/lB,EAAK+lB,OAAO,IAAQ,EACvB,EAAG/lB,EAAK+lB,OAAO,IAAQ,EACvB,EAAG/lB,EAAK+lB,OAAO,IAAQ,EACvB,EAAG/lB,EAAK+lB,OAAO,IAAQ,EACvB,EAAG/lB,EAAK+lB,OAAO,IAAQ,GAE3BiF,EACe3kB,GAAA,OAAAA,QAAArG,WAAM+lB,aAAN,EAAA1f,EAAc8e,SAAUnlB,EAAK+lB,OAAOZ,QAAU,IAE/DlQ,IACAoR,EAAeoB,GACfwD,EAAcE,GACd3E,EAAiBgB,GACjB7T,GAAa,GACboX,GAAmB,GACnBtX,GAAkB,GAClBjO,GAAUqlB,GAAyB,GACvC,EAmBA,OAhBJrpB,EAAME,WAAU,KACU,oBAAXgB,SACPA,OAAO0oB,uCAAyC,KAC5CL,GAAmB,SAKF3a,QAAQsW,IAAiB,MAAAA,OAAA,EAAAA,EAAepO,aAAcA,IAEvD7E,GAAkB,SAG3C,CAACjO,EAAQ8S,4BAGP,OAAI1S,UAAU,wCACVqB,aAAmBqjB,0BACfjO,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAC1E5I,IAAc4W,EAAc,OAC5B1jB,kBAAAM,IAAC7B,EAAA,CACGC,QACIuB,EAAAA,kBAAAA,KAAC6K,EAAAA,OAAOC,IAAP,CAAWC,SAAS,EAAOC,QAASrM,EAAS,OAAS,SAAUI,UAAU,gDACvEqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,gDAAiDqB,SAAcsf,IAC7Erf,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,+CACVqB,UAAC6jB,GACE5jB,EAAAN,kBAAAM,IAACge,GAAA,CACGllB,KAAMsqB,EACN9E,iBACAL,QAASpjB,OAAOwkB,GAChBnB,KAAK,KACLC,qBAAqB,EACrBC,WAAW,EACXC,yBAAyB,QAIrC1e,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,8CACVqB,SAAA,CAAAmf,EACDlf,EAAAA,kBAAAA,IAAC,QAAKtB,UAAU,mDAAoDqB,WAAc,EAAI0jB,GAAiB,UAAYD,GAAmB,sCAEzIhZ,EAAOA,OAAAC,IAAP,CAAWG,SAAUrB,GAA+B7K,UAAU,uBAC3DqB,SAAAmB,EAAAxB,kBAAAM,IAAC,OAAIU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,6TACFF,KAAK,eACLG,SAAS,UACTC,SAAS,mBAM7B5C,QACIqlB,EACK1jB,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,sDACVqB,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAKgJ,KAEdlG,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,2DACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAC1E1V,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,QACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH4kB,WAAY,OACZC,YAAa,UAGrBpkB,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAZExP,+BAkB1F,OAAIlH,UAAU,6CACXqB,iCAAC,MAAI,CAAArB,UAAU,sDACVqB,SAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAI,CAACC,EAAM+I,MAEpBlG,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,2DACXqB,SAAA,GAAAL,kBAAAM,IAACge,GAAA,CACGllB,KAAMsqB,EACN9E,iBACAL,QAASphB,EACTqhB,KAAK,KACLC,qBAAqB,EACrBC,WAAW,EACXC,yBAAyB,MAE7B3e,kBAAAM,IAACoB,EAAA,CACGhH,MAAOS,OAAOipB,EAAWjnB,IACzBwE,MAAO6d,EACP5d,UAAW+hB,EACX9hB,aAAc+hB,6BAEjB,QAAM,CAAAvjB,SAAA,CAAA,IAAE+jB,EAAWjnB,GAAM,SAhBiD+I,SAwBvGrH,YACAC,eAAa,EACbC,MAAM,MACNM,aAAa,IACbL,UAAU,gDACVE,WAAW,KAGvB,ECjNK,MAAAylB,GAASnsB,MAAO0N,EAAY9J,KACjC,IAAAwoB,EAAqD,oBAAjBhsB,cAA+BA,aAAa4V,QAAQzY,IAAmD,GAE3I2C,EAAM,GAAGpD,aAAqC4Q,WAKlD,aAAahK,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeyoB,EACfxoB,UACAC,QATU,CACV,eAAgB,oBAShBC,iBAAiB,IAEhBrD,MAAMwV,GAAWA,IACjBC,OAAM,KACH,GACH,EAGImW,GAAcrsB,MAAO4D,EAAckS,KACxC,IAAAsW,EAA6BtW,IAAwC,oBAAjB1V,cAA+BA,aAAa4V,QAAQzY,IAAmD,IAE3J2C,EAAM,GAAGpD,iBAKb,aAAa4G,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeyoB,EACfxoB,UACAC,QATU,CACV,eAAgB,oBAShBC,iBAAiB,IAEhBrD,MAAMwV,GAAWA,IACjBC,OAAM,KACH,GACH,EAwBIoW,GAAqBtsB,MAAOY,IAC/B,MAAA2d,QAAEA,EAASgO,YAAAA,GAAgB3rB,EAE7B,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,oCAIT+G,EAAU,CACV2a,UACAiO,aAAcD,GAGlB,aAAa7oB,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAbU,CACV,eAAgB,oBAahBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EAGIuW,GAA2BzsB,MAAOY,IACrC,MAAAsY,UAAEA,GAActY,EAElB,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,mCAIT+G,EAAU,CACVsY,QAAS,CACLzZ,GAAID,EAAe0W,KAI3B,aAAaxV,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EC3HIwW,GAAkC,CAAC,kBAAmB,kBAAmB,cAAe,cAAe,wBASvGD,GAA2BzsB,MAAOY,IACrC,MAAAsY,UAAEA,EAAWyT,UAAAA,GAAc/rB,EAE7B,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,4CAKT+G,EAAU,CACVgpB,WAAYpqB,EAAe0W,GAC3B1D,OAAQmX,GAGZ,aAAajpB,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,ECgBH2W,GAAe5hB,cACX,MAAAtG,KACFA,EAAAmoB,gBACAA,EAAAC,mBACAA,EAAAC,QACAA,EAAAC,qBACAA,GAAuB,EAAAC,sBACvBA,EAAAP,UACAA,EAAY,KAAAQ,qBACZA,GAAuB,EACvBC,MAAOC,EAAAtU,mBACPA,EAAAC,sBACAA,EAAAsU,mBACAA,EAAAC,sBACAA,EAAAC,YACAA,EAAAC,cACAA,GACAxiB,GAEEyiB,YACFA,GAAc,EAAAC,SACdA,GAAW,EAAAC,WACXA,GAAa,EAAAC,iBACbA,GAAmB,EAAAC,4BACnBA,EAAAC,6BACAA,EAAAC,2BACAA,EAA6B,CAAC,EAAAC,oBAC9BA,EAAsB,CAAC,EAAAC,iCACvBA,EAAmC,CAAC,GACpClB,GAAW,CAAA,GAET9Q,QAAEA,EAAAxJ,SAASA,GAAa/N,GAAQ,CAAA,GAChClC,GAAEA,EAAAiU,MAAIA,EAAO1I,MAAAA,EAAA9N,IAAOA,EAAK8I,OAAAA,EAAS,GAAAsT,SAAIA,EAAU6R,OAAAA,GAAWjS,GAAW,CAAA,GACpEzZ,GAAI4Y,EAAa,GAAI+S,qBAAsBC,EAA+B,GAAI3X,MAAO4X,EAAgB,GAAA/R,MAAIA,EAAQ,GAAIJ,IAAAA,EAAM,KAAO,MAAAzJ,OAAA,EAAAA,EAAU7P,QAAS6P,EAAS,GAAK,GAErK6b,EAA2BF,GAA8D,GACzFG,GAA8B,MAAA9b,OAAA,EAAAA,EAAU7P,SAAUsB,OAAOsqB,OAAO/b,EAAS,GAAI,sBAAwBA,EAAS,GAAGgc,mBAAqB,GAErIC,EAAmBC,GAAwBxsB,EAAM2E,SAASwnB,IAC1DM,EAAsBC,GAA2B1sB,EAAM2E,SAASynB,GAEvE,IAAIO,EAAqBhC,GAAsB4B,EAC3CK,OAAe,MAAAtc,OAAA,EAAAA,EAAU7P,UAAUsB,OAAOsqB,OAAO/b,EAAS,GAAI,0BAAyBuc,OAAOJ,IAAyB5B,GAEvHiC,GAAY,KAEhB,GAAI7B,EAAgB,CAChB,MAAM8B,EAAa,CACfjT,QAAS,IACFA,EAECxJ,SAAUA,EAAShO,KAAI,CAAC0qB,EAAc1hB,KAClC,MAAMghB,mBAAEA,GAAuBU,GAAW,GAEnC,MAAA,IACAA,EACHC,kBAAiBlrB,OAAOsqB,OAAO/b,EAAShF,GAAQ,wBAAyBghB,EAAqB,OAItGlB,GAAerpB,OAAOC,KAAKopB,GAAa3qB,OACtC,CACIwkB,OAAQ,CACJle,OAAO,OAAAlC,EAAc,MAAAumB,OAAA,EAAAA,EAAA/qB,aAAKykB,cAAe,MAAAsG,OAAA,EAAAA,EAAc/qB,GAAIykB,aAAe,EAC1EnB,SAAS,OAAA1L,EAAA,OAAc/E,EAAA,MAAAkY,OAAA,EAAAA,EAAA/qB,SAAK,EAAA6S,EAAAqR,iBAAQZ,SAAU,MAAAyH,OAAA,EAAAA,EAAc/qB,GAAIkkB,OAAOZ,QAAU,IAGzF,CAAC,GAEXuH,qBACAC,wBACAZ,aAGJuC,yDAAernB,SAAuBslB,IAAArlB,kBAAAA,IAAC,OAAIwnB,wBAAyB,CAAEC,OAAQlC,EAAe,IAAK8B,+BAA2B9B,EAAgB,IAAG8B,KAAe,KAC5J,CAKH,IAASK,EAAT,YACmB,MAAV9c,OAAU,EAAAA,EAAA7P,UAEf4sB,EAAgB,mBAAqBhtB,EACrCgtB,EAAgB,uBAAyBtB,EACzCsB,EAAgB,yBAA2B/c,EAAS,GAAGgd,QACnDhd,EAAS,GAAGid,UACZF,EAAgB,yBAA2B/c,EAAS,GAAGid,SAE3DF,EAAgB,mBAAqB/c,EAAS,GAAG0b,qBACjDqB,EAAgB,2BAA6B/c,EAAS,GAAGgc,mBAAA,EAKpDkB,EAAT,SAA2B3sB,EAAc4sB,GACrC,MAAMC,EAAgB7sB,EAAQiO,OAAO6e,aAAa5oB,cAAc,mBAAmBrB,EAAa+pB,MAAehY,iBAAiB,UAE1HmY,EAA8B,KAClBF,EAAAzrB,SAAQ,CAAC4rB,EAAaviB,KACzBuiB,EAAAzM,UAAUxL,OAAO,8CACxB/U,EAAQiO,OAAO1K,WAAa,6CAAA,GAC/B,EAUL,GACS,UADDqpB,EANUC,EAAAzrB,SAAQ,CAAC4rB,EAAaviB,KACzBuiB,EAAAzM,UAAUxL,OAAO,+CACxB/U,EAAQiO,OAAO1K,WAAa,8CAAA,YAgB/B,EAAA0pB,EAAT,SAA4BjtB,EAAcf,EAAYiuB,WAC5C,MAAAC,EAAantB,EAAQiO,OAAO6e,aAC5BM,EAAgBD,EAAWjpB,cAAc,+DAA+D1E,OAI1G4tB,EAAcvN,WAAW,uBAAuBqN,KAAejuB,MAAQA,EAK3E,MAAMwtB,EAAU,mBAAmBW,EAAcvN,WAAW,yBAAyB5gB,UAC/EytB,EAAU,IAAGU,EAAcvN,WAAW,yBAA2B,mBAAmBuN,EAAcvN,WAAW,yBAAyB5gB,UAAY,IAGlJouB,EAAeF,EAAWjpB,cAAc,gBAAgBuoB,IAAUC,KAClE3U,EAAYsV,EAAaxN,WAAW,mBAAmB5gB,MACvDquB,EAAU,OAAAtpB,EAAAqpB,EAAaxN,WAAW,yBAAxB7b,EAA0C/E,MACpDsuB,EAAoB,OAAAlb,EAAAgb,EAAaxN,WAAW,mCAAxBxN,EAAoDpT,MAI1EmuB,EAAcvN,WAAW,mBAAmB5gB,MAAQouB,EAAaxN,WAAW,mBAAmB5gB,MACjFmuB,EAAAvN,WAAW,2BAA2B5gB,MAAQsuB,EAExDxV,GAAW4T,EAAqB5T,GAChCwV,GAAmB1B,EAAwB0B,GAG3CD,IACAH,EAAWjpB,cAAc,sDAAsDspB,IAAML,EAAWjpB,cAC5F,wDAAwDopB,OAC1DE,KAUH,MALQ,CACXzV,YACAuV,UAGG,EA1FL,MAAApwB,SAAU+b,WAAS/b,SAAUgE,OAAOusB,QAAQxU,EAAQ/b,SAAW,GAC/DwwB,GAAkB,MAATzU,OAAS,EAAAA,EAAAyU,SAAU,GAC5BlB,EAAuB,CAAA,MA4FzBP,KAAA1nB,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,4BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,+BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,kCACXqB,SAAA,GAAAL,kBAAAC,KAAC,IAAA,CACG+I,KAAMtQ,EACNyK,QAAS,KACa,mBAAdgiB,EACiCiE,GAAA,CAC7B1X,UAAWzW,IAERiqB,GAAgC/qB,SAASgrB,IACPF,GAAA,CACrCvT,UAAWzW,EACXkqB,aAER,EAEJnmB,UAAU,uCAEVqB,SAAA,GAAAL,kBAAAM,IAAC+Q,GAAA,CACG7V,OAAQ,CACJkW,UAAWzW,EACX0W,iBAAkBkC,EAClBK,YAAahF,EACbiF,cAAe3S,EACf4S,WAAYO,EACZN,mBAAoByS,EACpBxS,YAAa5b,EACb6b,cAAc,MAAA/N,OAAA,EAAAA,EAAOyiB,MAAO,GAAG1zB,2BAC/Bif,gBAAiBM,EACjBL,aAAcM,MAEd2Q,EACJnU,qBACAC,wBACAC,gBAAiC,MAAhBwU,OAAgB,EAAAA,EAAAhrB,OAErC+E,kBAAAM,IAAC,MAAA,CACG2oB,KAAK,MAAAziB,OAAA,EAAAA,EAAOyiB,MAAO,GAAG1zB,2BACtB8zB,IAAI,oBACJC,QAAQ,OACRtqB,UAAU,iDACVuqB,QAAS,EAAGC,oBACHA,IAELA,EAAcC,QAAU,KACVD,EAAAP,IAAM,GAAG1zB,2BAAO,4BAGrC,MAAI,CAAAyJ,UAAU,2CACVqB,SAAQ,MAAA8oB,OAAA,EAAAA,EAAAjsB,KAAKsJ,KACVxG,kBAAAM,IAAC,MAAA,CAEGopB,SAAS,QACTzuB,GAAW,MAAPuL,OAAO,EAAAmjB,EAAA1uB,GACXgG,OAAO,MACPqoB,QAAQ,OACRL,IAAY,MAAPziB,OAAO,EAAAmjB,EAAAV,IACZI,IAAc,MAAT3U,OAAS,EAAAA,EAAAxF,MACdlO,MAAO,OACPnB,MAAO,CAAE+pB,YAAa,OAAS,MARnB,MAAPpjB,OAAO,EAAAmjB,EAAA1uB,WAa3BusB,GAAgBlnB,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,yCAA0CqB,SAAAkmB,GAAgC,aAAoB,UAEjItmB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,iCACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,kCACVqB,SAAA,CAAA+lB,0BACI,MAAI,CAAApnB,UAAU,kCACXqB,SAACJ,EAAAA,kBAAAA,KAAA,IAAA,CAAEJ,MAAO4mB,EACLpmB,SAAA,CAAAyU,EACAC,OAGT,KAEHmR,GAAe1kB,EACZvB,EAAAD,kBAAAC,KAAC,OAAIjB,UAAU,oCAAoCkQ,MAAO1N,EAAQnB,SAAA,CAAA,WACrDmB,KAEb,QAERlB,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,mCACXqB,SAAAC,EAAAN,kBAAAM,IAACge,GAAA,CACG9iB,OAAQ,CACJkW,UAAWzW,GAEfujB,KAAK,KACLC,qBAAqB,EACrBE,yBAAyB,EACzBvlB,KAAoB,MAAd4sB,OAAc,EAAAA,EAAA/qB,OAG3BiU,IACGlP,kBAAAM,IAAC,IAAA,CACG0I,KAAMtQ,EACNyK,QAAS,KACa,mBAAdgiB,EACiCiE,GAAA,CAC7B1X,UAAWzW,IAERiqB,GAAgC/qB,SAASgrB,IACPF,GAAA,CACrCvT,UAAWzW,EACXkqB,aAER,EAGJ9kB,iCAAC,KAAG,CAAArB,UAAU,yCAAyCa,MAAO2mB,EACzDnmB,SACL6O,MAEJ,6BACH,MAAI,CAAAlQ,UAAU,iCAAkCqB,SAAY8lB,GAAAxR,2BAAO,MAAI,CAAAtU,SAAA,CAAA,QAAMsU,KAAa,SAC3F1U,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,2CAEXqB,SAAA,CAAAC,wBAAC,SAAMkF,KAAK,YAAayiB,EAAiBjpB,UAAU,sEACnD,SAAO,CAAAA,UAAU,0DACbqB,SAAU,MAAA6K,OAAA,EAAAA,EAAAhO,KAAK0qB,IACN,MAAE1Y,MAAAA,EAAAA,QAAOgZ,EAASC,QAAAA,EAAAzc,SAASA,EAAUzQ,GAAAA,EAAI2rB,qBAAAA,EAAAiD,SAAsBA,EAAU3C,mBAAAA,GAA4BU,EAE3G,IAAIkC,EAAmB,CACnB,gBAAiB5B,EACjB,gBAAiBC,EACjB,0BAA2BjB,EAC3B,gBAAiBxb,EACjB,UAAWzQ,EACX,kBAAmB2rB,EACnB,gBAAiBiD,kCAIhB,SAAiB,IAAGC,EAChBzpB,SAAA6O,GADQjU,EAEb,MAMF,MAATtC,OAAS,EAAAA,EAAAuE,KAAI,CAACiO,EAAa4e,KAClB,MAAA1B,EAAald,EAAO,GACpB6e,EAAe7e,EAAO,GAExB,IAAA8e,EAAiBD,EAAa,GAElC,6DAES3pB,SAAoB,kBAAP2pB,EAAA,4BACT,MAAI,CAAAhrB,UAAW,2DAA2DV,EAAa+pB,KACnFhoB,WAAanD,KAAI,CAACC,EAAW+I,KAC1B,MAAMgkB,EAAqB,KAC7ED,IAAmB9sB,EAAO,6CAA+C,yCAEjBgtB,GAAsBF,IAAmB9sB,EAAO,8CAAgD,IAA7E,wCAGrB,SAAA6C,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SAELxG,UAA0B,UAAfqpB,EAAyB8B,EAAmBD,EACvDrqB,MAAO,CACHgD,gBAAgC,UAAfwlB,EAAyBlrB,EAAO,MAErDgG,QAAUinB,IACa1B,EAAA0B,EAAIjtB,EAAM4sB,EAAoB,GACjD3B,EAAkBgC,EAAI/B,EAAU,EAEpCnZ,MAAsB,UAAfmZ,EAAyB,KAAOlrB,EAEtCkD,SAAe,UAAfgoB,EAAyB,KAAOlrB,GAX5B+I,EAAA,KAVuF6jB,IA2BpH,aAMnB1D,EACG7kB,EAAAxB,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,sCACXqB,SAAAC,EAAAN,kBAAAM,IAACkI,GAAA,CACGhD,KAAK,SACLkD,UAAU,QACV1J,UAAU,0CACVa,MAAO,IACA6mB,KACCa,GAAsB,CACtB8C,OAAQ,YAGX9C,GAAsBC,GACrB,CACI/hB,UAAU,GAEd,CACItC,QAAS,KACLmiB,GACIA,EAAgB,CACZrqB,GAAIksB,EACJmD,SAAU,GACb,GAIlBjqB,YAEOJ,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,wBAAC2H,GAAQjH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACtCrF,EAAAA,kBAAAA,IAAC,OAAM,CAAAD,SAAAkmB,GAAgC,gBAItCtmB,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAqBknB,EAAA/lB,EAAAxB,kBAAAM,IAAC6b,OAAiB,6BACvClU,EAAQ,CAAAjH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACtCrF,EAAAA,kBAAAA,IAAC,OAAM,CAAAD,SAAAimB,GAA+B,uBAKtD,OAGhB,CAEQhmB,OAAAA,EAAAA,kBAAAA,IAAA1F,EAAM0K,SAAN,CAAyBjF,aAALpF,EAAe,EAGlCsvB,GAAe9mB,IACxB,MAAM+B,KAAEA,EAAAxG,UAAMA,EAAY,GAAA5F,KAAIA,EAAMosB,QAAAA,EAAAL,UAASA,EAAY,KAAAqF,UAAMA,GAAY,EAAAC,iBAAOA,EAAkBC,qBAAAA,GAAyBjnB,GACvHknB,qBAAEA,GAAuB,GAASnF,GAAW,CAAA,GAE5CD,EAAoBqF,GAAyBhwB,EAAM2E,SAAiC,MAErF+lB,EAAkB9sB,MAAOY,UACrB,MAAA6B,GAAEA,EAAIqvB,SAAAA,GAAalxB,EAEzBwxB,EAAsB3vB,GAClB,IAAA4vB,OCxckBryB,OAAOY,YACjC,IAAI2M,EAAsC,GAUtC,GATC3M,EAAA8D,KAAKC,IACA,MAAAlC,GAAEA,EAAIqvB,SAAAA,GAAantB,EAEzB4I,EAAM+kB,KAAK,CACP7vB,GAAID,EAAeC,GACnBqvB,YACH,IAGiB,oBAAXxuB,UAA2B,OAAAgS,EAAA,oCAAQid,cAAR,EAAAtrB,EAAiBurB,aAAQ,EAAAld,EAAAmd,MAAM,OAErE,IAAIvyB,EAAM,GAAGoD,OAAOivB,QAAQC,OAAOC,kBAI/B7uB,EAAU,CACV2J,SAGJ,aAAa7J,EAAS,CAClBxD,MACAI,OAAQ,OACRsD,UACAC,QAXU,CACV,eAAgB,oBAWhBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EDua+Bwc,CAAiB,CAC7C,CACIjwB,KACAqvB,eAIJ,OAAA7qB,EAAA,MAAAorB,OAAA,EAAAA,EAAqB9kB,YAArB,EAAAtG,EAA4BpE,SACV,aAAd8pB,OlB3RqB3sB,OAAOY,IAClC,MAAAsY,UAAEA,GAActY,EAElB,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,kBACT+G,EAAU,CACVsY,QAASjX,KAAKC,UAAU,CACpBzC,GAAID,EAAe0W,MAI3B,aAAaxV,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,YAECnD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EkBqQayc,CAAyB,CAC3BzZ,UAAWzW,IAEM,mBAAdkqB,OFhWc3sB,OAAOY,IAClC,MAAAsY,UAAEA,GAActY,EAElB,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,kCAIT+G,EAAU,CACVsY,QAAS,CACLzZ,GAAID,EAAe0W,KAI3B,aAAaxV,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EEqUa0c,CAA8B,CAChC1Z,UAAWzW,IAERiqB,GAAgC/qB,SAASgrB,SD1b3B3sB,OAAOY,IAClC,MAAAsY,UAAEA,EAAWyT,UAAAA,GAAc/rB,EAE7B,IAAAmV,EAAwC,oBAAjB3V,cAA+BA,aAAa4V,QAAQzY,IAAoC,GAE/G2C,EAAM,GAAGrD,2CAKT+G,EAAU,CACVgpB,WAAYpqB,EAAe0W,GAC3B1D,OAAQmX,GAGZ,aAAajpB,EAAS,CAClBxD,MACAI,OAAQ,OACRqD,cAAeoS,EACfnS,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EC+Za2c,CAAsC,CACxC3Z,UAAWzW,EACXkqB,cAIRyF,EAAsB,MACtBH,GAAoBA,EAAiB,WAEjCE,EACA7uB,OAAOyT,SAASvG,KAAO,QAEvBlN,OAAOsZ,wBAAwB,CAC3BlG,MAAO,aACPC,QAAS,iCACT3J,KAAM,UACN0D,6BAAOjB,EAAQ,CAAAjH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAIpD8kB,GAAoBA,EAAiB,UAErCtoB,YAAW,WACPyoB,EAAsB,MACA,oBAAX9uB,QAA0BA,OAAOsZ,yBACxCtZ,OAAOsZ,wBAAwB,CAC3BlG,MAAO,SACPC,SAAS,OAAA1P,EAAqB,MAArBorB,OAAqB,EAAAA,EAAAS,oBAArB7rB,EAAkCpE,QAASwvB,EAAoBS,YAAc,uCACtF9lB,KAAM,SACN0D,6BAAOjB,EAAQ,CAAAjH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,WAC/C,GACN,KACP,EAGE4lB,EAAYf,EAAYgB,GAAW,MAEnCC,EACDjB,GAAa,CACVkB,qBAAsB,gBAE1B,KAMJ,OAJA9wB,EAAME,WAAU,KACZ4vB,GAAwBA,EAAqB,UAAS,GACvD,MAGEpqB,kBAAAA,IAAAirB,EAAA,CAAUvsB,UAAW,wBAAwBA,OAAiBysB,EAAoB,iBAAgBjmB,EAC9FnF,eAAAjH,WAAM8D,KAAI,CAACC,EAAW+I,4BACXmf,IAAYloB,OAAiDmoB,kBAAkCC,wBAA4C9hB,GAA9G,uBAAuByC,QAEpE,EE5gBKylB,GAAiB,EAAG3sB,YAAY,GAAI5F,OAAMwsB,MAAOC,EAAgBF,uBAAsBiG,8BAChGhxB,EAAME,WAAU,KACZ8wB,GAA2BA,EAAwB,UAAS,GAC7D,IAIMtrB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAANjH,OAAM,EAAAA,EAAAiC,QACHiF,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAW,2BAA2BA,IACtCqB,SAAAjH,EAAK8D,KAAI,CAACC,EAAW+I,KAClB,MAAMjL,GAAEA,EAAIiU,MAAAA,EAAA2c,UAAOA,EAAWnzB,IAAAA,EAAA8N,MAAKA,GAAUrJ,EAE7C,GAAI0oB,EAAgB,CACV,MAAA8B,EAAa,CAAEvuB,KAAM+D,GAGvB,+BAACvC,EAAM0K,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQlC,EAAe,IAAK8B,+BAA2B9B,EAAgB,IAAG8B,KADjHzhB,EAErB,CAGJ,+BACK,IAAE,CAAA8C,KAAMtQ,EACL2H,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,+BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,6CACXqB,SAAAC,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,qCACXqB,iCAAC,MAAI,CAAA4oB,KAAY,MAAPziB,OAAO,EAAAA,EAAAyiB,MAAO,GAAG1zB,2BAAkC8zB,IAAI,oBAAoBC,QAAQ,eAGrGrpB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,uCACXqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,6CAA8CqB,SAAM6O,IAClE2c,0BAAa,MAAI,CAAA7sB,UAAU,mDAAoDqB,SAAUlC,EAAA0tB,KAAoB,YATvG3lB,EAc3B,MA7BK,QCPhB4lB,GAAW,EAAG9sB,YAAY,GAAI5F,OAAMwsB,MAAOC,EAAgBF,uBAAsBoG,wBAC1FnxB,EAAME,WAAU,KACZixB,GAAqBA,EAAkB,UAAS,GACjD,IAIMzrB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAANjH,OAAM,EAAAA,EAAAiC,QACHiF,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAW,qBAAqBA,IAChCqB,SAAAjH,EAAK8D,KAAI,CAACC,EAAW+I,KAClB,MAAMjL,GAAEA,EAAIiU,MAAAA,EAAA2c,UAAOA,EAAWnzB,IAAAA,EAAA8N,MAAKA,GAAUrJ,EAE7C,GAAI0oB,EAAgB,CACV,MAAA8B,EAAa,CAAEvuB,KAAM+D,GAGvB,+BAACvC,EAAM0K,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQlC,EAAe,IAAK8B,+BAA2B9B,EAAgB,IAAG8B,KADjHzhB,EAErB,CAGJ,+BACK,IAAE,CAAA8C,KAAMtQ,EACL2H,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,yBACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,uCACXqB,SAAAC,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,+BACXqB,iCAAC,MAAI,CAAA4oB,KAAY,MAAPziB,OAAO,EAAAA,EAAAyiB,MAAO,GAAG1zB,2BAAkC8zB,IAAI,oBAAoBC,QAAQ,eAGrGrpB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,iCACXqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,uCAAwCqB,SAAM6O,IAC5D2c,0BAAa,MAAI,CAAA7sB,UAAU,6CAA8CqB,SAAUlC,EAAA0tB,KAAoB,YATjG3lB,EAc3B,MA7BK,QCNhB8lB,GAAW,EAAGhtB,YAAY,GAAI5F,OAAMwsB,MAAOC,EAAgBF,uBAAsBsG,wBAC1FrxB,EAAME,WAAU,KACZmxB,GAAqBA,EAAkB,UAAS,GACjD,IAIM3rB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAANjH,OAAM,EAAAA,EAAAiC,QACHiF,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAW,qBAAqBA,IAChCqB,SAAM,MAANjH,OAAM,EAAAA,EAAA8D,KAAI,CAACC,EAAW+I,KACnB,MAAMjL,GAAEA,EAAIiU,MAAAA,EAAAgd,WAAOA,EAAYxzB,IAAAA,EAAA8N,MAAKA,GAAUrJ,EAE9C,GAAI0oB,EAAgB,CACV,MAAA8B,EAAa,CAAEvuB,KAAM+D,GAGvB,+BAACvC,EAAM0K,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQlC,EAAe,IAAK8B,+BAA2B9B,EAAgB,IAAG8B,KADjHzhB,EAErB,CAIA,SAAAlG,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,yBACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,4BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,+BACXqB,SAAAC,EAAAA,kBAAAA,IAAC,KAAE0I,KAAMtQ,EACL2H,iCAAC,MAAI,CAAA4oB,KAAY,MAAPziB,OAAO,EAAAA,EAAAyiB,MAAO,GAAG1zB,2BAAkC8zB,IAAI,oBAAoBC,QAAQ,eAGrGrpB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,8BACXqB,SAAA,GAACC,kBAAAA,IAAA,IAAA,CAAE0I,KAAMtQ,EACL2H,SAAAC,EAAAN,kBAAAM,IAAC,OAAItB,UAAU,+BAAgCqB,eAElD6rB,0BAAc,MAAI,CAAAltB,UAAU,iCAAkCqB,SAAY1C,EAAAuuB,KAAqB,WAGvG5rB,wBAAA,MAAA,CAAItB,UAAU,mCACXqB,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAE0I,KAAMtQ,EACL2H,SAACJ,EAAAA,kBAAAA,KAAAuI,GAAA,CAAOhD,KAAK,SAASkD,UAAU,QAC5BrI,SAAA,CAAAC,wBAACiI,IAASvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cACvCrF,kBAAAA,IAAC,QAAKD,SAAS,uBAlBc6F,EAwBrD,MAvCK,QCPhBimB,GAAc,EAAGntB,YAAY,GAAI5F,OAAMwsB,MAAOC,EAAgBF,uBAAsByG,2BAC7FxxB,EAAME,WAAU,KACZsxB,GAAwBA,EAAqB,UAAS,GACvD,IAIM9rB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAANjH,OAAM,EAAAA,EAAAiC,QACHiF,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAW,wBAAwBA,IACnCqB,SAAM,MAANjH,OAAM,EAAAA,EAAA8D,KAAI,CAACC,EAAW+I,KACnB,MAAMjL,GAAEA,EAAIiU,MAAAA,EAAAgd,WAAOA,eAAYG,EAAc3zB,IAAAA,EAAA8N,MAAKA,GAAUrJ,EAE5D,GAAI0oB,EAAgB,CACV,MAAA8B,EAAa,CAAEvuB,KAAM+D,GAGvB,+BAACvC,EAAM0K,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQlC,EAAe,IAAK8B,+BAA2B9B,EAAgB,IAAG8B,KADjHzhB,EAErB,CAIA,SAAAlG,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,4BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,+BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,kCACXqB,SAAAC,EAAAA,kBAAAA,IAAC,KAAE0I,KAAMtQ,EACL2H,iCAAC,MAAI,CAAA4oB,KAAY,MAAPziB,OAAO,EAAAA,EAAAyiB,MAAO,GAAG1zB,2BAAkC8zB,IAAI,oBAAoBC,QAAQ,eAGrGrpB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,iCACXqB,SAAA,GAACC,kBAAAA,IAAA,IAAA,CAAE0I,KAAMtQ,EACL2H,SAAAC,EAAAN,kBAAAM,IAAC,OAAItB,UAAU,kCAAmCqB,eAErD6rB,0BAAc,MAAI,CAAAltB,UAAU,oCAAqCqB,SAAY1C,EAAAuuB,KAAqB,KAClGG,0BAAgB,MAAI,CAAArtB,UAAU,iCAAkCqB,SAAUlC,EAAAkuB,KAAuB,WAGzG/rB,wBAAA,MAAA,CAAItB,UAAU,sCACXqB,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAE0I,KAAMtQ,EACL2H,SAACJ,EAAAA,kBAAAA,KAAAuI,GAAA,CAAOhD,KAAK,SAASkD,UAAU,QAC5BrI,SAAA,CAAAC,wBAACiI,IAASvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cACvCrF,kBAAAA,IAAC,QAAKD,SAAY,0BAnBc6F,EAyBxD,MAxCK,QCPhB1B,GAAU,EAAGnE,WAAU1B,UAASO,aAAY,EAAMC,cAAc,GAAIC,aAAa,EAAGC,cAAc,EAAGoF,eAAc,MAC5H,MAAOnL,EAAMgG,GAAW1E,EAAM2E,UAAS,GAYnC,OAVJ3E,EAAME,WAAU,WACZ,IAAI0E,EAAe,OAAAC,EAAA,MAAAC,cAAA,EAAAA,SAAUC,cAAc,gCAA2B,EAAAF,EAAAG,cAElEJ,UAAgBL,WAAa9D,UAChBmE,EAAAwc,UAAUC,IAAI,gCAC3Bzc,EAAaO,UAAYZ,EAC7B,GACD,CAAC7F,4BAGCgzB,EAAAA,0CAAA,CAAwBC,cAAe,EACpClsB,SAAAJ,EAAAD,kBAAAC,KAACusB,4CAAA,CAAoBpsB,aAAcd,EAC/Be,SAAA,GAACC,kBAAAA,IAAAmsB,EAAAA,0CAAA,CAAuBhsB,SAAO,EAAEJ,WAAemB,EAAAxB,kBAAAM,IAAA,OAAA,CAAMD,aAAmBA,MACzEC,kBAAAA,IAACosB,EAAeC,0CAAf,CACGtsB,SAAAJ,yBAAC2sB,EAAAA,0CAAA,CAAuB5tB,UAAU,0BAA0BI,aAAwBC,cAC/EgB,SAAA,CAAA1B,EAEAO,EAAasC,EAAAxB,kBAAAM,IAAAusB,4CAAA,CAAqB7tB,UAAU,0BAA6B,cAI1F,EC5BK8tB,GAAa,EAAGzsB,WAAUyM,aAAY,EAAO9N,YAAY,+BAE7D+tB,EAAkBC,0CAAlB,CAAuBhuB,UAAW,4BAA4BA,IAC3DqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA2sB,2CAAA,CAA2BjuB,UAAW,iCAAgC8N,EAAY,uCAAyC,IAAOzM,cACjIyM,GAEM7M,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAA,kBAAAA,IAAC4sB,EAAAA,0CAAA,CAA4BluB,UAAU,gCAAgCmuB,YAAY,WAC/E9sB,SAAAC,EAAAA,kBAAAA,IAAC8sB,EAAAA,0CAAA,CAAwBpuB,UAAU,gCAEtCsB,EAAAA,kBAAAA,IAAA4sB,EAAAA,0CAAA,CAA4BluB,UAAU,gCAAgCmuB,YAAY,aAC/E9sB,SAAAC,EAAAA,kBAAAA,IAAC8sB,EAAAA,0CAAA,CAAwBpuB,UAAU,sCCT9CquB,GAAe,EAAGrsB,QAAOC,SAAQyU,UAAS/P,QAAO9F,QAAQ,CAAI,EAAAb,YAAY,MAAO+J,oBACzF,MAAOsE,EAAcC,GAAmB1S,EAAM2E,SAAc,CAAA,GAiBxD,OALJ3E,EAAME,WAAU,KAVOtC,OAAO80B,IACtB,IAAAp0B,EAEOA,EAAAuE,KAAKgS,MAAM6d,GAEjBp0B,GAELoU,EAAgBpU,EAAQ,EAIxByW,CAAe/W,aAAa4V,QAAQzY,IAAsC,KAAI,GAC/E,IAGCuK,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CACKjF,UAAc,OAAAZ,EAAA,MAAA4N,OAAA,EAAAA,EAAAkgB,eAAU,EAAA9tB,EAAA+tB,UACrBxtB,kBAAAM,IAAC,MAAA,CACGtB,UAAW,yDAAyDA,IACpEa,MAAO,CAECmB,QACAC,aAEA,OAAA4R,EAAA,OAAc/E,EAAA,MAAAT,OAAA,EAAAA,EAAAkgB,eAAU,EAAAzf,EAAA2f,iBAAQC,aAAc,CAC9CC,WAAY,OAAAra,EAAA,OAAAD,EAAA,MAAAhG,OAAA,EAAAA,EAAckgB,eAAd,EAAAla,EAAwBoa,aAAQ,EAAAna,EAAAoa,eAE7C7tB,GAEP,wBAAuB6V,EACvB,sBAAqB/P,KACjBoD,IAER,MACR,ECvCK0M,GAAkB,CAC3BrK,KAAMiiB,GACNO,WCH8B,EAAGhY,QAAOpQ,OAAMqoB,kBAAkB,OAChE,IAAIC,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,KACPxqB,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,4CACXqB,SAAAC,EAAAN,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAiB,SAATuE,IAA8B,SAATA,GAA4B,eAATA,IAA4C,MAAjBqoB,OAAiB,EAAAA,EAAAxyB,SAAoBwyB,EAAgBE,GAA1B,QACtGpoB,MAAM,UACN+P,QAAQ,QALgDqY,IAYpE,SAAA/tB,kBAAAM,IAAC0tB,EAAAC,kBAAA,CACGC,wBAAkC,SAAT1oB,EAAkB,CAAE,IAAK,GAAM,CAAE,IAAK,EAAG,IAAK,EAAG,KAAM,GAChFxG,UAAU,8GAEVqB,SAACmB,EAAAxB,kBAAAM,IAAA6tB,UAAA,CAAQC,OAAO,OAAQ/tB,SAAWytB,KAAA,EDjB3CvD,YEN+B,EAAG3U,QAAOpQ,WACzC,IAAIsoB,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,OACP7qB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,4BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,+BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,2EACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,iCACXqB,SAAAC,EAAAA,kBAAAA,IAAC+sB,GAAa,CAAArsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,SAAS+P,QAAQ,WAEpE1V,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACHwuB,uBAAwB,EACxBC,wBAAyB,UAIrCruB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,iCACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,kCACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA+sB,GAAA,CAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OACjEpV,EAAAA,kBAAAA,IAAC+sB,IAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,UAEpEpV,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,mCACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAEtEpV,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,iCACXqB,SAAAC,EAAAN,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH0uB,aAAc,kBAMjCjuB,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,sCACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,WAvCzBqY,mCA8CnD,MAAI,CAAA/uB,UAAU,0FAA0F,iBAAgBwG,EACpHnF,SACLytB,GAAA,EF9CJnC,eGRkC,EAAG/V,YACrC,IAAIkY,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,6BACN,MAAI,CAAA9rB,UAAU,+BACXqB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,uCACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,6CACXqB,SAAAC,EAAAA,kBAAAA,IAAC+sB,GAAa,CAAArsB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS+P,QAAQ,SAEpEpV,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,mDACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS+P,QAAQ,aAN1BqY,IAanDztB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,gGAAiGqB,SAAWytB,GAAA,EHTlIhC,SIT4B,EAAGlW,YAC/B,IAAIkY,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,6BACN,MAAI,CAAA9rB,UAAU,yBACXqB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,iCACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,uCACXqB,SAAAC,EAAAA,kBAAAA,IAAC+sB,GAAa,CAAArsB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS+P,QAAQ,SAEpEpV,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,6CACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS+P,QAAQ,aANhCqY,IAa7CztB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,oFAAqFqB,SAAWytB,GAAA,EJRtH9B,SKV4B,EAAGpW,YAC/B,IAAIkY,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,OACP7qB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,yBACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,4BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,qEACXqB,SAAAC,EAAAN,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACHwuB,uBAAwB,EACxBC,wBAAyB,SAIrCruB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,8BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA+sB,GAAA,CAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SACjE1V,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH2uB,UAAW,OACXD,aAAc,UAGtBjuB,EAAAA,kBAAAA,IAAC+sB,IAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,aAGxEpV,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,mCACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,WA9B5BqY,IAoC7CztB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,oFAAqFqB,SAAWytB,GAAA,EL9BtH3B,YMX+B,EAAGvW,YAClC,IAAIkY,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAInY,EAAOmY,IACZD,EAAAhD,OACP7qB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,4BACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,+BACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,2EACXqB,SAAAC,EAAAN,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACHwuB,uBAAwB,EACxBC,wBAAyB,SAIrCruB,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,iCACXqB,SAAA,CAACC,EAAAA,kBAAAA,IAAA+sB,GAAA,CAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SACjE1V,kBAAAM,IAAC+sB,GAAA,CACGrsB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH2uB,UAAW,OACXD,aAAc,UAGtBjuB,EAAAA,kBAAAA,IAAC+sB,IAAarsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,aAGxEpV,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,sCACXqB,iCAACgtB,GAAa,CAAArsB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,WA9BzBqY,IAoChDztB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,0FAA2FqB,SAAWytB,GAAA,GC7CnH3R,GAAc,MAEnBnc,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,uBACXqB,SAAA,GAACC,kBAAAA,IAAA,MAAA,CAAItB,UAAU,+BACfsB,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,+BACfsB,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,gCCMdwsB,GAAY/nB,IACrB,MAAMpD,SAAEA,EAAUrB,UAAAA,EAAY,GAAI,iBAAkByvB,EAAA/C,qBAAcA,GAAyBjoB,GACpFirB,EAAQC,GAAa/zB,EAAM2E,UAAkB,IAE9C5G,QACFA,EAAU,CACNi2B,eAAgB,OAChB7vB,MAAO,QACP8vB,UAAU,EACV5kB,SAAU,KAEdxG,GAEGqrB,EAAaC,GAAeC,mBAAiBr2B,IAC7Cs2B,EAAiBC,GAAsBt0B,EAAM2E,UAAS,IACtD4vB,EAAiBC,GAAsBx0B,EAAM2E,UAAS,IACtD8vB,EAAeC,GAAoB10B,EAAM2E,SAAS,IAClDgwB,EAAaC,GAAkB50B,EAAM2E,SAAmB,IAEzDkwB,EAAa70B,EAAM80B,aAAY,IAAMX,GAAeA,EAAYU,cAAc,CAACV,IAC/EY,EAAa/0B,EAAM80B,aAAY,IAAMX,GAAeA,EAAYY,cAAc,CAACZ,IAC/E/yB,EAAWpB,EAAM80B,aAAaxpB,GAAkB6oB,GAAeA,EAAY/yB,SAASkK,IAAQ,CAAC6oB,IAE7Fa,EAAWh1B,EAAM80B,aAAaX,IACfA,EAAAA,EAAYc,sBACVX,GAACH,EAAYe,iBACbV,GAACL,EAAYgB,gBAAe,GAChD,IAEGC,EAASp1B,EAAM80B,aAAaX,IACfA,EAAAA,EAAYkB,iBAAgB,GAC5C,IAGHr1B,EAAME,WAAU,KACPi0B,IAELiB,EAAOjB,GACPa,EAASb,GAEGA,EAAAmB,GAAG,SAAUF,GACbjB,EAAAmB,GAAG,SAAUN,GACbb,EAAAmB,GAAG,SAAUN,GAAQ,GAClC,CAACb,EAAaa,IAGjBh1B,EAAME,WAAU,KACPi0B,GAEmCJ,GAApCM,IAAmBE,EACJ,GACpB,CAACJ,EAAaE,EAAiBE,IAGlCv0B,EAAME,WAAU,KACPi0B,GAELA,EAAYoB,OAAOx3B,EAAO,GAC3B,CAACo2B,EAAan0B,EAAM+a,SAASC,MAAMvV,KAGtCzF,EAAME,WAAU,KACPi0B,IAEAL,EACa,MAAAK,GAAAA,EAAAqB,iBAAiBC,YAAY/V,KAAKyU,GAD1B,MAAAA,GAAAA,EAAAqB,iBAAiBC,YAAYC,UACH,GACrD,CAAC5B,IAEJ,IAAI6B,EAAqG,CAAA,EAGzG,GACS,gBADD7E,EAEqB6E,EAAA,CACjBvxB,UAAW,kDACX,iBAAkByvB,QAID8B,EAAA,CACjBvxB,UAAW,8BAMlBiB,OAAAA,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAW,oBAAoBA,IAChCqB,SAAA,GAAAL,kBAAAM,IAACkwB,GAAA,CACGC,MAAO,CACHxB,kBACAE,mBAEJzjB,SAAS,OACTjG,SAAUwpB,EACV9rB,QAASssB,EACTzwB,UAAU,iCAEbsB,wBAAA,MAAA,CAAItB,UAAW,8BAA8B0vB,EAAU,YAAgB,IAAM/zB,IAAKm0B,EAC/EzuB,SAACC,EAAAA,kBAAAA,IAAA,MAAA,IAAQiwB,EAAqBlwB,iBAElCL,kBAAAM,IAACkwB,GAAA,CACGC,MAAO,CACHxB,kBACAE,mBAEJzjB,SAAS,QACTjG,SAAU0pB,EACVhsB,QAASwsB,EACT3wB,UAAU,iCAEdsB,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,wBACVqB,SAAAkvB,EAAYryB,KAAI,CAACwzB,EAAGxqB,IAChB5F,EAAAN,kBAAAM,IAAAqwB,GAAA,CAAsBxtB,QAAS,IAAMnH,EAASkK,GAAQlH,UAAW,uBAAuB4xB,OAAO1qB,IAAUmpB,EAAgB,kCAAoC,KAA9InpB,SAG5B,EAIKsqB,GAA6B/sB,IACtC,MAAMpD,SAAEA,EAAUowB,MAAAA,EAAAzxB,UAAOA,WAAW0M,KAAamlB,GAAcptB,GACzDwrB,gBAAEA,EAAiBE,gBAAAA,GAAoBsB,EAE7C,GAAIxB,GAAmBE,EAAwB,OAAA,KAE/C,MAAM2B,EACFxwB,EAAAA,kBAAAA,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,+XACFF,KAAK,cAKX4vB,EACFzwB,EAAAA,kBAAAA,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,iYACFF,KAAK,cAKX6vB,EAAO,IAAoB,SAAbtlB,EAAsBolB,EAAWC,EAGhDzwB,OAAAA,EAAAA,kBAAAA,IAAA,SAAA,CAAOtB,UAAW,2BAA2BA,IAAawG,KAAK,YAAaqrB,EACzExwB,SAACC,EAAAA,kBAAAA,IAAA0wB,EAAA,CAAA,IACL,EAIKL,GAA4BltB,IACrC,MAAMpD,SAAEA,KAAawwB,GAAcptB,iCAG9B,SAAO,CAAA+B,KAAK,YAAaqrB,EACrBxwB,YACL,ECvKK4wB,GCFkB,EAC3BC,eAAgBC,EAChB/zB,OACAoI,OACAO,QACA4f,uBACAG,qBACAC,wBACAqL,uBAWA,GAAID,EAAgB,CAChB,MAAME,EAAa,CAAEj0B,OAAMoI,OAAMO,QAAO+f,qBAAoBC,yBAErD,+BAACnrB,EAAM0K,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQoJ,EAAe,IAAKE,OAA2B/wB,EAAAA,kBAAAA,IAAA6wB,EAAA,IAAmBE,KAAe,CAExK,SAEQrxB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,8DAA+DqB,SAAKjD,KAC3E,MAAP2I,OAAO,EAAAA,EAAA1K,gCACH,KAAG,CAAA2D,UAAU,6DACTqB,SAAM0F,EAAA7I,KAAI,CAACo0B,EAAUprB,KACZ,MAAAgJ,MAAEA,EAAOxW,IAAAA,GAAQ44B,EAGnBhxB,OAAAA,EAAAA,kBAAAA,IAAC,KACG,CAAAD,SAAAC,EAAAN,kBAAAM,IAAC,IAAE,CAAA0I,KAAMtQ,EAAKsG,UAAU,kEACnBqB,SACL6O,KAHKhJ,EAIT,8BAKX,KAAG,CAAAlH,UAAU,6DACVqB,iCAAC,KAAA,CAAGrB,UAAU,sEAAuEqB,UAAkB,aAAA,EAAA+wB,EAAAG,kBAAmB,MAAM,MAAAn0B,OAAA,EAAAA,EAAMoB,iCAK1J,ED9CSyyB,GECyB,EAClCC,eAAgBC,EAChBK,WACA7L,wBAAuB,EACvBG,qBACAC,wBACA0L,kBAAkB,GAClBpT,kBAYA,GAAI8S,EAAgB,CAChB,MAAMtlB,+BAAEA,GAAmCjR,EAAMmR,WAA2BC,EAAaA,gBAEjFtN,QAASgzB,IAAqC,OAAAjyB,mBAAgC0R,oBAAhC,EAAA1R,EAA+CkyB,eAAgB,GAM/GN,EAAa,CAAEG,WAAU1L,qBAAoBC,wBAAuB6L,sBAJ3Cl3B,IACvBg3B,GAAkCA,EAAiCh3B,EAAK,GAKzE,+BAACE,EAAM0K,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQoJ,EAAe,IAAKE,OAA2B/wB,EAAAA,kBAAAA,IAAA6wB,EAAA,IAAmBE,KAAe,CACrK,CACH,MAAMQ,GAAe,MAAAxT,OAAA,EAAAA,EAAOtH,SAAUsH,EAAMtH,QAAUpf,EAEtD,SAEQqI,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,8DAA8DqB,SAAW,wCACvF,MAAGrB,UAAU,6DACTqB,SAAU,aAAA,EAAAmxB,EAAAt0B,KAAI,CAAC6Z,EAAiB7Q,4BAExB,KACG,CAAA7F,WAAAL,kBAAAC,KAAC,IAAA,CACG+I,KAAM,GAAGyoB,GAAmB/5B,KAA6Bm6B,KAAgB9a,IACzE/X,UAAU,6IAEVqB,SAAA,CAAAC,wBAAC8H,IAAWpH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAAY,IAAEoR,MALtD7Q,SAajC,GFtDS+qB,GGAuB,EAChCvJ,UAAWoK,EACX/a,UACA4O,wBAAuB,EACvBG,qBACAC,wBACA0L,kBAAkB,GAClBpT,QACA+S,6BAaA,GAAIU,EAAW,CACX,MAAMjmB,+BAAEA,GAAmCjR,EAAMmR,WAA2BC,EAAaA,gBAEjFtN,QAASgzB,IAAqC,OAAAjyB,mBAAgC0R,oBAAhC,EAAA1R,EAA+CkyB,eAAgB,GAM/GI,EAAiB,CAAEhb,UAAS+O,qBAAoBC,wBAAuB6L,sBAJ9Cl3B,IACvBg3B,GAAkCA,EAAiCh3B,EAAK,GAKzE,+BAACE,EAAM0K,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAIwnB,wBAAyB,CAAEC,OAAQ+J,EAAU,IAAKC,OAA+BzxB,EAAAA,kBAAAA,IAAAwxB,EAAA,IAAcC,KAAmB,CACnK,CACH,MAAMF,GAAe,MAAAxT,OAAA,EAAAA,EAAOtH,SAAUsH,EAAMtH,QAAUpf,EAGjD2I,OAAAA,EAAAN,kBAAAM,IAAA,IAAA,CAAE0I,KAAM,GAAGyoB,GAAmB/5B,KAA6Bm6B,KAAgB9a,IAAW/X,UAAU,iDAC5FqB,UAAkB,MAAlB+wB,OAAkB,EAAAA,EAAAY,mBAAoB,oBAGnD,GCkFEC,GAAiB,EAAG1zB,OAAM4E,UAAS+uB,mBAAkBttB,cAAaC,YAAWC,cAAaE,SAAUC,EAAcktB,uBAAsBppB,MAC1I,MAAOpO,EAAKy3B,GC9HT,SAAiCz5B,GAC9B,MAAA05B,UAAEA,EAAY,EAAGpH,KAAAA,EAAO,gBAAMqH,EAAa,OAAU35B,GAAW,IAC/Dy5B,EAAOG,GAAY33B,EAAM2E,SAAc,MAExCizB,EAAwB53B,EAAMC,OAAO,MAwBpC,MAAA,CAtBWD,EAAM80B,aACnB3U,IAMO,GALAyX,EAAiBz3B,UACjBy3B,EAAiBz3B,QAAQ03B,aACzBD,EAAiBz3B,QAAU,OAG3B,MAAAggB,OAAA,EAAAA,EAAMC,YAAa0X,KAAKC,aAAc,CACtC,MAAMC,EAAW,IAAIC,sBACjB,EAAET,MACEG,EAASH,EAAK,GAElB,CAAEC,YAAWpH,KAAAA,EAAMqH,eAGvBM,EAASzX,QAAQJ,GACjByX,EAAiBz3B,QAAU63B,CAC/B,IAEJ,CAACP,EAAWpH,EAAMqH,IAGHF,EACvB,CDiGyBU,CAAwB,CACzCT,UAAW,EACXpH,KAAM,KACNqH,WAAY,SAGTttB,EAAUI,GAAexK,EAAM2E,SAAc,MAyBhD,OAPJ3E,EAAME,WAAU,KAhBO,MACb,MAAAuK,IACApF,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,QACQuE,EAAY,OAAKC,EAAU,YAAUC,EAAY,aAI3DG,IAGAA,GADAA,GADAA,EAAeA,EAAaM,WAAW3N,EAAqCuD,OAAOyJ,KACvDW,WAAW3N,EAAmCuD,OAAO0J,KACrDU,WAAW3N,EAAqCuD,OAAO2J,KAG3EM,EAAAH,GAA8BI,EAAe,KAMrD6sB,GAAoBC,IAA4B,MAAPC,OAAO,EAAAA,EAAAW,kBAA0B,MAAA5vB,GAAAA,IAAA,GAC/E,CAACivB,MAGA9xB,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,qBAAqBrE,MAC/B0F,UAAO,aAAA,EAAA+xB,EAAAW,mBACJ/yB,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,mCACXqB,SAAA,GAAAC,kBAAAA,IAAC,QAAMD,SAAS2E,4BACftD,EAAS,CAAAhH,MAAOkK,EAAajD,MAAOkD,EAAW/C,MAAO,IACtDqwB,GACG3wB,EAAAxB,kBAAAM,IAACkI,GAAO,CAAAhD,KAAK,SAASwtB,KAAK,SAAStqB,UAAU,QAAQvF,aAAsB4F,EACvE1I,SACL9B,QAIhB,EAIK00B,GAAsBxvB,wDACzB,MAAAyvB,WACFA,EAAa,UAAAlyB,MACbA,EAAQvJ,EAAA4mB,MACRA,EAAA7iB,OACAA,EAAA6E,SACAA,EAAAoqB,iBACAA,EAAAlZ,mBACAA,EAAAC,sBACAA,EAAAkZ,qBACAA,EAAAkB,wBACAA,EAAAG,kBACAA,EAAAE,kBACAA,EAAAG,qBACAA,EACAhzB,KAAMqS,EAAAmT,eACNA,GACAnb,EACEouB,GAAe,MAAAxT,OAAA,EAAAA,EAAOtH,SAAUsH,EAAMtH,QAAUpf,GAChDw7B,aAAEA,IAAiB33B,GAAU,GAE7B43B,GAAmC,oBAAb1zB,SAA2B,IAAIkU,gBAAgB,OAAAnU,EAAU,MAAAC,cAAA,EAAAA,SAAA6P,eAAU,EAAA9P,EAAAklB,QAAU,MAClG0O,IAAYz4B,EAAM2E,SAAiC,oBAAjB3G,aAA+B6E,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAA6C,MAAQ,CAAA,IACtJ6W,GAAgBC,IAAqBjS,EAAM2E,UAAUkM,IACrDqB,GAAWC,IAAgBnS,EAAM2E,UAAUkM,IAC3CsL,GAASD,IAAclc,EAAM2E,SAAS,MAAA6zB,QAAA,EAAAA,GAAcE,IAAIzB,KACxD0B,GAAmBC,IAAwB54B,EAAM2E,SAAiC,OAClFk0B,GAAqBC,IAA0B94B,EAAM2E,YACrDo0B,GAAqBC,IAA0Bh5B,EAAM2E,YACrDs0B,GAAiBC,IAAsBl5B,EAAM2E,iCAAUw0B,IAAc,KACrEC,GAAkBC,IAAuBr5B,EAAM2E,UAAUkM,IACzDyoB,GAAcC,IAAmBv5B,EAAM2E,UAAS,OAAAuO,EAAA,MAAA8Q,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAAtmB,EAA+BumB,gBAAiB,KAChGC,GAAgBC,IAAqB35B,EAAM2E,UAAS,OAAAsT,EAAA,MAAA+L,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAAvhB,EAA+B2hB,UAAW,KAC9FC,GAAaC,IAAkB95B,EAAM2E,SAAgB,KACrDo1B,GAAQC,IAAah6B,EAAM2E,SAAgB,KAC3Cs1B,GAAcC,IAAmBl6B,EAAM2E,UAAS,OAAA8T,EAAgB,MAAAuL,OAAA,EAAAA,EAAAwV,oBAAe,EAAA/gB,EAAA0hB,gBAAiB,KAChGC,GAAYC,IAAiBr6B,EAAM2E,UAAS,OAAA+T,EAAA,MAAAsL,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAA9gB,EAA+B4hB,cAAe,KAC1FC,GAAiBC,IAAsBx6B,EAAM2E,UAAc,OAAA2Z,EAAA,MAAA0F,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAAlb,EAA+BpZ,UAAW,CAAA,IACrGu1B,GAAeC,IAAoB16B,EAAM2E,UAAgB,OAAA4Z,EAAA,MAAAyF,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAAjb,EAA+BsU,SAAU,KAClG8H,GAAaC,IAAkB56B,EAAM2E,UAAS,OAAA+Z,EAAgB,MAAAsF,OAAA,EAAAA,EAAAwV,oBAAe,EAAA9a,EAAA2I,eAAgB,KAC7FwT,GAAcC,IAAmB96B,EAAM2E,SAAc/H,EAAoB,KACzEm+B,GAAgBC,IAAqBh7B,EAAM2E,SAAS,OAAAs2B,EAAA,MAAAjX,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAAyB,EAA+BC,oBACnF1E,GAAkB2E,IAAuBn7B,EAAM2E,UAAS,OAAAy2B,EAAA,MAAApX,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAA4B,EAA+BjoB,YAAa,CAAA,IACpGkoB,GAAiCC,IAAsCt7B,EAAM2E,UAAS,OAAA42B,EAAA,MAAAvX,OAAA,EAAAA,EAAgBwV,oBAAhB,EAAA+B,EAA+BC,4BAA6B,CAAA,IAClJC,GAAqBC,IAA0B17B,EAAM2E,UAAS,IAC9Dg3B,GAAmBC,IAAwB57B,EAAM2E,SAAS,CAAA,IAC1Dk3B,GAAwBC,IAA6B97B,EAAM2E,UAAS,IACpEo3B,GAAqBC,IAA0Bh8B,EAAM2E,UAAS,IAC9Ds3B,GAAoBC,IAAyBl8B,EAAM2E,SAAc,CAAA,IACjEqe,GAAqBmZ,IAA0Bn8B,EAAM2E,UAAc,MAAAqf,OAAA,EAAAA,EAAgBoY,UAAW,CAAA,GAGrG,IAAIC,GAA6B,KAC7BC,GAAgC,KAChCC,GAA0B,KAC1BC,GAA0B,KAC1BC,GAA6B,KACjCz8B,EAAM+a,SAASzY,IAAImD,GAAWwV,IAC1B,GAAIjb,EAAM08B,eAAezhB,IAAUva,EAAWua,EAAMrQ,MAAO,CACjD,MAAA+xB,YAAEA,iBAAaC,EAAgBC,SAAAA,EAAAC,SAAUA,cAAUC,IAA4B,MAAP9hB,OAAO,EAAAA,EAAApS,QAAS,GAE1F8zB,GAAej8B,EAAWi8B,KAAsCN,GAAAM,GAChEC,GAAkBl8B,EAAWk8B,KAA4CN,GAAAM,GACzEC,GAAYn8B,EAAWm8B,KAAgCN,GAAAM,GACvDC,GAAYp8B,EAAWo8B,KAAgCN,GAAAM,GACvDC,GAAer8B,EAAWq8B,KAAsCN,GAAAM,EACxE,KAGE,MAAA/rB,YAAEA,eAAawF,GAAavF,+BAAAA,IAAmCjR,EAAMmR,WAA2BC,EAAAA,gBAE9FmF,cAAeymB,IAA6BhsB,IAAe,CAAA,GAC3DlR,MAAOm9B,GAAgCn5B,QAASgzB,KAAqC,OAAAoG,EAAgC,MAAAjsB,QAAA,EAAAA,GAAAsF,oBAAe,EAAA2mB,EAAAnG,eAAgB,GAEtJoG,GAA2Bn9B,EAAMC,OAAO,MAExCilB,GAAqBrlB,EAAY,CAAEsc,aAWnCihB,GAAmBx/B,MAAOY,UAC5B,MAAMo7B,QAAEA,EAASO,cAAAA,EAAAkD,KAAeA,cAAM/C,EAAaY,kBAAAA,EAAAh2B,QAAmBA,GAAY1G,EAElF,IACIF,EACAsE,EAAO,CACP06B,SAHyB,mBAAfhF,EAAkC+E,EAAKh+B,QAAO,EAAGiM,WAAiB,MAAAA,OAAA,EAAAA,EAAO/L,SAAS46B,KAAkBkD,GAG7F/6B,KAAKi7B,IACZ,MAAAjyB,MAAEA,GAAUiyB,EAElB,IAAIC,GAAc,EACdC,EAAaD,EAgBX,GAfS,MAAT5D,OAAS,EAAAA,EAAAt3B,KAAKjD,IACJ,MAAA3B,YAAEA,EAAayN,MAAAA,GAAU9L,EAEzBq+B,EAAW,MAAAvyB,OAAA,EAAAA,EAAO7I,KAAI,EAAGxC,WAAU69B,KAA6C,UAAZ,MAAXA,OAAW,EAAAA,EAAAz4B,SAAqBzH,EAAkCqC,GAASA,IAE1I,OAAIy4B,KAAgB,MAAA76B,OAAA,EAAAA,EAAa6B,SAASstB,OAAO0L,QAIzC,MAAA76B,OAAA,EAAAA,EAAa6B,SAAS,SAHZi+B,GAAA,EACPE,QAEH,CAIR,IAGNE,EAAiBtyB,EAAM/L,SAAS46B,GAChC0D,EAAqBD,GAAkBH,EAAUh9B,OACjDq9B,EAAmB,GAQhB,OANU,MAAbxD,OAAa,EAAAA,EAAA75B,SAAQq9B,EAAiB5N,KAAK,iBAAiBrtB,KAAKC,UAAUw3B,MAC1EY,GAAmB4C,EAAiB5N,KAAK,qCAC1CqI,IAA+BuF,EAAA5N,KAAK,uBAAuBqI,OAE3DsF,GAA8B7D,GAAAyD,EAAU,IAErC,CACHM,SAAUzyB,EACV0yB,EAAG7hB,IAAW,GACd8hB,YAAa,EACblE,OAAQ8D,EAAqBJ,EAAU,GAAK,GAC5Cp+B,OAAQu+B,EAAiBE,EAAiBI,KAAK,SAAW,GAAA,KAUtE,GALIrtB,GAAa4qB,IACbn9B,EAAWuS,EAAUgD,OACrB6nB,IAAuB,IACTp9B,QAAM2rB,GAAYrnB,IAE/BtE,EAAU,OAET,MAAA6/B,QAAEA,GAAY7/B,EAEpB2T,IAAkB,GAClBonB,IAAoB,GACpBlnB,IAAa,GAEb,MAAMisB,WAAEA,EAAAC,UAAYA,EAAWC,kBAAAA,IAA+B,MAATH,OAAS,EAAAA,EAAAI,MAAK,EAAGR,cAAoBA,EAASx+B,SAAS46B,OAAmB,CAAA,EAE/H+B,GACIoC,EACMv8B,OAAOy8B,YACHz8B,OAAOusB,QAAQgQ,GAAmBh8B,KAAKm8B,IAC/B,IAAA3+B,EAAQ2+B,EAAM,GACdtzB,EAAa,GAmBV,OAhBKA,EADE,gCAAVrL,EACQ,CACJ,CACI0C,KAAM,WACN1C,MAAO,QAIPiC,OAAOC,KAAKs8B,EAAkBx+B,IAAQwC,KAAKC,IACxC,CACHC,KAAMD,EACNzC,MAAOyC,EACPwE,MAAOu3B,EAAkBx+B,GAAOyC,IAAS,MAK9C,CAACzC,EAAOqL,EAAK,KAG5B,CAAC,GAEXywB,GAAqBwC,GACrBtC,IAA0B,OAAAj3B,EAAS,MAATK,OAAS,EAAAA,EAAA7F,eAATwF,EAAiB65B,sBAAuBL,GAAa,GAC/EvE,GACI,MAAAuD,OAAA,EAAAA,EAAM/6B,KAAKi7B,IACD,MAAAjyB,MAAEA,GAAUiyB,GACVc,UAAAA,IAA4B,MAATF,OAAS,EAAAA,EAAAI,MAAK,EAAGR,cAAoBA,IAAazyB,MAAU,CAAA,EAEhF,MAAA,IACAiyB,EAECx2B,MAAOs3B,EACX,IAEP,EA8ETr+B,EAAME,WAAU,KACZ,IAAK88B,GAA0B,OAE/B,MAAMxE,EAAe,IAAIxf,gBAAgBlU,SAAS6P,SAASoV,QAEhDyO,IAAAA,MAAAA,OAAAA,EAAAA,EAAcE,IAAIzB,KAAiB,IA/E3Br5B,OAAO+gC,UAGtB,IAAArgC,EACAsgC,EACAC,EAKJ,GATAxF,IAAoB,GAMT/6B,EAAAuE,KAAKgS,MAAM8pB,GACtBC,EAAkB/7B,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAAsC,KAEnFmD,EAAU,OAEXsgC,GAAiBzC,GAAuByC,GAE5C,MAAMnF,cAAEA,EAAApS,aAAeA,EAAcuS,QAAAA,EAAAO,cAASA,EAAekD,KAAAA,EAAA/C,YAAMA,EAAap1B,QAAAA,EAAA2tB,OAASA,EAAQqI,kBAAAA,EAAA/nB,UAAmBA,EAAWqoB,0BAAAA,GAA8Bl9B,GAEvJwgC,MAAEA,IAAU,MAAA55B,OAAA,EAAAA,EAAS6kB,SAAU,CAAA,EAErC,IAAIgV,GAAmC,MAAftF,OAAe,EAAAA,EAAAh5B,QACjC83B,GACIkB,EAAcn3B,KAAK08B,IACf,MAAMl/B,MAAEA,KAAUm/B,GAAuBD,EAElC,MAAA,IACAC,EACHn/B,MAAOS,OAAOT,GAAO6K,WAAW3N,EAAsCuD,OAAOg4B,KAAa,IAGlGkB,EAAcp6B,QAAQ2/B,IACZ,MAAAl/B,MAAEA,GAAUk/B,EAElB,IAAKz+B,OAAOT,GAAOP,SAASvC,GAA8C,OAAAgiC,CAAA,IAElF,GAENzF,GAAgBwF,GAChBpF,IAA2B,MAATC,OAAS,EAAAA,EAAAn5B,QAASm5B,EAAU,IAC9CM,GAAgBC,GAChBE,GAAcC,GACdE,GAAmBt1B,GACnBw1B,GAAiB7H,GACjB+H,GACIrC,GACMh4B,OAAO8mB,GAAc1c,WAAW3N,EAAsCuD,OAAOg4B,KAC7Eh4B,OAAO8mB,GAAc9nB,SAASvC,GAC9B,OAAA6H,EAAAk6B,EAAkB,SAAlBl6B,EAAAA,EAAsB/E,MACtBunB,GAEVyT,IAA8B,MAAd98B,kBAAc,EAAAA,aAAA4V,QAAQzY,KAAoC2jC,GAC1E9D,GAAkBE,GAClBC,GAAoBhoB,GACpBmoB,GAAmCE,GAEnBqD,EAAAxB,EAAKkB,MAAK,EAAGjzB,WAAiBA,EAAM/L,SAAS46B,KAEzDp4B,OAAOC,KAAK68B,GAAep+B,SAC3Bm4B,GAAqBiG,EAAcvzB,OACnCwtB,GAAuB+F,EAAcr8B,MACrCw2B,GAAuB6F,EAAcj0B,aAGnCwyB,GAAiB9+B,EAAQ,EAoB/ByW,CAAe/W,aAAa4V,QAAQzY,IAA6C,KAAI,GACtF,CAAC6hC,KAEJh9B,EAAME,WAAU,KACP+8B,KAEDnG,IAAkCA,GAAiC,IAEvE5a,GAAW+gB,IAA8B,GAC1C,CAACA,KAEJj9B,EAAME,WAAU,KACZ,GAAI0O,QAAQsW,KAAgC,MAAfA,QAAe,EAAAA,GAAA/I,WAAYA,IAAU,CACxD,MAAA+iB,EAAyBr8B,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAA6C,IAEtGgkC,EAAkB53B,YAAW,KAC3B23B,GAAwB9B,GAAiB8B,EAAsB,GACpE,KACI,MAAA,IAAM13B,aAAa23B,EAC9B,IACD,CAAChjB,KAGJ,MAAMijB,GACF15B,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,2DACVqB,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAKgJ,KACvB5F,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAOyU,QAAQ,KAAK/P,MAAM,WAAeO,OAK1F+zB,GACa,YAAf/G,IACI5yB,kBAAAA,IAAC,OAAItB,UAAU,yFACVqB,SAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAKgJ,GAClB5F,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAOyU,QAAQ,KAAK/P,MAAM,WAAeO,OAG5F,KAEFg0B,IACF,OAAAC,EAAA,MAAAhF,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAAkgC,EAAyBC,mBAAwD,gBAApC,OAAAC,EAAA,MAAAlF,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAAogC,EAAyBC,UAA4B7D,GAAyBuD,GAAoC,KAE7JO,IACF,OAAAC,EAAiB,MAAArF,QAAA,EAAAA,GAAAl7B,iBAAQmgC,mBAAwD,cAApC,OAAAK,EAAA,MAAAtF,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAwgC,EAAAH,UAA0B7D,KAExFz2B,kBAAAC,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,GAAAL,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACT46B,SAAU,OACVC,WAAY,SACZplB,IAAK,MACLC,eAAgB,gBAChB+Y,aAAc,QAGlBluB,SAAA,CAACC,EAAAA,kBAAAA,IAAAmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,OAC1EpV,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,YAE7E1V,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,UAGrB,CAAC,EAAG,EAAG,GAAGrxB,KAAKgJ,GACZ5F,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KAER7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,QAHbroB,OAOblG,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,WAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,WAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,UAGrB,CAAC,EAAG,EAAG,GAAGrxB,KAAKgJ,GACZ5F,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KAER7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,QAHbroB,OAOblG,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH+6B,SAAU,QACVrM,aAAc,YAGtBvuB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACT46B,SAAU,OACVC,WAAY,SACZplB,IAAK,QAGRlV,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGnD,KAAKgJ,GAC9B1E,EAAAxB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,QAAYxP,UAIjG,KAEF20B,KAEG56B,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,EAAiB,OAAAy6B,qBAAA7gC,aAAA,EAAA6gC,EAAQC,sBAA2D,cAApC,OAAAC,EAAiB,MAAA7F,QAAA,EAAAA,GAAAl7B,iBAAQqgC,QACtEh6B,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,oCACXqB,WAAAL,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,QACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KACR7V,MAAO,CACH0uB,aAAc,YAI1B,6BACH9Y,GAAgB8U,YAAhB,CAA4B3U,MAAO,GAAIpQ,KAAK,aAI/Cy1B,2BACD,MAAA,CAAIj8B,UAAU,0GACXqB,iCAACoV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAI5EwlB,GAA+B56B,EAAAA,kBAAAA,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,KAAK1W,UAAU,oDAEvHm8B,KACFl7B,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,0GACXqB,SAAA,CAAAC,wBAAC,MAAI,CAAAtB,UAAU,+DACXqB,SAAAmB,EAAAxB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,iCAE7E,MAAI,CAAA1W,UAAU,+DACXqB,SAAAmB,EAAAxB,kBAAAM,IAACmV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,YAKhF0lB,KACFn7B,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,6CACVqB,SAAA,EAAA,OAAAg7B,EAAA,MAAAlG,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAohC,EAAAN,sBAA2D,gBAApC,OAAAO,qBAAiBrhC,aAAjB,EAAAqhC,EAAyBhB,QAA0BW,GAAsB,KACzHC,GACAC,MAIHI,2BACD,MAAI,CAAAv8B,UAAU,yFACXqB,SAACJ,EAAAA,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,6CACVqB,SAAA,EAAA,OAAAm7B,EAAA,MAAArG,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAuhC,EAAAT,sBAA2D,gBAApC,OAAAU,qBAAiBxhC,aAAjB,EAAAwhC,EAAyBnB,QAA0BW,GAAsB,KACzHC,GACAlB,GACAmB,QAKPO,GAAiB,CACnBd,SAAU55B,mCAIT,MAAI,CAAAhC,UAAU,0CAA0CrE,IAAKo9B,GAA0Bl4B,MAAO67B,GAC1Fr7B,SAAA,CACGuM,GAAAqtB,GACe,YAAf/G,UAA4BuB,aAAap5B,QACxCiF,wBAAA,MAAA,CAAItB,UAAW,IAAkB,YAAfk0B,IAA4B,MAAAuB,QAAA,EAAAA,GAAap5B,QAAS,oCAAsC,8CACvGgF,SAACC,EAAAN,kBAAAM,IAAA,KAAA,CAAGtB,UAAU,yCACTqB,SAAAo0B,GAAYv3B,KAAKC,IACd,MAAMC,KAAEA,EAAA8I,MAAMA,EAAOV,KAAAA,EAAA7D,MAAMA,GAAUxE,EAErC,IAAI2L,EAAWyqB,KAAsBrtB,EAGjC,SAAAlG,kBAAAC,KAAC,KAAA,CACGkD,QAAUsG,GA7eb,CAACjO,IAC1B,MAAMP,GAAEA,EAAAmC,KAAIA,EAAMoI,KAAAA,GAAShK,EAE3Bg4B,GAAqBv4B,GACrBy4B,GAAuBt2B,GACvBw2B,GAAuBpuB,GACJsuB,GAAA74B,EAAGd,SAAS06B,4BAAiBd,GAAc,CAAA,GAAMvyB,EAAAxB,kBAAAM,IAAAq7B,GAAA,CAAA,GAAiB,EAwerDC,CAAqB,CACjB3gC,GAAIiL,EACJ9I,OACAoI,SAGRxG,UAAW,IAAG8J,EAAW,qDAAuD,IAG/EzI,SAAA,CAAAjD,EACAkD,EAAAN,kBAAAM,IAAA,OAAA,CAAKtB,UAAU,0CAA2CqB,YAAS,MAH/D6F,EAAA,QAUzB+zB,GAGHrtB,KAAkB,MAAAsmB,OAAA,EAAAA,EAAY73B,UAAWoQ,EAEjCxL,yBAAAqF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA,CAAAk7B,GACAj7B,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oCAAqCqB,SAAyB65B,OAC7Ej6B,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,uFACVqB,SAAA,EAAA,OAAAw7B,EAAA,MAAA1G,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAA4hC,EAAAzB,mBAAwD,cAApC,OAAA0B,qBAAiB7hC,aAAjB,EAAA6hC,EAAyBxB,UAA0B7D,GAC5Fn2B,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,yEAA0EqB,cACzF,OACJJ,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,qCACXqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oCAAqCqB,SAA8B+6B,KAEjFP,YAKbjgC,EAAMkb,aAAa+d,GAAiB,CAChCX,aACApmB,aACAiK,WACAwc,qBACAE,uBACAE,uBACAK,oBACAE,gBACAI,kBACAK,UACA4B,qBACAE,0BACAzB,cACAG,mBACAE,iBACAE,eACAE,gBACAE,kBACAvE,oBACA6E,mCACA5X,QACA7iB,SACA4V,eACA6lB,yBACAC,4BACAC,sBACAC,sBACAC,yBACA5M,mBACAlZ,qBACAC,wBACAkZ,uBACAkB,0BACAG,oBACAE,oBACAG,uBACArf,gBACA+J,cACAojB,4BACAF,qCACAO,0BACAM,uBACAO,iCACAH,uBACAC,gCACAC,iCACApD,4BACA3+B,KAAMqS,EACN4nB,YACAsD,uBACAC,0BACAC,sBACAkF,oBAlZarhC,IACzB,MAAM04B,EAAe,IAAIxf,gBAAgBlU,SAAS6P,SAASoV,QAE9CqX,EAAAC,IAAIpK,EAAcn3B,GAE/Boc,GAAWpc,GAEXoB,OAAOogC,QAAQC,UAAU,KAAM,GAAI,GAAGz8B,SAAS6P,SAAS6sB,YAAYhJ,EAAatf,aAAY,EA4YjF8J,2BAGZ,EAIFmW,GAAiBtwB,gEACb,MAAAyvB,WACFA,EAAAnc,QACAA,EAAAwc,kBACAA,EAAAS,iBACAA,EAAAE,aACAA,EAAAI,eACAA,EAAAK,OACAA,EAAA4B,kBACAA,GAAAE,uBACAA,GAAAzB,WACAA,GAAAG,gBACAA,GAAAE,cACAA,GAAAE,YACAA,GAAAE,aACAA,GAAAE,eACAA,GAAAvE,iBACAA,GAAA6E,gCACAA,GAAA5X,MACAA,GAAA7iB,OACAA,GAAA4V,YACAA,GAAA6lB,sBACAA,GAAAiD,yBACAA,GAAAF,kCACAA,GAAAO,uBACAA,GAAAM,oBACAA,GAAAO,8BACAA,GAAAH,oBACAA,GAAAC,6BACAA,GAAAC,8BACAA,GAAA1Q,iBACAA,GAAAlZ,mBACAA,GAAAC,sBACAA,GAAAkZ,qBACAA,GAAAqN,yBACAA,GACA3+B,KAAMqS,GAAA4nB,SACNA,GAAAsD,oBACAA,GAAAC,uBACAA,GAAAC,mBACAA,GAAAkF,oBACAA,GAAAne,oBACAA,IACAna,GAAS,CAAA,GAEP0vB,aAAEA,GAAAkJ,eAAcA,IAAmB7gC,IAAU,CAAA,GAE5CoR,GAAgBC,IAAqBjS,EAAM2E,UAAUkM,KACrDqB,GAAWC,IAAgBnS,EAAM2E,UAAUkM,KAC3C4W,GAAeC,IAAoB1nB,EAAM2E,SAAiBg2B,IAAe,KACzE+G,GAAgBC,IAAqB3hC,EAAM2E,SAASkoB,OAAOgO,IAAgBj+B,EAAoB,MAC/FglC,GAAqBC,IAA0B7hC,EAAM2E,SAAsC,OAC3Fm9B,GAAoBC,IAAyB/hC,EAAM2E,SAAc,KACjEq9B,GAAeC,IAAoBjiC,EAAM2E,SAAc,IACrDo2B,GAIC,CAAC,EAHD,CACI,8BAA+B,UAItCmH,GAAsBC,IAA2BniC,EAAM2E,UAAS,IAChEoyB,GAAcqL,IAAmBpiC,EAAM2E,UAAgB,OAAAsT,EAAA,OAAA/E,EAAA,OAAArO,EAAA,MAAAgM,QAAA,EAAAA,GAAWgD,aAAX,EAAAhP,EAAmBs5B,cAAU,EAAAjrB,EAAA,SAAI,EAAA+E,EAAAoqB,OAAQ,KAChGC,GAAwBC,IAA6BviC,EAAM2E,SAA0B,IACrFqF,GAAaw4B,IAAkBxiC,EAAM2E,SAAS,IAC9CsF,GAAWw4B,IAAgBziC,EAAM2E,SAAS,IAC1C+9B,GAAmBC,IAAwB3iC,EAAM2E,UAAS,OAAA2Z,EAAA,OAAA5F,EAAA,OAAAD,EAAA,MAAA5H,QAAA,EAAAA,GAAWgD,aAAX,EAAA4E,EAAmB0lB,cAAnB,EAAAzlB,EAA6B,SAA7B,EAAA4F,EAAiC+f,YAAa,IACxGuE,GAAwBC,IAA6B7iC,EAAM2E,SAAmB,KAC9Em+B,GAAeC,IAAoB/iC,EAAM2E,SAAS,KAClDq+B,GAA6BC,IAAkCjjC,EAAM2E,UAAS,IAC9Eu+B,GAAyBC,IAA8BnjC,EAAM2E,SAAc,CAAA,IAC3Ey+B,GAAyBC,IAA8BrjC,EAAM2E,UAAS,IAGzE4iB,QAASC,GACT3T,OAAQyvB,GACRlnB,wBAAyBmnB,GACzBzE,MAAO0E,GACPC,YAAaC,GACbrkC,OAAQskC,GACRC,aAAcC,GACdC,gBAAiBC,GACjBC,kBAAmBC,IACnBzN,IAAoB,CAAA,GAEhB0N,UAAWC,GAAwBC,QAASC,IAAyBhJ,IAAmC,IAC1GiJ,iBAAEA,GAAkBC,eAAAA,KAAmB,MAAAvhB,QAAA,EAAAA,GAAqB7P,YAAa,CAAA,EAEzEqxB,GAAwBt6B,UACpB,MAAAu6B,IAEGp/B,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAyE,EAAY,IAAEo5B,IAAmB,SAAU,KAC3C,MAAAnnB,OAAA,EAAAA,EAAS1b,QACJ4E,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,SACMJ,kBAAAA,KAAC,OAAK,CAAAjB,UAAU,0DAA0DqB,SAAA,CAAA,IAAE0W,EAAQ,UAE5F,QAIR,IAAAuoB,EAAiBT,GAA0C,mBAAf3L,IAA6C,MAATnc,OAAS,EAAAA,EAAA1b,QAA4B,UAAnB,kBAClGkkC,EAA4BV,IAA8BS,EAQ9D,OANIC,IACAD,EAAiBA,EAAe/5B,WAAW3N,EAAqCkN,GAE7D,mBAAfouB,IAAiCoM,EAAiBA,EAAe/5B,WAAW3N,EAAwCykC,IAAkB,cAIzI76B,EAAAxB,kBAAAM,IAAA,MAAA,CAAItB,UAAU,kDACVqB,sCAAiBpG,iBAAQ8gC,qBACrBv5B,EAAAxB,kBAAAM,IAAA,OAAA,CAAKtB,UAAU,kDAAmDqB,SAAAk/B,EAA4BD,EAAiBD,IAChH,MACR,GAIDG,GAAaC,IAAkB7kC,EAAM2E,SAA0BkM,GAAY2zB,GAAqB9B,IAAqB,MAEtHxd,GAAqBrlB,EAAY,CAAEsc,UAASulB,kBAAgBja,iBAAeua,iBAAerJ,uBAExF5tB,MAAO+5B,GAAoBzpB,UAAW0pB,GAAwBxpB,YAAaypB,GAA0BvpB,eAAgBwpB,KAAgC,OAAA1mB,EAAA,MAAAgc,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAAkf,EAAyBjK,QAAS,CAAA,GAE3LvJ,MAAOm6B,GACP7pB,UAAW8pB,GACX5pB,YAAa6pB,GACb3pB,eAAgB4pB,KAChB,OAAA3mB,EAAA,MAAA6b,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAAqf,EAAyBnO,SAAU,IAEnCqM,WAAY0oB,GACZxoB,aAAcyoB,GACdvoB,cAAewoB,GACftoB,YAAauoB,GACbroB,eAAgBsoB,GAChBpoB,aAAcqoB,GACdnoB,cAAeooB,GACfloB,iBAAkBmoB,GAClBxqB,UAAWyqB,GACXvqB,YAAawqB,GACbtqB,eAAgBuqB,KAChB,OAAA/K,EAAA,MAAAV,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAA47B,EAAyBpN,SAAU,GAEjCoY,GAAqB,IACnBnB,IAAsB,CAAE/5B,MAAO+5B,OAC/BC,IAA0B,CAAEjpB,SAAUipB,OACtCC,IAA4B,CAAEjpB,WAAYipB,OAC1CC,IAA+B,CAAEjpB,cAAeipB,KAGlDiB,GAAsB,IACpBhB,IAAuB,CAAEn6B,MAAOm6B,OAChCC,IAA2B,CAAErpB,SAAUqpB,OACvCC,IAA6B,CAAErpB,WAAYqpB,OAC3CC,IAAgC,CAAErpB,cAAeqpB,KAkBrD,IAAAc,GAA2BpkC,OAAOusB,QAAQ7wB,GAAmC6E,KAAK8jC,GAAgCA,EAAuB,KACzIC,GAAoBF,GAAyBG,QAAO,CAAC/jC,EAAML,KAC3D,IAAIqkC,EAAgC,CAAA,EAEpC,IAAA,IAASC,EAAS,EAAGA,EnEt0BS,EmEs0BwBA,IAClDD,EAAyB,MAAMC,KAAY,GAG/C,MAAO,IAAKjkC,EAAML,CAACA,GAAMqkC,EAAyB,GACnD,CAAE,GACLxkC,OAAOusB,QAAQ0T,IAAe1/B,KAAKm8B,UAC/B,IAAW,MAAPA,OAAO,EAAAA,EAAAh+B,SAAUg+B,EAAM,GAAGh+B,OAAQ,CACb0lC,GAAyB5mC,SAASk/B,EAAM,MAGzD,OAAA55B,EAAA45B,EAAM,KAAN55B,EAAUvC,KAAKC,IACX,MAAMkkC,EAAUlmC,OAAOgC,GAAMtD,MAAMklC,KAEtB,MAATsC,OAAS,EAAAA,EAAAhmC,SAAUsB,OAAOsqB,OAAOga,GAAkB5H,EAAM,IAAK,OAAMgI,EAAQhmC,OAAS,KAAwB4lC,GAAA5H,EAAM,IAAI,OAAMgI,EAAQhmC,OAAS,IAAKyvB,KAAK3tB,EAAI,IAE5K,KAIE,MAAAmkC,GAAa,CAAC,YAAa,mBAAmBnnC,SAAS,OAAA67B,EAAA,MAAAb,QAAA,EAAAA,GAAiBxQ,aAAjB,EAAAqR,EAAyBuL,iBAChFpP,KAAoBttB,KAAcD,KAAgBo5B,KAAkCn5B,IAAaD,GAqBjG48B,GAA2BC,UAC7B,MAAMrO,EAAe,IAAIxf,gBAAgBlU,SAAS6P,SAASoV,QACrD+c,EAAqB/kC,OAAOy8B,YAAYhG,GAE9C,IAAIuO,EAA8B,CAAA,EAClC,IAAA,MAAWC,KAAmBF,EAAoB,EACP,MAAR/M,OAAQ,EAAAA,EAAAt5B,UAAWs5B,EAAOx6B,SAASynC,KAEbD,EAAAC,GAAmBF,EAAmBE,GAC/F,CAGA,IAAA,MAAWC,KAAyBJ,GAC5B,OAAAhiC,EAAAgiC,EAAmBI,WAAnBpiC,EAA2CpE,UAA+BsmC,EAAAE,GAAyBJ,EAAmBI,IAGxH,MAAAC,EAAiB,IAAIluB,gBAAgB,IACpC+tB,IAEJ7tB,WAEHhY,OAAOogC,QAAQC,UAAU,KAAM,GAAI,GAAGz8B,SAAS6P,SAAS6sB,kBAAW0F,WAAgBzmC,QAAS,IAAIymC,IAAmB,KAAI,EA2BrHC,GAAoB,KACtBlF,GAAiB,CAAE,GACnBE,IAAyBD,IACzB0E,GAAwB,CAAE,GAC1B/D,GAA0B,GAAE,EAG1BuE,GAAqB,EAAGC,WAAUvnC,QAAOwnC,SAAQ,YAC/CvN,IAAAA,EAAc,CAACj6B,GACfynC,EAAU,CAAC,kBAAkBhoC,SAAS8nC,GAEtCrF,KACIsF,EACAvN,EAAS,CAACj6B,IAEN,OAAA+E,EAAAm9B,GAAcqF,SAAdxiC,EAAAA,EAAyBtF,SAASO,IAClCi6B,EAASiI,GAAcqF,GAAUhoC,QAAQo/B,GAAeA,IAAU3+B,IAE9DynC,GACKvF,GAAcqF,GAAWrF,GAAcqF,KAAcvnC,GACtDi6B,EAAS,GAET8I,GAA0B,KAEjB2E,EAAA1nC,GAGJ0nC,EAAAxF,GAAcqF,GAAY,IAAIrF,GAAcqF,GAAWvnC,GAAS,CAACA,IAM1F,IAAI+mC,EAAqB,IAClB7E,GAECqF,CAACA,GAAWtN,GAIpB6M,GAAwBC,GAExB5E,GAAiB4E,GACjB1E,IAAyBD,GAAoB,EA6B3CuF,GAAqB7pC,MAAOiL,YAC9B,IAAK8vB,EAAmB,OAExB,MAAQ+N,WAAAA,GAAa,EAAOgB,cAAAA,GAAgB,GAAU7+B,EAElD6+B,IACAlF,GAAe,GACfJ,GAAgB,KAGPjwB,KAAAu1B,IAAwBhB,GAEjC,IAEApoC,EAFAqpC,EAvJwB,CAACC,IAC7B,MAAMpP,EAAe,IAAIxf,gBAAgBlU,SAAS6P,SAASoV,QACrD+c,EAAqB/kC,OAAOy8B,YAAYhG,GAE9C,IAAA,MAAWwO,KAAmBF,GACM,MAAA/M,OAAA,EAAAA,EAAQt5B,SAAUs5B,EAAOx6B,SAASynC,KAEnCY,EAAwBZ,GAAmBF,EAAmBE,GAAiB/nC,MAAM,MASjH,OANH8C,OAAOC,KAAK4lC,GAAyBnnC,SACrCwhC,GAAiB2F,GAEbA,EAAwB,mBAA6C/E,GAAA+E,EAAwB,oBAG9FA,CAAA,EAuImBC,CAAwB7F,IAG9CpI,EAAe73B,OAAOusB,QAAQqZ,GAC7BrlC,KAAKm8B,YACF,IAAW,MAAPA,OAAO,EAAAA,EAAAh+B,SAAUg+B,EAAM,GAAGh+B,OAAQ,CAClC,IAAIqnC,EAAW,CAAC,+BAA+BvoC,SAASk/B,EAAM,IAC1D8I,EAAU,CAAC,kBAAkBhoC,SAASk/B,EAAM,IAGhD,GAFqB0H,GAAyB5mC,SAASk/B,EAAM,IAEzC,CAChB,IAAIsJ,EAA4B,GAWzB,OAVAhmC,OAAAusB,QAAQ+X,GAAkB5H,EAAM,KAAKn8B,KAAK0lC,WACzC,OAAAnjC,EAAAmjC,EAAiB,WAAjBnjC,EAAqBpE,SAAQsnC,EAAqB7X,KAAK,CAAC,GAAGuO,EAAM,MAAMuJ,EAAiB,KAAMA,EAAiB,IAAG,IAG5F,MAAAD,OAAA,EAAAA,EACxBzlC,KAAK2lC,GACI,IAAIA,EAAmB,UAAUplC,KAAKC,UAAUmlC,EAAmB,QAE7E/J,KAAK,QAGd,CAEI,IAAAgK,EAAa,IAAIzJ,EAAM,UAAU57B,KAAKC,UAAU27B,EAAM,MAenD,OAbH8I,IAASW,EAAa,IAAIzJ,EAAM,UAAUA,EAAM,GAAG,WAAWA,EAAM,UAAUA,EAAM,GAAG,MACvFqJ,IAEiBI,EADb3yB,MAAM4yB,QAAQ1J,EAAM,MAAO,OAAA55B,EAAA45B,EAAM,SAAN55B,EAAAA,EAAUpE,QAAS,EACjC,IAAI,OAAAyS,EAAAurB,EAAM,SAANvrB,EAAAA,EACX5Q,KAAKC,GACI,IAAIk8B,EAAM,OAAOl8B,MAE3B27B,KAAK,WAEG,IAAIO,EAAM,OAAOA,EAAM,MAIrCyJ,CACX,CAAc,OAAA,IAAA,IAEjB7oC,QAAQkD,GAASA,KAEN,MAAZ63B,QAAY,EAAAA,GAAA35B,SAAQm5B,EAAQ1J,KAAK,iBAAiBrtB,KAAKC,UAAUs3B,OACjE7B,IAAsBqB,EAAA1J,KAAK,uBAAuBqI,OAEtD,IAAI31B,EAAO,CACPo7B,EAAG7hB,EACHisB,KAAM3gB,GAAgB,CAACA,IAAiB,GACxC4gB,KAAMX,EAAgB,EAAI19B,GAC1Bi0B,YAAayD,GACb3H,SACA16B,OAAQu6B,EAAQsE,KAAK,UAGrBrtB,IAAamyB,IACF9vB,EAAA,OAAAA,EAAA,OAAArO,EAAW,MAAXgM,QAAW,EAAAA,GAAAgD,eAAXhP,EAAmBs5B,gBAAnBjrB,EAA6B,GACxC+vB,IAA+B,IACjB3kC,QAAMyrB,GAAO4O,EAAmB/1B,GAlGvB,CAACiG,IAC5B,MAAQ69B,WAAAA,GAAa,EAAO7yB,OAAAA,EAAAy0B,SAAQA,GAAaz/B,EAEjD,IAAKgL,EAAQ,OAEb,MAAMwuB,KAAEA,EAAMkG,iBAAAA,EAAAlK,UAAkBA,EAAWmK,WAAAA,EAAAlK,kBAAYA,GAAsBzqB,EAEzEy0B,UAAYnsB,WAAS1b,SACPypB,GAAA,CACV/N,UACAgO,YAAakU,GAAa,IAIlCpsB,IAAkB,GAClBE,IAAa,GACbkxB,IAA2B,GACF,MAAArH,IAAAA,IAAA,GACzBoG,IAAuB,MAANC,OAAM,EAAAA,EAAA5hC,QAAegoC,IAAoB,MAAA1R,QAAA,EAAAA,GAAct2B,SAAUimC,EAAa,IAAI+B,KAAcpG,GAAQA,EAAzF,IAChCE,GAA0BgG,GAAoB,GAC9C9F,GAAa+F,GACb7F,GAAqBtE,GAAa,GACnBwG,GAAAL,GAAqBnG,IACpC8E,GAA2B7E,EAAiB,EA6ErBoK,CAAA,CACnB70B,OAAQvV,KACLuK,GACN,EAuDL7I,EAAME,WAAU,KACZ,IAAIwnC,EAAgB94B,QAChBsW,MACoB,MAAfA,QAAe,EAAAA,GAAA/I,WAAYA,IACxB,MAAA+I,QAAA,EAAAA,GAAewc,kBAAmBA,KACnB,MAAfxc,QAAe,EAAAA,GAAAuC,iBAAkBA,KACjC,MAAAvC,QAAA,EAAAA,GAAe8c,iBAAkBA,KAG7C,GAAIpzB,QAAQsW,KAAgC,MAAfA,QAAe,EAAAA,GAAA/I,WAAYA,GAAU,CACxD,MAAAgjB,EAAkB53B,YAAW,KACZkgC,GAAA,CACfC,eAAe,EACfY,UAAU,GACb,GACF,KACI,MAAA,IAAM9gC,aAAa23B,EAAe,CAEtBsI,GAAA,CACfC,iBAER,GACD,CAACjgB,GAAeia,GAAgBQ,GAAsB/lB,EAASoc,KAElEv4B,EAAME,WAAU,KACZ,IAAIwnC,EAAgB94B,QAAQsW,KAAiB,MAAAA,QAAA,EAAAA,GAAeyT,qBAAsBA,IAE9EoD,IAAuB2L,IACJD,GAAA,CACfC,eAAehB,IAAqBgB,EACpChB,eAER,GACD,CAAC3K,GAAqBpD,IAEzB34B,EAAME,WAAU,KAvFY,YACpB,KAAC,OAAA2E,EAAA,MAAA01B,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAAwF,EAAyB26B,mBAAoB3D,GAAwB,OAE1E,IAAI2B,GAAc,EACdmL,EAA0B,GAEzBnL,GACe,MAAA9D,GAAAA,EAAAp3B,KAAKjD,IACX,MAAA3B,YAAEA,EAAayN,MAAAA,GAAU9L,EAEzBq+B,QAAWvyB,WAAO7I,KAAI,EAAGxC,WAAU69B,MAC9B,IACAA,EACH79B,MAA8B,UAAZ,MAAX69B,OAAW,EAAAA,EAAAz4B,SAAqBzH,EAAkCqC,GAASA,OAItFy4B,KAAgB,MAAA76B,OAAA,EAAAA,EAAa6B,SAASstB,OAAO0L,QAIzC,MAAA76B,OAAA,EAAAA,EAAa6B,SAAS,WAHZi+B,GAAA,EACOmL,EAAAjL,EAMzB,IAGJF,IACAuF,GAAiB4F,GACK5G,IAAA,MAAA4G,OAAA,EAAAA,EAAoBloC,QAASkoC,EAAmBrmC,KAAI,EAAGxC,WAAiBA,IAAS,IAC3G,OA0DD,CAAC45B,EAAgBuC,GAAoByG,KAExC,IAAIkG,GAA2B,GAC3BC,GAA0B,GAC9B9mC,OAAOusB,QAAQ0T,IAAe1/B,KAAKm8B,YAC/B,IAAW,MAAPA,OAAO,EAAAA,EAAAh+B,SAAUg+B,EAAM,GAAGh+B,OAAQ,CACjBooC,GAAA3Y,KAAKuO,EAAM,IAExB,IAAAqK,EAAUrK,EAAM,GAGhB,GAFqB,CAAC,+BAA+Bl/B,SAASupC,GAE1C,OAExB,IAAIvB,EAAU,CAAC,kBAAkBhoC,SAASupC,GACtCC,EAA2BjG,GAAczjC,QAAO,EAAGS,WAAwB,MAAPA,OAAO,EAAAA,EAAAP,SAASupC,KACpFE,GAAgC,MAArBD,OAAqB,EAAAA,EAAAtoC,QAASsoC,EAAoB,GAAG3gC,MAAQ0gC,EAuBrE,OApBHvzB,MAAM4yB,QAAQ1J,EAAM,MAAO,OAAA55B,EAAA45B,EAAM,SAAN55B,EAAAA,EAAUpE,QAAS,EACxC8mC,EACIqB,GAAkB1Y,KAAK,CACnB9nB,MAAO4gC,EACPxmC,KAAMsmC,EACNhpC,MAAO2+B,EAAM,KAEjB,OAAAvrB,EAAAurB,EAAM,SAANvrB,EAAAA,EAAU5Q,KAAKC,IACXqmC,GAAkB1Y,KAAK,CACnB9nB,MAAO4gC,EACPxmC,KAAMsmC,EACNhpC,MAAOyC,GACV,IAETqmC,GAAkB1Y,KAAK,CACnB9nB,MAAO4gC,EACPxmC,KAAMsmC,EACNhpC,MAAO2+B,EAAM,GAAG,IAIlC,KAGJ,MAAMwK,GAAqB,EAAG7gC,QAAO5F,OAAM1C,QAAOwL,kBAC9C,IAAI49B,EAAYppC,EAMXuF,MALS,CAAC,kBAAkB9F,SAASiD,KAEjB0mC,QAAAppC,WAAOo+B,KAAK,QAGhC74B,EAAAA,kBAAAA,KAAA,MAAA,CAAgBjB,UAAU,4DAA4Da,MAAOihC,GAC1FzgC,SAAA,GAACJ,kBAAAA,KAAA,OAAA,CAAKjB,UAAU,8DACXqB,SAAA,CAAA2C,EAAM,KAAG,OAAAvD,EAAAtE,OAAO2oC,SAAPrkC,EAAAA,EAAmB8F,WAAW,IAAK,UAEjDvF,kBAAAM,IAAC,OAAA,CACGtB,UAAU,+DACVmE,QAAS,IACL6+B,GAAmB,CACfC,SAAU7kC,EACV1C,UAIR2F,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,0gBACFF,KAAK,eACLG,SAAS,UACTC,SAAS,kBAlBf2E,EAsBV,EAIF69B,GAA6CrpC,IAC3C,IAEAspC,EAAuC,MAAlBP,QAAkB,EAAAA,GAAApoC,OACvC4oC,GAAuBD,EACvBE,EAAuBF,GAAsBP,GAAiBtpC,SAASO,IAAiC,IAAvBspC,EACjFG,EAA2BV,GAAiBtpC,SAAS,kBACrDiqC,EAAkBJ,IAAuBE,GANtB,CAAC,UAM8D/pC,SAASO,KAAWypC,EAE1G,OAAOF,GAAuBC,GAAwBE,CAAA,EA+PpDC,GAAkBpqC,IAMpB,MAAMS,MAAEA,EAAAoF,QAAOA,EAASwkC,YAAAA,GAAgBrqC,EAExC,IAAI6O,EAAW0zB,KAAwB9hC,EACnCqL,EAAkC,SAA1BjG,EAAQtB,cAxDQ,GAAG+lC,aAAYtqC,mBACrC,MAAAuqC,eAAEA,GAAmBvqC,EAE3B,IAAIwqC,EAA0B,GAC9B,IAAA,IAASC,EAAQ,EAAGA,EnEz7CU,EmEy7CsBA,IAAS,CACzD,MAAM/P,EAASkC,GAAmB,GAAG0N,QAAiBG,KACtD,IAAIC,EAASF,EAEb,IAAA,IAASpL,KAAS1E,EAAQ,CACtB,MAAMiQ,EAAQvL,EAAMj8B,KAAKvD,MAAMklC,IACzB8F,EAA4B5D,GAAkBsD,GAAY,MAAMG,KAChEI,EAA6BN,IAA6C,MAA3BK,OAA2B,EAAAA,EAAAxpC,UAAWwpC,EAA0B1qC,SAASk/B,EAAM3+B,OAC9HqqC,EAAW,MAAA9F,QAAA,EAAAA,GAAsB9F,MAAM6L,UAA6B,OAAA,OAAAvlC,EAAA45B,EAAM3+B,YAAN,EAAA+E,EAAawlC,WAAWD,EAAA,IAGlG,IAAIF,IAA8BC,EAAlC,CAEA,GAAIL,EAAQ,EAAG,CACFC,EAAAF,EAET,IAAA,IAAS1W,EAAI,EAAGA,EAAI6W,EAAMvpC,OAAS,EAAG0yB,IAAK,CACvC,IAAImX,EAAqB,MAARP,OAAQ,EAAAA,EAAAQ,WAAWjrC,GAAWA,EAAEkD,KAAKgoC,OAAO5mC,gBAAkBomC,EAAM7W,GAAGqX,OAAO5mC,gBAEtFmmC,EAAA,OAAAllC,EAAA,MAAAklC,OAAA,EAAAA,EAASO,SAAT,EAAAzlC,EAAsBY,QACnC,CAEA,MAAAskC,GAAAA,EAAQ7Z,KAAK,IACNuO,EACHj8B,KAAMwnC,EAAMA,EAAMvpC,OAAS,GAAG+pC,OAC9BV,QACArkC,SAAU,IAElB,CAEc,IAAVqkC,IACA,MAAAC,GAAAA,EAAQ7Z,KAAK,IACNuO,EACHj8B,KAAMwnC,EAAMA,EAAMvpC,OAAS,GAAG+pC,OAC9BV,MAAO,EACPrkC,SAAU,KAxB0B,CA0BhD,CACJ,CAEO,OAAAokC,CAAA,EAYwCY,CAAwB,CAAEd,WAAY7pC,EAAOT,WAAY48B,GAAmBn8B,GACvH4qC,EAAW97B,QAAkC,WAA1B1J,EAAQtB,cAA6BuH,QAAQA,WAAO1K,QACvEkqC,EAAmB,CAAC,kDACpBC,EAxQe,CAACvrC,kBACpB,IAAIS,MAAEA,EAAAsI,MAAOA,EAAOlD,QAAAA,EAAAiG,MAASA,GAAU9L,EAEnC,GAAA2S,GAAuB,OAAA,KAE3B,IAAI64B,EAAiB,KACjBC,EAA8B,OAAAjmC,EAAiB,MAAjB01B,QAAiB,EAAAA,GAAAl7B,eAAjBwF,EAAyBkmC,6BACvDC,EAA2B,OAAA93B,EAAiB,MAAjBqnB,QAAiB,EAAAA,GAAAl7B,eAAjB6T,EAAyB+3B,qBAGlD,MAAAC,EAAqB//B,IACvB,IAAIggC,EAAc,GAElB,IAAA,MAAW5oC,KAAQ4I,EAAO,CACtB,MAAMigC,EAAsBrpC,OAAOsqB,OAAO9pB,EAAM,YAEhD,IAAI8oC,EAAY9oC,EAAKC,KACjB8oC,EAAWF,EAAsB,GAAGtrC,QAAYyC,EAAKunC,QAAUhqC,EAE/D02B,KAAqBA,GAAiBj0B,EAAKzC,QAAU02B,GAAiBj0B,EAAKC,SAAQ6oC,EAAY7U,GAAiBj0B,EAAKzC,QAAU02B,GAAiBj0B,EAAKC,OAErJ,IAAA+oC,EAAUpC,GAA0CmC,UAClD/oC,WAAMwE,QAAS,EACfm8B,GAAwBoI,IAAapI,GAAwBoI,GAAU/oC,EAAKzC,OAC5EojC,GAAwBoI,GAAU/oC,EAAKzC,OACvC,EAEAkrC,IAA6BO,GAC/BJ,EAAYjb,KAAK,IACV3tB,EACH8oC,YACAE,WAEZ,CAEO,OAAAJ,CAAA,EAGLK,EAAuBL,UAClBtmC,OAAA,OAAAA,EAAAqmC,EAAkBC,WAAlBtmC,EAAgCvC,KAAI,CAACmpC,EAAiBngC,WACzD,MAAM+/B,UAAEA,EAAWvrC,MAAO4rC,UAAWH,EAAS9lC,SAAAA,EAAAqkC,MAAUA,GAAU2B,EAE5DL,EAAsBrpC,OAAOsqB,OAAOof,EAAY,YAChDE,EAAgBP,IAAiC,MAAV3lC,OAAU,EAAAA,EAAAhF,QACjDmrC,EAAYh9B,QAAQozB,KAAiB,OAAAn9B,EAAAm9B,GAAcliC,SAAd,EAAA+E,EAAsBtF,SAASmsC,KAE1E,SAEQtmC,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAAAL,kBAAAM,IAAC,KAAA,CAEGtB,UAAW,uDACPgnC,EAAsB,qHAAqHtB,IAAU,IAGzJrkC,WAAAL,kBAAAM,IAACwC,EAAA,CACG7H,GAAI,GAAGP,KAASwL,IAAQ8/B,EAAsB,IAAI1nC,EAAagoC,KAAe,KAC9ElpC,KAAM1C,EACNA,MAAO4rC,EACPtjC,QAEQhD,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACL,kBAAAM,IAAA,OAAA,CAAMD,SAAG,GAAA4lC,SAAwB,IAAZE,GAAyBT,EAA8B,KAAKS,KAAa,OAC9FI,IACGvmC,kBAAAM,IAACwK,EAAAA,OAAOC,IAAP,CACGC,SAAS,EACTC,QAASu7B,EAAY,OAAS,SAC9Bt7B,SAAUrB,GACV7K,UAAU,iEAEVqB,iCAAC2H,EAAqB,CAAAhH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAEvD,QAGZxC,QAAUsG,GACNu4B,GAAmB,CACfC,SAAUvnC,EACVA,MAAO+O,EAAE+f,cAAc9uB,QAG/BuI,QAASujC,EACTtjC,WAAY49B,MA/BX56B,GAkCRqgC,GAAiBC,EAAYJ,EAAoB/lC,GAAY,OAClE,GAAA,EAKR,GAA0B,WAA1BP,EAAQtB,cAA4B,CACpCuH,EAAQwwB,GAAkB77B,IAAUiC,OAAOC,KAAK25B,GAAkB77B,IAAQW,OAASk7B,GAAkB77B,GAAS,CAAA,EAE9G,IAAI+rC,EAAkBjJ,GAAuB,KAAa,MAAPz3B,OAAO,EAAAA,EAAArC,KACtDgjC,EAAkBlJ,GAAuB,KAAa,MAAPz3B,OAAO,EAAAA,EAAApC,KAGtD8hC,IAAAzlC,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,wDACXqB,SAAA,GAAAL,kBAAAM,IAACkD,EAAA,CACG9I,MAAO+rC,IAAoBC,EAAkB,CAACA,GAAmB,CAACD,EAAiBC,OACvE,MAAP3gC,OAAO,EAAAA,EAAArC,QAAe,MAAPqC,OAAO,EAAAA,EAAApC,KACrB,CAAA,EACA,CACID,IAAY,MAAPqC,OAAO,EAAAA,EAAArC,KAEtBC,IAAY,MAAPoC,OAAO,EAAAA,EAAApC,IACZC,KAAM,EACNC,eAAiBK,GACb89B,GAAmB,CACfC,SAAUvnC,EACVA,MAAOwJ,IAGfJ,eAAiBM,GAAgBq5B,GAA0Br5B,OAE/DnE,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,+DACXqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oDAAqDqB,SAAgBomC,IACnFnmC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oDAAqDqB,SAAgBqmC,SAIpG,KAAsC,aAA1B5mC,EAAQtB,eAA0D,SAA1BsB,EAAQtB,iBAA6B,MAAAuH,OAAA,EAAAA,EAAO1K,QAE3D,UAA1ByE,EAAQtB,sBAA6BuH,WAAO1K,QACnDoqC,0BACK,KACG,CAAAplC,WAAAL,kBAAAM,IAACuF,EAAA,CACG5K,GAAIP,EACJ0C,KAAM1C,EACNyJ,cAAgB+hC,GACZlE,GAAmB,CACfC,SAAUvnC,EACVA,MAAOwrC,EACPhE,OAAO,IAGfn8B,MAAO,OAAA8M,EAAAizB,EAAkB//B,SAAlB8M,EAAAA,EAA0B3V,KAAKC,IAClC,MAAM8oC,UAAEA,EAAWvrC,MAAAA,EAAAA,QAAOyrC,GAAYhpC,EAE/B,MAAA,CACH6F,MAAO,GAAGijC,UAAyB,IAAZE,GAAyBT,EAA8B,KAAKS,KAAa,KAChGzrC,MAAAA,EAAA,IAGRoL,aAAc82B,KAAiB,OAAAvpB,EAAAupB,GAAcliC,SAAd2Y,EAAAA,EAAsBhY,QAASuhC,GAAcliC,GAAO,GAAK,GACxFwI,WAAY49B,OAIS,WAA1BhhC,EAAQtB,sBAA8BuH,WAAO1K,QACpDoqC,0BACK,KACG,CAAAplC,WAAAL,kBAAAM,IAACuG,EAAA,CACGC,YAAa,UAAU9D,IACvB5F,KAAM1C,EACNyJ,cAAgB+hC,GACZlE,GAAmB,CACfC,SAAUvnC,EACVA,MAAOwrC,EACPhE,OAAO,IAGfn8B,MAAO,OAAAuN,EAAAwyB,EAAkB//B,SAAlBuN,EAAAA,EAA0BpW,KAAKC,IAClC,MAAM8oC,UAAEA,EAAWvrC,MAAAA,EAAAA,QAAOyrC,GAAYhpC,EAE/B,MAAA,CACH6F,MAAO,GAAGijC,UAAyB,IAAZE,GAAyBT,EAA8B,KAAKS,KAAa,KAChGzrC,MAAAA,EAAA,IAGRwI,WAAY49B,OAIS,WAA1BhhC,EAAQtB,sBAA8BuH,WAAO1K,UACpDoqC,EAESnlC,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAO,MAAP0F,OAAO,EAAAA,EAAA7I,KAAI,CAACC,EAAW+I,WACpB,IAAIygC,GAAiB,MAAAtR,QAAA,EAAAA,GAAep7B,QAAO,EAAGmD,UAAgB,MAAAA,OAAA,EAAAA,EAAMjD,SAASgD,EAAKzC,SAAQ,KAAM,CAAA,EAEhG,+BACK,KACG,CAAA2F,WAAAL,kBAAAM,IAACgG,EAAA,CACGrL,GAAI,GAAGP,KAASwL,IAChB9I,KAAM1C,EACNA,MAAOyC,EAAKzC,MACZ6L,IAAqB,MAAhBogC,OAAgB,EAAAA,EAAApgC,IACrBC,MAAuB,MAAhBmgC,OAAgB,EAAAA,EAAAngC,MACvBrD,QAAUsG,GACNu4B,GAAmB,CACfC,SAAUvnC,EACVA,MAAO+O,EAAE+f,cAAc9uB,QAG/B+L,eAAgB+C,QAAQozB,KAAiB,OAAAn9B,EAAAm9B,GAAcliC,SAAd+E,EAAAA,EAAsBtF,SAASgD,EAAKzC,YAb5EwL,EAeT,OA1EC5F,EAAAA,EAAAN,kBAAAM,IAAAgF,6BAAA,CAAGjF,SAAoB+lC,EAAArgC,KAiFrC,OAAA0/B,CAAA,EA8DiBmB,CAAe,IAChC3sC,EACH8L,UAQJ,MAL8B,WAA1BjG,EAAQtB,gBAAqC,MAAPuH,OAAO,EAAAA,EAAA1K,SAAQkqC,EAAiBza,KAAK,4DACjD,SAA1BhrB,EAAQtB,eAA0B+mC,EAAiBza,KAAK,kDAIrD,CAAEhiB,WAAUw8B,WAAUC,mBAAkBC,oBAAmBqB,YAFhDnJ,GAAcriC,OAAS,IAAMipC,EAE+B,EAG5EwC,GAA2BpJ,GAAcxgC,KAAI,CAACjD,EAAaqqC,KACvD,MAAA5pC,MAAEA,EAAOsI,MAAAA,GAAU/I,GAEnBqrC,SAAEA,EAAUC,iBAAAA,EAAAC,kBAAkBA,GAAsBnB,GAAepqC,GAElE,OAAAqrC,IACHrlC,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,4CACXqB,SAAA,0BAAC,OAAIrB,UAAU,kDAAkDmE,QAAS,IAlnBrD,CAAClI,IACPwhC,GAAAxhC,IAAOuhC,GAAsB,GAAKvhC,GAEzD,IAAI8rC,EAAiCrK,GACjC,GAAAqK,EAAwB5sC,SAASc,GAAK,CAChC,MAAAkqC,EAAY4B,EAAwBC,QAAQ/rC,GAC9CkqC,GAAY,GAA4B4B,EAAAE,OAAO9B,EAAW,EAAC,MAE/D4B,EAAwBjc,KAAK7vB,GAGjC0hC,GAAsBoK,EAAuB,EAumB2CG,CAAyBxsC,GACrG2F,SAAA,CAAAC,wBAAC,OAAK,CAAAtB,UAAU,6CAA6Ca,MAAOghC,GAC/DxgC,SACL2C,IACA1C,EAAAA,kBAAAA,IAACwK,SAAOC,IAAP,CAAWC,SAAS,EAAOC,QAASyxB,GAAmBviC,SAASO,GAAS,OAAS,SAAUwQ,SAAUrB,GACnGxJ,SAAAC,wBAAC0H,EAAqB,CAAAhH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAG1D+2B,GAAmBviC,SAASO,IAAU4F,EAAAA,kBAAAA,IAAC,KAAG,CAAAtB,UAAWumC,EAAiBzM,KAAK,KAAOz4B,SAAkBmlC,MATzClB,GAWhE,IAAA,IAGF6C,GAA6BzJ,GAAcxgC,KAAI,CAACjD,EAAaqqC,KACzD,MAAA5pC,MAAEA,EAAOsI,MAAAA,GAAU/I,GAEnB6O,SAAEA,WAAUw8B,EAAUC,iBAAAA,EAAAC,kBAAkBA,cAAmBqB,GAAgBxC,GAAepqC,GAEzF,OAAAqrC,IACHhlC,kBAAAA,IAAC1F,EAAM0K,SAAN,CACGjF,SAAAC,EAAAN,kBAAAM,IAAC7B,EAAA,CACGC,UACIsB,kBAAAC,KAACuI,GAAA,CACGhD,KAAK,SACLrC,QAAS,IAAMs5B,GAAuB/hC,GACtCsE,UAAW,IAAG6nC,EAAenJ,GAAcriC,OAAS,EAAI,mDAAqD,oDAAuD,IAEnKgF,SAAA,CAAA2C,EACD1C,EAAAA,kBAAAA,IAACwK,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAASnC,EAAW,OAAS,SAAUoC,SAAUrB,GAA+B7K,UAAU,oBACnHqB,iCAAC2H,EAAqB,CAAAhH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAI/DhH,QAAS6C,EAAAxB,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,wDAAyDqB,SAAYyI,GAAAtH,EAAAxB,kBAAAM,IAAC,KAAG,CAAAtB,UAAWumC,EAAiBzM,KAAK,KAAOz4B,eACzIpB,eAAe,EACfJ,UAAYvF,GAASmjC,GAAwBnjC,EAAYoB,EAAL,IACpDoE,eAAa,EACbC,MAAM,SACNC,UAAU,yDACVG,YAAa,kYApBAmlC,GAuBrB,IAAA,IAGF8C,GAAsB9F,GACxBhhC,EAAAN,kBAAAM,IAAC2xB,GAAA,CACGxsB,SAAUu4B,GACV76B,QA9ce,KACnBi6B,GAAex4B,GAAc,GAC7Bq5B,IAA2B,GACF,MAAArH,IAAAA,IAAA,EAAA,EA4crB/2B,MAAO,IACCm+B,IAA2B,CAC3B3T,OAAQ,SAGhB9rB,KAAMy/B,GAA0BmB,IAAkB,aAAeD,IAAoB,YACrFhN,iBAA+D,qBAA7C,OAAAiE,EAAA,MAAAhB,QAAA,EAAAA,GAAiBxQ,aAAjB,EAAAwR,EAAyBoL,iBAC3C38B,eACAC,aACAC,YAAaw4B,GACbt4B,SAAU25B,GACVxM,uBAGJ7xB,EAAAA,kBAAAA,IAACqE,EAAW,CAAAC,eAA0BC,aAAsBC,YAAaw4B,GAAmBv4B,SAAWk+B,GAzelF,CAACA,IACtB7F,GAAe6F,GACU,MAAArM,IAAAA,IAAA,GAEzBz0B,YAAW,KACS5G,EAAA,CACZE,QAASs8B,GAAyBh9B,QAClCW,aAAc,IACjB,GACF,IAAG,EAgekH2rC,CAAiBpE,GAAOj+B,SAAU25B,KAGxJ2I,IACF,OAAAxP,qBAAiB79B,aAAjB,EAAA69B,EAAyBsC,mBAAoBsD,GAAcriC,OAElDmG,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAAuM,KAAmBnB,GAChByuB,GAEA55B,EAAAN,kBAAAM,IAAAgF,6BAAA,CACKjF,aAAqBoL,KACjBnL,kBAAAA,IAAA,MAAA,CAAItB,UAAU,0DAA2DqB,cAE1EJ,EAAAA,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,0DACXqB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,4GAA6GqB,SAA2B8mC,KAEtJ39B,SAAQ,MAAAg6B,QAAA,EAAAA,GAAmBnoC,UAAU,OAAA8+B,EAAA,MAAAhF,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAkgC,EAAAoN,uBAC3DtnC,EAAAA,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,kDACXqB,SAAA,GAAAL,kBAAAM,IAAC,MAAA,CACGtB,UAAU,oIACVmE,QAAS4+B,GACZ1hC,SAAA,cAGAmjC,GAAkBtmC,KAAI,CAACsqC,EAAuBthC,KAC3C,MAAMlD,MAAEA,EAAA5F,KAAOA,EAAM1C,MAAAA,GAAU8sC,EAE/B,OAAO3D,GAAmB,CACtB7gC,QACA5F,OACA1C,QACAwL,SACH,OAGT,YAMxB,KAER,SAESlG,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,EAAA,OAAAg6B,EAAA,MAAAlF,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAogC,EAAAD,mBAAwD,gBAApC,OAAAI,qBAAiBvgC,aAAjB,EAAAugC,EAAyBF,SAA2BoD,GAAcriC,OAC3GmG,EAAAxB,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oCAAqCqB,cACpD,KACJC,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,wCAAwC,qBAAoB,OAAAy7B,EAAiB,MAAAtF,QAAA,EAAAA,GAAAl7B,iBAAQqgC,OAChGj6B,WACIL,kBAAAC,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CACKC,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAA,OAAAy6B,EAAA,MAAA3F,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAA6gC,EAAyBV,mBAAwD,cAApC,OAAAY,EAAiB,MAAA7F,QAAA,EAAAA,GAAAl7B,iBAAQqgC,SAAyBoD,GAAcriC,OAC1GuR,GACItM,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,yEAA0EqB,cAEzFC,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,yEACVqB,SACG2zB,EAAAuG,GAGKt6B,EAAAA,kBAAAA,KAAAqF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA,CAAQmJ,SAAA,MAAAg6B,QAAA,EAAAA,GAAmBnoC,UAAU,OAAAggC,EAAA,MAAAlG,QAAA,EAAAA,GAAiBl7B,aAAQ,EAAAohC,EAAAkM,uBAC3DtnC,EAAAA,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,4CACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,yDACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,SAAO,CAAAtB,UAAU,iEAAkEqB,SAAAk+B,IAAmB,mCACtG,OAAK,CAAAv/B,UAAU,+DAA+DmE,QAAS4+B,GACnF1hC,aAAyB,yCAGjC,OAAIrB,UAAU,iEACVqB,YAAkBnD,KAAI,CAACsqC,EAAuBthC,KAC3C,MAAMlD,MAAEA,EAAA5F,KAAOA,EAAM1C,MAAAA,GAAU8sC,EAE/B,OAAO3D,GAAmB,CACtB7gC,QACA5F,OACA1C,QACAwL,SACH,SAIb,KACH4gC,QAKjB,SAGR7mC,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,qCACVqB,SAAA,CAAAuM,KAEO5M,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,OAAItB,UAAU,oCACXqB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,6CACVqB,SAAA,EAAiB,OAAAi7B,EAAA,MAAAnG,QAAA,EAAAA,GAAAl7B,aAAQ,EAAAqhC,EAAAP,qBAAsBE,GAAsB,KACrEC,GACAlB,GACAmB,QAIR76B,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,oCAAqCqB,SAA8B+6B,QAGtFn7B,EAAAA,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,6CACXqB,SAAA,GAAAL,kBAAAM,IAAC,MAAA,CACGtB,UAAW,4GAC6B,gBAApC,OAAAw8B,EAAiB,MAAArG,QAAA,EAAAA,GAAAl7B,iBAAQqgC,QAA0B,GAAK,qCAG3Dj6B,SAAAm/B,OAELx/B,kBAAAM,IAAC2I,GAAA,CACGzD,KAAK,OACL0D,6BAAOd,GAAW,CAAApH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/CmB,mBAAaq3B,aAAkCzpB,UAAW,qBAC1Dha,MAAOqc,EACPhS,SAAU,EAAGrK,WAAuC,MAAtBqhC,QAAsB,EAAAA,GAAArhC,GACpD0O,aAAc,IAA4B,MAAtB2yB,QAAsB,EAAAA,GAAA,IAC1C/8B,UAAU,kDACVmK,gBAAc,IAEjB7I,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,0FAA2FqB,SAA+BinC,OACzIrnC,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,0GACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,+DACXqB,SAAA,GAACJ,kBAAAA,KAAA,OAAA,CAAKjB,UAAU,+DAAgEqB,SAAA,CAAoB+hB,IAAA,UAAU,OAC7G8R,GAAgB1qB,QAAQ,MAAA0qB,OAAA,EAAAA,EAAc74B,WACnC2E,kBAAAM,IAACkK,GAAA,CACGzL,MAAM,MACN0L,YACIjJ,EAAAxB,kBAAAM,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,u7FACFF,KAAK,YAIjBxI,QAASu7B,EAAah3B,KAAKC,IACjB,MAAA6F,MAAEA,EAAOtI,MAAAA,GAAUyC,EAClB,MAAA,CACH6F,QACAtI,QAAA,IAGRA,MAAO2nB,GACPtd,SAAU,EAAGrK,WA70BhC,CAACA,IACtB4nB,GAAiB5nB,EAAK,EA40BgDojB,CAAiBpjB,UAI3DuF,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,+DACXqB,SAAA,0BAAC,OAAM,CAAAA,SAAA,CAAkB+9B,IAAA,QAAQ,QAChC,OAAA3C,EAAiB,MAAAtG,QAAA,EAAAA,GAAAxQ,aAAQ,EAAA8W,EAAAgM,gBAAiBj+B,QAAQ,OAAAsyB,EAAA,OAAAD,EAAA,MAAA1G,QAAA,EAAAA,GAAiBxQ,aAAjB,EAAAkX,EAAyB4L,oBAAzB,EAAA3L,EAAwCzgC,WACvF2E,kBAAAM,IAACkK,GAAA,CACGzL,MAAM,MACNpG,QAASw8B,GAAgBxQ,OAAO8iB,cAAcvqC,KAAKC,IACxC,CACH6F,MAAO7F,EACPzC,MAAOyC,MAGfzC,MAAO4hC,GACPv3B,SAAU,EAAGrK,WAz1B/B,CAACA,IACL6hC,GAAA9U,OAAO/sB,IAEX,MAAA9B,cAAAA,aAAA8uC,QAAQ3xC,EAAiC2E,EAAA,EAs1BeyjB,CAAkBzjB,cAOvEoS,KAEQ9M,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAAw6B,IACA,MAAAlJ,QAAA,EAAAA,GAAct2B,QAAS+rC,GAAsB,QAI7CnnC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAoC,cAApC,OAAAsnC,EAAA,MAAAxS,QAAA,EAAAA,GAAiBl7B,aAAjB,EAAA0tC,EAAyBrN,WACtBh6B,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,oCACXqB,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,wGAAyGqB,SAAAm/B,QAG/H,MAAA7N,QAAA,EAAAA,GAAct2B,QAEP4E,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,GAAAL,kBAAAM,IAACiqB,GAAA,CACGpF,UAAU,iBACV3f,KAAK,QACLpM,KAAMu4B,GAAaz0B,KAAKC,IACpB,MAAM+N,SAAEA,KAAawJ,GAAYvX,GAAQ,CAAA,EAElC,MAAA,CACHuX,UACAxJ,WAAA,IAGRsa,QAAS,CACLU,YAAa,OAAA0hB,EAAiB,MAAAzS,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAijB,EAAA1hB,YACtCC,SAAU,OAAA0hB,EAAiB,MAAA1S,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAkjB,EAAA1hB,SACnCC,WAAY,OAAA0hB,EAAiB,MAAA3S,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAmjB,EAAA1hB,WACrCE,4BAA6BgY,GAC7B/X,6BAA8B6K,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5HzL,qBAAsBvU,GACtBwU,MAAOqR,GACPxR,sBAAsB,EACtBgF,oBACAlZ,sBACAC,yBACAkZ,wBACAzE,cAA0B,MAAXxa,QAAW,EAAAA,GAAAs8B,UAC1B/hB,YAAwB,MAAXva,QAAW,EAAAA,GAAAu8B,UAE3BZ,MAGL5lC,EAAAxB,kBAAAM,IAAC2nC,GAAa,IAAGxkC,iBAO7C,EAIFk4B,GAAkBl4B,IACd,MAAAsT,QACFA,EAAAwc,kBACAA,EAAAE,oBACAA,EAAAE,oBACAA,EAAAwB,gBACAA,EAAA/jB,YACAA,EAAA8lB,yBACAA,EAAAC,mBACAA,EAAAC,mBACAA,EAAAC,sBACAA,EAAAU,yBACAA,EAAAnM,wBACAA,EAAAG,kBACAA,EAAAE,kBACAA,EAAAG,qBACAA,EAAAgF,iBACAA,EAAAuF,oBACAA,EAAAC,uBACAA,EAAAmF,oBACAA,GACAt4B,GAAS,CAAA,GAENmJ,EAAgBC,GAAqBjS,EAAM2E,UAAS,IACpDuN,EAAWC,GAAgBnS,EAAM2E,UAAS,IAC1CoyB,EAAcqL,GAAmBpiC,EAAM2E,SAAS,KAChD29B,EAAwBC,GAA6BviC,EAAM2E,SAA0B,IACrFqF,EAAaw4B,GAAkBxiC,EAAM2E,SAAS,IAC9CsF,EAAWw4B,GAAgBziC,EAAM2E,SAAS,IAC1C+9B,EAAmBC,GAAwB3iC,EAAM2E,SAAS,IAC1DigC,EAAaC,GAAkB7kC,EAAM2E,SAA0B,MAEhEugB,EAAqBrlB,EAAY,CAAEsc,UAASwc,uBAG9CmL,gBAAiBC,EACjB3nB,wBAAyBmnB,EACzB1vB,OAAQyvB,EACRU,kBAAmBC,GACnBzN,GAAoB,CAAA,EA4BlBkS,EAA0B70B,IAC5B,IAAKA,EAAQ,OAEb,MAAMwuB,KAAEA,EAAAkG,iBAAMA,EAAkBlK,UAAAA,EAAAmK,WAAWA,GAAe30B,EAE1D5B,GAAkB,GAClBE,GAAa,GACY,MAAA6pB,GAAAA,GAAA,GACzBoG,EAAgBC,GAChBE,EAA0BgG,GAAoB,GAC9C9F,EAAa+F,GACb7F,EAAqBtE,GAAa,GACnBwG,EAtCU,CAAC36B,UACpB,MAAAu6B,IAEGp/B,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAyE,EAAY,IAAEo5B,GAAmB,SAAU,KAC3C,MAAAnnB,OAAA,EAAAA,EAAS1b,QACJ4E,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,SACMJ,kBAAAA,KAAC,OAAK,CAAAjB,UAAU,0DAA0DqB,SAAA,CAAA,IAAE0W,EAAQ,UAE5F,QAIZ,IAAIuoB,EAAiB3L,EAAsBkL,EAA2BlL,GAAuB,KACzF4L,EAA4BV,GAA8BS,EAKzDh/B,OAHDi/B,IAA2BD,EAAiBA,EAAe/5B,WAAW3N,EAAqCkN,IAG1GxE,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,kDACVqB,oCAAiBpG,iBAAQ8gC,qBACrBz6B,EAAAN,kBAAAM,IAAA,OAAA,CAAKtB,UAAU,kDAAmDqB,SAAAk/B,EAA4BD,EAAiBD,IAChH,MACR,EAgBWD,CAAqBnG,GAAU,EAG5CoJ,EAAqB7pC,MAAO8pC,GAAgB,KAC9C,IAAK/O,EAAmB,OAMpB,IAAAr6B,EAJAopC,GAAelF,EAAe,GAElCrwB,GAAa,GAGb,IAAIvP,EAAO,CACPo7B,EAAG7hB,EACHisB,KAAM,GACNC,KAAMX,EAAgB,EAAI19B,EAC1Bi0B,YAAa,IAGN3/B,QAAMyrB,GAAO4O,EAAmB/1B,GAE3C8lC,EAAuBpqC,EAAQ,EAenC0B,EAAME,WAAU,KACZ,GAAI0O,QAAQsW,IAAgC,MAAfA,OAAe,EAAAA,EAAA/I,WAAYA,GAAU,CACxD,MAAAgjB,EAAkB53B,YAAW,WAEhC,KACI,MAAA,IAAMC,aAAa23B,EAAe,IAG7C,GACD,CAAChjB,IAEJnc,EAAME,WAAU,KACZ,IAAIotC,EAAwB1+B,QAAQsW,IAAiB,MAAAA,OAAA,EAAAA,EAAeyT,qBAAsBA,IAEtFoD,GAAuBuR,IACvB7F,EAAmB6F,EACvB,GACD,CAACvR,EAAqBpD,IAEnB,MAAA4U,EACF7nC,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,iGACXqB,SAAAC,EAAAN,kBAAAM,IAAC2I,GAAA,CACGzD,KAAK,OACL0D,6BAAOd,GAAW,CAAApH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/CmB,YACI6sB,GAAuBwK,EAAiCxK,GAClDwK,EAAiCxK,GACjC,UAAUF,EAAsBA,EAAoBj1B,cAAgB,QAE9E9D,MAAOqc,EACPhS,SAAU,EAAGrK,WAAuC,MAAtBqhC,OAAsB,EAAAA,EAAArhC,GACpD0O,aAAc,IAA4B,MAAtB2yB,OAAsB,EAAAA,EAAA,IAC1C/8B,UAAU,kDACVmK,gBAAc,MAKpB8xB,0BACD,MAAA,CAAIj8B,UAAU,6CACXqB,iCAACoV,GAAgBrK,KAAhB,CAAqBpK,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU+P,QAAQ,SAI5E0yB,EACsB,eAAxBzU,EACKrzB,EAAAN,kBAAAM,IAAAmV,GAAgBkW,eAAhB,CAA+B/V,MAAO,IACf,SAAxB+d,EACAnyB,EAAAxB,kBAAAM,IAACmV,GAAgBqW,SAAhB,CAAyBlW,MAAO,IACT,SAAxB+d,IACCrzB,kBAAAA,IAAAmV,GAAgBuW,SAAhB,CAAyBpW,MAAO,KACT,YAAxB+d,0BACCle,GAAgB0W,YAAhB,CAA4BvW,MAAO,KACpC,KAEFyyB,EAA6B,6BAC9B,MAAA,CAAIrpC,UAAU,sDACVqB,SAAA,CAAA8nC,EACAlN,EACAmN,KAIHE,EAAwB,IAErBroC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA8nC,EACAlN,EACAmN,KAIHG,GAAkBC,GACI,eAAxB7U,EACIrzB,EAAAA,kBAAAA,IAACqrB,IAAe/F,MAAOsR,EAA0BtL,6BAAsD4c,IAC/E,SAAxB7U,0BACC7H,GAAS,CAAAlG,MAAOuR,EAAoBpL,uBAA0Cyc,IACvD,SAAxB7U,EACArzB,EAAAA,kBAAAA,IAAC0rB,IAASpG,MAAOwR,EAAoBnL,uBAA0Cuc,IACvD,YAAxB7U,0BACCxH,GAAY,CAAAvG,MAAOyR,EAAuBjL,0BAAgDoc,IAC3F,KAER,+BACK,MAAI,CAAAxpC,UAAU,wCACVqB,SAAAuM,0BACIy7B,EAA2B,CAAA,KAE3BroC,kBAAAM,IAAA,MAAA,CAAItB,UAAU,sDACVqB,SAAAyM,EACItL,EAAAxB,kBAAAM,IAAAgoC,EAAA,CAAA,KAGIroC,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA8nC,EACA7nC,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,6CAA8CqB,SAAYm/B,KACxE,MAAA7N,OAAA,EAAAA,EAAct2B,QAEP4E,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAN,kBAAAM,IAACioC,GAAe,CAAAnvC,KAAMu4B,EAAchM,qBAAsBvU,MAE1DpR,kBAAAM,IAACqE,EAAA,CACGC,cACAC,YACAC,YAAaw4B,EACbv4B,SAAWk+B,GAlHtB,CAACA,IACtB7F,EAAe6F,GACU,MAAArM,GAAAA,GAAA,GAEzBz0B,YAAW,KACS5G,EAAA,CACZE,QAASs8B,EAAyBh9B,QAClCW,aAAc,IACjB,GACF,IAAG,EAyGsD2rC,CAAiBpE,GAC7Cj+B,SAAU25B,OAIlBn9B,EAAAxB,kBAAAM,IAAC2nC,GAAa,IAAGxkC,UAMzC,EAIFwkC,GAAexkC,IACjB,MAAM2tB,iBAAEA,GAAqB3tB,GAAS,IAE9B8tB,gBAAiBkX,EAA0BC,eAAgBC,GAA4BvX,GAAoB,GAG/G,SAAApxB,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,sCACXqB,SAAA,yBAAC,MAAA,CAAIrB,UAAU,4CAA4C8oB,wBAAyB,CAAEC,OAAQ0gB,GAA4B,wBAC1HzoC,kBAAAM,IAAC,MAAA,CACGtB,UAAU,kDACV8oB,wBAAyB,CAAEC,OAAQ4gB,GAA2B,+DAEtE,8BpEtrE4BllC,GACxBnD,EAAAA,kBAAAA,IAAA2yB,GAAA,CAAmBC,WAAW,oBAAqBzvB,6BsEL9BA,IAC7B,MAAMmI,YAAEA,EAAawF,YAAAA,GAAgBxW,EAAMmR,WAA2BC,EAAAA,gBAE9DmF,cAAeymB,GAA6BhsB,GAAe,CAAA,GAE7D4S,KAAEA,EAAO,KAAMne,SAAAA,EAAAoqB,iBAAUA,EAAkBlZ,mBAAAA,EAAAC,sBAAoBA,EAAuBkZ,qBAAAA,EAAA+G,gBAAsBA,EAAiBpT,MAAAA,GAAU5a,GAAS,CAAA,EAGtJ,IAAIwzB,EAA6B,KAC7B2R,EAAuC,KACvCC,EAAgC,KAChCC,EAAqC,KACzCluC,EAAM+a,SAASzY,IAAImD,GAAWwV,IAC1B,GAAIjb,EAAM08B,eAAezhB,IAAUva,EAAWua,EAAMrQ,MAAO,CACjD,MAAA+xB,YAAEA,wBAAawR,EAAuBC,eAAAA,EAAAC,qBAAgBA,IAA8B,MAAApzB,OAAA,EAAAA,EAAOpS,QAAS,GAEtG8zB,GAAej8B,EAAWi8B,KAAsCN,EAAAM,GAChEwR,GAAyBztC,EAAWytC,KAA0DH,EAAAG,GAC9FC,GAAkB1tC,EAAW0tC,KAA4CH,EAAAG,GACzEC,GAAwB3tC,EAAW2tC,KAAuDH,EAAAG,EAClG,KAGJ,MAAO5pB,EAAQC,GAAa1kB,EAAM2E,SAAS,CACvCyB,MAAO,EACPC,OAAQ,IAGZrG,EAAME,WAAU,KACP88B,GAGStY,EADD,OAATd,EACU,CACNxd,MAAO,GACPC,OAAQ,IAEI,OAATud,EACG,CACNxd,MAAO,GACPC,OAAQ,IAGF,CACND,MAAO,GACPC,OAAQ,IAEhB,GACD,CAAC22B,IAoBCt3B,OAAAA,EAAAA,kBAAAA,IAAA,OAAA,CAAKtB,UAAU,qCAAqCmE,QAlBhC,KACC,oBAAXrH,QAA0BA,OAAOotC,oCACxCptC,OAAOotC,mCAAmC,CACtCze,mBACAlZ,qBACAC,wBACAkZ,uBACAtZ,cACA6lB,wBACA2R,kCACAC,2BACAC,gCACArX,kBACApT,SACH,EAKDhe,WAACC,kBAAAA,IAAA8H,GAAA,IAAeiX,EAAQ1Z,MAAM,kBAClC,gCCzD6B,uDACjC,MAAMiG,YAAEA,GAAgBhR,EAAMmR,WAA2BC,EAAaA,gBAE9DmF,cAAeymB,GAA6BhsB,GAAe,CAAA,GAE5DkB,EAAWC,GAAgBnS,EAAM2E,UAAS,IAC1C4pC,EAAUC,GAAexuC,EAAM2E,UAAS,IACxCwX,EAASD,GAAclc,EAAM2E,SAAS,KACtC8pC,EAAqBC,GAA0B1uC,EAAM2E,SAAS,KAC9DgqC,EAAmBC,GAAwB5uC,EAAM2E,SAAS,KAC1DymB,EAAayjB,GAAkB7uC,EAAM2E,SAAS,CAAA,IAC9C41B,EAAiBC,GAAsBx6B,EAAM2E,SAAc,CAAA,IAC3DmqC,EAAoBC,GAAyB/uC,EAAM2E,SAAc,CAAA,IACjEqqC,EAAiBC,IAAsBjvC,EAAM2E,SAAS,KACtDkyB,GAAiBqY,IAAsBlvC,EAAM2E,SAAS,KACtD6xB,GAAkB2E,IAAuBn7B,EAAM2E,SAAc,CAAA,IAC7D8S,GAAiB03B,IAAsBnvC,EAAM2E,SAAS,CACzDkrB,iBAAmBgG,IAAD,EAClBlf,mBAAqBkf,IAAD,EACpBjf,sBAAwBif,IAAD,EACvB/F,qBAAuB+F,IAAD,EACtBrf,YAAa,KACb6lB,sBAAuB,KACvB2R,gCAAiC,KACjCC,yBAA0B,KAC1BC,8BAA+B,KAC/BzqB,MAAO,CAAC,IAGNpH,GAAiBrc,EAAMC,OAAyB,MAEhDilB,GAAqBrlB,EAAY,CAAEsc,YAEnCizB,GAAoBxxC,MAAOgD,gCAC7B,MAAMpC,KAAEA,EAAM8pC,SAAAA,GAAW,EAAO+G,oBAAAA,GAAsB,GAAUzuC,EAEhEuR,GAAa,GAEb,MAAMgoB,cAAEA,EAAekD,KAAAA,EAAA/C,YAAMA,EAAap1B,QAAAA,EAAAg2B,kBAASA,GAAsB18B,EACnE8wC,GAAa,OAAAzqC,EAAA,MAAAK,OAAA,EAAAA,EAAS6kB,aAATllB,EAAAA,EAAiByqC,aAAc,CAAA,EAE9C,IAAAhxC,EACAsE,EAAO,CACP06B,QAASD,EAAK/6B,KAAKi7B,IACT,MAAAjyB,MAAEA,GAAUiyB,EAEd,IAAAK,EAAiBtyB,EAAM/L,SAAS46B,GAChC2D,EAAmB,GAKhB,OAHU,MAAbxD,OAAa,EAAAA,EAAA75B,SAAyBq9B,EAAA5N,KAAK,gBAAgBoK,MAC1DY,GAAmB4C,EAAiB5N,KAAK,mCAEvC,CACH6N,SAAUzyB,EACV0yB,EAAG7hB,EACH8hB,YAAaL,EAAiB,EAAI,EAClCv+B,OAAQu+B,EAAiBE,EAAiBI,KAAK,SAAW,GAAA,KAOtE,GAFW5/B,QAAM2rB,GAAYrnB,IAExBtE,EAAU,OAET,MAAA6/B,QAAEA,GAAY7/B,EAEhB,IAAAixC,QAA2BpR,WAAS9+B,QAAO,EAAG0+B,oBAAoBA,WAAUx+B,SAAS46B,KAErFmO,UAAYnsB,WAAS1b,SACPypB,GAAA,CACV/N,UACAgO,aAAa,OAAAjX,EAAAq8B,EAAyB,SAAzB,EAAAr8B,EAA6BmrB,YAAa,IAI/D,IAAImR,GACA,OAAAv3B,EAAA,MAAAkmB,OAAA,EAAAA,EACM9+B,QAAO,EAAG0+B,gBAAqB,MAAAA,OAAA,EAAAA,EAAUx+B,SAAS46B,YADxD,EAAAliB,EAEM3V,KAAKuR,IACG,MAAAkqB,SAAEA,GAAalqB,GAEfrR,KAAEA,EAAAoI,KAAMA,GAAe,MAANyyB,OAAM,EAAAA,EAAAkB,MAAK,EAAGjzB,WAAiBA,EAAM/L,SAASw+B,KAE9D,MAAA,IACAlqB,EAECrR,KAAMA,GAAQ,GACdoI,KAAMA,GAAQ,GAClB,MAEF,GAEV6kC,GAAwD,MAA1BF,OAA0B,EAAAA,EAAA9uC,QAAS,OAAAgY,EAAA82B,EAAyB,SAAzB,EAAA92B,EAA6B4pB,KAAO,GACrGqN,EAAwBvzB,EAAQ1b,QAA6B,MAAAgvC,OAAA,EAAAA,EAA6BhvC,QAAuB,GAAd,YAA1D,iBAMzCkvC,EAJ0B/gC,SACzBuN,EAAQ1b,QAAUsB,OAAOC,KAAKstC,GAAY7uC,SAAU,OAAA6d,EAAA,OAAA5F,EAAA42B,EAAWI,WAAXh3B,EAAkC4G,eAAlChB,EAAAA,EAA4CwV,UAAU,OAAAmH,EAAA,OAAAvc,EAAA,OAAAH,EAAA+wB,EAAWI,SAAXnxB,EAAAA,EAAkCe,eAAlC,EAAAZ,EAA4CkxB,aAA5C3U,EAAkDx6B,SAGzG,OAAA86B,EAAA,OAAAH,EAAAkU,EAAWI,SAAX,EAAAtU,EAAkC9b,eAAlCic,EAAAA,EAA4CqU,KAAOH,EAE3G,GAAIJ,EAAqB,CACrB,IAAIQ,EAAyBF,EAAwBrtC,KAAI,EAAGjC,QAAcA,IACtEyvC,OjC9C0BlyC,OAAOmyC,EAAUr8B,KACvD,IAAIs8B,EAAaD,EAAIztC,KAAK2tC,GAAc7vC,EAAe6vC,KACnDt8B,EAAgBD,GAAwC,oBAAjB1V,eAA6C,MAAdA,kBAAc,EAAAA,aAAA4V,QAAQzY,KAAoC,GAEhI2C,EAAM,GAAGrD,qBAA2Bu1C,EAAW9R,KAAK,QAAQhhC,EAAoBC,iBAAiBwW,IAErG,aAAarS,EAAS,CAClBxD,MACAI,OAAQ,MACRqD,cAAeoS,EACfjS,iBAAiB,IAEhBrD,MAAMwV,GACIA,IAEVC,OAAM,KACH,GACH,EiC6BgCo8B,CAAsBL,GAEZ,OAAnC,OAAA3S,EAAA,MAAA4S,OAAA,EAAAA,EAAkB97B,aAAlB,EAAAkpB,EAA0BjpB,OAAc46B,QAAeiB,WAAkBtxC,KAAI,MAEjFqwC,EAAe,CAAE,GAGrBH,EAAuBiB,GACvBf,EAAqBY,GACrBP,GAAmBS,GACnBv9B,GAAa,EAAK,EAgFlB,OA1DJnS,EAAME,WAAU,KACP88B,IAEiB,oBAAX97B,SACPA,OAAOotC,mCAAqC,EACxCze,mBAAmB,SACnBlZ,qBAAqB,SACrBC,wBAAwB,SACxBkZ,uBAAuB,SACvBtZ,cAAc,KACd6lB,wBAAwB,SACxB2R,kCAAkC,SAClCC,2BAA2B,SAC3BC,gCAAgC,SAChCrX,gBAAAA,EAAkB,GAClBpT,QAAQ,CAAC,MAET+qB,GAAY,GACOW,GAAA,CACftf,mBACAlZ,qBACAC,wBACAkZ,uBACAtZ,cACA6lB,wBACA2R,kCACAC,2BACAC,gCACAzqB,UAEJyrB,GAAmBrY,EAAe,GAjDvBj5B,OAAO+gC,UACtB,IAAArgC,EAIJ,GAFWA,EAAAuE,KAAKgS,MAAM8pB,IAEjBrgC,EAAU,OAET,MAAA4G,QAAEA,EAASiO,UAAAA,GAAc7U,EAE/Bk8B,EAAmBt1B,GACG6pC,EAAA,OAAAlqC,EAAA,MAAAK,OAAA,EAAAA,EAAS6kB,aAAT,EAAAllB,EAAiByqC,YACvCnU,GAAoBhoB,SAEdi8B,GAAkB,CACpB5wC,KAAMF,EACN+wC,qBAAqB,GACxB,EAqCDt6B,CAAe/W,aAAa4V,QAAQzY,IAA6C,MAAI,GACtF,CAAC6hC,IAEJh9B,EAAME,WAAU,KAEDquC,EAAAzpC,SAASlC,KAAKwe,UAAUC,IAAI,4BAA8Bvc,SAASlC,KAAKwe,UAAUxL,OAAO,2BAA0B,GAC/H,CAAC24B,IAEJvuC,EAAME,WAAU,KACZ,GAAI0O,QAAQsW,KAAgC,MAAfA,QAAe,EAAAA,GAAA/I,WAAYA,GAAU,CACxD,MAAA+iB,EAAyBr8B,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAA6C,IAEtGgkC,EAAkB53B,YAAW,KAC3B23B,GACkBkQ,GAAA,CACd5wC,KAAM0gC,EACNoJ,UAAU,GACb,GACN,KACI,MAAA,IAAM9gC,aAAa23B,EAC9B,IACD,CAAChjB,4BAGCg0B,EAAAA,0CAAA,CAAYzxC,KAAM6vC,EAAU/oC,aAAcgpC,EACvC/oC,SAAAJ,EAAAA,kBAAAA,KAAC+qC,EAAOC,0CAAP,CACG5qC,SAAA,CAAAC,EAAAA,kBAAAA,IAAC4qC,EAAOC,0CAAP,CAAensC,UAAU,0BACzBsB,EAAAA,kBAAAA,IAAA4qC,EAAAC,0CAAA,CAAensC,UAAU,+BAC1BiB,EAAAA,kBAAAA,KAACmrC,EAAOC,0CAAP,CAAersC,UAAU,0DAA0D,oBAAkB,OAAAS,EAAiB,MAAA01B,OAAA,EAAAA,EAAAxQ,aAAQ,EAAAllB,EAAA66B,SAAU,GACrIj6B,SAAA,GAAAL,kBAAAM,IAAC2I,GAAA,CACGzD,KAAK,OACL0D,6BAAOd,GAAW,CAAApH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/CmB,aAAa,OAAAgH,EAAA,MAAAsjB,QAAA,EAAAA,GAAkBpa,8BAAlB,EAAAlJ,EAA2CE,SAAU,qBAClEtT,MAAOqc,EACP1N,SAAU4N,GACVlS,SAAU,EAAGrK,WAAiBoc,EAAWpc,GACzC4wC,UAAYC,IAEJ,GAAc,UAAdA,EAAMzuC,IAAiB,CACvB,MAAMuhB,EAAahM,GAAgBgM,MAC7BwT,GAAe,MAAAxT,OAAA,EAAAA,EAAOtH,SAAUsH,EAAMtH,QAAUpf,EAChD6zC,EAAoB,GAAG/Z,IAAmB/5B,KAA6Bm6B,KAAgB9a,IAE7Fjb,OAAOyT,SAASvG,KAAOwiC,CAC3B,GAEJxsC,UAAU,uDACVmK,gBAAc,4BAGjB,MAAA,CAAInK,UAAU,wDACVqB,WACIC,EAAAA,kBAAAA,IAAAwsB,GAAA,CACGzsB,SAACmB,EAAAxB,kBAAAM,IAAA,MAAA,CAAItB,UAAU,gEACXqB,kCAAC,MAAA,CAAIrB,UAAU,6DACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,uJACVqB,SAAA,CAAC,EAAG,EAAG,GAAGnD,KAAKgJ,GACXjG,EAAAA,kBAAAA,KAAArF,EAAM0K,SAAN,CACGjF,SAAA,GAAAL,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,QACHlM,QAAQtD,IAAU,CACnBrG,MAAO,CAAE2uB,UAAW,aAG5BxuB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACT2rC,cAAe,SACfj2B,eAAgB,SAChBD,IAAK,OACLiZ,UAAW,QAGdnuB,UAAC,EAAG,EAAG,GAAGnD,KAAKgJ,GACZ5F,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KAER7V,MAAO,CACH+6B,SAAU,UAFT10B,SAzBAA,OAmC5B5F,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,0EACXqB,SAACC,EAAAA,kBAAAA,IAAAmV,GAAgB8U,YAAhB,CAA4B3U,MAAO,EAAGpQ,KAAK,oBAM5DlF,EAAAN,kBAAAM,IAACwsB,GACG,CAAAzsB,SAAAC,wBAAC,MAAI,CAAAtB,UAAU,gEACXqB,SAAAJ,EAAAD,kBAAAC,KAAC,MAAI,CAAAjB,UAAU,6DACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,wEACVqB,SAAA,CAAA1D,OAAOC,KAAK8sC,GAAoBruC,SACjC,OAAAgY,EAAA,OAAmBR,EAAA62B,EAAAE,SAAnB,EAAA/2B,EAAqC2e,eAArC,EAAAne,EAA+Cqb,UAC/C,OAAAvV,EAAA,OAAmBD,EAAnB,OAAmB5F,EAAAo2B,EAAAE,SAAkB,EAAAt2B,EAAAke,mBAAUgZ,WAA/C,EAAArxB,EAAqD9d,QACjDiF,EAAAN,kBAAAM,IAAC2wB,GAAA,CACGC,eAAgB7e,GAAgBu2B,gCAChCpX,SAAUkY,EAAmBE,GAAiBpY,SAASgZ,KACvD7kB,qBAAsBtT,GAAgBjB,YACtC0U,mBAAoBqjB,EACpBpjB,sBAAuBqjB,EACvB3X,mBACApT,MAAOhM,GAAgBgM,QAE3B,KAEHkrB,GACGA,EAAkBrsC,KAAI,CAACC,EAAW+I,KAC9B,MAAM+2B,KAAEA,EAAA7/B,KAAMA,EAAMoI,KAAAA,GAASrI,EAGzBmD,OAAAA,EAAAN,kBAAAM,IAAC1F,EAAM0K,SAAN,CACGjF,WAAAL,kBAAAM,IAAC2wB,GAAA,CACGC,eAAgB7e,GAAgBw2B,yBAChCzrC,OACAoI,OACAO,MAAOk3B,EACPtX,qBAAsBtT,GAAgBjB,YACtC0U,mBAAoBqjB,EACpBpjB,sBAAuBqjB,EACvBhY,uBATalrB,EAWrB,SAIhBjG,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,0EACVqB,SAAA,EAAA,MAAAgpC,OAAA,EAAAA,EAAqBhuC,QAClBiF,wBAAC,MAAI,CAAAtB,UAAU,gEACXqB,SAAAC,EAAAN,kBAAAM,IAACiqB,GAAA,CACGpF,UAAU,iBACV3f,KAAK,SACLpM,KAAMiwC,EAAoBnsC,KAAKC,IAC3B,MAAM+N,SAAEA,KAAawJ,GAAYvX,GAAQ,CAAA,EAElC,MAAA,CACHuX,UACAxJ,WAAA,IAGRsa,QAAS,CACLU,YAAa,OAAA5M,EAAiB,MAAA6b,OAAA,EAAAA,EAAAxQ,aAAQ,EAAArL,EAAA4M,YACtCC,SAAU,OAAA0P,EAAiB,MAAAV,OAAA,EAAAA,EAAAxQ,aAAQ,EAAAkR,EAAA1P,SACnCC,WAAY,OAAA4P,EAAiB,MAAAb,OAAA,EAAAA,EAAAxQ,aAAQ,EAAAqR,EAAA5P,WACrCE,4BAA+C,MAAlB8K,QAAkB,EAAAA,GAAAiN,YAC/C9X,6BAA8B6K,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3L,sBAAsB,EACtBE,qBAAsBtT,GAAgBjB,YACtCwU,MAAOvT,GAAgB4kB,sBACvBxM,iBAAkBpY,GAAgBoY,iBAClClZ,mBAAoBc,GAAgBd,mBACpCC,sBAAuBa,GAAgBb,sBACvCkZ,qBAAsBrY,GAAgBqY,qBACtC5E,mBAAoBqjB,EACpBpjB,sBAAuBqjB,EACvBpjB,kBAGRrpB,OAAOC,KAAK8sC,GAAoBruC,SAClC,OAAAy8B,EAAA,OAAmB3B,EAAAuT,EAAAE,SAAnB,EAAAzT,EAAqCjc,eAAU,EAAA4d,EAAApJ,UAC/C,OAAA8L,EAAA,OAAmBH,EAAnB,OAAmBF,EAAAuP,EAAAE,SAAnB,EAAAzP,EAAqCjgB,eAArC,EAAAmgB,EAA+CmQ,WAAM,EAAAhQ,EAAAn/B,QAE/CmG,EAAAxB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,0FACXqB,SAAA,GAAAC,kBAAAA,IAAC,QAAKD,SAAK,UAAO,yBAAoBC,kBAAAA,IAAC,QAAMD,SAAQ0W,IAAO,uBAEhE/W,kBAAAM,IAACiqB,GAAA,CACGpF,UAAU,iBACV3f,KAAK,SACLpM,KAAMswC,EAAmBE,GAAiB1vB,SAASswB,KAAKttC,KAAKC,IACzD,MAAM+N,SAAEA,KAAawJ,GAAYvX,GAAQ,CAAA,EAElC,MAAA,CACHuX,UACAxJ,WAAA,IAGRsa,QAAS,CACLU,YAAa,OAAAuU,EAAiB,MAAAtF,OAAA,EAAAA,EAAAxQ,aAAQ,EAAA8V,EAAAvU,YACtCC,SAAU,OAAA2U,EAAiB,MAAA3F,OAAA,EAAAA,EAAAxQ,aAAQ,EAAAmW,EAAA3U,SACnCC,WAAY,OAAA4U,EAAiB,MAAA7F,OAAA,EAAAA,EAAAxQ,aAAQ,EAAAqW,EAAA5U,WACrCE,4BAA+C,MAAlB8K,QAAkB,EAAAA,GAAAiN,YAC/C9X,6BAA8B6K,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3L,sBAAsB,EACtBE,qBAAsBtT,GAAgBjB,YACtCwU,MAAOvT,GAAgB4kB,sBACvBxM,iBAAkBpY,GAAgBoY,iBAClClZ,mBAAoBc,GAAgBd,mBACpCC,sBAAuBa,GAAgBb,sBACvCkZ,qBAAsBrY,GAAgBqY,qBACtC5E,mBAAoBqjB,EACpBpjB,sBAAuBqjB,OAK3BnpC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,wBAAC,MAAI,CAAAtB,UAAU,8DAA+DqB,UAAA,MAAA+wB,QAAA,EAAAA,GAAkB1c,UAAW,qCAC1G,MAAI,CAAA1V,UAAU,sEACVqB,UAAA,MAAA+wB,QAAA,EAAAA,GAAkBsX,iBAAkB,8BAI3B,MAArBW,OAAqB,EAAAA,EAAAhuC,SACrBsB,OAAOC,KAAK8sC,GAAoBruC,SAC7B,OAAAigC,EAAA,OAAmBD,EAAAqO,EAAAE,SAAnB,EAAAvO,EAAqCnhB,eAArC,EAAAohB,EAA+C5M,UAC/C,OAAAmN,EAAA,OAAmBJ,EAAnB,OAAmBD,EAAAkO,EAAAE,SAAnB,EAAApO,EAAqCthB,eAArC,EAAAuhB,EAA+C+O,WAA/C,EAAA3O,EAAqDxgC,QACrDiF,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,yDACXqB,WAAAL,kBAAAM,IAAC2wB,GAAA,CACGvJ,UAAWrV,GAAgBy2B,8BAC3B/xB,UACA4O,qBAAsBtT,GAAgBjB,YACtC0U,mBAAoBqjB,EACpBpjB,sBAAuBqjB,EACvB3X,mBACApT,MAAOhM,GAAgBgM,MACvB+S,wBAGR,wBASxC,qDC/ZqB3tB,oDACzB,MAAMmI,YAAEA,EAAawF,YAAAA,GAAgBxW,EAAMmR,WAA2BC,EAAAA,gBAE9DmF,cAAeymB,GAA6BhsB,GAAe,CAAA,GAE7D5K,MAAEA,EAAQ,QAAAX,SAASA,EAAUoqB,iBAAAA,EAAAlZ,mBAAkBA,wBAAoBC,EAAuBkZ,qBAAAA,EAAA+G,gBAAsBA,EAAiBpT,MAAAA,GAAU5a,EAGjJ,IAAIwzB,EAA6B,KAC7B2R,EAAuC,KACvCC,EAAgC,KAChCC,EAAqC,KACzCluC,EAAM+a,SAASzY,IAAImD,GAAWwV,IAC1B,GAAIjb,EAAM08B,eAAezhB,IAAUva,EAAWua,EAAMrQ,MAAO,CACjD,MAAA+xB,YAAEA,wBAAawR,EAAuBC,eAAAA,EAAAC,qBAAgBA,IAA8B,MAAApzB,OAAA,EAAAA,EAAOpS,QAAS,GAEtG8zB,GAAej8B,EAAWi8B,KAAsCN,EAAAM,GAChEwR,GAAyBztC,EAAWytC,KAA0DH,EAAAG,GAC9FC,GAAkB1tC,EAAW0tC,KAA4CH,EAAAG,GACzEC,GAAwB3tC,EAAW2tC,KAAuDH,EAAAG,EAClG,KAGJ,MAAOn8B,EAAWC,GAAgBnS,EAAM2E,UAAS,IAC1CwX,EAASD,GAAclc,EAAM2E,SAAS,KACtC8pC,EAAqBC,GAA0B1uC,EAAM2E,SAAS,KAC9DgqC,EAAmBC,GAAwB5uC,EAAM2E,SAAS,KAC1D41B,GAAiBC,IAAsBx6B,EAAM2E,SAAc,CAAA,IAC3DmqC,GAAoBC,IAAyB/uC,EAAM2E,SAAc,CAAA,IACjEqqC,GAAiBC,IAAsBjvC,EAAM2E,SAAS,KACtDmsC,GAAkBC,IAAuB/wC,EAAM2E,UAAS,IACxD6xB,GAAkB2E,IAAuBn7B,EAAM2E,SAAc,CAAA,GAE9DugB,GAAqBrlB,EAAY,CAAEsc,YAEnCE,GAAiBrc,EAAMC,OAAO,MAE9BmvC,GAAoBxxC,MAAOY,EAAW8pC,GAAW,+BACnD,IAAKnsB,EAAQ1b,OAAQ,OAErB0R,GAAa,GAEb,MAAMgoB,cAAEA,EAAekD,KAAAA,EAAA/C,YAAMA,EAAap1B,QAAAA,EAAAg2B,kBAASA,GAAsB18B,EACnE8wC,GAAa,OAAAzqC,EAAA,MAAAK,OAAA,EAAAA,EAAS6kB,aAATllB,EAAAA,EAAiByqC,aAAc,CAAA,EAE9C,IAAAhxC,EACAsE,EAAO,CACP06B,QAASD,EAAK/6B,KAAKi7B,IACT,MAAAjyB,MAAEA,GAAUiyB,EAEd,IAAAK,EAAiBtyB,EAAM/L,SAAS46B,GAChC2D,EAAmB,GAKhB,OAHU,MAAbxD,OAAa,EAAAA,EAAA75B,SAAyBq9B,EAAA5N,KAAK,gBAAgBoK,MAC1DY,GAAmB4C,EAAiB5N,KAAK,mCAEvC,CACH6N,SAAUzyB,EACV0yB,EAAG7hB,EACH8hB,YAAaL,EAAiB,EAAI,EAClCv+B,OAAQu+B,EAAiBE,EAAiBI,KAAK,SAAW,GAAA,KAOtE,GAFW5/B,QAAM2rB,GAAYrnB,IAExBtE,EAAU,OAET,MAAA6/B,QAAEA,GAAY7/B,EAEhB,IAAAixC,QAA2BpR,WAAS9+B,QAAO,EAAG0+B,oBAAoBA,WAAUx+B,SAAS46B,KAErFmO,UAAYnsB,WAAS1b,SACPypB,GAAA,CACV/N,UACAgO,aAAa,OAAAjX,EAAAq8B,EAAyB,SAAzB,EAAAr8B,EAA6BmrB,YAAa,IAI/D,IAAImR,GACA,OAAAv3B,EAAA,MAAAkmB,OAAA,EAAAA,EACM9+B,QAAO,EAAG0+B,gBAAqB,MAAAA,OAAA,EAAAA,EAAUx+B,SAAS46B,YADxD,EAAAliB,EAEM3V,KAAKuR,IACG,MAAAkqB,SAAEA,GAAalqB,GAEfrR,KAAEA,EAAAoI,KAAMA,GAAe,MAANyyB,OAAM,EAAAA,EAAAkB,MAAK,EAAGjzB,WAAiBA,EAAM/L,SAASw+B,KAE9D,MAAA,IACAlqB,EAECrR,KAAMA,GAAQ,GACdoI,KAAMA,GAAQ,GAClB,MAEF,GAEV6kC,GAAwD,MAA1BF,OAA0B,EAAAA,EAAA9uC,QAAS,OAAAgY,EAAA82B,EAAyB,SAAzB,EAAA92B,EAA6B4pB,KAAO,GACrGqN,EAAwBvzB,EAAQ1b,QAA6B,MAAAgvC,OAAA,EAAAA,EAA6BhvC,QAAuB,GAAd,YAA1D,iBAEzCuwC,EAA0BpiC,SACzBuN,EAAQ1b,QAAUsB,OAAOC,KAAKstC,GAAY7uC,SAAU,OAAA6d,EAAA,OAAA5F,EAAA42B,EAAWI,WAAXh3B,EAAkC4G,eAAlChB,EAAAA,EAA4CwV,UAAU,OAAAmH,EAAA,OAAAvc,EAAA,OAAAH,EAAA+wB,EAAWI,SAAXnxB,EAAAA,EAAkCe,eAAlC,EAAAZ,EAA4CkxB,aAA5C3U,EAAkDx6B,SAGjKiuC,EAAuBsC,EAA0B,OAAAzV,EAAA,OAAAH,EAAAkU,EAAWI,SAAXtU,EAAAA,EAAkC9b,eAAlC,EAAAic,EAA4CqU,KAAOH,GACpGb,EAAqBY,GACrBP,GAAmBS,GACnBv9B,GAAa,EAAK,EAmBtBnS,EAAME,WAAU,KACP88B,GAjBcp/B,OAAO+gC,UACtB,IAAArgC,EAIJ,GAFWA,EAAAuE,KAAKgS,MAAM8pB,IAEjBrgC,EAAU,OAET,MAAA4G,QAAEA,EAASiO,UAAAA,GAAc7U,EAE/Bk8B,GAAmBt1B,GACG6pC,GAAA,OAAAlqC,EAAA,MAAAK,OAAA,EAAAA,EAAS6kB,aAAT,EAAAllB,EAAiByqC,YACvCnU,GAAoBhoB,GAEhBgJ,EAAQ1b,cAAc2uC,GAAkB9wC,EAAQ,EAMpDyW,CAAe/W,aAAa4V,QAAQzY,IAA6C,KAAI,GACtF,CAAC6hC,IAEJh9B,EAAME,WAAU,KACZ,GAAI0O,QAAQsW,KAAgC,MAAfA,QAAe,EAAAA,GAAA/I,WAAYA,GAAU,CACxD,MAAA+iB,EAAyBr8B,KAAKgS,MAAM7W,aAAa4V,QAAQzY,IAA6C,IAEvGghB,GAAS40B,IAAoB,GAE5B,MAAA5R,EAAkB53B,YAAW,KAC3B4U,GAAS40B,IAAoB,GAE7B7R,GAAwBkQ,GAAkBlQ,GAAwB,EAAI,GAC3E,KACI,MAAA,IAAM13B,aAAa23B,EAC9B,IACD,CAAChjB,IAEJnc,EAAME,WAAU,KACO4wC,GAAAhsC,SAASlC,KAAKwe,UAAUC,IAAI,8BAAgCvc,SAASlC,KAAKwe,UAAUxL,OAAO,6BAA4B,GAC3I,CAACk7B,KAEJ,MAAMG,GAAe,CACjBjR,SAAU55B,GAITf,OAAAA,EAAAA,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,oDAAoDa,MAAOgsC,GACrExrC,SAAA,CAAmBqrC,GAAAprC,EAAAN,kBAAAM,IAAC,OAAItB,UAAU,qBAAqBmE,QAAS,IAAMwoC,IAAoB,KAAiB,OAE5G3rC,kBAAAM,IAAC2I,GAAA,CACGzD,KAAK,OACL6D,SAAU4N,GACV/N,6BAAOd,GAAW,CAAApH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/CmB,aAAa,OAAArH,EAAA,MAAA2xB,QAAA,EAAAA,GAAkBpa,8BAAlB,EAAAvX,EAA2CuO,SAAU,qBAClEtT,MAAOqc,EACPhS,SAAU,EAAGrK,WAAiBoc,EAAWpc,GACzC4wC,UAAYC,IAEJ,GAAc,UAAdA,EAAMzuC,IAAiB,CACvB,MAAM+0B,GAAe,MAAAxT,OAAA,EAAAA,EAAOtH,SAAUsH,EAAMtH,QAAUpf,EAChD6zC,EAAoB,GAAG/Z,GAAmB/5B,KAA6Bm6B,KAAgB9a,IAE7Fjb,OAAOyT,SAASvG,KAAOwiC,CAC3B,GAEJpiC,aAAc,IAAM0N,EAAW,IAC/Bg1B,QAAS,KACD/0B,GAAS40B,IAAoB,EAAI,EAEzCxiC,gBAAc,IAGlB7I,EAAAA,kBAAAA,IAACwK,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAASygC,GAAmB,UAAY,SAAUxgC,SAAUhB,GAAmBlL,UAAU,mDACjHqB,SACGyM,EAAAxM,EAAAN,kBAAAM,IAACwsB,IACGzsB,SAACmB,EAAAxB,kBAAAC,KAAA,MAAA,CAAIjB,UAAU,wDACXqB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAtB,UAAU,6IACVqB,SAAA,CAAC,EAAG,EAAG,GAAGnD,KAAKgJ,GACXjG,EAAAA,kBAAAA,KAAArF,EAAM0K,SAAN,CACGjF,SAAA,GAAAL,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,QACHlM,QAAQtD,IAAU,CACnBrG,MAAO,CAAE2uB,UAAW,aAG5BxuB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACT2rC,cAAe,SACfj2B,eAAgB,SAChBD,IAAK,OACLiZ,UAAW,QAGdnuB,UAAC,EAAG,EAAG,GAAGnD,KAAKgJ,GACZ5F,EAAAN,kBAAAM,IAACmV,GAAgBrK,KAAhB,CACGpK,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN+P,QAAQ,KAER7V,MAAO,CACH+6B,SAAU,UAFT10B,SAzBAA,OAmC5B5F,EAAAN,kBAAAM,IAAA,MAAA,CAAItB,UAAU,qEACXqB,SAACC,EAAAA,kBAAAA,IAAAmV,GAAgB8U,YAAhB,CAA4B3U,MAAO,EAAGpQ,KAAK,iBAKvDlF,EAAAN,kBAAAM,IAAAwsB,GAAA,CAAWhgB,YACRzM,WACIL,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,wDACXqB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,mEACVqB,SAAA,CAAA1D,OAAOC,KAAK8sC,IAAoBruC,SAAU,OAAAwX,EAAA,OAAmB/E,EAAA47B,GAAAE,UAAnB,EAAA97B,EAAqC0jB,eAArC,EAAA3e,EAA+C6b,UAAU,OAAAxV,EAAA,OAAmB5F,EAAnB,OAAmBD,EAAAq2B,GAAAE,UAAkB,EAAAv2B,EAAAme,mBAAUgZ,WAA/C,EAAAtxB,EAAqD7d,QACrJiF,EAAAN,kBAAAM,IAAC2wB,GAAA,CACGC,eAAgB0X,EAChBpX,SAAUkY,GAAmBE,IAAiBpY,SAASgZ,KACvD7kB,qBAAsBvU,EACtBqgB,kBACApT,UAEJ,KAEHkrB,EAAkBrsC,KAAI,CAACC,EAAW+I,KAC/B,MAAM+2B,KAAEA,EAAA7/B,KAAMA,EAAMoI,KAAAA,GAASrI,EAGzBmD,OAAAA,EAAAN,kBAAAM,IAAC1F,EAAM0K,SAAN,CACGjF,WAAAL,kBAAAM,IAAC2wB,GAAA,CACGC,eAAgB2X,EAChBzrC,OACAoI,OACAO,MAAOk3B,EACPtX,qBAAsBvU,EACtBggB,uBAPalrB,EASrB,SAIZjG,kBAAAA,KAAC,MAAI,CAAAjB,UAAU,qEACXqB,SAAA,CAAAC,wBAAC,MAAI,CAAAtB,UAAU,iEAAkEqB,UAAA,MAAA+wB,QAAA,EAAAA,GAAkB1c,UAAW,cAC7G,MAAA20B,OAAA,EAAAA,EAAqBhuC,QACjBiF,wBAAA,MAAA,CAAItB,UAAU,2DACXqB,SAAAC,EAAAN,kBAAAM,IAACiqB,GAAA,CACGpF,UAAU,iBACV3f,KAAK,QACLpM,KAAMiwC,EAAoBnsC,KAAKC,IAC3B,MAAM+N,SAAEA,KAAawJ,GAAYvX,GAAQ,CAAA,EAElC,MAAA,CACHuX,UACAxJ,WAAA,IAGRsa,QAAS,CACLU,YAAa,OAAA/M,EAAiB,MAAAgc,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAxL,EAAA+M,YACtCC,SAAU,OAAA7M,EAAiB,MAAA6b,QAAA,EAAAA,GAAAxQ,aAAQ,EAAArL,EAAA6M,SACnCC,WAAY,OAAAyP,EAAiB,MAAAV,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAkR,EAAAzP,WACrCE,4BAA+C,MAAlB8K,QAAkB,EAAAA,GAAAiN,YAC/C9X,6BAA8B6K,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3L,sBAAsB,EACtBE,qBAAsBvU,EACtBwU,MAAOqR,EACPxM,mBACAlZ,qBACAC,wBACAkZ,2BAGR/tB,OAAOC,KAAK8sC,IAAoBruC,SAClC,OAAA86B,EAAA,OAAmBH,EAAA0T,GAAAE,UAAnB,EAAA5T,EAAqC9b,eAAU,EAAAic,EAAAzH,UAC/C,OAAA2L,EAAA,OAAmBF,EAAnB,OAAmBrC,EAAA4R,GAAAE,UAAnB,EAAA9R,EAAqC5d,eAArC,EAAAigB,EAA+CqQ,WAAM,EAAAnQ,EAAAh/B,QAE/CmG,EAAAxB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAIjB,UAAU,qFACXqB,SAAA,GAAAC,kBAAAA,IAAC,QAAKD,SAAwB,6BAAO,MAACC,kBAAAA,IAAC,UAAQD,SAAQ0W,IAAS,OAAEzW,kBAAAA,IAAC,QAAKD,SAAa,uBAEzFL,kBAAAM,IAACiqB,GAAA,CACGpF,UAAU,iBACV3f,KAAK,QACLpM,KAAMswC,GAAmBE,IAAiB1vB,SAASswB,KAAKttC,KAAKC,IACzD,MAAM+N,SAAEA,KAAawJ,GAAYvX,GAAQ,CAAA,EAElC,MAAA,CACHuX,UACAxJ,WAAA,IAGRsa,QAAS,CACLU,YAAa,OAAAsU,EAAiB,MAAArF,QAAA,EAAAA,GAAAxQ,aAAQ,EAAA6V,EAAAtU,YACtCC,SAAU,OAAAsU,EAAiB,MAAAtF,QAAA,EAAAA,GAAAxQ,aAAQ,EAAA8V,EAAAtU,SACnCC,WAAY,OAAA0U,EAAiB,MAAA3F,QAAA,EAAAA,GAAAxQ,aAAQ,EAAAmW,EAAA1U,WACrCE,4BAA+C,MAAlB8K,QAAkB,EAAAA,GAAAiN,YAC/C9X,6BAA8B6K,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3L,sBAAsB,EACtBE,qBAAsBvU,EACtBwU,MAAOqR,EACPxM,mBACAlZ,qBACAC,wBACAkZ,4BAIPpqB,EAAAA,kBAAAA,IAAA,MAAA,CAAItB,UAAU,oEAAqEqB,UAAkB,MAAlB+wB,QAAkB,EAAAA,GAAAsX,iBAAkB,iCAI9G,MAArBW,OAAqB,EAAAA,EAAAhuC,SACrBsB,OAAOC,KAAK8sC,IAAoBruC,SAAU,OAAAggC,EAAA,OAAmBL,EAAA0O,GAAAE,UAAnB,EAAA5O,EAAqC9gB,eAArC,EAAAmhB,EAA+C3M,UAAU,OAAA+M,EAAA,OAAmBD,EAAnB,OAAmBF,EAAAoO,GAAAE,UAAnB,EAAAtO,EAAqCphB,eAArC,EAAAshB,EAA+CgP,WAA/C,EAAA/O,EAAqDpgC,QACrJiF,EAAAA,kBAAAA,IAAC,MAAI,CAAAtB,UAAU,oDACXqB,WAAAL,kBAAAM,IAAC2wB,GAAA,CACGvJ,UAAWohB,EACX/xB,UACA4O,qBAAsBvU,EACtBqgB,kBACApT,QACA+S,wBAGR,cAKxB"}
|
|
1
|
+
{"version":3,"file":"sledge-react-instant-search.cjs","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/hooks/useIntersectionObserver.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share'\n};\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n // cleaning from different token\n const mainUrl = url.split('?')[0];\n const cacheMatches = await cache.matchAll();\n const filteredCaches = await cacheMatches.filter((f: any) => f.url.includes(mainUrl) && f.url !== url);\n for (const c of filteredCaches) {\n await cache.delete(c.url);\n }\n\n cache.put(url, networkResponse.clone());\n\n return networkResponse;\n });\n\n return cachedResponse || fetchedResponse;\n });\n });\n}\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import React from 'react';\n\nexport function useIntersectionObserver(options: { threshold?: number; root?: any; rootMargin?: string }) {\n const { threshold = 1, root = null, rootMargin = '0px' } = options || {};\n const [entry, setEntry] = React.useState<any>(null);\n\n const previousObserver: any = React.useRef(null);\n\n const customRef = React.useCallback(\n (node: any) => {\n if (previousObserver.current) {\n previousObserver.current.disconnect();\n previousObserver.current = null;\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(node);\n previousObserver.current = observer;\n }\n },\n [threshold, root, rootMargin]\n );\n\n return [customRef, entry];\n}\n","import { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) =>\n text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => setProgress(valueProgress), delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\n\nexport interface ISliderProps {\n value: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { value, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n value={value}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => setValueCommit?.(valueCommit)}\n onValueChange={(valueChange: number[]) => setValueChange?.(valueChange)}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {!value[1] ? null : (\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run) {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setIsLoading(false);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '') : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist, hasEntry]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, hasEntry, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <div ref={rootRef}>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const previousState: any = usePrevious({ productId });\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppProductReview || !hasEntry) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, hasEntry, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n ref={rootRef}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { stringToSlug } from '@core/lib/helper';\nimport { useIntersectionObserver } from '@core/hooks';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const { id: variant_id = '', admin_graphql_api_id: variant_admin_graphql_api_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = (\n <>\n {isComponentJsVersion ? (\n <div className=\"sledge__product-grid-entry-card\" dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div>\n ) : (\n <CardsComponent {...CardsProps} />\n )}\n </>\n );\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n backgroundColor: optionName === 'Color' ? item : null\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid-entry-card\" ref={rootRef} key={id}>\n {hasEntry && component}\n </div>\n );\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return <ProductCard item={item} key={`sledge-product-card_${index}`} handleAddToCart={handleAddToCart} clickedAddToCartId={clickedAddToCartId} {...props} />;\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid,\n Progress\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n HIERARCHICAL_FACET_OBJECT_ALIASES,\n LOCAL_STORAGE_KEY,\n MAX_LIMIT_HIERARCHICAL,\n OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement, stringToSlug } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n showOutOfStock?: boolean;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n handleChangeKeyword?(value: string): void;\n generalDataSettings?: any;\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) onClick?.();\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilters, setAllowedFilters] = React.useState(sledgeSettings?.instantsearch?.filters || []);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [showOutOfStock, setShowOutOfStock] = React.useState(sledgeSettings?.instantsearch?.show_out_of_stock);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value));\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return newItems;\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n responseGeneral = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || '');\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const { allowed_sorts, default_sort, filters, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages, hierarchical_product_type } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setAllowedFilters(filters?.length ? filters : []);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setShowOutOfStock(show_out_of_stock);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n await handleInitStates(response);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings\n } = props || {};\n\n const { collectionId, collectionName } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(Number(defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>([]);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const { button_load_more, button_loading } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n // Define selected facet hierarchical\n let hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n let facetHierarchical = hierarchicalFacetAliases.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(hierarchical_separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n // End define selected facet hierarchical\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) {\n setClickedFacets(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n }\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n };\n\n const handleFilterReset = () => {\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsLoadingButtonLoadMore(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(!hits?.length ? [] : (prevState: any) => (searchResult?.length && isLoadMore ? [...prevState, ...hits] : hits));\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n setSearchFacetDistribution(facetDistribution);\n };\n\n const handleSearchResult = async (props: { isLoadMore?: boolean; isReplaceData?: boolean; onSearch?: boolean }) => {\n if (!clickedTabIndexId) return;\n\n const { isLoadMore = false, isReplaceData = false } = props;\n\n if (isReplaceData) {\n setCurrentPage(1);\n setSearchResult([]);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let isCustom = ['variants.inventory_quantity'].includes(facet[0]);\n let isRange = ['variants.price'].includes(facet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[facet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${facet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n return filterItemHierarchicals;\n }\n\n let filterItem = `'${facet[0]}' IN ${JSON.stringify(facet[1])}`;\n\n if (isRange) filterItem = `'${facet[0]}' >= ${facet[1][0]} AND '${facet[0]}' <= ${facet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(facet[1]) && facet[1]?.length > 1) {\n filterItem = `(${facet[1]\n ?.map((item: any) => {\n return `'${facet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${facet[0]}' ${facet[1]}`;\n }\n }\n\n return filterItem;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`'tags' NOT IN ${JSON.stringify(hiddenTags)}`);\n if (collectionId) filters.push(`'collections.id' = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || hideFilterWhenOneValue) return;\n\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value\n };\n });\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) {\n setAllowedFilter(valueAllowedFilter);\n setClickedOpenFilters(valueAllowedFilter?.length ? valueAllowedFilter.map(({ value }: any) => value) : []);\n }\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isReplaceData = Boolean(\n previousState &&\n (previousState?.keyword !== keyword ||\n previousState?.clickedLimitId !== clickedLimitId ||\n previousState?.clickedSortId !== clickedSortId ||\n previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n let dataClickedFacets: any[] = [];\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const handleConditionNotUpdateFacetDistribution = (value: any) => {\n let arrPriorityFacet = ['vendor'];\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = arrFacetSelected.includes('variants.price');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n };\n\n const facetComponent = (filter: { value: any; label: string; display: string; items: any }) => {\n let { value, label, display, items } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues = [];\n\n for (const item of items) {\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution(getValue)\n ? item?.total || 0\n : searchFacetDistribution[getValue] && searchFacetDistribution[getValue][item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetCheckbox = (facetValues: any) => {\n return handleFacetValues(facetValues)?.map((facetValue: any, index: number) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n return (\n <>\n <li\n key={index}\n className={`sledge-instant-search__result-filter-checkbox-item ${\n isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ''\n }`}\n >\n <Checkbox\n id={`${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n </li>\n {isHasChildren && isChecked ? handleFacetCheckbox(children) : null}\n </>\n );\n });\n };\n\n if (display.toLowerCase() === 'slider') {\n items = defaultFacetStats[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && items?.length) {\n blockComponent = <>{handleFacetCheckbox(items)}</>;\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const handleHierarchicalFacet = ({ indexValue, filter }: { indexValue: any; filter: any }) => {\n const { hide_unrelated } = filter;\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n const facets = searchResultFacets[`${indexValue}.lvl${level}`];\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(hierarchical_separator);\n const selectedFacetHierarchical = facetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hierarchical_hiddens?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n\n // Hide item tree\n if (isWhenSelectedHideSiblings || isHidden) continue;\n\n if (level > 0) {\n parent = hierarchicalFacets;\n\n for (let i = 0; i < names.length - 1; i++) {\n let foundIndex = parent?.findIndex((f: any) => f.name.trim().toLowerCase() === names[i].trim().toLowerCase());\n\n parent = parent?.[foundIndex]?.children;\n }\n\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level: 0,\n children: []\n });\n }\n }\n\n return hierarchicalFacets;\n };\n\n const filterSettings = (filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n }): { isActive: boolean; isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = display.toLowerCase() === 'tree' ? handleHierarchicalFacet({ indexValue: value, filter }) : searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n let getFacetComponent = facetComponent({\n ...filter,\n items\n });\n\n if (display.toLowerCase() === 'swatch' && items?.length) classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n if (display.toLowerCase() === 'tree') classesUlElement.push('sledge-instant-search__result-filter-item-tree');\n\n let isLastIndex = allowedFilter.length - 1 === indexFilter;\n\n return { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings(filter);\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings(filter);\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId(value)}\n className={`${isLastIndex ? (allowedFilter.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && allowedFilter.length ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{filterHorizontalBlockComponent}</div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword, clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [keyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","getData","usePrevious","value","ref","React","useRef","useEffect","current","useIntersectionObserver","threshold","root","rootMargin","entry","setEntry","useState","previousObserver","useCallback","node","disconnect","nodeType","Node","ELEMENT_NODE","observer","IntersectionObserver","observe","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","_a","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","SliderElement.Thumb","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","defaultValue","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","isVisibleClearField","setIsVisibleClearField","Boolean","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","Badge","useProxyUrl","propsData","position","positionProp","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","defaultColorIcon","colorIcon","setColorIcon","totalWishlist","setTotalWishlist","total_data","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","proxyUrl","setProxyUrl","proxy_url","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","floating_button_type","launch_point","alert_login","alert","login_button","_b","languages","widget","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeInitSelector","sledgeWishlistSettings","Array","from","querySelectorAll","isElementDetected","isBottomFloatingType","remove","elementContainerWidget","createElement","setAttribute","appendChild","getAttribute","createRoot","render","StrictMode","Provider","productReview","instantSearch","isJsVersion","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","hasEntry","setHasEntry","rootRef","rootEntry","global","show","show_notification","location_notification","_c","notification","title_added_to_wishlist","text_added_to_wishlist","title_removed_to_wishlist","text_removed_to_wishlist","title_fail_add_to_wishlist","text_fail_add_to_wishlist","_d","_e","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","colors","main_color","background","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","layoutType","collectionId","searchParams","settings","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilters","setAllowedFilters","filters","allowedTabs","setAllowedTabs","facets","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","displaySettings","setDisplaySettings","colorSwatches","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","setLanguageSettings","_j","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","_k","hierarchical_product_type","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","setGeneralDataSettings","general","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_l","searchResultContainerRef","handleInitStates","tabs","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","join","results","facetStats","totalHits","facetDistribution","find","fromEntries","facet","hide_when_one_value","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","responseGeneral","getFirstIndex","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","INSTANT_SEARCH_SETTING","delayDebounceFn","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_m","enable_on_search","_n","layout","filterVerticalSkeleton","_o","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","ResultCategory","handleChangeTabIndex","_w","_x","handleChangeKeyword","searchParams2","set","history","pushState","pathname","collectionName","clickedLimitId","setClickedLimitId","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchFacetDistribution","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","language_result","language_search_form_placeholder","language_limit","add_to_cart","language_add_to_cart","language_filter","clear_filter","language_clear_filter","pagination_info","language_pagination_info","total_result_text","language_total_result_text","separator","hierarchical_separator","hiddens","hierarchical_hiddens","button_load_more","button_loading","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","filter_option_style","hierarchicalFacetAliases","hierarchicalFacetAlias","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","arrItem","isLoadMore","pagination_type","handleQueryStringFilter","valueClickedFacets","searchParamsObject","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","handleFilterReset","handleFilterChange","parentId","force","isRange","facets2","handleSearchResult","isReplaceData","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","arrItemHierarchicals","itemHierarchical","filterHierarchical","filterItem","isArray","sort","page","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","valueAllowedFilter","dataClickedFacets","arrFacetSelected","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","handleConditionNotUpdateFacetDistribution","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","filterSettings","indexFilter","indexValue","hide_unrelated","hierarchicalFacets","level","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","startsWith","foundIndex","findIndex","trim","handleHierarchicalFacet","isRender","classesUlElement","getFacetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","handleFacetValues","facetValues","isFacetHierarchical","labelName","getValue","counter","handleFacetCheckbox","facetValue","itemValue","isHasChildren","isChecked","defaultValueMin","defaultValueMax","getColorSwatch","facetComponent","isLastIndex","filterVerticalComponents","valueClickedOpenFilters","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","setItem","_y","_z","_A","_B","wishlists","reviews","ResultEmpty","isRefreshSearchResult","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}
|