@sledge-app/react-instant-search 1.0.88 → 1.0.89
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/hooks/useIntersectionObserver.ts","../../../core/hooks/useEffectCallback.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/Icons/FilterIcon/FilterIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../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","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useIsFirstRender.ts","../../../core/hooks/useDebounce.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 sortBy?: string;\n page?: string;\n limit?: 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 TRIGGER_BADGE: 'data-trigger-badge'\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 QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\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 WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\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_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge-counter\"]`,\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 SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\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 TOTAL_FILTER_ITEM: '{{ total_filter_item }}',\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 shopifyUrl: 'NmIxMTNlYTVlM'\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 try {\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 } catch (error) {\n caches.delete(cacheName);\n }\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 React from 'react';\n\nconst useEffectCallback = (callback: Function, dependencies: any) => {\n const memoizedCallback = React.useCallback(() => {\n if (typeof callback === 'function') {\n callback();\n }\n }, [callback]);\n\n // Run the callback whenever dependencies change\n React.useEffect(() => {\n memoizedCallback();\n }, dependencies);\n};\n\nexport default useEffectCallback;\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';\nimport { ISledgeProps } from '@core/api/global';\n\ndeclare global {\n interface Window {\n // TODO: Soon `sledgeCommonModule` is deprecated\n sledgeCommonModule: ISledgeProps;\n sledge: ISledgeProps;\n Shopify: any;\n }\n}\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' | 'xl' => {\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 = 'xl';\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\nexport const shopifyFormatMoney = (cents: any, format: string) => {\n if (typeof cents == 'string') {\n cents = cents.replace('.', '');\n }\n\n var value = '';\n var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n var formatString: string = format || '${{amount}}';\n\n function defaultOption(opt: any, def: any) {\n return typeof opt == 'undefined' ? def : opt;\n }\n\n function formatWithDelimiters(number: any, precision: any, thousands?: any, decimal?: any) {\n precision = defaultOption(precision, 2);\n thousands = defaultOption(thousands, ',');\n decimal = defaultOption(decimal, '.');\n\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n var parts = number.split('.'),\n dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\n cents = parts[1] ? decimal + parts[1] : '';\n\n return dollars + cents;\n }\n\n switch (formatString.match(placeholderRegex)?.[1]) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return formatString.replace(placeholderRegex, value);\n};\n\nexport const selectedLocaleJs = () => {\n if (typeof window !== 'undefined') {\n const shopifyLocale = window?.Shopify?.locale;\n const sledgeLocale = window?.sledgeCommonModule?.config?.locale || window?.sledge?.config?.locale;\n\n return shopifyLocale ? shopifyLocale : sledgeLocale || '';\n }\n\n return '';\n};\n\nexport const sledgeConfigJs = () => {\n let sledgeConfig: ISledgeProps['config'] = {};\n\n if (typeof window !== 'undefined') {\n sledgeConfig = window?.sledgeCommonModule?.config || window?.sledge?.config;\n\n return sledgeConfig || {};\n }\n\n return sledgeConfig;\n};\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(() => {\n if (valueProgress) setProgress(valueProgress);\n }, 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';\nimport { VirtualizedList } from '@core/components';\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 useVirtualized?: boolean;\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n selector?: string;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any }) => {\n const { index, key = '' } = virtualized || {};\n\n const { label, value } = item;\n\n const content = (\n <>\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 </>\n );\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={key || index}>\n {content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, useVirtualized = false, scrollElement, selector }: 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 {useVirtualized ? (\n <VirtualizedList\n rowCount={items?.length}\n rowRenderer={({ index, key }) =>\n rowRenderer({\n virtualized: {\n index,\n key\n },\n item: items[index],\n id,\n labelStyle\n })\n }\n scrollElement={scrollElement}\n selector={selector}\n />\n ) : (\n items.map((item: { label: string; value: string }, index: number) =>\n rowRenderer({\n virtualized: {\n index\n },\n item,\n id,\n labelStyle\n })\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","export interface IFilterIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const FilterIcon = ({ width, height, color }: IFilterIcon) => {\n return (\n <span className=\"sledge-icon__filter\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M22 6.5H16\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6 6.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M10 10C11.933 10 13.5 8.433 13.5 6.5C13.5 4.567 11.933 3 10 3C8.067 3 6.5 4.567 6.5 6.5C6.5 8.433 8.067 10 10 10Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M22 17.5H18\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M8 17.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M14 21C15.933 21 17.5 19.433 17.5 17.5C17.5 15.567 15.933 14 14 14C12.067 14 10.5 15.567 10.5 17.5C10.5 19.433 12.067 21 14 21Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\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 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 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 {value && 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 {\n className = '',\n placeholder = null,\n overridePlaceholderOnMobile = null,\n prefixLabel = null,\n prefixSelectedLabel = '',\n align = 'end',\n onChange,\n value = '',\n options = [],\n LinkComponent,\n link\n } = 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 const selectedLabelComponent = <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>;\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\n {overridePlaceholderOnMobile ? (\n <>\n <span className=\"sledge__hide-element-mobile-on-md\">{overridePlaceholderOnMobile}</span>\n <span className=\"sledge__hide-element-md-on-mobile\">{selectedLabelComponent}</span>\n </>\n ) : (\n selectedLabelComponent\n )}\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 { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL } from '@core/lib/const';\n\nexport const wishlistInfo = async ({ callback }: { callback(props: { totalWishlist: any; proxyUrl: any; data: any }): void }) => {\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 callback({\n totalWishlist: valueTotalWishlist,\n proxyUrl: valueProxyUrl,\n data: response?.data\n });\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 let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n ...(query || {})\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 { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { wishlistInfo } from './utils';\n\nexport interface IBadgeCounterProps {\n data?: any;\n}\n\nexport const BadgeCounter = (props: IBadgeCounterProps) => {\n const { data: propsData } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\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 [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleGetWishlistInfo = async () => {\n if (!propsData || (propsData && !Object.keys(propsData).length)) {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist }) => {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setIsFirstLoading(false);\n setIsLoading(false);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n } else {\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, totalWishlist);\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 as string);\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 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 || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const defaultTotalWishlist = isJsVersion ? localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || null : null;\n\n return <>{isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}</>;\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\nimport { wishlistInfo } from './utils';\nimport { BadgeCounter } from './BadgeCounter';\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, isJsVersion } = 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 [isFirstLoading, setIsFirstLoading] = 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 const [data, setData] = React.useState<any>({});\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 await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist, proxyUrl: valueProxyUrl, data: valueData }) => {\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setData(valueData);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\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 as string);\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 || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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 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';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = () => {\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\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 <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : 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 { BadgeCounterInitSelector, 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 triggerBadge?: 'default' | 'rerender';\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default' } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = 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 [mouseEnter, setMouseEnter] = React.useState(false);\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 if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\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 as string);\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 const wishlistActive = isActive || mouseEnter;\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\n className=\"sledge-wishlist__trigger-block\"\n {...(wishlistActive && {\n ['wishlist-active']: ''\n })}\n >\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 setMouseEnter(true);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n setMouseEnter(false);\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 { BadgeCounterInitSelector, 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 triggerBadge?: 'default' | 'rerender';\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading, triggerBadge }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = 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 if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\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};\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 as string);\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';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\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 { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\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 (!isRenderAppProductReview) return;\n\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, isRenderAppProductReview]);\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, LOCAL_STORAGE_KEY } 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 { shopifyFormatMoney, 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 generalDataSettings?: any;\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 generalDataSettings\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 {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = 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 const defaultSelectedVariantInventoryManagement = variants?.length && Object.hasOwn(variants[0], 'inventory_management') ? variants[0].inventory_management : null;\n const defaultSelectedVariantInventoryPolicy = variants?.length && Object.hasOwn(variants[0], 'inventory_policy') ? variants[0].inventory_policy : '';\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n const [selectedVariantInventoryManagement, setSelectedVariantInventoryManagement] = React.useState(defaultSelectedVariantInventoryManagement);\n const [selectedVariantInventoryPolicy, setSelectedVariantInventoryPolicy] = React.useState(defaultSelectedVariantInventoryPolicy);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = showOptionOutOfStock ? !Boolean(selectedVariantStock > 0 || selectedVariantInventoryManagement === null || selectedVariantInventoryPolicy === 'continue') : false;\n let isOnSale = parseFloat(String(compare_at_price)) ? parseFloat(String(compare_at_price)) > parseFloat(String(price)) : false;\n\n const { money_format } = generalDataSettings || {};\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 isInventoryQuantity = Object.hasOwn(variants[index], 'inventory_quantity') ? variants[index].inventory_quantity > 0 : false;\n const isInventoryManagement = Object.hasOwn(variants[index], 'inventory_management') ? variants[index].inventory_management === null : false;\n const isInventoryPolicy = Object.hasOwn(variants[index], 'inventory_policy') ? variants[index].inventory_policy === 'continue' : false;\n\n return {\n ...variant,\n is_out_of_stock: !Boolean(isInventoryQuantity || isInventoryManagement || isInventoryPolicy)\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 defaultSelected['data-inventory-management'] = variants[0].inventory_management;\n defaultSelected['data-inventory-policy'] = variants[0].inventory_policy;\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 const inventoryManagement = selectOption.attributes['data-inventory-management']?.value;\n const inventoryPolicy = selectOption.attributes['data-inventory-policy']?.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 selectedInput.attributes[`data-inventory-management`].value = inventoryManagement;\n selectedInput.attributes[`data-inventory-policy`].value = inventoryPolicy;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n if (inventoryManagement) setSelectedVariantInventoryManagement(inventoryManagement);\n if (inventoryPolicy) setSelectedVariantInventoryPolicy(inventoryPolicy);\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 {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\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 <div style={display_price_style} dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(price * 100, money_format) }}></div>\n {isOnSale && (\n <div\n className=\"sledge__product-grid-card-compare-at-price\"\n dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(compare_at_price * 100, money_format) }}\n ></div>\n )}\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, inventory_management, inventory_policy }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-inventory-management': inventory_management,\n 'data-inventory-policy': inventory_policy,\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 const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\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 const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\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 handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\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 handleSettings();\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 (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\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 as string);\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 React from 'react';\nimport './FlyoutSidebar.css';\nimport { CloseIcon } from '@core/components';\n\nexport interface IFlyoutSidebarProps {\n title: string;\n content: React.ReactNode;\n open: boolean;\n setOpen(value: React.SetStateAction<boolean>): void;\n}\n\nexport const FlyoutSidebar = ({ title, content, open, setOpen }: IFlyoutSidebarProps) => {\n return (\n <div\n className=\"sledge__flyout-mobile\"\n style={\n open\n ? {\n opacity: '1',\n visibility: 'visible'\n }\n : {}\n }\n >\n <div className=\"sledge__flyout-overlay\" onClick={() => setOpen(false)} />\n <div className=\"sledge__flyout-mobile-wrapper\" style={open ? { left: 0 } : {}}>\n <div className=\"sledge__flyout-header\">\n <div className=\"sledge__flyout-mobile-title\">{title}</div>\n <div className=\"sledge__flyout-close-field-wrapper\">\n <button className=\"sledge__flyout-close-field\" type=\"button\" onClick={() => setOpen(false)}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n </div>\n <div className=\"sledge__flyout-mobile-content\">{content}</div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { VirtualItem, useVirtualizer } from '@tanstack/react-virtual';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n rowCount: number;\n rowRenderer: (props: VirtualItem) => React.ReactNode;\n selector?: string;\n}\n\nconst getElement = ({ selector, setUsedScrollElement }: { selector: string; setUsedScrollElement: any }) => {\n const element: Element | (Window & typeof globalThis) | null = document.querySelector(selector);\n if (!element)\n setTimeout(() => {\n getElement({ selector, setUsedScrollElement });\n }, 10);\n else setUsedScrollElement(element);\n};\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowRenderer, selector }: IVirtualizedListProps) => {\n const [usedScrollElement, setUsedScrollElement]: any = React.useState(scrollElement);\n\n if (!usedScrollElement && selector) getElement({ selector, setUsedScrollElement });\n\n const virtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => usedScrollElement,\n estimateSize: () => 45\n });\n\n const items = virtualizer.getVirtualItems();\n\n return (\n <div\n style={{\n height: virtualizer.getTotalSize(),\n width: '100%',\n position: 'relative'\n }}\n className=\"sledge__virtualized-wrapper\"\n >\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${items[0]?.start ?? 0}px)`\n }}\n className=\"sledge__virtualized-list\"\n >\n {items.map((virtualRow) => (\n <div key={virtualRow.key} data-index={virtualRow.index} ref={virtualizer.measureElement} className=\"sledge__virtualized-measure-element\">\n {rowRenderer(virtualRow)}\n </div>\n ))}\n </div>\n </div>\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 redirectObjectDirection = '',\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 redirectObjectDirection?: 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, redirectObjectDirection };\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\n href={redirectObjectDirection ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-button-more\"\n >\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n separator: string;\n separatorCollection: string;\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n}\n\nexport const hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\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) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({ clickedFacetsObject, separator, separatorCollection }: { clickedFacetsObject: any; separator: string; separatorCollection: string }) => {\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(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = facet[0] === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : 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\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({ facets, facetsQueryStringObject, callback, additional = [], separator, separatorCollection }: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = ['variants.price', 'variants.sale_percent'].includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[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 filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = indexValue === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hiddensProp?.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\nexport const handleConditionNotUpdateFacetDistribution = ({ value, clickedFacets }: { value: any; clickedFacets: 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 });\n\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') || arrFacetSelected.includes('variants.sale_percent');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleConditionNotUpdateFacetDistribution } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; indexFilter: number; items: any; settings?: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n valueFilterOnSaleChange: number[];\n setValueFilterOnSaleChange(value: React.SetStateAction<number[]>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n scrollElementSelector?: string;\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n colorSwatches?: any[];\n ulClasses?: string;\n languageSettings?: any;\n triggerClickedFacets?: boolean;\n setTriggerClickedFacets?(value: React.SetStateAction<boolean>): void;\n handleQueryStringFilter?(value: any): void;\n previousStateFromOutside?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n setClickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n valueFilterOnSaleChange,\n setValueFilterOnSaleChange,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings,\n scrollElementSelector,\n layoutType,\n collectionId,\n colorSwatches,\n ulClasses = '',\n languageSettings,\n triggerClickedFacets,\n setTriggerClickedFacets,\n handleQueryStringFilter,\n previousStateFromOutside\n } = props;\n\n const [keywordFacet, setKeywordFacet] = React.useState('');\n const [showFacet, setShowFacet] = React.useState(false);\n\n const searchFacetRef = React.useRef<any>(null);\n\n const previousState: any = usePrevious({ keywordFacet });\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { search_filter_placeholder, search_filter_show_more_result, search_filter_no_result } = languageSettings || {};\n\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\n const { item_pagination: is_item_pagination = true, item_pagination_limit = DEFAULT_FACET_LIMIT } = displaySettings?.filter || {};\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 let { value, label, display, indexFilter, items, settings: filterSettings } = filter;\n const { prefix, filter_list, delete_prefix, selected_filter, show_search, auto_select_search, hide_filter_list } = filterSettings || {};\n\n const show_filter_list_when_search = !hide_filter_list;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n const isDisplaySlider = display.toLowerCase() === 'slider';\n const getValue = `${value}-${indexFilter}`;\n\n if (show_search && keywordFacet && !isDisplaySlider) items = items?.filter(({ name }: any) => String(name)?.toLowerCase()?.includes(keywordFacet?.toLowerCase()));\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) continue;\n\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({\n value: getValue,\n clickedFacets\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n let getLabelName = aliases[labelName] || labelName;\n delete_prefix?.map((deletePrefix: any) => {\n if (String(getLabelName).startsWith(deletePrefix)) getLabelName = String(getLabelName).replace(deletePrefix, '');\n });\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: getLabelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider ? facetItems : handleFacetValues(facetItems);\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[getValue] || Number(item_pagination_limit);\n\n let haveNextPage = Boolean(lastItemLimit < arrFacetValues?.length);\n let sliced: any = arrFacetValues;\n if (haveNextPage) sliced = sliced.slice(0, lastItemLimit);\n\n let currentItems = sliced;\n\n return {\n haveNextPage,\n currentItems,\n totalItems: Number(arrFacetValues?.length)\n };\n };\n\n const handleSearchShowMore = () => {\n setShowFacet(true);\n\n searchFacetRef?.current && searchFacetRef?.current?.focus?.();\n };\n\n const { haveNextPage, currentItems, totalItems } = handleFacetLoadMore({\n facetItems: items\n });\n\n const filterSearchShowMoreId = stringToSlug(`filter-search-show-more-${getValue}`);\n\n React.useEffect(() => {\n if (!show_search) return;\n\n setTimeout(() => document.querySelector(`#${filterSearchShowMoreId}`)?.addEventListener('click', () => handleSearchShowMore()), 100);\n\n let isKeywordFacetChanged = Boolean(previousState && previousState.keywordFacet !== keywordFacet);\n let isPreviousStateFromOutsideChanged = Boolean(previousStateFromOutside && previousStateFromOutside?.clickedFacets !== clickedFacets);\n\n if (keywordFacet && isKeywordFacetChanged) {\n const delayDebounceFn = setTimeout(() => {\n const isAutoSelectFacet = Boolean(auto_select_search && totalItems && Number(totalItems) === 1);\n\n let autoSelectFacets = currentItems\n ?.map(({ value: itemValue }: any) => {\n return clickedFacets?.[value]?.includes?.(itemValue) ? null : itemValue;\n })\n ?.filter((item: any) => item);\n\n if (isAutoSelectFacet && autoSelectFacets?.length) {\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [value]: [...new Set([...(clickedFacets?.[value]?.length ? clickedFacets?.[value] : []), ...autoSelectFacets])]\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter?.(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets?.(!triggerClickedFacets);\n }\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n if (!(showFacet && isPreviousStateFromOutsideChanged)) setShowFacet(false);\n }, [keywordFacet, clickedFacets]);\n\n const loadMoreComponent = (\n <div\n className=\"sledge-instant-search__result-filter-item-show-more\"\n onClick={() =>\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [getValue]: (old[getValue] || Number(item_pagination_limit)) + Number(item_pagination_limit)\n };\n\n return fixState;\n })\n }\n >\n {button_load_more || 'Load More'}\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </div>\n );\n\n const handleFacetCheckbox = (props: { facetValues: any; virtualized?: any }) => {\n const { facetValues, virtualized } = props;\n const { index, key } = virtualized || {};\n\n return handleFacetValues(virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues)?.map((facetValue: any) => {\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 const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content = (\n <Checkbox\n id={`${getValue}_${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 );\n\n return (\n <>\n <li\n key={key}\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 {content}\n </li>\n {isHasChildren && isChecked\n ? haveNextPage\n ? React.cloneElement(\n <>\n {blockComponentChildren}\n {loadMoreComponent}\n </>\n )\n : blockComponentChildren\n : null}\n </>\n );\n });\n };\n\n let scrollElement = document.querySelector(\n scrollElementSelector || `#filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`\n );\n\n const isShowSearch = Boolean(\n show_search && (display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree' || display.toLowerCase() === 'radio') && (totalItems || (keywordFacet && !totalItems))\n );\n\n const defaultSearchShowMoreFilter = (\n <>\n {totalItems} items found,{' '}\n <span className=\"sledge-instant-search__result-filter-search-text-action\" id={filterSearchShowMoreId} onClick={() => setShowFacet(true)}>\n click here\n </span>{' '}\n to show\n </>\n );\n\n let searchFilterShowMoreResult = search_filter_show_more_result;\n if (searchFilterShowMoreResult) {\n const getActionText = getTextBetween({\n start: '<action>',\n end: '</action>',\n text: search_filter_show_more_result\n });\n\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_FILTER_ITEM, String(Number(totalItems)));\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(\n `<action>${getActionText}</action>`,\n `\n <span class=\"sledge-instant-search__result-filter-search-text-action\" id=\"${filterSearchShowMoreId}\">\n ${getActionText}\n </span>`\n );\n }\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[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) => {\n if (value === 'variants.price') {\n setValueFilterPriceChange(valueChange);\n } else if (value === 'variants.sale_percent') {\n setValueFilterOnSaleChange(valueChange);\n }\n }}\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') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowRenderer={(props) =>\n handleFacetCheckbox({\n facetValues: currentItems,\n virtualized: props\n })\n }\n />\n ) : (\n <>\n {handleFacetCheckbox({\n facetValues: currentItems\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && currentItems?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={getValue}\n name={getValue}\n onValueChange={(valueChange) =>\n handleFilterChange({\n parentId: value,\n value: valueChange,\n force: true\n })\n }\n items={currentItems?.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 useVirtualized\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.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={currentItems?.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={`${getValue}_${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 } else {\n blockComponent = (\n <li className=\"sledge-instant-search__result-filter-item-no-result\" style={filter_option_style}>\n {search_filter_no_result || 'No result...'}\n </li>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return (\n <>\n {isShowSearch ? (\n <div className=\"sledge-instant-search__result-filter-search-wrapper\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={search_filter_placeholder || 'Search filters...'}\n fieldRef={searchFacetRef}\n value={keywordFacet}\n onChange={({ value }: any) => setKeywordFacet(value)}\n onResetField={() => setKeywordFacet('')}\n className=\"sledge-instant-search__result-filter-search-form\"\n withClearField\n />\n {keywordFacet && totalItems && Number(totalItems) > 1 && !show_filter_list_when_search && !showFacet ? (\n <div className=\"sledge-instant-search__result-filter-search-text\" style={filter_option_style}>\n {searchFilterShowMoreResult ? <div dangerouslySetInnerHTML={{ __html: searchFilterShowMoreResult }}></div> : defaultSearchShowMoreFilter}\n </div>\n ) : null}\n </div>\n ) : null}\n {!show_search || (show_search && (show_filter_list_when_search || (!show_filter_list_when_search && (!totalItems || (Number(totalItems) === 1 && keywordFacet))) || showFacet)) ? (\n <ul className={ulClasses}>{blockComponent}</ul>\n ) : null}\n </>\n );\n};\n\nexport const FilterVerticalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n filterTitleStyle?: any;\n handleOpenFilterVertical(id: string | number): void;\n clickedOpenFilters: any;\n filterLayoutType: 'standard' | 'flyout';\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const { filter, filterSettings, indexFilter, filterTitleStyle = {}, handleOpenFilterVertical, clickedOpenFilters, filterLayoutType, layoutType, collectionId } = props;\n\n const { value, label } = filter;\n\n const getValue = `${value}-${indexFilter}`;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${filterLayoutType}-${stringToSlug(getValue)}`;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={filterItemId} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(getValue)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filterTitleStyle}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(getValue) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(getValue) && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n ) : null;\n};\n\nexport const FilterHorizontalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n deviceType: 'mobile' | 'desktop';\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n allowedFilter?: any[];\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const {\n filter,\n filterSettings,\n indexFilter,\n deviceType,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n allowedFilter = [],\n layoutType,\n collectionId\n } = props;\n\n const { value, label } = filter;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${deviceType}-${stringToSlug(value)}`;\n\n const getValueOpenFilterId = deviceType === 'mobile' ? clickedOpenFilterHorizontalMobileId : clickedOpenFilterHorizontalId;\n const isOpenFilterHorizontal = getValueOpenFilterId === value;\n\n const { isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(value);\n } else {\n setClickedOpenFilterHorizontalId?.(value);\n }\n }}\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={isOpenFilterHorizontal ? '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={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\" id={filterItemId}>\n {isOpenFilterHorizontal && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n }\n withOpenState\n isOpen={isOpenFilterHorizontal}\n setIsOpen={(open) => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(!open ? '' : value);\n } else {\n setClickedOpenFilterHorizontalId?.(!open ? '' : value);\n }\n }}\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","import React from 'react';\nimport {\n Pagination,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ArticleGrid,\n Progress,\n FlyoutSidebar,\n FilterIcon\n} from '@core/components';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useDebounce, useIntersectionObserver, useIsFirstRender, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n DEFAULT_QUERY_PRODUCT_MEILISEARCH,\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 { currentMediaQuery, isFunction, scrollToElement } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, hierarchicalFacetAliases } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent, FilterHorizontalComponent, FilterVerticalComponent } from './Atoms';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: 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 isFirstLoading?: boolean;\n keyword?: string;\n debouncedKeyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilter?: any[];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n hierarchicalCollectionsSettings?: any;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: 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 searchParams?: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n separatedFilterItem?: any;\n clickedFacets?: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n parentPreviousState?: any;\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n defaultFilterItems?: any[];\n mobileShowSelectedSort?: boolean;\n soldProductAtEnd?: boolean;\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) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\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\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\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 [allowedFilter, setAllowedFilter] = React.useState([]);\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(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\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 const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterHorizontalId, setClickedOpenFilterHorizontalId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilterHorizontalMobileId, setClickedOpenFilterHorizontalMobileId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n const [defaultFilterItems, setDefaultFilterItems] = React.useState<any[]>([]);\n const [mobileShowSelectedSort, setMobileShowSelectedSort] = React.useState(true);\n const [soldProductAtEnd, setSoldProductAtEnd] = React.useState(false);\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\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 ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\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 setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n let valueSearchResultFacets = 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 setSearchResultFacets(valueSearchResultFacets);\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\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) setAllowedFilter(valueAllowedFilter);\n if (valueAllowedFilter?.length) {\n let valueDefaultFilterItems: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, label, display, settings } = filter;\n const { prefix, filter_list, selected_filter } = settings || {};\n\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n if (isDisplaySlider) return;\n\n let items: any[] = [];\n if (display.toLowerCase() === 'tree') {\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n items = [...items, ...valueSearchResultFacets[`${value}.lvl${level}`]];\n }\n } else {\n items = valueSearchResultFacets[value];\n }\n\n return {\n label,\n settings,\n items: items\n ?.map((item: any) => {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) return;\n\n return item.value;\n })\n ?.filter((item: any) => item)\n };\n })\n .filter((item: any) => item);\n setDefaultFilterItems(valueDefaultFilterItems);\n }\n }\n\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 = (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 as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const {\n allowed_sorts,\n default_sort,\n index_product,\n tabs,\n hidden_tags,\n display,\n colors,\n show_out_of_stock,\n languages,\n hierarchical_product_type,\n hierarchical_collections,\n mobile_show_selected_sort,\n sold_product_at_end\n } = 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 setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\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 setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n setMobileShowSelectedSort(mobile_show_selected_sort);\n setSoldProductAtEnd(sold_product_at_end);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\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 setIsLoadingSetting(false);\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 useEffectCallback(() => {\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 useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\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 isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\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 searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\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 searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n isFirstLoading,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd\n } = props || {};\n\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n const queryPage = query?.page ? query.page : DEFAULT_QUERY_PARAM.PAGE;\n const queryLimit = query?.limit ? query.limit : DEFAULT_QUERY_PARAM.LIMIT;\n\n const { collectionId, collectionName } = params || {};\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n\n const [isLoadingProduct, setIsLoadingProduct] = 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(searchParams?.get(queryLimit) || defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>(\n allowedFilter?.length\n ? allowedFilter\n .map((props: any, index: number) => {\n const { value, settings } = props;\n const { collapse } = settings || {};\n\n return collapse ? null : `${value}-${index}`;\n })\n .filter((item) => item)\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(Number(searchParams?.get(queryPage)) && !isLoadMore ? Number(searchParams?.get(queryPage)) : 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 [valueFilterOnSaleChange, setValueFilterOnSaleChange] = React.useState<number[]>([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = 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 { separator: hierarchical_collections_separator, hiddens: hierarchical_collections_hiddens } = hierarchicalCollectionsSettings || {};\n const { button_load_more, button_loading, mobile_sort_placeholder } = 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({ 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 const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\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 const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\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 setTimeout(() => {\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [id]: null\n };\n\n return fixState;\n });\n }, 100);\n };\n\n const handleFilterReset = () => {\n setClickedFacets?.({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setValueFilterOnSaleChange([]);\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', 'variants.sale_percent'].includes(parentId);\n let isHierarchical = hierarchicalFacetAliases.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\n // Uncheck facet children from parent\n if (isHierarchical) facets = facets.filter((facet: any) => !facet.startsWith(value));\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n if (parentId === 'variants.price') {\n setValueFilterPriceChange([]);\n } else if (parentId === 'variants.sale_percent') {\n setValueFilterOnSaleChange([]);\n }\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 let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter(handleQueryStringFilterProp);\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 setIsLoading(false);\n setIsLoadingProduct(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 const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(1));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let response: any;\n let filter: any = createQueryFilter({\n facets,\n facetsQueryStringObject: clickedFacets,\n callback: (facetsQueryStringObject) => {\n setClickedFacets?.(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n if (facetsQueryStringObject['variants.sale_percent']) setValueFilterOnSaleChange(facetsQueryStringObject['variants.sale_percent']);\n },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null]\n });\n\n let sort = soldProductAtEnd ? ['availability:asc'] : [];\n if (clickedSortId) sort.push(clickedSortId);\n\n let body = {\n q: keyword,\n sort,\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter\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 handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\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 let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price', 'variants.sale_percent'].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', 'variants.sale_percent'].includes(name);\n let getLabel = label;\n let getSettings: any = {};\n if (defaultFilterItems?.length) {\n defaultFilterItems.map((defaultFilterItem) => {\n const { label: defaultFilterItemLabel, items, settings: defaultFilterItemSettings } = defaultFilterItem;\n\n if (items?.includes(value)) {\n getLabel = defaultFilterItemLabel;\n getSettings = defaultFilterItemSettings;\n }\n });\n }\n\n getSettings?.delete_prefix?.map((deletePrefix: any) => {\n if (String(valueText).startsWith(deletePrefix)) valueText = String(valueText).replace(deletePrefix, '');\n });\n\n if (isRange) valueText = value?.join(' - ');\n else valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n let aliasValue: string = '';\n let aliasSeparator = '';\n if (name === 'hierarchicalCollections') {\n aliases = settings.collectionAliases || {};\n aliasSeparator = hierarchicalCollectionsSettings.separator;\n }\n if (name === 'hierarchicalProductType') {\n aliases = settings.productTypeAliases || {};\n aliasSeparator = hierarchicalProductTypeSettings.separator;\n }\n if (['hierarchicalCollections', 'hierarchicalProductType'].includes(name) && aliasSeparator) {\n const splitedValues = value.split(aliasSeparator);\n let newSplitedValues = [];\n for (const splitedValue of splitedValues) {\n newSplitedValues.push(aliases[splitedValue.trim()] || splitedValue);\n }\n aliasValue = newSplitedValues.join(' > ');\n }\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 {getLabel}: {aliasValue || valueText}\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 filterSettings = ({\n filter,\n scrollElementSelector\n }: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n if (display.toLowerCase() === 'slider') {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || defaultItemSlider?.max;\n\n isRender = !defaultValueMin && !defaultValueMax ? false : true;\n }\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n const getFacetComponent = (props?: { ulClasses?: string }) => {\n const { ulClasses = '' } = props || {};\n\n return (\n <FacetComponent\n filter={{\n ...filter,\n items\n }}\n isFirstLoading={isFirstLoading}\n displaySettings={displaySettings}\n generalDataSettings={generalDataSettings}\n settings={settings}\n searchFacetDistribution={searchFacetDistribution}\n clickedFacets={clickedFacets}\n setClickedFacets={setClickedFacets}\n handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n valueFilterOnSaleChange={valueFilterOnSaleChange}\n setValueFilterOnSaleChange={setValueFilterOnSaleChange}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\n scrollElementSelector={scrollElementSelector}\n layoutType={layoutType}\n collectionId={collectionId}\n colorSwatches={colorSwatches}\n ulClasses={ulClasses}\n languageSettings={languageSettings}\n triggerClickedFacets={triggerClickedFacets}\n setTriggerClickedFacets={setTriggerClickedFacets}\n handleQueryStringFilter={handleQueryStringFilter}\n previousStateFromOutside={previousState}\n />\n );\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 if (displaySettings?.filter?.layout === 'vertical' && allowedFilter?.length === 1) classesUlElement?.push('sledge-instant-search__result-filter-item-list-just-one');\n\n let isLastIndex = allowedFilter ? allowedFilter?.length - 1 === indexFilter : false;\n\n return { isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalSelected = 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\n const filterVerticalComponents = ({ filterLayoutType }: { filterLayoutType: 'standard' | 'flyout' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterVerticalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n filterTitleStyle={filter_title_style}\n handleOpenFilterVertical={handleOpenFilterVertical}\n clickedOpenFilters={clickedOpenFilters}\n filterLayoutType={filterLayoutType}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const filterHorizontalComponents = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterHorizontalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n deviceType={deviceType}\n clickedOpenFilterHorizontalId={clickedOpenFilterHorizontalId}\n setClickedOpenFilterHorizontalId={setClickedOpenFilterHorizontalId}\n clickedOpenFilterHorizontalMobileId={clickedOpenFilterHorizontalMobileId}\n setClickedOpenFilterHorizontalMobileId={setClickedOpenFilterHorizontalMobileId}\n allowedFilter={allowedFilter}\n layoutType={layoutType}\n collectionId={collectionId}\n />\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 = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\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\">\n {filterHorizontalComponents({ deviceType })}\n </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 const searchInputFieldComponent = (\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 );\n\n const FilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n <span>{language_filter || 'Filter'}</span>\n <FilterIcon width={18} height={18} color=\"#393d4e\" />\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent({ deviceType: 'mobile' })}\n </>\n );\n break;\n\n default:\n return null;\n break;\n }\n };\n\n return (\n <>\n {/* Filter Flyout on Mobile */}\n {displaySettings?.filter?.mobile_layout === 'flyout' && (\n <FlyoutSidebar\n title={language_filter || 'Filter'}\n content={\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'flyout'\n })?.filter((item) => item)?.length\n ? filterVerticalComponents({\n filterLayoutType: 'flyout'\n })\n : null}\n </>\n }\n open={openFilterFlyoutMobile}\n setOpen={setOpenFilterFlyoutMobile}\n />\n )}\n\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter?.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent({ deviceType: 'desktop' })}</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' && !hideFilterWhenOneValue ? (\n (!allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isFirstLoading) ||\n (allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isLoadingProduct) ? (\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 {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'standard'\n })}\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\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">\n <FilterLayoutOnMobile />\n </div>\n\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 {...(!mobileShowSelectedSort\n ? {\n overridePlaceholderOnMobile: mobile_sort_placeholder || 'Sort'\n }\n : {})}\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 debouncedKeyword,\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({ 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 handleSearchResult();\n }, [debouncedKeyword]);\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 useIsFirstRender() {\n const renderRef = React.useRef(true);\n\n if (renderRef.current === true) {\n renderRef.current = false;\n return true;\n }\n\n return renderRef.current;\n}\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\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, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\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} ref={searchIconWidgetRef}>\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_QUERY_PRODUCT_MEILISEARCH, 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 [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\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 { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\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 = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\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 ? [...new Set(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 as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\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) || null) as string);\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 = isRedirect ? redirectObjectDirection : `${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 redirectObjectDirection={redirectObjectDirection}\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_QUERY_PRODUCT_MEILISEARCH, 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 const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\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 = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\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 ? [...new Set(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 as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\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) || null) as string);\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 = isRedirect ? redirectObjectDirection : `${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 redirectObjectDirection={redirectObjectDirection}\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","TRIGGER_BADGE","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_COUNTER","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","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","shopifyUrl","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","error","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","useEffectCallback","callback","dependencies","memoizedCallback","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","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","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","rowRenderer","virtualized","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","RadioGroup","defaultValue","items","useVirtualized","scrollElement","selector","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","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","FilterIcon","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","strokeLinejoin","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","wishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","_b","total_data","totalWishlist","proxyUrl","BadgeCounter","propsData","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","isJsVersion","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","setTotalWishlist","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","handleGetWishlistInfo","setItem","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","launch_point","defaultTotalWishlist","Badge","useProxyUrl","position","positionProp","defaultColorIcon","colorIcon","setColorIcon","setProxyUrl","proxy_url","setData","floating_button_type","alert_login","alert","login_button","languages","widget","defaultPosition","valueData","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeCounterInitSelector","Array","from","querySelectorAll","remove","elementContainerWidget","createElement","setAttribute","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","triggerBadge","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","mouseEnter","setMouseEnter","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","wishlistActive","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","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","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","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","isLoadingAddToCart","isOutOfStock","isOnSale","money_format","component","CardsProps","variant","isInventoryQuantity","isInventoryManagement","isInventoryPolicy","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","inventoryManagement","inventoryPolicy","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","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","main_color","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","FlyoutSidebar","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","hierarchicalFacetAliases","hierarchicalFacetAlias","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","FacetComponent","displaySettings","searchFacetDistribution","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","separatedFilterItem","setSeparatedFilterItem","settings","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","aliases","productTypeAliases","collectionAliases","button_load_more","search_filter_placeholder","search_filter_show_more_result","search_filter_no_result","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","item_pagination","is_item_pagination","item_pagination_limit","filter_option_style","indexFilter","filterSettings","prefix","filter_list","delete_prefix","selected_filter","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","isDisplaySlider","getValue","handleFacetValues","facetValues","items2","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","level","counter","getLabelName","deletePrefix","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","Number","sliced","totalItems","filterSearchShowMoreId","handleSearchShowMore","isKeywordFacetChanged","isPreviousStateFromOutsideChanged","delayDebounceFn","isAutoSelectFacet","autoSelectFacets","itemValue","valueClickedFacets","handleQueryStringFilterProp","loadMoreComponent","old","handleFacetCheckbox","facetValue","isHasChildren","isChecked","blockComponentChildren","parentId","isShowSearch","defaultSearchShowMoreFilter","searchFilterShowMoreResult","getActionText","end","getText","indexOf","substring","getTextBetween","valueFilterSliderChange","defaultValueMin","defaultValueMax","force","FilterVerticalComponent","filterTitleStyle","handleOpenFilterVertical","clickedOpenFilters","filterLayoutType","filterItemId","isRender","classesUlElement","getFacetComponent","FilterHorizontalComponent","deviceType","clickedOpenFilterHorizontalId","setClickedOpenFilterHorizontalId","clickedOpenFilterHorizontalMobileId","setClickedOpenFilterHorizontalMobileId","allowedFilter","isOpenFilterHorizontal","isLastIndex","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","isFirstRender","renderRef","useIsFirstRender","querySortBy","sortBy","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","setAllowedFilter","allowedTabs","setAllowedTabs","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","setDisplaySettings","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","setLanguageSettings","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","_i","hierarchical_product_type","hierarchicalCollectionsSettings","setHierarchicalCollectionsSettings","_j","hierarchical_collections","initStatesFirstTime","setInitStatesFirstTime","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","general","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_k","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","attributesToRetrieve","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_l","_m","layout","filterVerticalSkeleton","_n","_o","flexWrap","alignItems","maxWidth","productGridSkeleton","_p","show_total_products","_q","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_r","_s","mobileFilterWithSearchAndSelectOptionSkeleton","_t","_u","containerStyle","ResultCategory","handleChangeTabIndex","_v","_w","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","setClickedOpenFilters","collapse","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","handleSearchResultFirstTime","setHandleSearchResultFirstTime","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","openFilterFlyoutMobile","setOpenFilterFlyoutMobile","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","hierarchical_separator","hiddens","hierarchical_hiddens","hierarchical_collections_separator","hierarchical_collections_hiddens","button_loading","mobile_sort_placeholder","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_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","otherQueryStringObject","valueClickedFacetsKey","newQueryString","valueClickedOpenFilters","findIndex","splice","handleFilterReset","isHierarchical","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","aliasValue","aliasSeparator","splitedValues","newSplitedValues","splitedValue","trim","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","createHierarchicalFacet","defaultItemSlider","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","FilterLayoutOnMobile","mobile_layout","allowed_limit","_y","_x","_z","_A","_B","_C","wishlists","reviews","ResultEmpty","isRefreshSearchResult","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","componentRef","searchIconWidget","searchIconWidgetRef","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","redirectsSettings","setRedirectsSettings","redirectObject","setRedirectObject","isRedirect","setIsRedirect","setHandleFunctions","direction","handleMultiSearch","withFetchReviewInfo","valueRedirectObject","redirectKeyword","valueIsRedirect","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","redirects","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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"}
|
|
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/hooks/useEffectCallback.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/Icons/FilterIcon/FilterIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../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","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useIsFirstRender.ts","../../../core/hooks/useDebounce.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 sortBy?: string;\n page?: string;\n limit?: 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 TRIGGER_BADGE: 'data-trigger-badge'\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 QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\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 WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\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_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge-counter\"]`,\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 CUSTOM_EVENT_NAMES = {\n AFTER_ADD_WISHLIST: 'after-add-wishlist',\n AFTER_REMOVE_WISHLIST: 'after-remove-wishlist',\n AFTER_ADD_TO_CART: 'after-add-to-cart',\n AFTER_ADD_REVIEW: 'after-add-review',\n AFTER_RENDER_PRODUCT: 'after-render-product',\n AFTER_RENDER_COLLECTION: 'after-render-collection',\n AFTER_RENDER_PAGE: 'after-render-page',\n AFTER_RENDER_BLOG: 'after-render-blog',\n AFTER_RENDER_ARTICLE: 'after-render-article'\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 SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\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 TOTAL_FILTER_ITEM: '{{ total_filter_item }}',\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 shopifyUrl: 'NmIxMTNlYTVlM'\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 try {\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 } catch (error) {\n caches.delete(cacheName);\n }\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 React from 'react';\n\nconst useEffectCallback = (callback: Function, dependencies: any) => {\n const memoizedCallback = React.useCallback(() => {\n if (typeof callback === 'function') {\n callback();\n }\n }, [callback]);\n\n // Run the callback whenever dependencies change\n React.useEffect(() => {\n memoizedCallback();\n }, dependencies);\n};\n\nexport default useEffectCallback;\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';\nimport { ISledgeProps } from '@core/api/global';\n\ndeclare global {\n interface Window {\n // TODO: Soon `sledgeCommonModule` is deprecated\n sledgeCommonModule: ISledgeProps;\n sledge: ISledgeProps;\n Shopify: any;\n }\n}\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' | 'xl' => {\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 = 'xl';\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\nexport const shopifyFormatMoney = (cents: any, format: string) => {\n if (typeof cents == 'string') {\n cents = cents.replace('.', '');\n }\n\n var value = '';\n var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n var formatString: string = format || '${{amount}}';\n\n function defaultOption(opt: any, def: any) {\n return typeof opt == 'undefined' ? def : opt;\n }\n\n function formatWithDelimiters(number: any, precision: any, thousands?: any, decimal?: any) {\n precision = defaultOption(precision, 2);\n thousands = defaultOption(thousands, ',');\n decimal = defaultOption(decimal, '.');\n\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n var parts = number.split('.'),\n dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\n cents = parts[1] ? decimal + parts[1] : '';\n\n return dollars + cents;\n }\n\n switch (formatString.match(placeholderRegex)?.[1]) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return formatString.replace(placeholderRegex, value);\n};\n\nexport const selectedLocaleJs = () => {\n if (typeof window !== 'undefined') {\n const shopifyLocale = window?.Shopify?.locale;\n const sledgeLocale = window?.sledgeCommonModule?.config?.locale || window?.sledge?.config?.locale;\n\n return shopifyLocale ? shopifyLocale : sledgeLocale || '';\n }\n\n return '';\n};\n\nexport const sledgeConfigJs = () => {\n let sledgeConfig: ISledgeProps['config'] = {};\n\n if (typeof window !== 'undefined') {\n sledgeConfig = window?.sledgeCommonModule?.config || window?.sledge?.config;\n\n return sledgeConfig || {};\n }\n\n return sledgeConfig;\n};\n\nexport const dispatchCustomEvent = (eventName: string, detail?: any): void => {\n const customEvent = new CustomEvent(eventName, { bubbles: true, cancelable: true, composed: false, ...(detail && { detail }) });\n\n document.dispatchEvent(customEvent);\n};\n\nexport const listenerCustomEvent = (eventName: string, listener: (event: CustomEvent) => void, method: 'on' | 'off'): void => {\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n document[domMethod](eventName, (event: Event) => {\n if (event instanceof CustomEvent) {\n listener(event);\n }\n });\n};\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(() => {\n if (valueProgress) setProgress(valueProgress);\n }, 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';\nimport { VirtualizedList } from '@core/components';\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 useVirtualized?: boolean;\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n selector?: string;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any }) => {\n const { index, key = '' } = virtualized || {};\n\n const { label, value } = item;\n\n const content = (\n <>\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 </>\n );\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={key || index}>\n {content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, useVirtualized = false, scrollElement, selector }: 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 {useVirtualized ? (\n <VirtualizedList\n rowCount={items?.length}\n rowRenderer={({ index, key }) =>\n rowRenderer({\n virtualized: {\n index,\n key\n },\n item: items[index],\n id,\n labelStyle\n })\n }\n scrollElement={scrollElement}\n selector={selector}\n />\n ) : (\n items.map((item: { label: string; value: string }, index: number) =>\n rowRenderer({\n virtualized: {\n index\n },\n item,\n id,\n labelStyle\n })\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","export interface IFilterIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const FilterIcon = ({ width, height, color }: IFilterIcon) => {\n return (\n <span className=\"sledge-icon__filter\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M22 6.5H16\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6 6.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M10 10C11.933 10 13.5 8.433 13.5 6.5C13.5 4.567 11.933 3 10 3C8.067 3 6.5 4.567 6.5 6.5C6.5 8.433 8.067 10 10 10Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M22 17.5H18\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M8 17.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M14 21C15.933 21 17.5 19.433 17.5 17.5C17.5 15.567 15.933 14 14 14C12.067 14 10.5 15.567 10.5 17.5C10.5 19.433 12.067 21 14 21Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\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 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 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 {value && 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 {\n className = '',\n placeholder = null,\n overridePlaceholderOnMobile = null,\n prefixLabel = null,\n prefixSelectedLabel = '',\n align = 'end',\n onChange,\n value = '',\n options = [],\n LinkComponent,\n link\n } = 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 const selectedLabelComponent = <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>;\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\n {overridePlaceholderOnMobile ? (\n <>\n <span className=\"sledge__hide-element-mobile-on-md\">{overridePlaceholderOnMobile}</span>\n <span className=\"sledge__hide-element-md-on-mobile\">{selectedLabelComponent}</span>\n </>\n ) : (\n selectedLabelComponent\n )}\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 { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL } from '@core/lib/const';\n\nexport const wishlistInfo = async ({ callback }: { callback(props: { totalWishlist: any; proxyUrl: any; data: any }): void }) => {\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 callback({\n totalWishlist: valueTotalWishlist,\n proxyUrl: valueProxyUrl,\n data: response?.data\n });\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 let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n ...(query || {})\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 { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { wishlistInfo } from './utils';\n\nexport interface IBadgeCounterProps {\n data?: any;\n}\n\nexport const BadgeCounter = (props: IBadgeCounterProps) => {\n const { data: propsData } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\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 [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleGetWishlistInfo = async () => {\n if (!propsData || (propsData && !Object.keys(propsData).length)) {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist }) => {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setIsFirstLoading(false);\n setIsLoading(false);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n } else {\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, totalWishlist);\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 as string);\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 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 || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const defaultTotalWishlist = isJsVersion ? localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || null : null;\n\n return <>{isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}</>;\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\nimport { wishlistInfo } from './utils';\nimport { BadgeCounter } from './BadgeCounter';\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, isJsVersion } = 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 [isFirstLoading, setIsFirstLoading] = 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 const [data, setData] = React.useState<any>({});\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 await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist, proxyUrl: valueProxyUrl, data: valueData }) => {\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setData(valueData);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\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 as string);\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 || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\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 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';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = () => {\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\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 <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : 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 { CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\nimport { dispatchCustomEvent } from '@core/lib/helper';\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 triggerBadge?: 'default' | 'rerender';\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default' } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = 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 [mouseEnter, setMouseEnter] = React.useState(false);\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 } = resAddWishlist || {};\n const { code } = status || {};\n const { product } = data || {};\n\n let run = code === 200;\n\n dispatchCustomEvent(!isWishlist ? CUSTOM_EVENT_NAMES.AFTER_ADD_WISHLIST : CUSTOM_EVENT_NAMES.AFTER_REMOVE_WISHLIST, {\n state: run ? 'success' : 'failed',\n product\n });\n\n if (run) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\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 as string);\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 const wishlistActive = isActive || mouseEnter;\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\n className=\"sledge-wishlist__trigger-block\"\n {...(wishlistActive && {\n ['wishlist-active']: ''\n })}\n >\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 setMouseEnter(true);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n setMouseEnter(false);\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 { BadgeCounterInitSelector, 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 triggerBadge?: 'default' | 'rerender';\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading, triggerBadge }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = 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 if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\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};\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 as string);\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';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\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 { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\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 (!isRenderAppProductReview) return;\n\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, isRenderAppProductReview]);\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, CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } 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 { dispatchCustomEvent, shopifyFormatMoney, 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 generalDataSettings?: any;\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 generalDataSettings\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 {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = 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 const defaultSelectedVariantInventoryManagement = variants?.length && Object.hasOwn(variants[0], 'inventory_management') ? variants[0].inventory_management : null;\n const defaultSelectedVariantInventoryPolicy = variants?.length && Object.hasOwn(variants[0], 'inventory_policy') ? variants[0].inventory_policy : '';\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n const [selectedVariantInventoryManagement, setSelectedVariantInventoryManagement] = React.useState(defaultSelectedVariantInventoryManagement);\n const [selectedVariantInventoryPolicy, setSelectedVariantInventoryPolicy] = React.useState(defaultSelectedVariantInventoryPolicy);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = showOptionOutOfStock ? !Boolean(selectedVariantStock > 0 || selectedVariantInventoryManagement === null || selectedVariantInventoryPolicy === 'continue') : false;\n let isOnSale = parseFloat(String(compare_at_price)) ? parseFloat(String(compare_at_price)) > parseFloat(String(price)) : false;\n\n const { money_format } = generalDataSettings || {};\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 isInventoryQuantity = Object.hasOwn(variants[index], 'inventory_quantity') ? variants[index].inventory_quantity > 0 : false;\n const isInventoryManagement = Object.hasOwn(variants[index], 'inventory_management') ? variants[index].inventory_management === null : false;\n const isInventoryPolicy = Object.hasOwn(variants[index], 'inventory_policy') ? variants[index].inventory_policy === 'continue' : false;\n\n return {\n ...variant,\n is_out_of_stock: !Boolean(isInventoryQuantity || isInventoryManagement || isInventoryPolicy)\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 defaultSelected['data-inventory-management'] = variants[0].inventory_management;\n defaultSelected['data-inventory-policy'] = variants[0].inventory_policy;\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 const inventoryManagement = selectOption.attributes['data-inventory-management']?.value;\n const inventoryPolicy = selectOption.attributes['data-inventory-policy']?.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 selectedInput.attributes[`data-inventory-management`].value = inventoryManagement;\n selectedInput.attributes[`data-inventory-policy`].value = inventoryPolicy;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n if (inventoryManagement) setSelectedVariantInventoryManagement(inventoryManagement);\n if (inventoryPolicy) setSelectedVariantInventoryPolicy(inventoryPolicy);\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 {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\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 <div style={display_price_style} dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(price * 100, money_format) }}></div>\n {isOnSale && (\n <div\n className=\"sledge__product-grid-card-compare-at-price\"\n dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(compare_at_price * 100, money_format) }}\n ></div>\n )}\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, inventory_management, inventory_policy }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-inventory-management': inventory_management,\n 'data-inventory-policy': inventory_policy,\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 const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\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 const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\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 handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\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 dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PRODUCT, {\n state: 'success'\n });\n\n onAfterRenderProduct && onAfterRenderProduct('success');\n handleSettings();\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 (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\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 { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, 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 dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_COLLECTION, {\n state: 'success'\n });\n\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 { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, 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 dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PAGE, {\n state: 'success'\n });\n\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 { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent } 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 dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_BLOG, {\n state: 'success'\n });\n\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 { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent, 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 dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_ARTICLE, {\n state: 'success'\n });\n\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 as string);\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 React from 'react';\nimport './FlyoutSidebar.css';\nimport { CloseIcon } from '@core/components';\n\nexport interface IFlyoutSidebarProps {\n title: string;\n content: React.ReactNode;\n open: boolean;\n setOpen(value: React.SetStateAction<boolean>): void;\n}\n\nexport const FlyoutSidebar = ({ title, content, open, setOpen }: IFlyoutSidebarProps) => {\n return (\n <div\n className=\"sledge__flyout-mobile\"\n style={\n open\n ? {\n opacity: '1',\n visibility: 'visible'\n }\n : {}\n }\n >\n <div className=\"sledge__flyout-overlay\" onClick={() => setOpen(false)} />\n <div className=\"sledge__flyout-mobile-wrapper\" style={open ? { left: 0 } : {}}>\n <div className=\"sledge__flyout-header\">\n <div className=\"sledge__flyout-mobile-title\">{title}</div>\n <div className=\"sledge__flyout-close-field-wrapper\">\n <button className=\"sledge__flyout-close-field\" type=\"button\" onClick={() => setOpen(false)}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n </div>\n <div className=\"sledge__flyout-mobile-content\">{content}</div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { VirtualItem, useVirtualizer } from '@tanstack/react-virtual';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n rowCount: number;\n rowRenderer: (props: VirtualItem) => React.ReactNode;\n selector?: string;\n}\n\nconst getElement = ({ selector, setUsedScrollElement }: { selector: string; setUsedScrollElement: any }) => {\n const element: Element | (Window & typeof globalThis) | null = document.querySelector(selector);\n if (!element)\n setTimeout(() => {\n getElement({ selector, setUsedScrollElement });\n }, 10);\n else setUsedScrollElement(element);\n};\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowRenderer, selector }: IVirtualizedListProps) => {\n const [usedScrollElement, setUsedScrollElement]: any = React.useState(scrollElement);\n\n if (!usedScrollElement && selector) getElement({ selector, setUsedScrollElement });\n\n const virtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => usedScrollElement,\n estimateSize: () => 45\n });\n\n const items = virtualizer.getVirtualItems();\n\n return (\n <div\n style={{\n height: virtualizer.getTotalSize(),\n width: '100%',\n position: 'relative'\n }}\n className=\"sledge__virtualized-wrapper\"\n >\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${items[0]?.start ?? 0}px)`\n }}\n className=\"sledge__virtualized-list\"\n >\n {items.map((virtualRow) => (\n <div key={virtualRow.key} data-index={virtualRow.index} ref={virtualizer.measureElement} className=\"sledge__virtualized-measure-element\">\n {rowRenderer(virtualRow)}\n </div>\n ))}\n </div>\n </div>\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 redirectObjectDirection = '',\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 redirectObjectDirection?: 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, redirectObjectDirection };\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\n href={redirectObjectDirection ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-button-more\"\n >\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n separator: string;\n separatorCollection: string;\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n}\n\nexport const hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\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) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({ clickedFacetsObject, separator, separatorCollection }: { clickedFacetsObject: any; separator: string; separatorCollection: string }) => {\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(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = facet[0] === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : 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\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({ facets, facetsQueryStringObject, callback, additional = [], separator, separatorCollection }: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = ['variants.price', 'variants.sale_percent'].includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[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 filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = indexValue === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hiddensProp?.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\nexport const handleConditionNotUpdateFacetDistribution = ({ value, clickedFacets }: { value: any; clickedFacets: 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 });\n\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') || arrFacetSelected.includes('variants.sale_percent');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleConditionNotUpdateFacetDistribution } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; indexFilter: number; items: any; settings?: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n valueFilterOnSaleChange: number[];\n setValueFilterOnSaleChange(value: React.SetStateAction<number[]>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n scrollElementSelector?: string;\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n colorSwatches?: any[];\n ulClasses?: string;\n languageSettings?: any;\n triggerClickedFacets?: boolean;\n setTriggerClickedFacets?(value: React.SetStateAction<boolean>): void;\n handleQueryStringFilter?(value: any): void;\n previousStateFromOutside?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n setClickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n valueFilterOnSaleChange,\n setValueFilterOnSaleChange,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings,\n scrollElementSelector,\n layoutType,\n collectionId,\n colorSwatches,\n ulClasses = '',\n languageSettings,\n triggerClickedFacets,\n setTriggerClickedFacets,\n handleQueryStringFilter,\n previousStateFromOutside\n } = props;\n\n const [keywordFacet, setKeywordFacet] = React.useState('');\n const [showFacet, setShowFacet] = React.useState(false);\n\n const searchFacetRef = React.useRef<any>(null);\n\n const previousState: any = usePrevious({ keywordFacet });\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { search_filter_placeholder, search_filter_show_more_result, search_filter_no_result } = languageSettings || {};\n\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\n const { item_pagination: is_item_pagination = true, item_pagination_limit = DEFAULT_FACET_LIMIT } = displaySettings?.filter || {};\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 let { value, label, display, indexFilter, items, settings: filterSettings } = filter;\n const { prefix, filter_list, delete_prefix, selected_filter, show_search, auto_select_search, hide_filter_list } = filterSettings || {};\n\n const show_filter_list_when_search = !hide_filter_list;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n const isDisplaySlider = display.toLowerCase() === 'slider';\n const getValue = `${value}-${indexFilter}`;\n\n if (show_search && keywordFacet && !isDisplaySlider) items = items?.filter(({ name }: any) => String(name)?.toLowerCase()?.includes(keywordFacet?.toLowerCase()));\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) continue;\n\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({\n value: getValue,\n clickedFacets\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n let getLabelName = aliases[labelName] || labelName;\n delete_prefix?.map((deletePrefix: any) => {\n if (String(getLabelName).startsWith(deletePrefix)) getLabelName = String(getLabelName).replace(deletePrefix, '');\n });\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: getLabelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider ? facetItems : handleFacetValues(facetItems);\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[getValue] || Number(item_pagination_limit);\n\n let haveNextPage = Boolean(lastItemLimit < arrFacetValues?.length);\n let sliced: any = arrFacetValues;\n if (haveNextPage) sliced = sliced.slice(0, lastItemLimit);\n\n let currentItems = sliced;\n\n return {\n haveNextPage,\n currentItems,\n totalItems: Number(arrFacetValues?.length)\n };\n };\n\n const handleSearchShowMore = () => {\n setShowFacet(true);\n\n searchFacetRef?.current && searchFacetRef?.current?.focus?.();\n };\n\n const { haveNextPage, currentItems, totalItems } = handleFacetLoadMore({\n facetItems: items\n });\n\n const filterSearchShowMoreId = stringToSlug(`filter-search-show-more-${getValue}`);\n\n React.useEffect(() => {\n if (!show_search) return;\n\n setTimeout(() => document.querySelector(`#${filterSearchShowMoreId}`)?.addEventListener('click', () => handleSearchShowMore()), 100);\n\n let isKeywordFacetChanged = Boolean(previousState && previousState.keywordFacet !== keywordFacet);\n let isPreviousStateFromOutsideChanged = Boolean(previousStateFromOutside && previousStateFromOutside?.clickedFacets !== clickedFacets);\n\n if (keywordFacet && isKeywordFacetChanged) {\n const delayDebounceFn = setTimeout(() => {\n const isAutoSelectFacet = Boolean(auto_select_search && totalItems && Number(totalItems) === 1);\n\n let autoSelectFacets = currentItems\n ?.map(({ value: itemValue }: any) => {\n return clickedFacets?.[value]?.includes?.(itemValue) ? null : itemValue;\n })\n ?.filter((item: any) => item);\n\n if (isAutoSelectFacet && autoSelectFacets?.length) {\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [value]: [...new Set([...(clickedFacets?.[value]?.length ? clickedFacets?.[value] : []), ...autoSelectFacets])]\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter?.(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets?.(!triggerClickedFacets);\n }\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n if (!(showFacet && isPreviousStateFromOutsideChanged)) setShowFacet(false);\n }, [keywordFacet, clickedFacets]);\n\n const loadMoreComponent = (\n <div\n className=\"sledge-instant-search__result-filter-item-show-more\"\n onClick={() =>\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [getValue]: (old[getValue] || Number(item_pagination_limit)) + Number(item_pagination_limit)\n };\n\n return fixState;\n })\n }\n >\n {button_load_more || 'Load More'}\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </div>\n );\n\n const handleFacetCheckbox = (props: { facetValues: any; virtualized?: any }) => {\n const { facetValues, virtualized } = props;\n const { index, key } = virtualized || {};\n\n return handleFacetValues(virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues)?.map((facetValue: any) => {\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 const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content = (\n <Checkbox\n id={`${getValue}_${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 );\n\n return (\n <>\n <li\n key={key}\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 {content}\n </li>\n {isHasChildren && isChecked\n ? haveNextPage\n ? React.cloneElement(\n <>\n {blockComponentChildren}\n {loadMoreComponent}\n </>\n )\n : blockComponentChildren\n : null}\n </>\n );\n });\n };\n\n let scrollElement = document.querySelector(\n scrollElementSelector || `#filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`\n );\n\n const isShowSearch = Boolean(\n show_search && (display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree' || display.toLowerCase() === 'radio') && (totalItems || (keywordFacet && !totalItems))\n );\n\n const defaultSearchShowMoreFilter = (\n <>\n {totalItems} items found,{' '}\n <span className=\"sledge-instant-search__result-filter-search-text-action\" id={filterSearchShowMoreId} onClick={() => setShowFacet(true)}>\n click here\n </span>{' '}\n to show\n </>\n );\n\n let searchFilterShowMoreResult = search_filter_show_more_result;\n if (searchFilterShowMoreResult) {\n const getActionText = getTextBetween({\n start: '<action>',\n end: '</action>',\n text: search_filter_show_more_result\n });\n\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_FILTER_ITEM, String(Number(totalItems)));\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(\n `<action>${getActionText}</action>`,\n `\n <span class=\"sledge-instant-search__result-filter-search-text-action\" id=\"${filterSearchShowMoreId}\">\n ${getActionText}\n </span>`\n );\n }\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[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) => {\n if (value === 'variants.price') {\n setValueFilterPriceChange(valueChange);\n } else if (value === 'variants.sale_percent') {\n setValueFilterOnSaleChange(valueChange);\n }\n }}\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') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowRenderer={(props) =>\n handleFacetCheckbox({\n facetValues: currentItems,\n virtualized: props\n })\n }\n />\n ) : (\n <>\n {handleFacetCheckbox({\n facetValues: currentItems\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && currentItems?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={getValue}\n name={getValue}\n onValueChange={(valueChange) =>\n handleFilterChange({\n parentId: value,\n value: valueChange,\n force: true\n })\n }\n items={currentItems?.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 useVirtualized\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.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={currentItems?.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={`${getValue}_${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 } else {\n blockComponent = (\n <li className=\"sledge-instant-search__result-filter-item-no-result\" style={filter_option_style}>\n {search_filter_no_result || 'No result...'}\n </li>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return (\n <>\n {isShowSearch ? (\n <div className=\"sledge-instant-search__result-filter-search-wrapper\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={search_filter_placeholder || 'Search filters...'}\n fieldRef={searchFacetRef}\n value={keywordFacet}\n onChange={({ value }: any) => setKeywordFacet(value)}\n onResetField={() => setKeywordFacet('')}\n className=\"sledge-instant-search__result-filter-search-form\"\n withClearField\n />\n {keywordFacet && totalItems && Number(totalItems) > 1 && !show_filter_list_when_search && !showFacet ? (\n <div className=\"sledge-instant-search__result-filter-search-text\" style={filter_option_style}>\n {searchFilterShowMoreResult ? <div dangerouslySetInnerHTML={{ __html: searchFilterShowMoreResult }}></div> : defaultSearchShowMoreFilter}\n </div>\n ) : null}\n </div>\n ) : null}\n {!show_search || (show_search && (show_filter_list_when_search || (!show_filter_list_when_search && (!totalItems || (Number(totalItems) === 1 && keywordFacet))) || showFacet)) ? (\n <ul className={ulClasses}>{blockComponent}</ul>\n ) : null}\n </>\n );\n};\n\nexport const FilterVerticalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n filterTitleStyle?: any;\n handleOpenFilterVertical(id: string | number): void;\n clickedOpenFilters: any;\n filterLayoutType: 'standard' | 'flyout';\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const { filter, filterSettings, indexFilter, filterTitleStyle = {}, handleOpenFilterVertical, clickedOpenFilters, filterLayoutType, layoutType, collectionId } = props;\n\n const { value, label } = filter;\n\n const getValue = `${value}-${indexFilter}`;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${filterLayoutType}-${stringToSlug(getValue)}`;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={filterItemId} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(getValue)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filterTitleStyle}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(getValue) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(getValue) && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n ) : null;\n};\n\nexport const FilterHorizontalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n deviceType: 'mobile' | 'desktop';\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n allowedFilter?: any[];\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const {\n filter,\n filterSettings,\n indexFilter,\n deviceType,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n allowedFilter = [],\n layoutType,\n collectionId\n } = props;\n\n const { value, label } = filter;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${deviceType}-${stringToSlug(value)}`;\n\n const getValueOpenFilterId = deviceType === 'mobile' ? clickedOpenFilterHorizontalMobileId : clickedOpenFilterHorizontalId;\n const isOpenFilterHorizontal = getValueOpenFilterId === value;\n\n const { isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(value);\n } else {\n setClickedOpenFilterHorizontalId?.(value);\n }\n }}\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={isOpenFilterHorizontal ? '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={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\" id={filterItemId}>\n {isOpenFilterHorizontal && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n }\n withOpenState\n isOpen={isOpenFilterHorizontal}\n setIsOpen={(open) => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(!open ? '' : value);\n } else {\n setClickedOpenFilterHorizontalId?.(!open ? '' : value);\n }\n }}\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","import React from 'react';\nimport {\n Pagination,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ArticleGrid,\n Progress,\n FlyoutSidebar,\n FilterIcon\n} from '@core/components';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useDebounce, useIntersectionObserver, useIsFirstRender, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n DEFAULT_QUERY_PRODUCT_MEILISEARCH,\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 { currentMediaQuery, isFunction, scrollToElement } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, hierarchicalFacetAliases } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent, FilterHorizontalComponent, FilterVerticalComponent } from './Atoms';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: 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 isFirstLoading?: boolean;\n keyword?: string;\n debouncedKeyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilter?: any[];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n hierarchicalCollectionsSettings?: any;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: 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 searchParams?: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n separatedFilterItem?: any;\n clickedFacets?: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n parentPreviousState?: any;\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n defaultFilterItems?: any[];\n mobileShowSelectedSort?: boolean;\n soldProductAtEnd?: boolean;\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) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\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\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\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 [allowedFilter, setAllowedFilter] = React.useState([]);\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(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\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 const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterHorizontalId, setClickedOpenFilterHorizontalId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilterHorizontalMobileId, setClickedOpenFilterHorizontalMobileId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n const [defaultFilterItems, setDefaultFilterItems] = React.useState<any[]>([]);\n const [mobileShowSelectedSort, setMobileShowSelectedSort] = React.useState(true);\n const [soldProductAtEnd, setSoldProductAtEnd] = React.useState(false);\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\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 ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\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 setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n let valueSearchResultFacets = 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 setSearchResultFacets(valueSearchResultFacets);\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\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) setAllowedFilter(valueAllowedFilter);\n if (valueAllowedFilter?.length) {\n let valueDefaultFilterItems: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, label, display, settings } = filter;\n const { prefix, filter_list, selected_filter } = settings || {};\n\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n if (isDisplaySlider) return;\n\n let items: any[] = [];\n if (display.toLowerCase() === 'tree') {\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n items = [...items, ...valueSearchResultFacets[`${value}.lvl${level}`]];\n }\n } else {\n items = valueSearchResultFacets[value];\n }\n\n return {\n label,\n settings,\n items: items\n ?.map((item: any) => {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) return;\n\n return item.value;\n })\n ?.filter((item: any) => item)\n };\n })\n .filter((item: any) => item);\n setDefaultFilterItems(valueDefaultFilterItems);\n }\n }\n\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 = (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 as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const {\n allowed_sorts,\n default_sort,\n index_product,\n tabs,\n hidden_tags,\n display,\n colors,\n show_out_of_stock,\n languages,\n hierarchical_product_type,\n hierarchical_collections,\n mobile_show_selected_sort,\n sold_product_at_end\n } = 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 setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\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 setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n setMobileShowSelectedSort(mobile_show_selected_sort);\n setSoldProductAtEnd(sold_product_at_end);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\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 setIsLoadingSetting(false);\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 useEffectCallback(() => {\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 useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\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 isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\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 searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\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 searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n isFirstLoading,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd\n } = props || {};\n\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n const queryPage = query?.page ? query.page : DEFAULT_QUERY_PARAM.PAGE;\n const queryLimit = query?.limit ? query.limit : DEFAULT_QUERY_PARAM.LIMIT;\n\n const { collectionId, collectionName } = params || {};\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n\n const [isLoadingProduct, setIsLoadingProduct] = 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(searchParams?.get(queryLimit) || defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>(\n allowedFilter?.length\n ? allowedFilter\n .map((props: any, index: number) => {\n const { value, settings } = props;\n const { collapse } = settings || {};\n\n return collapse ? null : `${value}-${index}`;\n })\n .filter((item) => item)\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(Number(searchParams?.get(queryPage)) && !isLoadMore ? Number(searchParams?.get(queryPage)) : 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 [valueFilterOnSaleChange, setValueFilterOnSaleChange] = React.useState<number[]>([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = 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 { separator: hierarchical_collections_separator, hiddens: hierarchical_collections_hiddens } = hierarchicalCollectionsSettings || {};\n const { button_load_more, button_loading, mobile_sort_placeholder } = 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({ 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 const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\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 const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\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 setTimeout(() => {\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [id]: null\n };\n\n return fixState;\n });\n }, 100);\n };\n\n const handleFilterReset = () => {\n setClickedFacets?.({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setValueFilterOnSaleChange([]);\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', 'variants.sale_percent'].includes(parentId);\n let isHierarchical = hierarchicalFacetAliases.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\n // Uncheck facet children from parent\n if (isHierarchical) facets = facets.filter((facet: any) => !facet.startsWith(value));\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n if (parentId === 'variants.price') {\n setValueFilterPriceChange([]);\n } else if (parentId === 'variants.sale_percent') {\n setValueFilterOnSaleChange([]);\n }\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 let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter(handleQueryStringFilterProp);\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 setIsLoading(false);\n setIsLoadingProduct(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 const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(1));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let response: any;\n let filter: any = createQueryFilter({\n facets,\n facetsQueryStringObject: clickedFacets,\n callback: (facetsQueryStringObject) => {\n setClickedFacets?.(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n if (facetsQueryStringObject['variants.sale_percent']) setValueFilterOnSaleChange(facetsQueryStringObject['variants.sale_percent']);\n },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null]\n });\n\n let sort = soldProductAtEnd ? ['availability:asc'] : [];\n if (clickedSortId) sort.push(clickedSortId);\n\n let body = {\n q: keyword,\n sort,\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter\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 handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\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 let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price', 'variants.sale_percent'].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', 'variants.sale_percent'].includes(name);\n let getLabel = label;\n let getSettings: any = {};\n if (defaultFilterItems?.length) {\n defaultFilterItems.map((defaultFilterItem) => {\n const { label: defaultFilterItemLabel, items, settings: defaultFilterItemSettings } = defaultFilterItem;\n\n if (items?.includes(value)) {\n getLabel = defaultFilterItemLabel;\n getSettings = defaultFilterItemSettings;\n }\n });\n }\n\n getSettings?.delete_prefix?.map((deletePrefix: any) => {\n if (String(valueText).startsWith(deletePrefix)) valueText = String(valueText).replace(deletePrefix, '');\n });\n\n if (isRange) valueText = value?.join(' - ');\n else valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n let aliasValue: string = '';\n let aliasSeparator = '';\n if (name === 'hierarchicalCollections') {\n aliases = settings.collectionAliases || {};\n aliasSeparator = hierarchicalCollectionsSettings.separator;\n }\n if (name === 'hierarchicalProductType') {\n aliases = settings.productTypeAliases || {};\n aliasSeparator = hierarchicalProductTypeSettings.separator;\n }\n if (['hierarchicalCollections', 'hierarchicalProductType'].includes(name) && aliasSeparator) {\n const splitedValues = value.split(aliasSeparator);\n let newSplitedValues = [];\n for (const splitedValue of splitedValues) {\n newSplitedValues.push(aliases[splitedValue.trim()] || splitedValue);\n }\n aliasValue = newSplitedValues.join(' > ');\n }\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 {getLabel}: {aliasValue || valueText}\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 filterSettings = ({\n filter,\n scrollElementSelector\n }: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n if (display.toLowerCase() === 'slider') {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || defaultItemSlider?.max;\n\n isRender = !defaultValueMin && !defaultValueMax ? false : true;\n }\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n const getFacetComponent = (props?: { ulClasses?: string }) => {\n const { ulClasses = '' } = props || {};\n\n return (\n <FacetComponent\n filter={{\n ...filter,\n items\n }}\n isFirstLoading={isFirstLoading}\n displaySettings={displaySettings}\n generalDataSettings={generalDataSettings}\n settings={settings}\n searchFacetDistribution={searchFacetDistribution}\n clickedFacets={clickedFacets}\n setClickedFacets={setClickedFacets}\n handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n valueFilterOnSaleChange={valueFilterOnSaleChange}\n setValueFilterOnSaleChange={setValueFilterOnSaleChange}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\n scrollElementSelector={scrollElementSelector}\n layoutType={layoutType}\n collectionId={collectionId}\n colorSwatches={colorSwatches}\n ulClasses={ulClasses}\n languageSettings={languageSettings}\n triggerClickedFacets={triggerClickedFacets}\n setTriggerClickedFacets={setTriggerClickedFacets}\n handleQueryStringFilter={handleQueryStringFilter}\n previousStateFromOutside={previousState}\n />\n );\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 if (displaySettings?.filter?.layout === 'vertical' && allowedFilter?.length === 1) classesUlElement?.push('sledge-instant-search__result-filter-item-list-just-one');\n\n let isLastIndex = allowedFilter ? allowedFilter?.length - 1 === indexFilter : false;\n\n return { isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalSelected = 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\n const filterVerticalComponents = ({ filterLayoutType }: { filterLayoutType: 'standard' | 'flyout' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterVerticalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n filterTitleStyle={filter_title_style}\n handleOpenFilterVertical={handleOpenFilterVertical}\n clickedOpenFilters={clickedOpenFilters}\n filterLayoutType={filterLayoutType}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const filterHorizontalComponents = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterHorizontalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n deviceType={deviceType}\n clickedOpenFilterHorizontalId={clickedOpenFilterHorizontalId}\n setClickedOpenFilterHorizontalId={setClickedOpenFilterHorizontalId}\n clickedOpenFilterHorizontalMobileId={clickedOpenFilterHorizontalMobileId}\n setClickedOpenFilterHorizontalMobileId={setClickedOpenFilterHorizontalMobileId}\n allowedFilter={allowedFilter}\n layoutType={layoutType}\n collectionId={collectionId}\n />\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 = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\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\">\n {filterHorizontalComponents({ deviceType })}\n </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 const searchInputFieldComponent = (\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 );\n\n const FilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n <span>{language_filter || 'Filter'}</span>\n <FilterIcon width={18} height={18} color=\"#393d4e\" />\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent({ deviceType: 'mobile' })}\n </>\n );\n break;\n\n default:\n return null;\n break;\n }\n };\n\n return (\n <>\n {/* Filter Flyout on Mobile */}\n {displaySettings?.filter?.mobile_layout === 'flyout' && (\n <FlyoutSidebar\n title={language_filter || 'Filter'}\n content={\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'flyout'\n })?.filter((item) => item)?.length\n ? filterVerticalComponents({\n filterLayoutType: 'flyout'\n })\n : null}\n </>\n }\n open={openFilterFlyoutMobile}\n setOpen={setOpenFilterFlyoutMobile}\n />\n )}\n\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter?.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent({ deviceType: 'desktop' })}</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' && !hideFilterWhenOneValue ? (\n (!allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isFirstLoading) ||\n (allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isLoadingProduct) ? (\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 {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'standard'\n })}\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\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">\n <FilterLayoutOnMobile />\n </div>\n\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 {...(!mobileShowSelectedSort\n ? {\n overridePlaceholderOnMobile: mobile_sort_placeholder || 'Sort'\n }\n : {})}\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 debouncedKeyword,\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({ 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 handleSearchResult();\n }, [debouncedKeyword]);\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 useIsFirstRender() {\n const renderRef = React.useRef(true);\n\n if (renderRef.current === true) {\n renderRef.current = false;\n return true;\n }\n\n return renderRef.current;\n}\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\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, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\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} ref={searchIconWidgetRef}>\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_QUERY_PRODUCT_MEILISEARCH, 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 [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\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 { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\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 = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\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 ? [...new Set(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 as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\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) || null) as string);\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 = isRedirect ? redirectObjectDirection : `${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 redirectObjectDirection={redirectObjectDirection}\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_QUERY_PRODUCT_MEILISEARCH, 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 const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\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 = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\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 ? [...new Set(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 as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\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) || null) as string);\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 = isRedirect ? redirectObjectDirection : `${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 redirectObjectDirection={redirectObjectDirection}\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","TRIGGER_BADGE","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_COUNTER","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","CUSTOM_EVENT_NAMES","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","shopifyUrl","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","error","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","useEffectCallback","callback","dependencies","memoizedCallback","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","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","dispatchCustomEvent","eventName","detail","customEvent","CustomEvent","bubbles","cancelable","composed","document","dispatchEvent","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","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","rowRenderer","virtualized","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","RadioGroup","defaultValue","items","useVirtualized","scrollElement","selector","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","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","FilterIcon","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","strokeLinejoin","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","wishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","_b","total_data","totalWishlist","proxyUrl","BadgeCounter","propsData","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","isJsVersion","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","setTotalWishlist","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","handleGetWishlistInfo","setItem","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","launch_point","defaultTotalWishlist","Badge","useProxyUrl","position","positionProp","defaultColorIcon","colorIcon","setColorIcon","setProxyUrl","proxy_url","setData","floating_button_type","alert_login","alert","login_button","languages","widget","defaultPosition","valueData","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeCounterInitSelector","Array","from","querySelectorAll","remove","elementContainerWidget","createElement","setAttribute","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","triggerBadge","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","mouseEnter","setMouseEnter","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","state","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","wishlistActive","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","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","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","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","isLoadingAddToCart","isOutOfStock","isOnSale","money_format","component","CardsProps","variant","isInventoryQuantity","isInventoryManagement","isInventoryPolicy","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","inventoryManagement","inventoryPolicy","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","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","main_color","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","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","FlyoutSidebar","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","hierarchicalFacetAliases","hierarchicalFacetAlias","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","FacetComponent","displaySettings","searchFacetDistribution","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","separatedFilterItem","setSeparatedFilterItem","settings","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","aliases","productTypeAliases","collectionAliases","button_load_more","search_filter_placeholder","search_filter_show_more_result","search_filter_no_result","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","item_pagination","is_item_pagination","item_pagination_limit","filter_option_style","indexFilter","filterSettings","prefix","filter_list","delete_prefix","selected_filter","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","isDisplaySlider","getValue","handleFacetValues","facetValues","items2","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","level","counter","getLabelName","deletePrefix","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","Number","sliced","totalItems","filterSearchShowMoreId","handleSearchShowMore","isKeywordFacetChanged","isPreviousStateFromOutsideChanged","delayDebounceFn","isAutoSelectFacet","autoSelectFacets","itemValue","valueClickedFacets","handleQueryStringFilterProp","loadMoreComponent","old","handleFacetCheckbox","facetValue","isHasChildren","isChecked","blockComponentChildren","parentId","isShowSearch","defaultSearchShowMoreFilter","searchFilterShowMoreResult","getActionText","end","getText","indexOf","substring","getTextBetween","valueFilterSliderChange","defaultValueMin","defaultValueMax","force","FilterVerticalComponent","filterTitleStyle","handleOpenFilterVertical","clickedOpenFilters","filterLayoutType","filterItemId","isRender","classesUlElement","getFacetComponent","FilterHorizontalComponent","deviceType","clickedOpenFilterHorizontalId","setClickedOpenFilterHorizontalId","clickedOpenFilterHorizontalMobileId","setClickedOpenFilterHorizontalMobileId","allowedFilter","isOpenFilterHorizontal","isLastIndex","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","isFirstRender","renderRef","useIsFirstRender","querySortBy","sortBy","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","setAllowedFilter","allowedTabs","setAllowedTabs","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","setDisplaySettings","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","setLanguageSettings","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","_i","hierarchical_product_type","hierarchicalCollectionsSettings","setHierarchicalCollectionsSettings","_j","hierarchical_collections","initStatesFirstTime","setInitStatesFirstTime","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","general","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_k","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","attributesToRetrieve","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_l","_m","layout","filterVerticalSkeleton","_n","_o","flexWrap","alignItems","maxWidth","productGridSkeleton","_p","show_total_products","_q","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_r","_s","mobileFilterWithSearchAndSelectOptionSkeleton","_t","_u","containerStyle","ResultCategory","handleChangeTabIndex","_v","_w","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","setClickedOpenFilters","collapse","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","handleSearchResultFirstTime","setHandleSearchResultFirstTime","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","openFilterFlyoutMobile","setOpenFilterFlyoutMobile","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","hierarchical_separator","hiddens","hierarchical_hiddens","hierarchical_collections_separator","hierarchical_collections_hiddens","button_loading","mobile_sort_placeholder","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_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","otherQueryStringObject","valueClickedFacetsKey","newQueryString","valueClickedOpenFilters","findIndex","splice","handleFilterReset","isHierarchical","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","aliasValue","aliasSeparator","splitedValues","newSplitedValues","splitedValue","trim","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","createHierarchicalFacet","defaultItemSlider","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","FilterLayoutOnMobile","mobile_layout","allowed_limit","_y","_x","_z","_A","_B","_C","wishlists","reviews","ResultEmpty","isRefreshSearchResult","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","componentRef","searchIconWidget","searchIconWidgetRef","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","redirectsSettings","setRedirectsSettings","redirectObject","setRedirectObject","isRedirect","setIsRedirect","setHandleFunctions","direction","handleMultiSearch","withFetchReviewInfo","valueRedirectObject","redirectKeyword","valueIsRedirect","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","redirects","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":"+LAyBa,MCzBAA,EAAU,6BACVC,EAA4B,+CAC5BC,EAAU,uDAEVC,EAAyB,iBACzBC,EAmCC,CACNC,SAAU,gBACVC,eAAgB,sBAChBC,6BAA8B,oCAC9BC,cAAe,qBACfC,cAAe,qBACfC,cAAe,sBAiCVC,EACE,mBADFA,EAEC,kBAFDA,EAIgB,iCAJhBA,EAKQ,yBALRA,EAMS,0BANTA,EAOe,gCAPfA,EAQe,gCARfA,EAaM,uBAbNA,EAce,gCAEfC,EAIiB,mBAgBjBC,EAAW,CACpBC,OAAQ,CACJC,0BAA2B,IAAIZ,0BAEnCa,SAAU,CACNC,cAAe,IAAId,sBACnBe,sBAAuB,IAAIf,8BAC3BgB,wBAAyB,4CACzBC,gBAAiB,IAAIjB,wBACrBkB,eAAgB,IAAIlB,uBACpBmB,sBAAuB,IAAInB,+BAE/BoB,eAAgB,CACZF,eAAgB,IAAIlB,6BACpBqB,6BAA8B,IAAIrB,2CAClCsB,eAAgB,IAAItB,6BACpBuB,oBAAqB,IAAIvB,kCACzBwB,8BAA+B,IAAIxB,4CACnCyB,gBAAiB,IAAIzB,+BAEzB0B,eAAgB,CACZC,sBAAuB,IAAI3B,6BAC3B4B,2BAA4B,IAAI5B,kCAChC6B,6BAA8B,IAAI7B,oCAClC8B,mBAAoB,IAAI9B,6CAE5B+B,uBAAwB,CACpBC,wBAAyB,IAAIhC,8CAC7BiC,yBAA0B,IAAIjC,iDAGzBkC,EACW,qBADXA,EAEc,wBAFdA,EAKa,uBALbA,EAMgB,0BANhBA,EAOU,oBAPVA,EAQU,oBARVA,EASa,uBAEbC,EAAsB,CAAC,GAAI,GAAI,GAAI,GAAI,KACvCC,EAA8B,SAC9BC,EAA4B,sBAE5BC,EACA,IADAA,EAGA,UAHAA,EAIH,OAJGA,EAKF,QAEEC,EAAoC,CAAC,sBAAuB,4BAC5DC,EAAsB,IACtBC,EAIK,qBAJLA,EAKG,mBALHA,EAMK,qBANLA,EAOU,0BAPVA,EAQM,sBARNA,EASQ,wBATRA,EAUO,uBAIPC,EACO,CACZxB,eAAgB,yBAMXyB,EAAsB,CAC/BC,cAAe,gBACfC,OAAQ,gBACRC,IAAK,gBACLC,KAAM,gBACNC,IAAK,gBACLC,OAAQ,gBACRC,WAAY,iBAEHC,EAAyC,CAClDC,YAAa,0BACbC,aAAc,2BC3MYC,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,IACvC,IAEA,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,KAGzBa,EAAMe,IAAI5B,EAAKiB,EAAgBY,eAC1BC,GACL3B,OAAOwB,OAAOhB,EAClB,CAEO,OAAAM,CAAA,IAGX,OAAOF,GAAkBC,CAAA,KAGrC,CAhC2Be,CAAQ/B,GACpB,aAAMU,EAAKD,MACtB,CACJ,CCHa,MAAAuB,EAAeC,IAClB,MAAAC,EAAMC,EAAMC,SAIlB,OAHAD,EAAME,WAAU,KACZH,EAAII,QAAUL,CAAA,IAEXC,EAAII,OAAA,ECLR,SAASC,EAAwBtC,GAC9B,MAAAuC,UAAEA,EAAY,EAAGC,KAAAA,EAAO,gBAAMC,EAAa,OAAUzC,GAAW,IAC/D0C,EAAOC,GAAYT,EAAMU,SAAc,MAExCC,EAAwBX,EAAMC,OAAO,MAwBpC,MAAA,CAtBWD,EAAMY,aACnBC,IAMO,GALAF,EAAiBR,UACjBQ,EAAiBR,QAAQW,aACzBH,EAAiBR,QAAU,OAG3B,MAAAU,OAAA,EAAAA,EAAME,YAAaC,KAAKC,aAAc,CACtC,MAAMC,EAAW,IAAIC,sBACjB,EAAEX,MACEC,EAASD,EAAK,GAElB,CAAEH,YAAWC,KAAAA,EAAMC,eAGvBW,EAASE,QAAQP,GACjBF,EAAiBR,QAAUe,CAC/B,IAEJ,CAACb,EAAWC,EAAMC,IAGHC,EACvB,CC7BA,MAAMa,EAAoB,CAACC,EAAoBC,KACrC,MAAAC,EAAmBxB,EAAMY,aAAY,KACf,mBAAbU,MAEX,GACD,CAACA,IAGJtB,EAAME,WAAU,WAEbqB,EAAY,ECGN,MAAAE,EAAkBC,IAC3B,IAAKA,EAAW,MAAA,GAEZ,IAAAC,EAAQC,OAAOF,GAEnB,GAAIC,EAAMrC,SAAS,YAAcqC,EAAMrC,SAAS,KAAM,CAE9C,IAAAuC,EAAQF,EAAM3C,MAAM,KACxB,OAAO6C,EAAMA,EAAMC,OAAS,IAAMH,CAAA,CAE3B,OAAAA,CACX,EA8DSI,EAAcxD,GAA+D,mBAATA,EAEpEyD,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,EAAWhF,MAAOsE,IAU3B,MAAMpE,IAAEA,EAAKI,OAAAA,EAAA2E,cAAQA,EAAgB,GAAAC,QAAIA,EAAU,CAAA,EAAAC,QAAIA,EAAU,mBAAIC,GAAkB,EAAAC,aAAMA,GAAe,EAAO9E,UAAAA,GAAY,GAAU+D,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,OAAOnG,EAAoBC,cAAe2F,GAEzFY,EAASL,OAAOnG,EAAoBE,OAAQF,EAAoBiB,IAE5DmF,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,OAAS9E,EAC7C,IAAI8F,EAAsB,CACtB9F,OAAQ6F,EACRE,SAAU,SACVlB,QAASG,EACTgB,KAAoB,QAAdH,EAAsB,KAAOf,GAAmBC,EAAeQ,EAAWU,KAAKC,UAAUtB,GAC/F3E,aAGJ,aAAaN,EAAI,GAAGC,IAAOkG,EAAc,EAGhCK,EAAc,CACvBC,EACAvG,EAAe,CACXwG,SAAU,eACVC,KAAM,UACNC,MAAO,UACPC,IAAK,aAER,IAAIC,KAAKL,GAAMM,eAAe,QAAS7G,GAsJ/B8G,GAAaC,GACfA,EAAKC,QAAQ,gBAAiB,IAe5BC,GAAgBC,GACzBA,EACKC,cACAH,QAAQ,WAAY,IACpBA,QAAQ,MAAO,KAEXI,GAAqB,CAACC,EAAYC,WACvB,iBAATD,IACCA,EAAAA,EAAML,QAAQ,IAAK,KAG/B,IAAIhF,EAAQ,GACRuF,EAAmB,sBACnBC,EAAuBF,GAAU,cAE5B,SAAAG,EAAcC,EAAUC,GACtB,YAAc,IAAPD,EAAqBC,EAAMD,CAC7C,CAEA,SAASE,EAAqBC,EAAaC,EAAgBC,EAAiBC,GAKxE,GAJYF,EAAAL,EAAcK,EAAW,GACzBC,EAAAN,EAAcM,EAAW,KAC3BC,EAAAP,EAAcO,EAAS,KAE7BC,MAAMJ,IAAqB,MAAVA,EACV,OAAA,EAKP,IAAAK,GAFML,GAAAA,EAAS,KAAOM,QAAQL,IAEf5G,MAAM,KAIzB,OAHcgH,EAAM,GAAGlB,QAAQ,2BAA4B,KAAOe,IACtDG,EAAM,GAAKF,EAAUE,EAAM,GAAK,GAGhD,CAEA,OAAQ,OAAAE,EAAaZ,EAAA3G,MAAM0G,aAAoB,IAC3C,IAAK,SACOvF,EAAA4F,EAAqBP,EAAO,GACpC,MACJ,IAAK,qBACOrF,EAAA4F,EAAqBP,EAAO,GACpC,MACJ,IAAK,8BACDrF,EAAQ4F,EAAqBP,EAAO,EAAG,IAAK,KAC5C,MACJ,IAAK,0CACDrF,EAAQ4F,EAAqBP,EAAO,EAAG,IAAK,KAI7C,OAAAG,EAAaR,QAAQO,EAAkBvF,EAAK,EA0B1CqG,GAAsB,CAACC,EAAmBC,KACnD,MAAMC,EAAc,IAAIC,YAAYH,EAAW,CAAEI,SAAS,EAAMC,YAAY,EAAMC,UAAU,KAAWL,GAAU,CAAEA,YAEnHM,SAASC,cAAcN,EAAW,ECrZzBO,GAAU,EACnBC,UACAC,UACAC,SACAC,YACAC,gBACAC,QACAC,YACAC,iBAAgB,EAChBC,aAAY,EACZC,cAAc,GACdC,aAAa,EACbC,cAAc,MAER,MAAChJ,EAAMiJ,GAAW1H,EAAMU,WAAS2G,GAAgBL,GAYnD,OAVJhH,EAAME,WAAU,WACZ,IAAIyH,EAAe,OAAAzB,EAAA,MAAAS,cAAA,EAAAA,SAAUiB,cAAc,uBAAkB,EAAA1B,EAAA2B,cAEzDF,UAAgBJ,WAAazF,UAC7B6F,EAAaG,MAAMC,QAAU,cAC7BJ,EAAaK,UAAYT,EAC7B,GACD,CAAC9I,MAGAwJ,kBAAAC,KAACC,EAAeC,0CAAf,IACQf,GAAiB,CAClB5I,KAAMuI,MAELC,GAAa,CACdoB,aAAe5J,IACXiJ,EAAQjJ,GACRwI,EAAUxI,EAAI,GAItB6J,SAAA,CAAAC,EAAAN,kBAAAM,IAACC,EAAeC,0CAAf,CAAuBC,SAAO,EAAEJ,SAAQxB,IACzCyB,wBAACI,EAAAA,0CAAA,CACGL,WAAAL,kBAAAC,KAACU,EAAeC,0CAAf,CACGzB,UAAW,2BAA2BA,GAAwB,KAC9DI,aACAC,cACAN,WACKF,GAAa,CACd6B,gBAAiB,IAAM7B,GAAU,GACjC8B,iBAAkB,IAAM9B,GAAU,IAGrCqB,SAAA,CAAAvB,GACCG,GACGqB,EAAAA,kBAAAA,IAAAS,4CAAA,CAAqB5B,UAAU,eAAe,aAAW,QACtDkB,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,gBAKxBlC,EAAamC,EAAAxB,kBAAAM,IAAAmB,4CAAA,CAAqBtC,UAAU,iBAAoB,YAEzE,ECvECuC,GAAW,EAAG7J,QAAO8J,QAAOC,YAAY,GAAIC,eAAe,GAAIC,QAAQ,QAChF,MAAOC,EAAUC,GAAejK,EAAMU,SAAS,GAgB3C,OAdJV,EAAME,WAAU,KACR,IAAAgK,GAAkBpK,EAAQ8J,EAAS,IAEvC,GAAIG,EAAO,CACD,MAAAI,EAAQC,YAAW,KACjBF,GAAeD,EAAYC,EAAa,GAC7CH,GACI,MAAA,IAAMM,aAAaF,EAAK,CAE/BF,EAAYC,EAChB,GACD,MAGCjC,kBAAAM,IAAC+B,EAAgBC,0CAAhB,CACGnD,UAAU,mBACVtH,MAAOkK,EACPlC,MACIgC,EACM,CACIU,YAAa,MACbC,YAAa,QACbC,YAAaZ,GAEjB,CAAC,EAGXxB,WAAAL,kBAAAM,IAACoC,EAAgBC,0CAAhB,CACGxD,UAAU,oBACVU,MAAO,CACE+C,UAAW,eAAe,IAAMb,SACjCH,GAAa,CACbiB,gBAAiBjB,OAG7B,ECpCCkB,GAAW,EAAGrJ,KAAImC,OAAM/D,QAAOkL,WAAUC,QAAOC,UAASC,aAAa,CAAC,EAAGC,eAE/EnD,kBAAAC,KAAC,MAAI,CAAAd,UAAU,2BACXkB,SAAA,GAAAL,kBAAAM,IAAC8C,EAAgBC,0CAAhB,CAAqBlE,UAAU,wBAAwB8D,UAAkBxJ,KAAQmC,OAAY/D,QAAckL,WAAoBI,UAC5H9C,SAAAC,EAAAA,kBAAAA,IAACgD,EAAAA,0CAAA,CAA0BnE,UAAU,6BACjCkB,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,CAAA7D,UAAU,yBAAyBoE,QAAS9J,EAAIoG,MAAOqD,EACzD7C,SACL2C,OCnBHQ,GAAUC,IACb,MAAA5L,MAAEA,MAAO6L,EAAKC,IAAAA,EAAAC,KAAKA,EAAO,EAAGC,eAAAA,EAAAC,eAAgBA,GAAmBL,EAEtE,+BACK,OACG,CAAApD,WAAAL,kBAAAC,KAAC8D,EAAcC,0CAAd,CACG7E,UAAU,qBACVtH,gBACoB,IAAR6L,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,CAAoBnF,UAAU,sBAC3BkB,iCAACkE,EAAAA,0CAAA,CAAoBpF,UAAU,4BAEnCa,kBAAAM,IAACkE,GAAA,CACG1F,QAASjH,EAAM,GACfyH,YAAa,sPACbmF,aAAa,EAEbpE,WAACC,kBAAAA,IAAAoE,EAAAA,0CAAA,CAAoBvF,UAAU,0BAEjCtH,EAAM,KACJmI,kBAAAM,IAACkE,GAAA,CACG1F,QAASjH,EAAM,GACfyH,YAAa,sPACbmF,aAAa,EAEbpE,WAACC,kBAAAA,IAAAoE,EAAAA,0CAAA,CAAoBvF,UAAU,0BAN1B,SAUrB,ECvCKwF,GAAclB,IACvB,IAAImB,YAAEA,EAAaC,UAAAA,EAAAC,YAAWA,WAAaC,EAAUC,SAAUC,GAAiBxB,EAEhF,MAAMyB,EAAyC,IAAhBN,EACzBO,EAAqBP,IAAgBC,GAEpCG,EAAUI,GAAerN,EAAMU,SAAc,MAuBhD,OALJV,EAAME,WAAU,KAhBO,MACb,MAAAoN,IACApF,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,QACQuE,EAAY,OAAKC,EAAU,YAAUC,EAAY,aAI3DG,IACAA,EAAeA,EAAaM,WAAW1Q,EAAqC8E,OAAOiL,IACnFK,EAAeA,EAAaM,WAAW1Q,EAAmC8E,OAAOkL,IACjFI,EAAeA,EAAaM,WAAW1Q,EAAqC8E,OAAOmL,KAG3EM,EAAAH,GAA8BI,EAAe,OAK1D,MAGCrF,kBAAAC,KAAC,MAAI,CAAAd,UAAU,qBACXkB,SAAA,GAAAL,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SACLrG,UAAU,mCACL+F,EACC,CACIO,UAAU,GAEd,CACItC,QAAS,IAAM4B,EAASH,EAAc,IAGhDvE,iCAACqF,GAAqB,CAAA1E,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAEvDrF,kBAAAA,IAAC,QAAMD,SAAS2E,MAChBhF,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SACLrG,UAAU,mCACLgG,EACC,CACIM,UAAU,GAEd,CACItC,QAAS,IAAM4B,EAASH,EAAc,IAGhDvE,iCAACuF,GAAsB,CAAA5E,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAE5D,ECnDFE,GAAc,EAAGC,cAAanK,OAAMlC,KAAIyJ,iBAC1C,MAAM6C,MAAEA,EAAOzK,IAAAA,EAAM,IAAOwK,GAAe,CAAA,GAErC9C,MAAEA,EAAOnL,MAAAA,GAAU8D,EAEnBmD,IAEEmB,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAN,kBAAAM,IAAC0F,EAAAC,0CAAA,CAAuB9G,UAAU,2BAA2BtH,QAAc4B,GAAI,GAAGA,IAAKsM,IACnF1F,iCAAC6F,EAAAA,0CAAA,CAA4B/G,UAAU,sCAE1Ca,kBAAAM,IAAA,QAAA,CAAMnB,UAAU,4BAA4BoE,QAAS,GAAG9J,IAAKsM,IAASlG,MAAOqD,EACzE7C,SACL2C,sCAKH,MAAI,CAAA7D,UAAU,gCACVkB,SAAAvB,GAD+CxD,GAAOyK,EAE3D,EAIKI,GAAa,EAAG1M,KAAImC,OAAMmH,WAAUqD,eAAcC,QAAOnD,aAAa,GAAIiB,gBAAemC,kBAAiB,EAAOC,gBAAeC,cAEpIhF,EAAAxB,kBAAAM,IAAA,MAAA,CAAInB,UAAU,8BACXkB,iCAAC,OACG,CAAAA,WAAAL,kBAAAM,IAACmG,EAAkBC,0CAAlB,CACGvH,UAAU,2BACV,aAAW,eACXiH,eACA3M,KACAmC,OACAmH,WACAoB,gBAEC9D,SACGiG,EAAAhG,EAAAN,kBAAAM,IAACqG,GAAA,CACGC,SAAiB,MAAPP,OAAO,EAAAA,EAAAxM,OACjBgM,YAAa,EAAGE,QAAOzK,SACnBuK,GAAY,CACRC,YAAa,CACTC,QACAzK,OAEJK,KAAM0K,EAAMN,GACZtM,KACAyJ,eAGRqD,gBACAC,aAGJH,EAAM3K,KAAI,CAACC,EAAwCoK,IAC/CF,GAAY,CACRC,YAAa,CACTC,SAEJpK,OACAlC,KACAyJ,uBCnEnB2D,GAAc,EAAGpN,KAAImC,OAAM/D,QAAOiP,MAAKC,QAAOhE,WAAUiE,iBAAgB7D,cACjF,MAAM8D,EAAS,WACPF,WAAOlN,QACL,CACIqN,gBAAiB,QAAQH,MACzBI,eAAgB,WAEpB,CACItE,gBAAiBiE,IAK3BxG,OAAAA,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,+BACXkB,SAAAC,EAAAN,kBAAAM,IAAC8C,EAAgBC,0CAAhB,CACGlE,UAAU,4BACV6H,iBACAvN,KACAmC,OACA/D,QACAkL,WACAI,UACAtD,MAAOoH,KAEf,ECrBKG,GAAS,EAAGxL,OAAMyL,cAAatE,WAAUqD,eAAcC,QAAOnD,aAAa,GAAIiB,qBAEpFnE,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,yBACXkB,kCAACiH,EAAAA,0CAAA,CAAmB1L,OAAYmH,WAAoBoB,gBAChD9D,SAAA,CAAAJ,EAAAA,kBAAAA,KAACsH,EAAAA,0CAAA,CAAsBpI,UAAU,yBAC7BkB,SAAA,yBAACmH,EAAAA,0CAAA,CAAoBH,wCACpBI,EAAAA,0CAAA,CAAmBtI,UAAU,sBAC1BkB,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,2CAKxBmG,EAAAA,0CAAA,CACGrH,kCAACsH,EAAAA,0CAAA,CAAsBxI,UAAU,yBAC7BkB,SAAA,CAAAC,wBAACsH,EAAAA,0CAAA,CAA6BzI,UAAU,+BACpCkB,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,wCAIpBsG,EAAcC,yCAAd,CAAuB3I,UAAU,0BAC7BkB,SAAMgG,EAAA3K,KACH,CACIC,EAIAoK,KAEM,MAAA/C,MAAEA,EAAOnL,MAAAA,GAAU8D,EAGpB2E,OAAAA,EAAAA,kBAAAA,IAAAyH,GAAA,CAAgClQ,QAC5BwI,SAAA2C,GADqB+C,EAE1B,8BAKfiC,EAAAA,0CAAA,CAA+B7I,UAAU,+BACtCkB,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,0BAWvCwG,GAAsBhQ,EAAMkQ,YAAW,EAAG5H,WAAUlB,YAAY,MAAOsE,GAAcyE,6BAElFC,EAAAA,0CAAA,CAAmBhJ,UAAW,uBAAuBA,OAAiBsE,EAAO3L,IAAKoQ,EAC/E7H,SAAA,yBAAC+H,EAAAA,0CAAA,CAAwB/H,qCACxBgI,EAAAA,0CAAA,CAA4BlJ,UAAU,gCACnCkB,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,qBCrFpB+G,GAAY,EAAGtH,QAAOC,SAAQuE,OAAMG,WAExCrF,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,qBACXkB,SAAS,sCACL,MAAI,CAAAW,QAAcC,SAAgBxH,GAAG,yBAAyByH,QAAQ,YAAYC,KAAMwE,EACrFtF,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGgB,SAAS,UACTC,SAAS,UACTF,EAAE,mnCAIVf,wBAAC,MAAI,CAAAU,QAAcC,SAAgBxH,GAAG,yBAAyByH,QAAQ,YAAYC,KAAMwE,EACrFtF,SAAAC,EAAAN,kBAAAM,IAAC,QAAKe,EAAE,4pCCdfkH,GAAuB,EAAGvH,QAAOC,SAAQ0E,WAE9CrF,EAAAA,kBAAAA,IAAC,OAAK,CAAAnB,UAAU,0BACZkB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,iBACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,sCACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,iBACF4G,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACG7G,GAAG,WACH4H,EAAE,yXACFF,KAAMwE,cCVzBD,GAAuB,EAAG1E,QAAOC,SAAQ0E,WAE7CrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,0BACZkB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,+XACFF,KAAMwE,QCNbC,GAAwB,EAAG5E,QAAOC,SAAQ0E,WAE9CrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,2BACZkB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,8XACFF,KAAMwE,QCNb6C,GAAU,EAAGxH,QAAOC,SAAQ0E,aAEjC3F,kBAAAM,IAAC,QAAKnB,UAAU,mBACZkB,iCAAC,MAAI,CAAAW,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAE7G,GAAG,oBACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,QACF4G,WAAAL,kBAAAM,IAAC,OAAA,CACG7G,GAAG,SACH4H,EAAE,wlCACFF,KAAMwE,YCTrB8C,GAAY,EAAGzH,QAAOC,SAAQ0E,WAElCrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,qBACZkB,SAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAIY,QAAQ,YAAYwH,UAAU,QAAQ,cAAY,OAAO1H,QAAcC,SACxEZ,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACGe,EAAE,oOACFF,KAAMwE,QCNbgD,GAAa,EAAG3H,QAAOC,SAAQ0E,WAEnCrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,sBACZkB,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,QCRbiD,GAAiB,EAAG5H,QAAOC,SAAQ0E,aAExC3F,kBAAAM,IAAC,QAAKnB,UAAU,2BACZkB,iCAAC,MAAI,CAAAW,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAE7G,GAAG,0BACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,cACF4G,WAAAL,kBAAAM,IAAC,OAAA,CACG7G,GAAG,SACH4H,EAAE,+rBACFF,KAAMwE,YCTrBkD,GAAW,EAAG7H,QAAOC,SAAQ0E,WAElCrF,EAAAA,kBAAAA,IAAC,OAAK,CAAAnB,UAAU,oBACZkB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,OACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,4BACF4G,SAAAC,EAAAA,kBAAAA,IAAC,IAAE,CAAA7G,GAAG,SACF4G,SAAAC,EAAAN,kBAAAM,IAAC,OAAA,CACG7G,GAAG,iBACH4H,EAAE,k7FACFF,KAAMwE,cCVzBmD,GAAW,EAAG9H,QAAOC,SAAQ0E,mCAEjC,OAAK,CAAAxG,UAAU,oBACZkB,SAAAC,EAAAA,kBAAAA,IAAC,OAAIU,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAACmB,EAAAxB,kBAAAC,KAAA,IAAA,CAAExG,GAAG,qBACF4G,SAAA,GAAAL,kBAAAM,IAAC,OAAA,CACG7G,GAAG,SACH4H,EAAE,mYACFF,KAAMwE,MAEV3F,kBAAAM,IAAC,OAAA,CACG7G,GAAG,WACH4H,EAAE,m3BACFF,KAAMwE,WCbjBoD,GAAa,EAAG/H,QAAOC,SAAQ0E,WAEnCrF,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,sBACZkB,SAACmB,EAAAxB,kBAAAC,KAAA,MAAA,CAAIe,QAAcC,SAAgBC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BACrEf,SAAA,GAAAL,kBAAAM,IAAC,OAAK,CAAAe,EAAE,aAAa2H,OAAQrD,EAAOsD,YAAY,MAAMC,iBAAkB,GAAIC,cAAc,QAAQC,eAAe,YAChHpJ,kBAAAM,IAAA,OAAA,CAAKe,EAAE,WAAW2H,OAAQrD,EAAOsD,YAAY,MAAMC,iBAAkB,GAAIC,cAAc,QAAQC,eAAe,YAC/GpJ,kBAAAM,IAAC,OAAA,CACGe,EAAE,oHACF2H,OAAQrD,EACRsD,YAAY,MACZC,iBAAkB,GAClBC,cAAc,QACdC,eAAe,YAElBpJ,kBAAAM,IAAA,OAAA,CAAKe,EAAE,cAAc2H,OAAQrD,EAAOsD,YAAY,MAAMC,iBAAkB,GAAIC,cAAc,QAAQC,eAAe,YACjHpJ,kBAAAM,IAAA,OAAA,CAAKe,EAAE,YAAY2H,OAAQrD,EAAOsD,YAAY,MAAMC,iBAAkB,GAAIC,cAAc,QAAQC,eAAe,YAChHpJ,kBAAAM,IAAC,OAAA,CACGe,EAAE,kIACF2H,OAAQrD,EACRsD,YAAY,MACZC,iBAAkB,GAClBC,cAAc,QACdC,eAAe,eCxBtBC,GAAStR,EAAMkQ,YAAW,CAACxE,EAAY6F,KAChD,MAAMnK,UAAEA,EAAY,GAAIkB,SAAAA,EAAAkJ,UAAUA,EAAY,QAASC,UAAAA,GAAY,EAAOC,YAAAA,EAAc,cAAUC,EAAO,GAAAC,SAAIA,KAAaC,GAAenG,EAElI,MAAgB,cAAhBgG,IAAqC,MAANC,OAAM,EAAAA,EAAA7P,gCACvC,IAAE,CAAAgQ,KAAMH,EAAMvK,UAAW,kBAAkBA,GAAa,KAAM,yBAAwBoK,EAAW,yBAAwBC,EAAW1R,IAAKwR,KAAeM,EACpJvJ,aAGLC,EAAAN,kBAAAM,IAAC,SAAA,CACGnB,UAAW,kBAAkBA,GAAa,MAAMwK,EAAW,wBAA0B,KACrF,yBAAwBJ,EACxB,yBAAwBC,EACxB1R,IAAKwR,KACDM,EAEHvJ,YAAA,ICdAyJ,GAAoBrG,IAC7B,MAAMtE,UAAEA,EAAY,GAAI4K,KAAAA,EAAAlS,MAAMA,EAAQ,GAAAmS,eAAIA,EAAgBjF,SAAAA,EAAAkF,aAAUA,EAAcC,SAAAA,KAAaN,GAAenG,kCAazG,MAAI,CAAAtE,UAAW,sCAAsCA,GAAa,KAC9DkB,SAAA,CAAC0J,EAAczJ,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,kCAAmCkB,SAAK0J,IAA9D,OACR/J,kBAAAM,IAAA,QAAA,CAAMnB,UAAU,6BAA6BtH,QAAckN,SAAWoF,GAPrD,CAACA,IACvBpF,GAAYA,EAAS,CAAElN,MAAOsS,EAAEC,OAAOvS,OAAO,EAMmCwS,CAAkBF,GAAIrS,IAAKoS,KAAcN,IACrH/R,GAASmS,EACN1J,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,8BACXkB,WAACC,kBAAAA,IAAA,SAAA,CAAOnB,UAAU,sBAAsBqG,KAAK,SAASrC,QAhB7C,MACX,MAAA+G,OAAA,EAAAA,EAAAhS,UAAWgS,EAAShS,QAAQoS,QACtCvF,GAAYA,EAAS,CAAElN,MAAO,KAC9BoS,GAAgBA,GAAa,EAcb5J,SAAAC,EAAAA,kBAAAA,IAACmI,GAAU,CAAAzH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,gBAGhD,OACR,EC7BK4E,GAAgC,CACzC/T,KAAM,CAAEgU,OAAQ,KAChBC,OAAQ,CAAED,OAAQ,GAClBE,WAAY,CACRlF,KAAM,SACNmF,SAAU,KAILC,GAAoB,CAC7BC,OAAQ,CAAEC,QAAS,EAAGC,MAAO,GAC7BC,QAAUC,IACN,MAAMN,SAAEA,GAAaM,GAAU,GAExB,MAAA,CACHH,QAAS,EACTC,MAAO,EACPL,WAAY,CACRlF,KAAM,SACNmF,SAAUA,GAAY,IAC1B,GCZCO,GAAezH,UAClB,MAAAtE,UACFA,EAAY,GAAAkI,YACZA,EAAc,KAAA8D,4BACdA,EAA8B,KAAAC,YAC9BA,EAAc,KAAAC,oBACdA,EAAsB,GAAAnM,MACtBA,EAAQ,MAAA6F,SACRA,EAAAlN,MACAA,EAAQ,GAAAhC,QACRA,EAAU,GAACyV,cACXA,EAAA5B,KACAA,GACAjG,GAEG1E,EAAQC,GAAajH,EAAMU,UAAS,GAOrC8S,EAAgBlE,IAAgBxP,EAAQwP,EAAc,OAAApJ,EAAS,MAAApI,OAAA,EAAAA,EAAAsB,QAAO,EAAGU,MAAO2T,KAAuBA,IAAgB3T,IAAO,SAAI,EAAAoG,EAAA+E,MAElIyI,EAA0BnL,EAAAN,kBAAAM,IAAA,OAAA,CAAMD,UAAqB,MAAAgL,OAAA,EAAAA,EAAAxR,QAAS,GAAGwR,KAAuBE,IAAkBA,IAEhH,+BACK,MAAI,CAAApM,UAAW,gCAAgCA,GAAa,KACzDkB,SAAAC,EAAAN,kBAAAM,IAAC1B,GAAA,CACGC,QACKoB,EAAAA,kBAAAA,KAAA,SAAA,CAAOuF,KAAK,SAASrG,UAAU,sCAAsC,yBAAuB,QAAQ,yBAAuB,OACvHkB,SAAA,CAAC+K,EAAqB9K,EAAAA,kBAAAA,IAAC,OAAK,CAAAnB,UAAU,4BAA6BkB,SAAY+K,IAAhE,KAEfD,IAEOnL,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAACC,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,oCAAqCkB,SAA4B8K,IAChF7K,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,oCAAqCkB,SAAuBoL,OAGhFA,EAGJnL,EAAAA,kBAAAA,IAACoL,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAAS9M,EAAS,OAAS,SAAU+M,SAAUvB,GAA+BpL,UAAU,oBACjHkB,iCAACkI,GAAqB,CAAAvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAI/D7G,gCACK,KAAG,CAAAK,UAAU,8BACTkB,SAAS,MAAAxK,OAAA,EAAAA,EAAA6F,KAAI,CAACqQ,EAAahG,KACxB,MAAM/C,MAAEA,EAAOnL,MAAO2T,GAAgBO,EAEhCC,EAAO,IACT1L,EAAAN,kBAAAM,IAAC,KAAA,CAEG6C,QAAS,IAtCf,EAACH,EAAenL,KACtCkN,GAAYA,EAAS,CAAE/B,QAAcnL,MAAOA,IAC5CmH,GAAU,EAAK,EAoC4BqL,CAAkBrH,EAAOwI,MACnCA,IAAgB3T,GAAS,CAC1B,iBAAmB,GAGtBwI,SAAA2C,GANI+C,GAUN,OAAAuF,EACFhL,EAAAN,kBAAAM,IAAAgL,EAAA,CAAcW,QAAQ,EAAOC,SAAIxC,WAAM7M,QAAQ,QAAS2O,GAAc3B,WAAMH,WAAM7M,QAAQ,QAAS2O,GAChGnL,WAACL,kBAAAM,IAAA0L,EAAA,CAAK,IAD6GjG,KAItH/F,kBAAAM,IAAA0L,EAAA,CAAA,EAAUjG,EAAO,MAKlChH,SACAC,YACAC,eAAa,EACbC,QACAC,UAAU,sCACVE,WAAW,KAEnB,ECtFK8M,GAAezW,OAAS2D,uBAC7B,IAAAjD,EAEAgW,EACAC,EAFAC,GAAe,EAInBlW,OCqHgCV,OAAO6W,IACnC,IAAAC,EAAgBD,GAAwC,oBAAjBzW,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/HgD,EAAM,GAAG3D,kBAEb,aAAayI,EAAS,CAClB9E,MACAI,OAAQ,MACR2E,cAAe6R,IAEdrW,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EDpIYC,GACXN,EAA2B,OAA3B,OAAArO,EAAU,MAAA7H,OAAA,EAAAA,EAAAyW,aAAQ,EAAA5O,EAAA6O,QAAgB,EAExCV,GAAsB,OAAAW,EAAU,MAAA3W,OAAA,EAAAA,EAAAE,eAAM0W,YAAiB5W,EAASE,KAAK0W,WAAlB,EACnCX,E7BmJgB,wB6BjJ5BC,GACSjT,EAAA,CACL4T,cAAeb,EACfc,S7B8IwB,wB6B7IxB5W,KAAgB,MAAVF,OAAU,EAAAA,EAAAE,MACnB,EEXI6W,GAAgB1J,UACnB,MAAEnN,KAAM8W,GAAc3J,GAEtB4J,YAAEA,iCAAaC,EAAgCC,eAAAA,EAAAC,YAAgBA,GAAgBzV,EAAM0V,WAA2BC,EAAAA,gBAE9GC,SAAUC,GAAwBP,GAAe,CAAA,GACjDxV,MAAOgW,EAA0BhP,QAASiP,IAA+B,OAAA7P,EAAgC,MAAAqP,OAAA,EAAAA,EAAAK,eAAU,EAAA1P,EAAA8P,QAAS,IAE7Hd,EAAee,GAAoBjW,EAAMU,UAAS,MAAA2U,OAAA,EAAAA,EAAWJ,aAAc,IAC3EiB,EAAgBC,GAAqBnW,EAAMU,UAAU2U,IACrDe,EAAWC,GAAgBrW,EAAMU,UAAU2U,IAC3CiB,EAAyBC,GAA8BvW,EAAMU,UAAS,IACtE8V,EAAcC,GAAmBzW,EAAMU,SAAc,CAAA,IACrDgW,EAAiBC,GAAsB3W,EAAMU,UAAS,GAEvDkW,EAAwBjZ,WACrB0X,GAAcA,IAAcjS,OAAOC,KAAKgS,GAAWvT,aAC9CsS,GAAa,CACf9S,SAAU,EAAG4T,cAAeb,MACxB4B,EAAiB5B,GACjBkC,EAA2BlC,EAAqB,IAChD8B,GAAkB,GAClBE,GAAa,GAEC,MAAAtY,cAAAA,aAAA8Y,QAAQhc,EAA0CwZ,EAAA,IAI1D,MAAAtW,cAAAA,aAAA8Y,QAAQhc,EAA0Cqa,EACpE,EAgBJlV,EAAME,WAAU,KACP2V,GAdclY,OAAOmZ,IACtB,IAAAzY,EAIJ,GAFWA,EAAA6F,KAAK6S,MAAMD,IAEjBzY,EAAU,OAEf,MAAM2Y,kBAAEA,GAAsB3Y,GAAY,GAE1CoY,EAAgBpY,GAChBsY,EAAmBnB,GAAkBwB,EAAiB,EAMtDC,CAAelZ,aAAa2W,QAAQ7Z,IAAuC,KAAI,GAChF,CAACgb,IAEJ7V,EAAME,WAAU,MACO,MAAdsW,OAAc,EAAAA,EAAAU,eAAiBrB,SAGrC,CAACW,EAAcX,IAElB7V,EAAME,WAAU,KACP4V,GAA6BD,IAE9BE,GAA4BA,GAA2B,UAG5D,CAACD,EAA0BD,IAE9B,MAAMsB,EAAuB1B,IAAc,MAAA1X,kBAAA,EAAAA,aAAc2W,QAAQ7Z,KAAoD,KAE9G,SAAA0N,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAGjF,SAAiB4N,EAAAiB,EAAuBf,GAAaM,EAAkB,EAAI,GAAGJ,EAA0B,MAAQpB,KAAmB,GAAE,EC/DtIkC,GAAS1L,YAClB,MAAM2L,YAAEA,GAAc,EAAO9Y,KAAM8W,EAAWiC,SAAUC,GAAiB7L,GAEnE4J,YAAEA,iCAAaC,EAAgCC,eAAAA,EAAAC,YAAgBA,GAAgBzV,EAAM0V,WAA2BC,EAAAA,gBAE9GC,SAAUC,GAAwBP,GAAe,CAAA,GACjDxV,MAAOgW,EAA0BhP,QAASiP,IAA+B,OAAA7P,EAAgC,MAAAqP,OAAA,EAAAA,EAAAK,eAAU,EAAA1P,EAAA8P,QAAS,GAE9HwB,EAAmB,gBAElBC,EAAWC,GAAgB1X,EAAMU,SAAS8W,IAC1CtB,EAAgBC,GAAqBnW,EAAMU,UAAU2U,IACrDiB,EAAyBC,GAA8BvW,EAAMU,UAAS,IACtEyU,EAAUwC,GAAe3X,EAAMU,UAAS,MAAA2U,OAAA,EAAAA,EAAWuC,YAAa,KAChEpB,EAAcC,GAAmBzW,EAAMU,SAAc,CAAA,IACrDgW,EAAiBC,GAAsB3W,EAAMU,UAAS,IACtDnC,EAAMsZ,GAAW7X,EAAMU,SAAc,CAAA,IAEtCoX,qBAAEA,IAAyB,MAAAtB,OAAA,EAAAA,EAAcU,eAAgB,CAAA,GACzDa,YAAEA,QAAaC,EAAOC,aAAAA,IAAiB,OAAAjD,EAAc,MAAAwB,OAAA,EAAAA,EAAA0B,gBAAW,EAAAlD,EAAAmD,SAAU,GAE1EC,EAAkBb,GAAgBO,EAClCR,EAAWc,GAAoC,OAE/CxB,EAAwBjZ,gBACpByW,GAAa,CACf9S,SAAU,EAAG4T,cAAeb,EAAoBc,SAAUb,EAAe/V,KAAM8Z,MAC3E9B,EAA2BlC,EAAqB,IAChDsD,EAAYrD,GACZ6B,GAAkB,GAClB0B,EAAQQ,GAEM,MAAAta,cAAAA,aAAA8Y,QAAQhc,EAA0CwZ,EAAA,GAEvE,EAgBCiE,EAAuBlG,IACrBsE,IACAtE,EAAEmG,iBACFnG,EAAEoG,mBAGF9B,EACsB,oBAAXnU,QAA0BA,OAAOkW,yBACxClW,OAAOkW,wBAAwB,CAC3BC,MAAOX,GAAe,kBACtBY,QAASX,GAAS,qDAClBY,WAAYX,GAAgB,QAC5BY,iBAAkB,OAClBC,SAAU,IAAOvW,OAAOwW,SAASjH,KAAO,mBAG5CuF,IAAoB9U,OAAAwW,SAASjH,KAAOqD,GAAY,IACxD,EAGJnV,EAAME,WAAU,KACP2V,GAlCclY,OAAOmZ,IACtB,IAAAzY,EAIJ,GAFWA,EAAA6F,KAAK6S,MAAMD,IAEjBzY,EAAU,OAEf,MAAM2Y,kBAAEA,GAAsB3Y,GAAY,GAE1CoY,EAAgBpY,GAChBsY,EAAmBnB,GAAkBwB,EAAiB,EA0BtDC,CAAelZ,aAAa2W,QAAQ7Z,IAAuC,KAAI,GAChF,CAACgb,IAEJ7V,EAAME,WAAU,MACO,MAAdsW,OAAc,EAAAA,EAAAU,eAAiBrB,SAGrC,CAACW,EAAcX,IAElB7V,EAAME,WAAU,KACP4V,GAA6BD,IAE9BE,GAA4BA,GAA2B,UAG5D,CAACD,EAA0BD,IAE9B,MAAMmD,EAAa,MAEV9Q,kBAAAA,KAAA,OAAA,CAAKd,UAAU,yBAAyBgE,QAASkN,EAAqBW,aAAc,IAAMvB,EAAa,WAAYwB,aAAc,IAAMxB,EAAaF,GACjJlP,SAAA,CAACC,EAAAA,kBAAAA,IAAAgI,GAAA,CAAUtH,MAAO,GAAIC,OAAQ,GAAIuE,KAAK,UAAUG,MAAO6J,KACtDvB,GACE3N,EAAAN,kBAAAM,IAAC,OAAA,CACGnB,UAAW,8EAA6EkP,EAA0B,qCAAuC,IACzJ,iBAAe,yBAEfhO,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAA,iBAAe,mBAChBD,SAAAC,EAAAN,kBAAAM,IAAC6M,GAAA,CACG7W,KACIkX,EACM,IACOlX,EAEC0W,YAAY,MAAAlX,kBAAA,EAAAA,aAAc2W,QAAQ7Z,MAAmD,MAAN0D,OAAM,EAAAA,EAAA0W,aAG7F1W,WAUhC4a,EAAe,MAEb5Q,kBAAAA,IAAC,MAAI,CAAAnB,UAAW,0DAA0DkQ,IACtEhP,SAAAmB,EAAAxB,kBAAAC,KAAC,OAAK,CAAAkD,QAASkN,EAAqBlR,UAAU,4CAC1CkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,uCAAuCkB,SAAW,kBAClEJ,kBAAAA,KAAC,OAAK,CAAAd,UAAU,8BACZkB,SAAA,CAACC,EAAAA,kBAAAA,IAAAgI,GAAA,CAAUtH,MAAO,GAAIC,OAAQ,GAAIuE,KAAK,OAAOG,MAAM,aAClDsI,GACE3N,EAAAN,kBAAAM,IAAC,OAAA,CACGnB,UAAW,+EAA8EkP,EAA0B,qCAAuC,IAC1J,iBAAe,yBAEfhO,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAA,iBAAe,mBAChBD,SAAAC,EAAAN,kBAAAM,IAAC6M,GAAA,CACG7W,KACIkX,EACM,IACOlX,EAEC0W,YAAY,MAAAlX,kBAAA,EAAAA,aAAc2W,QAAQ7Z,MAAmD,MAAN0D,OAAM,EAAAA,EAAA0W,aAG7F1W,gBAYxC6a,EAAe,IAEZ7Q,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAW,wEAAwEkQ,IACpFhP,SAAAC,EAAAA,kBAAAA,IAAC,OAAK,CAAA6C,QAASkN,EAAqBlR,UAAU,4CAC1CkB,SAACJ,yBAAA,OAAA,CAAKd,UAAU,8BACZkB,SAAA,CAACC,EAAAA,kBAAAA,IAAAgI,GAAA,CAAUtH,MAAO,MAAOC,OAAQ,MAAOuE,KAAK,UAAUG,MAAM,aAC3DsI,GACE3N,EAAAN,kBAAAM,IAAC,OAAA,CACGnB,UAAW,+EAA8EkP,EAA0B,qCAAuC,IAC1J,iBAAe,yBAEfhO,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAA,iBAAe,mBAChBD,SAAAC,EAAAN,kBAAAM,IAAC6M,GAAA,CACG7W,KACIkX,EACM,IACOlX,EAEC0W,YAAY,MAAAlX,kBAAA,EAAAA,aAAc2W,QAAQ7Z,MAAmD,MAAN0D,OAAM,EAAAA,EAAA0W,aAG7F1W,eAY9C,OAAO2X,EAAiB,KAAO3N,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAGjF,SAAa,WAASC,EAAAA,kBAAAA,IAACyQ,GAAW,GAAKpX,OAAO0V,GAAUhY,SAAS,UAAYmK,EAAAxB,kBAAAM,IAAC6Q,8BAAmBD,GAAa,IAAG,EC9L1IE,GAA2B,KAChC,IAAAnX,EAA8BoX,MAAMC,KAAK5S,SAAS6S,iBAAiBze,EAASG,SAASE,yBAEhE8G,GAAYA,IAAYA,EAAQJ,QAIjDI,EAAAyB,KAAKC,IACT,GAAIA,EAAM,CAEFA,EAAKgE,cAAc,IAAIvN,MAA2BS,QAC7C8I,EAAAgE,cAAc,IAAIvN,MAA2BS,OAAsD2e,SAGxG,IAAAC,EAAyB/S,SAASgT,cAAc,OAC7BD,EAAAE,aAAavf,EAAwBS,GAC5D8I,EAAKiW,YAAYH,YAERI,WAAWJ,GAAwBK,OACxCxR,EAAAA,kBAAAA,IAACvI,EAAMga,WAAN,CACG1R,WAAAL,kBAAAM,IAACoN,EAAAA,cAAcsE,SAAd,CACGna,MAAO,CACHwV,YAAa,CACTM,UAAU,EACVsE,eAAe,EACfC,eAAe,GAEnB3E,eAAgBzX,aAAa2W,QAAQ7Z,IAAgC,GACrE4a,aAAa,GAGjBnN,iCAAC8M,GAAa,QAI9B,IACH,EAGQgF,GAAoB,KAC7B,MAAMC,EAAyBtc,aAAa2W,QAAQ7Z,GAAsCqJ,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAAuC,MAAmB,KAEjL,IAAAqH,EAA8BoX,MAAMC,KAAK5S,SAAS6S,iBAAiBze,EAASG,SAASC,gBAErFmf,GAAqBpY,GAAYA,IAAYA,EAAQJ,OAEzD,IAAKuY,GAA0BC,EAAmB,OAElD,MAAMxC,qBAAEA,IAAyB,MAAAuC,OAAA,EAAAA,EAAwBnD,eAAgB,CAAA,EAEnEqD,EAAuB3Y,OAAOkW,GAAsBxY,SAAS,UAEtC,SAAzBwY,EACIyC,EACQrY,EAAAyB,KAAI,CAACC,EAAWoK,KAChB,GAAApK,IAASoK,EAAO,CAEZpK,EAAKgE,cAAc,IAAIvN,MAA2BS,QAC7C8I,EAAAgE,cAAc,IAAIvN,MAA2BS,OAAsD2e,SAGxG,IAAAC,EAAyB/S,SAASgT,cAAc,OAC7BD,EAAAE,aAAavf,EAAwBS,GAC5D8I,EAAKiW,YAAYH,GAEjB,MAAMhf,EAAgBkJ,EAAK4W,aAAalgB,EAA+BI,wBAE9Dof,WAAWJ,GAAwBK,OACxCxR,EAAAA,kBAAAA,IAACvI,EAAMga,WAAN,CACG1R,WAAAL,kBAAAM,IAACoN,EAAAA,cAAcsE,SAAd,CACGna,MAAO,CACHwV,YAAa,CACTM,UAAU,EACVsE,eAAe,EACfC,eAAe,GAEnB3E,eAAgBzX,aAAa2W,QAAQ7Z,IAAgC,GACrE4a,aAAa,GAGjBnN,SAAAC,EAAAN,kBAAAM,IAAC6O,IAAMC,YAAaoD,QAAQ/f,GAAmC,SAAlBA,GAA2B4c,SAAUQ,QAIlG,KAGI5V,EAAAyB,KAAI,CAACC,EAAWoK,KAChB,GAAApK,IAASoK,EAAO,CAEZpK,EAAKgE,cAAc,IAAIvN,MAA2BS,QAC7C8I,EAAAgE,cAAc,IAAIvN,MAA2BS,OAAsD2e,SAGxG,IAAAC,EAAyB/S,SAASgT,cAAc,OAC7BD,EAAAE,aAAavf,EAAwBS,GAC5D8I,EAAKiW,YAAYH,GAEjB,MAAMhf,EAAgBkJ,EAAK4W,aAAalgB,EAA+BI,wBAE9Dof,WAAWJ,GAAwBK,OACxCxR,EAAAA,kBAAAA,IAACvI,EAAMga,WAAN,CACG1R,WAAAL,kBAAAM,IAACoN,EAAAA,cAAcsE,SAAd,CACGna,MAAO,CACHwV,YAAa,CACTM,UAAU,EACVsE,eAAe,EACfC,eAAe,GAEnB3E,eAAgBzX,aAAa2W,QAAQ7Z,IAAgC,GACrE4a,aAAa,GAGjBnN,SAAAC,EAAAN,kBAAAM,IAAC6O,IAAMC,YAAaoD,QAAQ/f,GAAmC,SAAlBA,GAA2B4c,SAAUQ,QAIlG,KAIA5V,EAAAyB,KAAKC,IACT,GAAIA,EAAM,CACN,MAAMlJ,EAAgBkJ,EAAK4W,aAAalgB,EAA+BI,eAGnEkJ,EAAKgE,cAAc,IAAIvN,MAA2BS,QAC7C8I,EAAAgE,cAAc,IAAIvN,MAA2BS,OAAsD2e,SAGxG,IAAAC,EAAyB/S,SAASgT,cAAc,OAC7BD,EAAAE,aAAavf,EAAwBS,GAC5D8I,EAAKiW,YAAYH,YAERI,WAAWJ,GAAwBK,OACxCxR,EAAAA,kBAAAA,IAACvI,EAAMga,WAAN,CACG1R,WAAAL,kBAAAM,IAACoN,EAAAA,cAAcsE,SAAd,CACGna,MAAO,CACHwV,YAAa,CACTM,UAAU,EACVsE,eAAe,EACfC,eAAe,GAEnB3E,eAAgBzX,aAAa2W,QAAQ7Z,IAAgC,GACrE4a,aAAa,GAGjBnN,iCAAC8O,GAAM,CAAAC,YAAaoD,QAAQ/f,GAAmC,SAAlBA,SAI7D,IAER,EC9HSggB,GAAmDhP,kBACtD,MAAAzJ,OAAEA,EAAQ0Y,YAAAA,GAAc,EAAO7H,OAAAA,GAAS,EAAO8H,mBAAAA,EAAAC,sBAAoBA,EAAuBC,gBAAAA,EAAAC,aAAiBA,EAAe,WAAcrP,GACxIsP,UAAEA,EAAAC,iBAAWA,GAAqBhZ,GAAU,CAAA,GAE5CqT,YAAEA,iCAAaC,EAAgCC,eAAAA,EAAAC,YAAgBA,GAAgBzV,EAAM0V,WAA2BC,EAAAA,gBAE9GC,SAAUC,GAAwBP,GAAe,CAAA,GACjDxO,QAASiP,IAA+B,OAAA7P,mBAAgC0P,eAAhC,EAAA1P,EAA0C8P,QAAS,GAE7FwB,EAAmB,UACnB0D,EAAkB,UAClBC,EAAkB,UAClBC,EAAiB,OAEjBC,EAAmD,kBAApBP,EAC/BQ,IAAeD,GAAwBP,GAEtCrD,EAAWC,GAAgB1X,EAAMU,SAAS4a,EAAeH,EAAkB3D,IAC3E+D,EAAUC,GAAexb,EAAMU,SAA6B4a,EAAeF,EAAiBF,IAE5FO,EAAYC,GAAiB1b,EAAMU,WAAWoa,IAC9Ca,EAAYC,GAAiB5b,EAAMU,UAAS,IAC5C0V,EAAWC,GAAgBrW,EAAMU,UAAU2a,IAC3C7E,EAAcC,GAAmBzW,EAAMU,SAAc,CAAA,IACrDmb,EAAiBC,GAAuB9b,EAAMU,SAAS,CAC1Dka,qBACAC,2BAEGnE,EAAiBC,GAAsB3W,EAAMU,UAAS,IACtDqb,GAAaC,IAAkBhc,EAAMU,UAAS,IAC9Cub,GAAUC,IAAelc,EAAMU,UAAS,IAExCyb,GAASC,IAAahc,EAAwB,CACjDC,UAAW,EACXC,KAAM,KACNC,WAAY,SAGVyW,kBAAEA,KAAsB,OAAAhC,mBAAcjN,cAAd,EAAAiN,EAAuBqH,SAAU,CAAA,GACvDC,KAAMC,GAAmBxD,SAAUyD,KAA0B,OAAAC,EAAc,MAAAjG,OAAA,EAAAA,EAAAzO,cAAS,EAAA0U,EAAAC,eAAgB,IACtGC,wBAAEA,GAAAC,uBAAyBA,GAAwBC,0BAAAA,GAAAC,yBAA2BA,GAA0BC,2BAAAA,GAAAC,0BAA4BA,KACtI,OAAAC,EAAc,MAAAzG,OAAA,EAAAA,EAAA0B,gBAAW,EAAA+E,EAAAP,eAAgB,CAAA,GACvC3E,YAAEA,SAAaC,GAAOC,aAAAA,KAAiB,OAAAiF,EAAc,MAAA1G,OAAA,EAAAA,EAAA0B,gBAAW,EAAAgF,EAAA/E,SAAU,GAE1EgF,GAAsBxf,UACpB,IAAAU,EAE2B,kBAApByc,GAAiCiB,IAC7B1d,EAAAyc,EACXkB,IAAe,IAEJ3d,OJyDWV,OAAO+D,EAAS0b,KAC1C,IAAAC,EAAY5b,EAAeC,GAC3B4b,EAAmBF,EAAY3b,EAAe2b,GAAa,GAC3D3I,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/G0iB,EACA,IACA,IAAIC,gBAAgB,CAChBC,WAAYH,IACbI,WAEH7f,EAAM,GAAG3D,oBAA0BmjB,IAAYE,IAEnD,aAAa5a,EAAS,CAClB9E,MACAI,OAAQ,MACR2E,cAAe6R,IAEdrW,MAAMuW,GACI8F,QAAQ9F,EAAOpW,QAEzBqW,OAAM,KACH,GACH,EIhFoB+I,CAAc3C,EAAWC,GAGhCS,EAAAf,GAA4Btc,EAAQ,EAGhDuf,GAAcjgB,MAAOyU,IAIvB,GAHAA,EAAEmG,iBACFnG,EAAEoG,kBAEE9B,EASA,YARsB,oBAAXnU,QAA0BA,OAAOkW,yBACxClW,OAAOkW,wBAAwB,CAC3BC,MAAOX,IAAe,kBACtBY,QAASX,IAAS,qDAClBY,WAAYX,IAAgB,QAC5BY,iBAAkB,OAClBC,SAAU,IAAOvW,OAAOwW,SAASjH,KAAO,oBAKhD,IAAA+L,OJlFoBlgB,OAAOY,IAY7B,MAAAyc,UAAEA,EAAWC,iBAAAA,EAAA6C,YAAkBA,EAAaC,cAAAA,EAAAC,WAAeA,EAAYC,mBAAAA,EAAAC,YAAoBA,EAAaC,aAAAA,EAAAC,gBAAcA,EAAiBC,aAAAA,GAAiB9f,EAE1J,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,aACT2I,EAAU,CACVyb,QAASpa,KAAKC,UAAU,CACpBzC,GAAID,EAAeuZ,GACnByC,WAAYhc,EAAewZ,GAC3BpX,KAAMia,EACNrU,OAAQsU,EACRQ,IAAKP,EACLQ,aAAcP,EACdpgB,IAAKqgB,EACLO,UAAWN,EACXO,SAAUN,EACVO,MAAON,KAIf,aAAa1b,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,YAECzE,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EIuC0BgK,CAAY3c,GAEvC,MAAM6S,OAAEA,EAAAvW,KAAQA,GAASsf,GAAkB,CAAA,GACrC9I,KAAEA,GAASD,GAAU,IACrBwJ,QAAEA,GAAY/f,GAAQ,GAE5B,IAAIgW,EAAe,MAATQ,EAEV5O,GAAqBsV,EAAqDlf,EAAxCA,EAAkF,CAChHsiB,MAAOtK,EAAM,UAAY,SACzB+J,YAGA/J,GACAmH,GAAeD,GAGX1F,GAA4BA,GAA2B,GAGvDN,IACqB,aAAjBsF,aAOc,oBAAXxY,SACHA,OAAOuc,gCAAgCvc,OAAOuc,iCAC9Cvc,OAAOwc,kCAAkCxc,OAAOwc,yCAKnDtD,EAGeI,EAAAhB,uBAAyBgB,EAAgBhB,sBAAsB,WAF/DgB,EAAAjB,oBAAsBiB,EAAgBjB,mBAAmB,WAKvD,oBAAXrY,QAA0BA,OAAOyc,yBAA2BzC,IACnEha,OAAOyc,wBAAwB,CAC3BtG,MAAQ+C,EAAuCoB,GAA1BF,GACrBhE,QAAU8C,EAAsCqB,GAAzBF,GACvB7D,SAAUyD,GACV/O,KAAM,UACNuE,KAAOzJ,EAAAN,kBAAAM,IAAAgI,GAAA,CAAUtH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,gBAG9DgO,EAGeI,EAAAhB,uBAAyBgB,EAAgBhB,sBAAsB,UAF/DgB,EAAAjB,oBAAsBiB,EAAgBjB,mBAAmB,UAKvD,oBAAXrY,QAA0BA,OAAOyc,yBAA2BzC,IACnEha,OAAOyc,wBAAwB,CAC3BtG,MAAOqE,IAA8B,SACrCpE,QAASqE,IAA6B,2CACtCjE,SAAUyD,GACV/O,KAAM,SACNuE,KAAOzJ,EAAAN,kBAAAM,IAAAgI,GAAA,CAAUtH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,cAEvE,EAgBJzN,EAAME,WAAU,MACP+b,KAAuB,MAAXG,QAAW,EAAAA,GAAA6C,iBAAgB/C,SAAYE,aAAW6C,eAAc,GAClF,CAAC7C,KAEJpc,EAAME,WAAU,KACP2V,GAAwBoG,KAEP,oBAAX1Z,SACPA,OAAO2c,4BAA8B,YArBtBvhB,OAAOmZ,IAGtB,IAAAzY,EAFJgY,GAAa,GAIFhY,EAAA6F,KAAK6S,MAAMD,GAEjBzY,IAELoY,EAAgBpY,GAChBgY,GAAa,GAAK,EAgBlBY,CAAelZ,aAAa2W,QAAQ7Z,IAAuC,MAAI,GAChF,CAACgb,EAAqBoG,KAEzBjc,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,GAAiB,GACvD,CAACxB,IAEJxV,EAAME,WAAU,KACP2V,GAAwBoG,WAG9B,CAACpG,EAAqBoG,GAAUhB,IAE7B,MAAArJ,IAAY6J,GAAcd,KAAiBjE,EAC3CyI,GAAiBvN,IAAY+J,EAYnC,OAVA3b,EAAME,WAAU,KACR0R,IACA8F,EAAayD,GACbK,EAAYJ,KAEZ1D,EAAaF,GACbgE,EAAYN,GAChB,GACD,CAACO,4BAGC,MAAI,CAAA1b,IAAKoc,GACL7T,UAAC8N,IAActD,KACZ7K,kBAAAM,IAAC,MAAA,CACGnB,UAAU,oCACL+X,IAAkB,CACnB,kBAAqB,IAGzB7W,WAAAL,kBAAAM,IAAC,OAAA,CACGnB,UAAU,2BACVgE,QAAUgH,GAAMwL,GAAYxL,GAC5B6G,aAAc,KACNrH,KAEJ8F,EAAayD,GACbK,EAAYJ,GACZQ,GAAc,GAAI,EAEtB1C,aAAc,KACNtH,KAEJ8F,EAAaF,GACbgE,EAAYN,GACZU,GAAc,GAAK,EAGvBtT,SAAAC,EAAAN,kBAAAM,IAACgI,IAAUtH,MAAO,MAAOC,OAAQ,MAAOuE,KAAM8N,EAAU3N,MAAO6J,SAI/E,ECjOK2H,GAAsC,EAAGlJ,oBAAmBxK,KAEhEnD,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,iCACVkB,SACG4N,EAAAhO,EAAAD,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTsX,IAAK,MACLpW,MAAO,OACPqW,eAAgB,iBAGpBhX,SAAA,CAACC,EAAAA,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAE1EvX,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTsX,IAAK,OAGT/W,SAAA,CAACC,EAAAA,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAC1EjX,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAC1EjX,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,YAG9EvX,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTsX,IAAK,QAGT/W,SAAA,CAACC,EAAAA,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAC1EjX,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,aAIlFxf,EAAMyf,SAASC,MAAMhU,EAAMpD,WAC3BtI,EAAMyf,SAAS9b,IAAI+H,EAAMpD,UAAWqX,GAChC3f,EAAM4f,aAAaD,EAAO,IACnBjU,QAQ3B0T,GAAaS,MC5EoB,EAAG7a,OAAMwR,6BAChC,MACF5I,MAAOkS,EACPC,UAAWC,EACXC,YAAaC,EACbC,eAAgBC,IAChB,OAAApL,EAAA,OAAc9O,EAAA,MAAAsQ,OAAA,EAAAA,EAAAzO,kBAASoQ,aAAvB,EAAAnD,EAA+BqL,eAAgB,CAAA,GAC3CA,aAAcC,IAA0B,OAAA7D,mBAAcvE,gBAAd,EAAAuE,EAAyBtE,SAAU,GAE7EoI,EAA6B,IAC3BT,GAA8B,CAAElS,MAAOkS,MACvCE,GAAkC,CAAEQ,SAAUR,MAC9CE,GAAoC,CAAEO,WAAYP,MAClDE,GAAuC,CAAEM,cAAeN,IAI3D7X,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,sCACXkB,SAACC,EAAAN,kBAAAM,IAAA,KAAA,CAAGT,MAAOyY,EAA6BjY,SAAOtD,IAAOsb,GAAyB,kBACnF,ED0DRlB,GAAauB,WEtEyB,EAAGtK,eAAcuK,aAAYC,UAASvR,cAAakH,2BACrF,MAAMhB,eAAEA,GAAmBxV,EAAM0V,WAA2BC,EAAaA,gBAEnEqB,kBAAEA,IAAsB,OAAA9Q,mBAAc6B,cAAd,EAAA7B,EAAuBmW,SAAU,CAAA,GACzDyE,wBAAEA,IAA4B,OAAA9L,mBAAckD,gBAAd,EAAAlD,EAAyBmD,SAAU,CAAA,GAEhEzB,EAAiBC,GAAsB3W,EAAMU,UAAS,GAEvDqgB,EAAiB/gB,EAAMC,OAAyB,MAkBlDsI,OALJvI,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,EAAiB,GACvD,CAACxB,IAGAjN,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,UAACoO,GACEnO,EAAAN,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACLuE,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,YAAaA,IAA4BwR,GAA2B,qBACpEhhB,MAAO+gB,EACP1O,SAAU4O,EACV/T,SAAU,EAAGlN,WAjBH,CAACA,IACvB8gB,GAAcA,EAAW9gB,EAAK,EAgBYwS,CAAkBxS,GAChDoS,aAzBS,WACrBmE,GAAgBA,GAAa,GAC7BuK,GAAcA,EAAW,IAEzB,OAAA1a,EAAA,MAAA6a,OAAA,EAAAA,EAAgB5gB,UAAhB+F,EAAyBqM,OAAA,EAsBbnL,UAAU,0EACV6K,gBAAc,KAG1B,EF+BRmN,GAAa4B,aGhE2B,EAAGC,eAAcC,aAAYC,mBAAkBC,YAAWC,UAAS7K,eAAcN,iBAAgB6E,uCAC/H,MAAAxF,+BAAEA,iBAAgCC,EAAgBC,YAAAA,GAAgBzV,EAAM0V,WAA2BC,EAAAA,gBAEjG7O,QAASiP,IAA+B,OAAA7P,mBAAgC0P,eAAhC,EAAA1P,EAA0C8P,QAAS,IAE7FgB,kBAAEA,IAAsB,OAAAhC,mBAAcjN,cAAd,EAAAiN,EAAuBqH,SAAU,CAAA,GAE3DiF,WAAYC,EACZC,aAAcC,EACdC,cAAeC,EACfC,YAAaC,EACbC,eAAgBC,EAChBC,aAAcC,EACdC,cAAeC,EACfC,iBAAkBC,EAClBtC,UAAWuC,EACXrC,YAAasC,EACbpC,eAAgBqC,IAChB,OAAAvF,EAAA,OAAcR,EAAA,MAAAjG,OAAA,EAAAA,EAAAzO,kBAASoQ,aAAvB,EAAA8E,EAA+BwF,eAAgB,CAAA,GAC7CC,qBAAEA,EAAsBC,mCAAAA,EAAAC,kCAAoCA,EAAmCC,oCAAAA,IAAwC,OAAA3F,EAAc,MAAA1G,OAAA,EAAAA,EAAA0B,gBAAW,EAAAgF,EAAA4F,QAAS,IACzKL,aAAEA,8BAAcM,IAAgC,OAAAC,mBAAc9K,gBAAd,EAAA8K,EAAyB7K,SAAU,IACjFmE,KAAMC,EAAmBxD,SAAUyD,IAA0B,OAAAyG,EAAc,MAAAzM,OAAA,EAAAA,EAAAzO,cAAS,EAAAkb,EAAAvG,eAAgB,IACtGwG,4BAAEA,EAA6BC,2BAAAA,EAAApG,2BAA4BA,EAA4BC,0BAAAA,IAA8B,OAAAoG,EAAc,MAAA5M,OAAA,EAAAA,EAAA0B,gBAAW,EAAAkL,EAAA1G,eAAgB,IAE7JhG,EAAiBC,GAAsB3W,EAAMU,UAAS,GAEvD2iB,GAA6B,IAC3B9B,GAAmC,CAAE3T,MAAO2T,MAC5CE,GAAqC,CAAE/W,YAAa+W,MACpDE,GAAsC,CAAE2B,aAAc3B,MACtDE,GAAoC,CAAE0B,WAAY1B,MAClDE,GAAuC,CAAEyB,cAAezB,MACxDE,GAAqC,CAAEwB,YAAaxB,MACpDE,GAAsC,CAAEuB,aAAcvB,MACtDE,GAAyC,CAAEvX,gBAAiBuX,MAC5DC,GAAkC,CAAE9B,SAAU8B,MAC9CC,GAAoC,CAAE9B,WAAY8B,MAClDC,GAAuC,CAAE9B,cAAe8B,KAGzDmB,GAAkBC,IAAuB5jB,EAAMU,UAAS,GAE/D,IAAImjB,GAAgB,soBAWpB,MAAMC,GAAwBnmB,gBAC1BimB,IAAoB,GACpB,IAAIrlB,EAAO0iB,EAAatd,KAAKC,IACnB,MAAAlC,GAAEA,EAAI+b,WAAAA,EAAA5Z,KAAYA,EAAM2a,aAAAA,EAAA3gB,IAAcA,YAAK4gB,EAAWC,SAAAA,EAAAC,MAAUA,GAAU/a,EAAK0a,QAE9E,MAAA,CACHtD,UAAWtZ,EACXuZ,iBAAkBwC,EAClBK,YAAaja,EACboa,mBAAoBO,EACpBN,YAAargB,EACbsgB,aAAcM,EACdL,gBAAiBM,EACjBL,aAAcM,EAAA,IAIlBoF,ORhBwBpmB,OAChCY,IAWI,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GmpB,EAAWzlB,EAAKoF,KAAKC,IACf,MAAAoX,UAAEA,mBAAWC,EAAkB6C,YAAAA,EAAAG,mBAAaA,cAAoBC,EAAaC,aAAAA,EAAAC,gBAAcA,EAAiBC,aAAAA,GAAiBza,EAE5H,MAAA,CACHlC,GAAID,EAAeuZ,GACnByC,WAAYhc,EAAewZ,GAC3BpX,KAAMia,EACNU,aAAcP,EACdpgB,IAAKqgB,EACLO,UAAWN,EACXO,SAAUN,EACVO,MAAON,EAAA,IAIXxgB,EAAM,GAAG3D,kBAIT2I,EAAU,CACVmhB,YAGJ,aAAarhB,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAZU,CACV,eAAgB,oBAYhBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EQlC8BqP,CAAgB1lB,GACN,OAArC,OAAA2H,EAAoB,MAApB6d,OAAoB,EAAAA,EAAAjP,aAApB5O,EAAAA,EAA4B6O,OACN,oBAAXxS,SAEHwT,GAA4BA,GAA2B,GAGvDN,IACqB,aAAjBsF,aAOJxY,OAAO2hB,iBACP3hB,OAAO2hB,gBAAgB,CACnBxL,MAAOwK,EACPvK,QAASwK,KAIrBS,IAAoB,IAEE,oBAAXrhB,QAA0BA,OAAOyc,yBAA2BzC,GACnEha,OAAOyc,wBAAwB,CAC3BtG,MAAOqE,GAA8B,SACrCpE,QAASqE,GAA6B,2CACtCjE,SAAUyD,EACV/O,KAAM,SACNuE,KAAOzJ,EAAAN,kBAAAM,IAAAgI,GAAA,CAAUtH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,QAAQH,KAAK,aAEvE,EAwEAlF,OAVJvI,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,EAAiB,GACvD,CAACxB,IjCqBoB,GAAG/G,WAAW,KAAM0V,OAAO,KAAMC,cAAa,MACjE3V,GAAa0V,GAGH,IAAIE,kBAAiB,SAAUC,GAChCA,EAAAhhB,SAAQ,SAAUihB,GACZjL,MAAMkL,UAAUC,MAAMC,KAAKH,EAASI,YAC1CrhB,SAAQ,SAAUzC,GAChB,GAAkB,IAAlBA,EAAKE,WAAmBF,EAAK+jB,QAAQnW,IAAa5N,EAAK+G,cAAc6G,IACrE,GAAK2V,UAAY,CACb,IAAIS,EAAcvL,MAAMC,KAAK1Y,EAAK2Y,iBAAiB/K,IAE/CoW,EAAY/iB,QACA+iB,EAAAlhB,KAAKC,IACbugB,EAAKvgB,EAAI,GAEjB,CAIR,GACH,GACJ,IAGIxC,QAAQuF,SAAS1C,KAAM,CAC5B6gB,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,eAAe,GAClB,EiCjDYC,CAAA,CACTzW,SAAU,oCACV0V,KAjEwB,KACxB,IAAIgB,GAAU,EAId,GAFqBxe,SAASiB,cAAc,sCAEtBud,EAAS,CACjBA,GAAA,EACN,IAAAC,EAAqBze,SAASiB,cAAc,0CAE5B,MAAAwd,GAAAA,EAAAC,iBAAiB,SAAS,WAC1C,IAAIjE,EAAY,OAAAlb,EAAAS,SAASiB,cAAc,qDAAvB1B,EAAqEof,YAEjFlE,IACUmE,UAAAC,UAAUC,UAAUrE,GAE1BgE,IACmBA,EAAAM,UAAUC,IAAI,UACjCP,EAAmBpd,UAvEvB,miBAwEIoC,YAAW,KACHgb,IACmBA,EAAAM,UAAUjM,OAAO,UACpC2L,EAAmBpd,UAAY6b,GACnC,GACD,OAEX,GAER,KA0CAtb,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CACKjF,UAACoO,GACEnO,EAAAA,kBAAAA,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,cAEQC,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA4N,EACI3N,wBAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAE1EjX,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,mFACXkB,SAAAC,EAAAN,kBAAAM,IAAC+I,GAAA,CACG7D,KAAK,SACL3F,MAAOub,MACDhC,IAAYJ,EAAanf,QAAW6hB,GACpC,CACIjW,UAAU,GAEd,CACItC,QAxD1BzN,UAChB,IAAIioB,EAAahD,EACbgD,IAAYA,EAAaA,EAAWpY,WAAW1Q,EAAuCmkB,EAAanf,SAEnGuf,GAAWJ,EAAanf,OACxBS,OAAOkW,wBAAwB,CAC3BC,MAAOiK,GAAsC,uDAC7ChK,QAASiN,GAAc,0DAA0D3E,EAAanf,8CAC9F8W,WAAYiK,GAAuC,uBACnDhK,iBAAkB,OAClBC,SAAUgL,IAAyB,CAAC,IAGlB,oBAAXvhB,QAA0BA,OAAO2hB,iBACxC3hB,OAAO2hB,gBAAgB,CACnBxL,MAAOgK,EACP/J,QAASyI,EACH,sMAEYyC,qIAEkDzC,8CAE9D,IAGlB,GAiCiC9Y,WAEOJ,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAAnB,UAAU,0EAA2EkB,SAAA2Y,EAAanf,SACvG6hB,GAAoBla,EAAAxB,kBAAAM,IAAAsd,GAAA,CAAA,GAAiB,KACrC9C,GAA+B,0BAEpC7B,IAGAuB,GAAgB,2BASpD,EHnJRrD,GAAa0G,aIzE2B,EAAG5E,aAAYG,UAAS7K,eAAcN,mCAC1E,MAAMV,eAAEA,GAAmBxV,EAAM0V,WAA2BC,EAAaA,gBAEnEqB,kBAAEA,IAAsB,OAAA9Q,mBAAc6B,cAAd,EAAA7B,EAAuBmW,SAAU,CAAA,GAE3DiF,WAAYyE,EACZvE,aAAcwE,EACdtE,cAAeuE,EACfrE,YAAasE,EACbpE,eAAgBqE,EAChBnE,aAAcoE,EACdlE,cAAemE,EACfjE,iBAAkBkE,EAClBvG,UAAWwG,EACXtG,YAAauG,EACbrG,eAAgBsG,IAChB,OAAAhK,EAAA,OAAczH,EAAA,MAAAwB,OAAA,EAAAA,EAAAzO,kBAASoQ,aAAvB,EAAAsE,EAA+BiK,mBAAoB,CAAA,GACjDC,iCAAEA,EAAkCC,gCAAAA,EAAAC,yCAAiCA,EAA0CC,yCAAAA,IACjH,OAAA7J,EAAc,MAAAzG,OAAA,EAAAA,EAAA0B,gBAAW,EAAA+E,EAAA6F,QAAS,IAChC4D,iBAAEA,IAAqB,OAAAxJ,mBAAchF,gBAAd,EAAAgF,EAAyB/E,SAAU,CAAA,GAEzDzB,EAAiBC,GAAsB3W,EAAMU,UAAS,GAEvDqmB,EAAiC,IAC/BhB,GAAuC,CAAEnY,MAAOmY,MAChDC,GAAyC,CAAEtb,YAAasb,MACxDC,GAA0C,CAAE3C,aAAc2C,MAC1DC,GAAwC,CAAE3C,WAAY2C,MACtDC,GAA2C,CAAE3C,cAAe2C,MAC5DC,GAAyC,CAAE3C,YAAa2C,MACxDC,GAA0C,CAAE3C,aAAc2C,MAC1DC,GAA6C,CAAExb,gBAAiBwb,MAChEC,GAAsC,CAAE/F,SAAU+F,MAClDC,GAAwC,CAAE/F,WAAY+F,MACtDC,GAA2C,CAAE/F,cAAe+F,IAGpEzmB,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,EAAiB,GACvD,CAACxB,IAaJ,6DAESlN,UAACoO,yDAEOpO,UAAC+Y,yDAEO/Y,SACG4N,EAAA3N,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAEzEjX,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,sCACXkB,SAAAC,wBAAC+I,IAAO7D,KAAK,SAAS+D,UAAU,SAASpG,QArBrD,KACM,oBAAX7I,QAA0BA,OAAOkW,yBACxClW,OAAOkW,wBAAwB,CAC3BC,MAAOiO,EACPhO,QAASiO,EACThO,WAAYiO,EACZhO,iBAAkB,SAClBC,SAAUvW,OAAOykB,+BAAiC,CAAC,GACtD,EAasFlf,MAAOif,EACjEze,aAA0Boe,GAAoB,2BAQ/E,EJGRtH,GAAa6H,KKxEmB,EAAGC,eAAcC,eAAcC,kBAAiBC,yBAAwB7Q,eAAc8Q,gCAClH,MAAM9R,eAAEA,GAAmBxV,EAAM0V,WAA2BC,EAAaA,gBAEnEqB,kBAAEA,IAAsB,OAAA9Q,mBAAc6B,cAAd,EAAA7B,EAAuBmW,SAAU,CAAA,GAEzDkL,iBAAEA,IAAqB,MAAAD,OAAA,EAAAA,EAAqBpP,YAAa,CAAA,GAExDxB,EAAiBC,GAAsB3W,EAAMU,UAAS,GAW7D,OAJAV,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,EAAiB,GACvD,CAACxB,IAIK/L,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAACoO,EAoBE,KAnBAnO,EAAAN,kBAAAM,IAAAgF,6BAAA,CACKjF,SAAgB4e,GAAAzM,QAAsB,MAAdyM,OAAc,EAAAA,EAAAplB,SACnC2H,EAAAxB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,sCACXkB,WAAAL,kBAAAM,IAAC4K,GAAA,CACGhM,MAAM,MACNrJ,QAASopB,EAAavjB,KAAKC,IACjB,MAAAC,KAAEA,EAAM/D,MAAAA,GAAU8D,EACjB,MAAA,CACHqH,MAAOpH,EACP/D,QAAA,IAGRA,MAAOqnB,EACPna,SAAU,EAAGlN,WAzBhB,CAACA,IACtBsnB,GAAmBA,EAAgBtnB,GACnCunB,GAA0BA,GAAuB,EAAI,EAuBCG,CAAiB1nB,GAC/CwP,YAAaiY,GAAoB,oBAMzD,ELgCRnI,GAAaqI,MM1EoB,EAAGC,eAAcC,gBAAeC,mBAAkBP,yBAAwB7Q,yBACvG,MAAMhB,eAAEA,GAAmBxV,EAAM0V,WAA2BC,EAAaA,gBAEnEqB,kBAAEA,IAAsB,OAAA9Q,mBAAc6B,cAAd,EAAA7B,EAAuBmW,SAAU,CAAA,GAExD3F,EAAiBC,GAAsB3W,EAAMU,UAAS,GAW7D,OAJAV,EAAME,WAAU,KACZyW,EAAmBnB,GAAkBwB,EAAiB,GACvD,CAACxB,IAIK/L,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAACoO,EAkBE,KAjBAnO,EAAAN,kBAAAM,IAAAgF,6BAAA,CACKjF,SAAgBof,GAAAjN,QAAsB,MAAdiN,OAAc,EAAAA,EAAA5lB,SACnC2H,EAAAxB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,sCACXkB,WAAAL,kBAAAM,IAAC4K,GAAA,CACGhM,MAAM,MACNrJ,QAAS4pB,EAAa/jB,KAAKC,IAChB,CACHqH,MAAOrH,EACP9D,MAAO8D,MAGf9D,MAAO6nB,GAAiBD,EAAa,GACrC1a,SAAU,EAAGlN,WAxBf,CAACA,IACvB8nB,GAAoBA,EAAiB9nB,GACrCunB,GAA0BA,GAAuB,EAAI,EAsBCQ,CAAkB/nB,UAMxE,EClBK,MAAAgoB,GAAqBnqB,MAAO+N,IACrC,MAAMsP,UAAEA,EAAY,KAAA+M,MAAMA,EAAQ,MAASrc,GAAS,GAEpD,IAAI2R,EAAYrC,EAAYvZ,EAAeuZ,GAAa,GACpDvG,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/G0iB,EACA,IACA,IAAIC,gBAAgB,CAChB,CAACxgB,EAAoBC,eAAgBwX,KAClCsT,IACJrK,WAEH7f,EAAM,GAAG3D,iBAAuBmjB,IAAYE,IAEhD,aAAa5a,EAAS,CAClB9E,MACAI,OAAQ,MACR2E,cAAe6R,EACf1R,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,ECrBIoT,GAAUtc,cACb,MAAA9B,MACFA,EAAAqe,QACAA,EAAAC,KACAA,EAAO,KAAAjmB,OACPA,EAAAkmB,oBACAA,GAAsB,EAAAC,UACtBA,GAAY,EAAAC,wBACZA,GAA0B,EAC1B9pB,KAAM8W,EAAAiT,eACNA,EAAAze,UACAA,EAAY,GAAAC,aACZA,EAAe,GAAAye,iBACfA,GAAmB,EAAAC,kBACnBA,EAAoB,GAAAC,cACpBA,EAAgB,GAChB/c,GACEsP,UAAEA,GAAc/Y,GAAU,IAE1BqT,YAAEA,EAAaC,+BAAAA,GAAmCvV,EAAM0V,WAA2BC,EAAAA,gBAEjFuE,cAAewO,GAA6BpT,GAAe,CAAA,GAC3DxV,MAAO6oB,EAAgC7hB,QAAS8hB,IAAqC,OAAA1iB,EAAgC,MAAAqP,OAAA,EAAAA,EAAA2E,oBAAe,EAAAhU,EAAA2iB,SAAU,GAEhJC,GAAczT,QAA8B,IAAVzL,QAA4C,IAAZqe,GACjE/R,EAAgBC,GAAqBnW,EAAMU,SAASooB,IACpD1S,EAAWC,GAAgBrW,EAAMU,SAASooB,IAC1CC,EAAQC,GAAahpB,EAAMU,SAC9B2U,QAA8B,IAAVzL,QAA4C,IAAZqe,EAC9CC,GAAwB,iBAATA,EACXe,GAAUf,GACV,CACIjf,MAAa,MAANif,OAAM,EAAAA,EAAAjf,MACbC,OAAc,MAANgf,OAAM,EAAAA,EAAAhf,QAEtB,CACID,MAAO,EACPC,OAAQ,KAGfggB,EAAaC,GAAkBnpB,EAAMU,UAAS,MAAA2U,OAAA,EAAAA,EAAW+T,eAAgBxf,GAAS,IAClFyf,EAAeC,GAAoBtpB,EAAMU,UAAS,OAAAsU,EAAA,MAAAK,OAAA,EAAAA,EAAWwT,aAAX,EAAA7T,EAAmBiT,UAAWA,GAAW,MAC3FzR,EAAcC,GAAmBzW,EAAMU,UAAc,MAAA4nB,OAAA,EAAAA,EAAgBiB,SAAU,CAAA,IAC/ExN,EAAaC,GAAkBhc,EAAMU,UAAS,IAC9Cub,EAAUC,GAAelc,EAAMU,UAAS,GAEzC8oB,EAAqB3pB,EAAY,CAAEmb,eAElCmB,EAASC,GAAahc,EAAwB,CACjDC,UAAW,EACXC,KAAM,KACNC,WAAY,SAGVkpB,WAAEA,EAAa,UAAAC,cAAWA,EAAgB,YAAc,OAAAjN,EAAc,MAAAjG,OAAA,EAAAA,EAAAzO,cAAS,EAAA0U,EAAAoM,SAAU,GAEzFc,GtCYsB,CAAC1nB,IAC7B,MAAM2nB,YAAEA,EAAc,EAAAC,cAAGA,EAAgB,OAAU5nB,GAAU,GAE7D,IAAI6nB,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,MAAMtlB,KAAKulB,MAAQ,KAAQH,CAAA,EsCxBjBI,GAEhBC,GAA0BxsB,MAAOysB,EAAsBC,GAA0B,WACnF,GAAID,IAAoBpP,EAAW,OAE/B,IAAA3c,EAGAisB,EAEA/rB,EAJAgW,GAAe,EACfgW,EAA2B,EAI/B,GAAIlV,GAAa0G,EACNxd,EAAA8W,EACDd,GAAA,EACNyH,GAAe,OACZ,CAKH,GAJA3d,QAAiBypB,GAAc,CAC3B9M,UAAWoP,KAGV/rB,EAAU,OAET,MAAAyW,OAAEA,GAAWzW,EACnBE,EAAOF,EAASE,KACV,MAAAwW,KAAEA,GAASD,EAEjBP,EAAe,MAATQ,IAAgB,CAC1B,CAEmBwV,GAAA,MAAAhsB,OAAA,EAAAA,EAAM6qB,cAAe7qB,EAAK6qB,aAAe,EACvCljB,GAAA,OAAAA,QAAA3H,WAAMsqB,aAAN,EAAA3iB,EAAc+hB,SAAU1pB,EAAKsqB,OAAOZ,QAAU,EAE/D1T,IACA4U,EAAeoB,GACfjB,EAAiBgB,GACjBjU,GAAa,GACbF,GAAkB,GAEdkU,GAA2B1B,GAAkCC,GAAkCA,EAAiC,IACxI,EAWE3R,GAAiBtZ,MAAO6sB,IAGtB,IAAAnsB,EAFJgY,GAAa,GAIFhY,EAAA6F,KAAK6S,MAAMyT,GAEjBnsB,IAELoY,EAAgBpY,QAjBeV,gBACV,IAAViM,QAA4C,IAAZqe,EACvC5R,GAAa,GAEb8T,GAAwBnP,EAC5B,EAcMyP,GAA2B,EAwDjC,OA1CJzqB,EAAME,WAAU,MACP+b,IAAuB,MAAXG,OAAW,EAAAA,EAAA6C,iBAAgB/C,QAAYE,WAAW6C,eAAc,GAClF,CAAC7C,IAEJpc,EAAME,WAAU,KACR,IAACwoB,IAA6BzM,EAAU,OAE/B,OAATiM,EACUc,EAAA,CACN/f,MAAO,GACPC,OAAQ,KAEI,OAATgf,EACGc,EAAA,CACN/f,MAAO,GACPC,OAAQ,KAEI,OAATgf,GACGc,EAAA,CACN/f,MAAO,GACPC,OAAQ,KAISuR,QAAQ+O,IAAiB,MAAAA,OAAA,EAAAA,EAAexO,aAAcA,IAEvD7E,GAAkB,GAE1Cc,GAAelZ,aAAa2W,QAAQ7Z,IAA6C,KAAI,GACtF,CAAC6tB,EAA0BzM,EAAUjB,IAExChb,EAAME,WAAU,MACP8a,GAAcA,GAAa2N,IAAmC3N,IAE/D4N,GAAkCA,EAAiC,IAEvEzS,GAAkB,GAElBgU,GAAwBxB,GAAgC,GAAI,GAC7D,CAAC3N,EAAW2N,MAGX1gB,kBAAAM,IAAC,MAAA,CACGnB,UAAU,gCACVgE,QAvDc,KACbid,GAELje,YAAW,KACSpI,EAAA,CACZE,QAASyE,SAAS+jB,eAAe3tB,EAA0BxB,gBAC3D4G,aAAc,IACjB,GACF,IAAG,KAgDmB,iBAAT+lB,EACN,CACI,mBAAsBA,GAE1B,CAAC,EACPnoB,IAAKoc,EAEJ7T,YAAkB6f,EACf5f,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAGrEjX,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,UAAC8N,GAEOlO,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAI,CAACC,EAAMoK,KACxB,KAAMpK,GAAQ6kB,GAAgB,OAE9B,MAAMkC,iBAAEA,EAAkBC,iBAAAA,EAAAC,OAAkBA,iBAAQC,EAAgBC,UAAAA,GtCYvE,GACzB9C,UACArkB,OACAoK,QACAgN,YACAwN,oBACAmB,oBASA,IAcIkB,EAdAG,EAAcjB,KAAKC,MAAMiB,WAAWhD,IAEpCiD,EAAgBtpB,OAAOqmB,GAAS3oB,SAAS,KAAOsC,OAAOqmB,GAASjpB,MAAM,KAAO,GAC7EmsB,EAAmBvpB,OAAOqmB,GAAS3oB,SAAS,KAAOsC,OAAOqmB,GAASjpB,MAAM,KAAO,GAEhFosB,EADmBF,EAAcppB,QAAUqpB,EAAiBrpB,OAC5BopB,EAAc,IAAMC,EAAiB,GAAK,EAC1EJ,EAAY,SAEZnnB,EAAOonB,GAAeA,EAAc,IAAMpnB,IAC1CmnB,EAAY,QAAQK,KAGZL,EAAAnnB,GAAQonB,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,KAAa/c,KAASgN,GAAwB2O,IAAgBnB,EAAoB,IAAIA,IAAsB,KAIhI,MAAA,CACHoC,mBACAD,iBALmB,gBAAgBC,IAMnCE,eALiB,kBAAkBF,IAMnCC,SACAE,YAAA,EsChG0GM,CAAc,CAC5FpD,QAASoB,EACTzlB,OACAoK,QACAgN,YACA2O,iBACAnB,sBAIA,SAAA7O,cAAC,MAAI,CAAAtQ,MAAM,gCAAiC0f,EAAQ5f,QAAQ,YAAY5F,IAAKqnB,GACzE1iB,EAAAD,kBAAAC,KAAC,OACG,CAAAI,SAAA,GAACJ,kBAAAA,KAAA,iBAAA,CAAexG,GAAIipB,EAChBriB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAAsiB,SAAgBS,UAAWzhB,GAAa4f,IAC9ClhB,EAAAA,kBAAAA,IAAC,QAAKsiB,SAAgBS,UAAyB,SAAdP,EAAuBlhB,GAAa4f,EAAa3f,GAAgB4f,SAEtGxhB,kBAAAA,KAAC,iBAAe,CAAAxG,GAAIopB,EAChBxiB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,OAAK,CAAAsiB,SAAgBS,UAAWzhB,GAAa4f,IAC7ClhB,EAAAA,kBAAAA,IAAA,OAAA,CAAKsiB,SAAgBS,UAAU,sBAGxC/iB,EAAAN,kBAAAM,IAAC,OAAA,CACGa,KAAM,QAAQ0hB,KACdxhB,EAAE,4qBACGif,EACC,CACItX,OAAQ,QAAQ0Z,KAChBzZ,YAAa,OAEjB,CAAC,IAEf,IAGPkX,IAAYngB,kBAAAC,KAAC,MAAI,CAAAd,UAAU,8CAA8CkB,SAAA,CAAA,IAAE4gB,EAAY,OAAY3gB,EAAAA,kBAAAA,IAAAgF,EAAAtF,kBAAAsF,SAAA,UAGhH,EAMV0b,GAAaf,GACF,OAATA,EACO,CACHjf,MAAO,GACPC,OAAQ,IAEI,OAATgf,EACA,CACHjf,MAAO,GACPC,OAAQ,IAGL,CACHD,MAAO,GACPC,OAAQ,IC7QPkW,GAAuC1T,IAC1C,MAAC0K,EAAWC,GAAgBrW,EAAMU,UAAUgL,EAAMnN,MAQ/CgK,OANTvI,EAAME,WAAU,KACZmW,GAAa,EAAK,GACnB,IAIM9N,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAC8N,GACE3M,EAAAxB,kBAAAM,IAAC,OAAInB,UAAU,uCACVkB,SAAMtI,EAAAyf,SAASC,MAAMhU,EAAMpD,WACxBtI,EAAMyf,SAAS9b,IAAI+H,EAAMpD,UAAWqX,GAChC3f,EAAM4f,aAAaD,EAAO,IACnBjU,SAK3B,EAIR0T,GAAa6H,KC3BmB,EAAGsE,uBAAsBC,oBAAmBhV,eAAc4Q,kBAAiBC,uCACjG,MAAAoE,aAAEA,uBAAcC,IAAyB,OAAAxlB,mBAAc6B,cAAd,EAAA7B,EAAuBiS,SAAU,IACxEwT,QAASC,IAAqB,OAAA5W,mBAAckD,gBAAd,EAAAlD,EAAyBmD,SAAU,IAElE0T,EAAeC,GAAoB9rB,EAAMU,SAAiC+qB,GAAgB,MAQ3FM,EAAkBF,IAAiB,OAAApP,EAAkB+O,EAAA,SAAI,EAAA/O,EAAA3c,OAG3D,+BAAAyN,EAAAA,kBAAAA,SAAA,CACKjF,SAACojB,0BACG,MAAI,CAAAtkB,UAAU,4CACVkB,SACGijB,IAAAtjB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAOsW,QAAQ,KAAK5R,MAAM,cAErE3F,kBAAAM,IAAC4K,GAAA,CACGhM,MAAM,MACNkM,oCAAcvC,GAAS,CAAA7H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACpD0F,oBAAqBsY,GAAoB,UACzC9tB,QAAS0tB,EAAkB7nB,KAAKC,IACtB,MAAAC,KAAEA,EAAM/D,MAAAA,GAAU8D,EACjB,MAAA,CACHqH,MAAOpH,EACP/D,QAAA,IAGRA,MAAOisB,EACP/e,SAAU,EAAGlN,WA3BZ,CAACA,IACtBgsB,EAAiBhsB,GACjBunB,GAA0BA,GAAuB,GACjDD,GAAmBA,EAAgBtnB,EAAK,EAwBU0nB,CAAiB1nB,GAC/C6R,KAAK,yBAlBI,MAuB7B,EDXRyN,GAAa4M,WExByB,EAAGT,uBAAsBvmB,OAAMwR,eAAcvU,SAAQgqB,mBAAkBC,yBACnG,MACF5K,WAAY6K,EACZ3K,aAAc4K,EACd1K,cAAe2K,EACfzK,YAAa0K,EACbxK,eAAgByK,EAChBvK,aAAcwK,EACdtK,cAAeuK,EACfrK,iBAAkBsK,EAClB3M,UAAW4M,EACX1M,YAAa2M,EACbzM,eAAgB0M,IAChB,OAAA7X,EAAA,OAAc9O,EAAA,MAAAsQ,OAAA,EAAAA,EAAAzO,kBAASoQ,aAAvB,EAAAnD,EAA+B8X,sBAAuB,CAAA,GACpDA,oBAAEA,IAAwB,OAAArQ,mBAAcvE,gBAAd,EAAAuE,EAAyBtE,SAAU,CAAA,EAE7D4U,EAAoC,IAClCZ,GAA0C,CAAEve,MAAOue,MACnDC,GAA4C,CAAE1hB,YAAa0hB,MAC3DC,GAA6C,CAAE/I,aAAc+I,MAC7DC,GAA2C,CAAE/I,WAAY+I,MACzDC,GAA8C,CAAE/I,cAAe+I,MAC/DC,GAA4C,CAAE/I,YAAa+I,MAC3DC,GAA6C,CAAE/I,aAAc+I,MAC7DC,GAAgD,CAAE5hB,gBAAiB4hB,MACnEC,GAAyC,CAAEnM,SAAUmM,MACrDC,GAA2C,CAAEnM,WAAYmM,MACzDC,GAA8C,CAAEnM,cAAemM,mCAIlE,MAAI,CAAAzlB,UAAU,4CACVkB,SAAAijB,0BACIhM,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAOsW,QAAQ,KAAK5R,MAAM,YAErE1F,EAAAD,kBAAAC,KAACoJ,GAAA,CACG7D,KAAK,SACL+D,UAAU,UACVpK,UAAU,mDACVgE,QAAS,IAAwB,oBAAX7I,QAA0BA,OAAOyqB,kCAAoCzqB,OAAOyqB,iCAAiC/qB,EAAQgqB,EAAkBC,GAC7JpkB,MAAOilB,EAEPzkB,SAAA,CAAAC,wBAACsI,IAAe5H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAC5C5I,IAAc8nB,GAAuB,kBAGlD,EFrBR1N,GAAa6N,QGfuBvhB,gBAChC,MAAM4J,YAAEA,GAAgBtV,EAAM0V,WAA2BC,EAAaA,gBAE9DuE,cAAewO,GAA6BpT,GAAe,CAAA,GAE7DrT,OAAEA,EAAAuU,aAAQA,EAAc0W,YAAAA,EAAA5E,eAAaA,GAAmB5c,GACxDsP,UAAEA,GAAc/Y,GAAU,IACxBwnB,WAAY0D,EAAgCzD,cAAe0D,IAAsC,OAAApY,EAAA,OAAc9O,EAAA,MAAAsQ,OAAA,EAAAA,EAAAzO,cAAS,EAAA7B,EAAAiS,aAAQ,EAAAnD,EAAAqY,cAAe,IACjJC,gBAAEA,gBAAiBC,IAAkB,OAAA9Q,mBAAcvE,gBAAd,EAAAuE,EAAyBtE,SAAU,IAEvEjC,EAAgBC,GAAqBnW,EAAMU,UAAS,IACpD8sB,EAAuBC,GAA4BztB,EAAMU,UAAS,IAClE0V,EAAWC,GAAgBrW,EAAMU,UAAS,IAC1CgtB,EAAiBC,GAAsB3tB,EAAMU,UAASwsB,IACtDlmB,EAAQC,GAAajH,EAAMU,UAAS,IACpCwoB,EAAaC,GAAkBnpB,EAAMU,UAAS,MAAAwsB,OAAA,EAAAA,EAAa9D,eAAgB,IAC3EwE,EAAYC,GAAiB7tB,EAAMU,gBACtCwsB,WAAarE,SAAU,CACnB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,KAGJQ,EAAeC,GAAoBtpB,EAAMU,UAAS,OAAAuc,EAAa,MAAAiQ,OAAA,EAAAA,EAAArE,aAAQ,EAAA5L,EAAAgL,UAAW,MAClFlM,EAAaC,GAAkBhc,EAAMU,UAAS,GAE/C8oB,EAAqB3pB,EAAY,CAAEmb,cAEnC8S,EAA0BnwB,gBACxB,IAAAU,EACAE,EAGAwvB,EACAzD,EAHA/V,GAAe,EACfgW,EAA2B,EAI/B,GAAI2C,GAAenR,EACRxd,EAAA2uB,EACD3Y,GAAA,EACNyH,GAAe,OACZ,CAKH,GAJA3d,QAAiBypB,GAAc,CAC3B9M,eAGC3c,EAAU,OAET,MAAAyW,OAAEA,GAAWzW,GACb0W,KAAEA,GAASD,EACjBvW,EAAOF,EAASE,KAEhBgW,EAAe,MAATQ,IAAgB,CAC1B,CAEmBwV,GAAA,MAAAhsB,OAAA,EAAAA,EAAM6qB,cAAe7qB,EAAK6qB,aAAe,EAC5D2E,SAAkBxvB,WAAMsqB,QAClB,CACI,EAAGtqB,EAAKsqB,OAAO,IAAQ,EACvB,EAAGtqB,EAAKsqB,OAAO,IAAQ,EACvB,EAAGtqB,EAAKsqB,OAAO,IAAQ,EACvB,EAAGtqB,EAAKsqB,OAAO,IAAQ,EACvB,EAAGtqB,EAAKsqB,OAAO,IAAQ,GAE3B+E,EACe1nB,GAAA,OAAAA,QAAA3H,WAAMsqB,aAAN,EAAA3iB,EAAc+hB,SAAU1pB,EAAKsqB,OAAOZ,QAAU,IAE/D1T,IACA4U,EAAeoB,GACfsD,EAAcE,GACdzE,EAAiBgB,GACjBjU,GAAa,GACbsX,GAAmB,GACnBxX,GAAkB,GAClBnP,GAAUymB,GAAyB,GACvC,EAqBA,OAlBJztB,EAAME,WAAU,KACZ,IAAKwoB,EAA0B,OAET,oBAAXnmB,SACPA,OAAOyrB,uCAAyC,KAC5CL,GAAmB,SAKFlT,QAAQ+O,IAAiB,MAAAA,OAAA,EAAAA,EAAexO,aAAcA,IAEvD7E,GAAkB,SAG3C,CAACnP,EAAQgU,EAAW0N,4BAGlB,OAAIthB,UAAU,wCACVkB,aAAmB4kB,0BACf3N,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAC1EpJ,IAAc8W,EAAc,OAC5BjlB,kBAAAM,IAAC1B,GAAA,CACGC,QACIoB,EAAAA,kBAAAA,KAACyL,EAAAA,OAAOC,IAAP,CAAWC,SAAS,EAAOC,QAAS9M,EAAS,OAAS,SAAUI,UAAU,gDACvEkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,gDAAiDkB,SAAc+gB,IAC7E9gB,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,+CACVkB,UAAColB,GACEnlB,EAAAN,kBAAAM,IAACyf,GAAA,CACGzpB,KAAM2uB,EACN5E,iBACAL,QAASrmB,OAAOynB,GAChBnB,KAAK,KACLC,qBAAqB,EACrBC,WAAW,EACXC,yBAAyB,QAIrCngB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,8CACVkB,SAAA,CAAA4gB,EACD3gB,EAAAA,kBAAAA,IAAC,QAAKnB,UAAU,mDAAoDkB,WAAc,EAAIilB,GAAiB,UAAYD,GAAmB,sCAEzI3Z,EAAOA,OAAAC,IAAP,CAAWG,SAAUvB,GAA+BpL,UAAU,uBAC3DkB,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,mBAM7BzC,QACIymB,EACKjlB,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,sDACVkB,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAKqK,KAEd/F,kBAAAC,KAAC,MAAI,CAAAd,UAAU,2DACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAC1EvX,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,QACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmmB,WAAY,OACZC,YAAa,UAGrB3lB,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAZExR,+BAkB1F,OAAI5G,UAAU,6CACXkB,iCAAC,MAAI,CAAAlB,UAAU,sDACVkB,SAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAI,CAACC,EAAMoK,MAEpB/F,kBAAAC,KAAC,MAAI,CAAAd,UAAU,2DACXkB,SAAA,GAAAL,kBAAAM,IAACyf,GAAA,CACGzpB,KAAM2uB,EACN5E,iBACAL,QAASrkB,EACTskB,KAAK,KACLC,qBAAqB,EACrBC,WAAW,EACXC,yBAAyB,MAE7BpgB,kBAAAM,IAACoB,GAAA,CACG7J,MAAO8B,OAAOgsB,EAAWhqB,IACzBgG,MAAOsf,EACPrf,UAAWsjB,EACXrjB,aAAcsjB,6BAEjB,QAAM,CAAA9kB,SAAA,CAAA,IAAEslB,EAAWhqB,GAAM,SAhBiDoK,SAwBvG/G,YACAC,eAAa,EACbC,MAAM,MACNM,aAAa,IACbL,UAAU,gDACVE,WAAW,KAGvB,ECxNK,MAAA6mB,GAASxwB,MAAOqQ,EAAYnL,KACjC,IAAAurB,EAAqD,oBAAjBrwB,cAA+BA,aAAa2W,QAAQ7Z,IAAmD,GAE3IgD,EAAM,GAAG1D,aAAqC6T,WAKlD,aAAarL,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAewrB,EACfvrB,UACAC,QATU,CACV,eAAgB,oBAShBC,iBAAiB,IAEhB3E,MAAMuW,GAAWA,IACjBC,OAAM,KACH,GACH,EAGIyZ,GAAc1wB,MAAOkF,EAAc2R,KACxC,IAAA4Z,EAA6B5Z,IAAwC,oBAAjBzW,cAA+BA,aAAa2W,QAAQ7Z,IAAmD,IAE3JgD,EAAM,GAAG1D,iBAKb,aAAawI,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAewrB,EACfvrB,UACAC,QATU,CACV,eAAgB,oBAShBC,iBAAiB,IAEhB3E,MAAMuW,GAAWA,IACjBC,OAAM,KACH,GACH,EAwBI0Z,GAAqB3wB,MAAOY,IAC/B,MAAAsiB,QAAEA,EAAS0N,YAAAA,GAAgBhwB,EAE7B,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,oCAIT2I,EAAU,CACVge,UACA2N,aAAcD,GAGlB,aAAa5rB,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAbU,CACV,eAAgB,oBAahBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EAGI6Z,GAA2B9wB,MAAOY,IACrC,MAAAyc,UAAEA,GAAczc,EAElB,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,mCAIT2I,EAAU,CACVyb,QAAS,CACL5c,GAAID,EAAeuZ,KAI3B,aAAarY,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EC3HI8Z,GAAkC,CAAC,kBAAmB,kBAAmB,cAAe,cAAe,wBASvGD,GAA2B9wB,MAAOY,IACrC,MAAAyc,UAAEA,EAAW2T,UAAAA,GAAcpwB,EAE7B,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,4CAKT2I,EAAU,CACV+rB,WAAYntB,EAAeuZ,GAC3B7C,OAAQwW,GAGZ,aAAahsB,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,ECiBHia,GAAenjB,cACX,MAAA9H,KACFA,EAAAkrB,gBACAA,EAAAC,mBACAA,EAAAC,QACAA,EAAAC,qBACAA,GAAuB,EAAAC,sBACvBA,EAAAP,UACAA,EAAY,KAAAQ,qBACZA,GAAuB,EACvBC,MAAOC,EAAAzU,mBACPA,EAAAC,sBACAA,EAAAyU,mBACAA,EAAAC,sBACAA,EAAAC,YACAA,EAAAC,cACAA,EAAAnI,oBACAA,GACA5b,GAEEgkB,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,GAET1Q,QAAEA,EAAAvK,SAASA,GAAanQ,GAAQ,CAAA,GAChClC,GAAEA,EAAAgX,MAAIA,EAAO1J,MAAAA,EAAAnR,IAAOA,EAAK4L,OAAAA,EAAS,GAAAiV,SAAIA,EAAUyR,OAAAA,GAAW7R,GAAW,CAAA,GAExE5c,GAAI+b,EAAa,GACjB2S,qBAAsBC,EAA+B,GACrD3X,MAAO4X,EAAgB,GAAA3R,MACvBA,EAAQ,GAAA4R,iBACRA,EAAmB,GAAAhS,IACnBA,EAAM,KACI,MAAVxK,OAAU,EAAAA,EAAAjS,QAASiS,EAAS,GAAK,CAAA,EAE/Byc,EAA2BH,GAA8D,GACzFI,GAA8B,MAAA1c,OAAA,EAAAA,EAAUjS,SAAUsB,OAAOstB,OAAO3c,EAAS,GAAI,sBAAwBA,EAAS,GAAG4c,mBAAqB,EACtIC,GAA4C,MAAA7c,OAAA,EAAAA,EAAUjS,SAAUsB,OAAOstB,OAAO3c,EAAS,GAAI,wBAA0BA,EAAS,GAAG8c,qBAAuB,KACxJC,GAAwC,MAAA/c,OAAA,EAAAA,EAAUjS,SAAUsB,OAAOstB,OAAO3c,EAAS,GAAI,oBAAsBA,EAAS,GAAGgd,iBAAmB,IAE3IC,EAAmBC,GAAwBjxB,EAAMU,SAAS8vB,IAC1DU,GAAsBC,IAA2BnxB,EAAMU,SAAS+vB,IAChEW,GAAoCC,IAAyCrxB,EAAMU,SAASkwB,IAC5FU,GAAgCC,IAAqCvxB,EAAMU,SAASowB,GAE3F,IAAIU,GAAqBzC,GAAsBiC,EAC3CS,KAAexC,IAAwBxU,QAAQyW,GAAuB,GAA4C,OAAvCE,IAAkF,aAAnCE,IAC1HI,KAAWzG,WAAWrpB,OAAO2uB,KAAqBtF,WAAWrpB,OAAO2uB,IAAqBtF,WAAWrpB,OAAO+c,IAE/G,MAAMgT,aAAEA,IAAiBrK,GAAuB,GAEhD,IAAIsK,GAAY,KAEhB,GAAIvC,EAAgB,CAChB,MAAMwC,EAAa,CACfvT,QAAS,IACFA,EAECvK,SAAUA,EAASpQ,KAAI,CAACmuB,EAAc9jB,KAClC,MAAM+jB,IAAsB3uB,OAAOstB,OAAO3c,EAAS/F,GAAQ,uBAAwB+F,EAAS/F,GAAO2iB,mBAAqB,EAClHqB,IAAwB5uB,OAAOstB,OAAO3c,EAAS/F,GAAQ,yBAAmE,OAAzC+F,EAAS/F,GAAO6iB,qBACjGoB,IAAoB7uB,OAAOstB,OAAO3c,EAAS/F,GAAQ,qBAA2D,aAArC+F,EAAS/F,GAAO+iB,iBAExF,MAAA,IACAe,EACHI,iBAAkBzX,QAAQsX,GAAuBC,GAAyBC,GAAiB,OAInGzC,GAAepsB,OAAOC,KAAKmsB,GAAa1tB,OACtC,CACIynB,OAAQ,CACJ3f,OAAO,OAAA1D,EAAc,MAAAspB,OAAA,EAAAA,EAAA9tB,aAAK0nB,cAAe,MAAAoG,OAAA,EAAAA,EAAc9tB,GAAI0nB,aAAe,EAC1EnB,SAAS,OAAAxL,EAAA,OAAczH,EAAA,MAAAwa,OAAA,EAAAA,EAAA9tB,SAAK,EAAAsT,EAAA6T,iBAAQZ,SAAU,MAAAuH,OAAA,EAAAA,EAAc9tB,GAAImnB,OAAOZ,QAAU,IAGzF,CAAC,GAEXqH,qBACAC,wBACAZ,aAGJiD,yDAAetpB,SAAuB6mB,IAAA5mB,kBAAAA,IAAC,OAAI4pB,wBAAyB,CAAEC,OAAQ/C,EAAe,IAAKwC,+BAA2BxC,EAAgB,IAAGwC,KAAe,KAC5J,CAKH,IAASQ,EAAT,YACmB,MAAVte,OAAU,EAAAA,EAAAjS,UAEfwwB,EAAgB,mBAAqB5wB,EACrC4wB,EAAgB,uBAAyBnC,EACzCmC,EAAgB,yBAA2Bve,EAAS,GAAGwe,QACnDxe,EAAS,GAAGye,UACZF,EAAgB,yBAA2Bve,EAAS,GAAGye,SAE3DF,EAAgB,mBAAqBve,EAAS,GAAGqc,qBACjDkC,EAAgB,2BAA6Bve,EAAS,GAAG4c,mBACzD2B,EAAgB,6BAA+Bve,EAAS,GAAG8c,qBAC3DyB,EAAgB,yBAA2Bve,EAAS,GAAGgd,iBAAA,EAKlD0B,EAAT,SAA2BvwB,EAAcwwB,GACrC,MAAMC,EAAgBzwB,EAAQmQ,OAAOugB,aAAahrB,cAAc,mBAAmB7C,GAAa2tB,MAAelZ,iBAAiB,UAE1HqZ,EAA8B,KAClBF,EAAArvB,SAAQ,CAACwvB,EAAa9kB,KACzB8kB,EAAApN,UAAUjM,OAAO,8CACxBvX,EAAQmQ,OAAOjL,WAAa,6CAAA,GAC/B,EAUL,GACS,UADDsrB,EANUC,EAAArvB,SAAQ,CAACwvB,EAAa9kB,KACzB8kB,EAAApN,UAAUjM,OAAO,+CACxBvX,EAAQmQ,OAAOjL,WAAa,8CAAA,YAgB/B,EAAA2rB,EAAT,SAA4B7wB,EAAcpC,EAAYkzB,eAC5C,MAAAC,EAAa/wB,EAAQmQ,OAAOugB,aAC5BM,EAAgBD,EAAWrrB,cAAc,+DAA+DlG,OAI1GwxB,EAAclO,WAAW,uBAAuBgO,KAAelzB,MAAQA,EAK3E,MAAMyyB,EAAU,mBAAmBW,EAAclO,WAAW,yBAAyBllB,UAC/E0yB,EAAU,IAAGU,EAAclO,WAAW,yBAA2B,mBAAmBkO,EAAclO,WAAW,yBAAyBllB,UAAY,IAGlJqzB,EAAeF,EAAWrrB,cAAc,gBAAgB2qB,IAAUC,KAClEpV,EAAY+V,EAAanO,WAAW,mBAAmBllB,MACvDszB,EAAU,OAAAltB,EAAAitB,EAAanO,WAAW,yBAAxB9e,EAA0CpG,MACpDuzB,EAAoB,OAAAre,EAAAme,EAAanO,WAAW,mCAAxBhQ,EAAoDlV,MACxEwzB,EAAsB,OAAA7W,EAAA0W,EAAanO,WAAW,qCAAxBvI,EAAsD3c,MAC5EyzB,EAAkB,OAAAtW,EAAAkW,EAAanO,WAAW,+BAA0B,EAAA/H,EAAAnd,MAItEozB,EAAclO,WAAW,mBAAmBllB,MAAQqzB,EAAanO,WAAW,mBAAmBllB,MACjFozB,EAAAlO,WAAW,2BAA2BllB,MAAQuzB,EAC9CH,EAAAlO,WAAW,6BAA6BllB,MAAQwzB,EAChDJ,EAAAlO,WAAW,yBAAyBllB,MAAQyzB,EAEtDnW,GAAW6T,EAAqB7T,GAChCiW,GAAmBlC,GAAwBkC,GAC3CC,GAAqBjC,GAAsCiC,GAC3DC,GAAiBhC,GAAkCgC,GAGnDH,IACAH,EAAWrrB,cAAc,sDAAsD4rB,IAAMP,EAAWrrB,cAC5F,wDAAwDwrB,OAC1DI,KAUH,MALQ,CACXpW,YACAgW,UAGG,EAlGL,MAAAt1B,SAAUwgB,WAASxgB,SAAUsF,OAAOqwB,QAAQnV,EAAQxgB,SAAW,GAC/D41B,GAAkB,MAATpV,OAAS,EAAAA,EAAAoV,SAAU,GAC5BpB,EAAuB,CAAA,MAoGzBV,KAAA3pB,kBAAAC,KAAC,MAAI,CAAAd,UAAU,4BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,+BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,kCACXkB,SAAA,GAAAL,kBAAAC,KAAC,IAAA,CACG4J,KAAMjU,EACNuN,QAAS,KACa,mBAAdujB,EACiCgF,GAAA,CAC7B3Y,UAAWtZ,IAERgtB,GAAgCpvB,SAASqvB,IACPF,GAAA,CACrCzT,UAAWtZ,EACXitB,aAER,EAEJvnB,UAAU,uCAETkB,SAAA,CAAAopB,IAAajoB,EAAAxB,kBAAAM,IAAA,MAAA,CAAInB,UAAU,qCAAqCkB,SAAO,cACxEL,kBAAAM,IAACmS,GAAA,CACGzY,OAAQ,CACJ+Y,UAAWtZ,EACXuZ,iBAAkBwC,EAClBK,YAAapF,EACbqF,cAAetU,EACfuU,WAAYO,EACZN,mBAAoBqS,EACpBpS,YAAargB,EACbsgB,cAAc,MAAAnP,OAAA,EAAAA,EAAOwkB,MAAO,GAAGp5B,2BAC/BgkB,gBAAiBM,EACjBL,aAAcM,MAEduQ,EACJtU,qBACAC,wBACAC,gBAAiC,MAAhB2U,OAAgB,EAAAA,EAAA/tB,OAErCuG,kBAAAM,IAAC,MAAA,CACGirB,KAAK,MAAAxkB,OAAA,EAAAA,EAAOwkB,MAAO,GAAGp5B,2BACtBw5B,IAAI,oBACJC,QAAQ,OACRzsB,UAAU,iDACV0sB,QAAS,EAAGC,oBACHA,IAELA,EAAcC,QAAU,KACVD,EAAAP,IAAM,GAAGp5B,2BAAO,4BAGrC,MAAI,CAAAgN,UAAU,2CACVkB,SAAQ,MAAAorB,OAAA,EAAAA,EAAA/vB,KAAKqL,KACV/G,kBAAAM,IAAC,MAAA,CAEG0rB,SAAS,QACTvyB,GAAW,MAAPsN,OAAO,EAAAklB,EAAAxyB,GACXwH,OAAO,MACP2qB,QAAQ,OACRL,IAAY,MAAPxkB,OAAO,EAAAklB,EAAAV,IACZI,IAAc,MAATtV,OAAS,EAAAA,EAAA5F,MACdzP,MAAO,OACPnB,MAAO,CAAEqsB,YAAa,OAAS,MARnB,MAAPnlB,OAAO,EAAAklB,EAAAxyB,WAa3B+vB,GAAgBlpB,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,yCAA0CkB,SAAAynB,GAAgC,aAAoB,UAEjI7nB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,iCACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,kCACVkB,SAAA,CACGsnB,IAAA3nB,kBAAAC,KAAC,MAAI,CAAAd,UAAU,kCACXkB,SAAA,GAACC,kBAAAA,IAAA,MAAA,CAAIT,MAAOmoB,EAAqBkC,wBAAyB,CAAEC,OAAQltB,GAA2B,IAARyZ,EAAagT,OACnGD,MACGzpB,kBAAAM,IAAC,MAAA,CACGnB,UAAU,6CACV+qB,wBAAyB,CAAEC,OAAQltB,GAAsC,IAAnBqrB,EAAwBoB,UAI1F,KAEHjC,GAAejmB,EACZvB,EAAAD,kBAAAC,KAAC,OAAId,UAAU,oCAAoCsR,MAAOjP,EAAQnB,SAAA,CAAA,WACrDmB,KAEb,QAERlB,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,mCACXkB,SAAAC,EAAAN,kBAAAM,IAACyf,GAAA,CACG/lB,OAAQ,CACJ+Y,UAAWtZ,GAEfwmB,KAAK,KACLC,qBAAqB,EACrBE,yBAAyB,EACzB9pB,KAAoB,MAAdixB,OAAc,EAAAA,EAAA9tB,OAG3BgX,IACGzQ,kBAAAM,IAAC,IAAA,CACGuJ,KAAMjU,EACNuN,QAAS,KACa,mBAAdujB,EACiCgF,GAAA,CAC7B3Y,UAAWtZ,IAERgtB,GAAgCpvB,SAASqvB,IACPF,GAAA,CACrCzT,UAAWtZ,EACXitB,aAER,EAGJrmB,iCAAC,KAAG,CAAAlB,UAAU,yCAAyCU,MAAOkoB,EACzD1nB,SACLoQ,MAEJ,6BACH,MAAI,CAAAtR,UAAU,iCAAkCkB,SAAYqnB,GAAApR,2BAAO,MAAI,CAAAjW,SAAA,CAAA,QAAMiW,KAAa,SAC3FrW,kBAAAA,KAAC,MAAI,CAAAd,UAAU,2CAEXkB,SAAA,CAAAC,wBAAC,SAAMkF,KAAK,YAAa6kB,EAAiBlrB,UAAU,sEACnD,SAAO,CAAAA,UAAU,0DACbkB,SAAU,MAAAyL,OAAA,EAAAA,EAAApQ,KAAKmuB,IACZ,MAAQpZ,MAAAA,EAAO6Z,QAAAA,EAAAC,QAASA,EAASlb,SAAAA,EAAU5V,GAAAA,EAAAA,qBAAI0uB,EAAsBgE,SAAAA,EAAAzD,mBAAUA,EAAoBE,qBAAAA,EAAAE,iBAAsBA,GAA0Be,EAEnJ,IAAIuC,EAAmB,CACnB,gBAAiB9B,EACjB,gBAAiBC,EACjB,0BAA2B7B,EAC3B,4BAA6BE,EAC7B,wBAAyBE,EACzB,gBAAiBzZ,EACjB,UAAW5V,EACX,kBAAmB0uB,EACnB,gBAAiBgE,kCAIhB,SAAiB,IAAGC,EAChB/rB,SAAAoQ,GADQhX,EAEb,MAMF,MAAT5D,OAAS,EAAAA,EAAA6F,KAAI,CAACqQ,EAAasgB,KAClB,MAAA5B,EAAa1e,EAAO,GACpBugB,EAAevgB,EAAO,GAExB,IAAAwgB,EAAiBD,EAAa,GAElC,6DAESjsB,SAAoB,kBAAPisB,EAAA,4BACT,MAAI,CAAAntB,UAAW,2DAA2DrC,GAAa2tB,KACnFpqB,WAAa3E,KAAI,CAACC,EAAWoK,WAC1B,MAAMymB,EAAqB,KAC7ED,IAAmB5wB,EAAO,6CAA+C,yCAEjB8wB,GAAsBF,IAAmB5wB,EAAO,8CAAgD,IAA7E,wCACnB+wB,GAAoB,OAAAzuB,EAAAhC,KAAK6S,MAAMhZ,aAAa2W,QAAQ7Z,UAAhCqL,EAAAA,EAAmF0uB,SAAU,GACjHC,GAAoC,MAAnBF,OAAmB,EAAAA,EAAAv1B,QAAO,EAAGyE,UAAgBA,IAASD,IAAM,KAAM,CAAA,EACnFkxB,SAAcD,WAAgB7lB,OAAQ,aAAO6lB,WAAgB7lB,gBAAW6lB,WAAgB9lB,MAAOnL,EAGjG,SAAAqE,kBAAAM,IAAC,SAAA,CACGkF,KAAK,SAELrG,UAA0B,UAAfsrB,EAAyBgC,EAAmBD,EACvD3sB,MAAO,CACHitB,WAA2B,UAAfrC,EAAyBoC,EAAc,KACnD1lB,eAAgB,WAEpBhE,QAAU4pB,IACajC,EAAAiC,EAAIpxB,EAAM0wB,EAAoB,GACjD7B,EAAkBuC,EAAItC,EAAU,EAEpCha,MAAsB,UAAfga,EAAyB,KAAO9uB,EAEtC0E,SAAe,UAAfoqB,EAAyB,KAAO9uB,GAZ5BoK,EAAA,KAbuFsmB,IA+BpH,aAMnBzE,EACGpmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,sCACXkB,SAAAC,EAAAN,kBAAAM,IAAC+I,GAAA,CACG7D,KAAK,SACL+D,UAAU,QACVpK,UAAU,0CACVU,MAAO,IACAooB,KACCsB,IAAsB,CACtByD,OAAQ,YAGXzD,IAAsBC,GACrB,CACI/jB,UAAU,GAEd,CACItC,QAAS,KACL0jB,GACIA,EAAgB,CACZptB,GAAIsvB,EACJkE,SAAU,GACb,GAIlB5sB,YAEOJ,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,wBAACkI,IAAQxH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACtCrF,EAAAA,kBAAAA,IAAC,OAAM,CAAAD,SAAAynB,GAAgC,gBAItC7nB,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAqBkpB,GAAA/nB,EAAAxB,kBAAAM,IAACsd,OAAiB,6BACvCpV,GAAQ,CAAAxH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBACtCrF,EAAAA,kBAAAA,IAAC,OAAM,CAAAD,SAAAwnB,GAA+B,uBAKtD,OAGhB,CAEQvnB,OAAAA,EAAAA,kBAAAA,IAAAvI,EAAMuN,SAAN,CAAyBjF,aAAL5G,EAAe,EAGlCyzB,GAAezpB,IACxB,MAAM+B,KAAEA,EAAArG,UAAMA,EAAY,GAAA7I,KAAIA,EAAMywB,QAAAA,EAAAL,UAASA,EAAY,KAAAyG,UAAMA,GAAY,EAAAC,iBAAOA,EAAkBC,qBAAAA,GAAyB5pB,GACvH6pB,qBAAEA,GAAuB,GAASvG,GAAW,CAAA,GAE5CD,EAAoByG,GAAyBx1B,EAAMU,SAAiC,OACpF4mB,EAAqBmO,GAA0Bz1B,EAAMU,SAAc,CAAA,GAEpEouB,EAAkBnxB,MAAOY,UACrB,MAAAmD,GAAEA,EAAIwzB,SAAAA,GAAa32B,EAEzBi3B,EAAsB9zB,GAClB,IAAAg0B,OC7ekB/3B,OAAOY,YACjC,IAAI+P,EAAsC,GAUtC,GATC/P,EAAAoF,KAAKC,IACA,MAAAlC,GAAEA,EAAIwzB,SAAAA,GAAatxB,EAEzB0K,EAAMqnB,KAAK,CACPj0B,GAAID,EAAeC,GACnBwzB,YACH,IAGiB,oBAAX3yB,UAA2B,OAAAyS,EAAA,oCAAQ4gB,cAAR,EAAA1vB,EAAiB2vB,aAAQ,EAAA7gB,EAAA1U,MAAM,OAErE,IAAIzC,EAAM,GAAG0E,OAAOqzB,QAAQC,OAAOv1B,kBAI/BuC,EAAU,CACVyL,SAGJ,aAAa3L,EAAS,CAClB9E,MACAI,OAAQ,OACR4E,UACAC,QAXU,CACV,eAAgB,oBAWhBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,ED4c+BkhB,CAAiB,CAC7C,CACIp0B,KACAwzB,eAIJ,OAAAhvB,EAAA,MAAAwvB,OAAA,EAAAA,EAAqBpnB,YAArB,EAAApI,EAA4BpE,SACV,aAAd6sB,OpBtUqBhxB,OAAOY,IAClC,MAAAyc,UAAEA,GAAczc,EAElB,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,kBACT2I,EAAU,CACVyb,QAASpa,KAAKC,UAAU,CACpBzC,GAAID,EAAeuZ,MAI3B,aAAarY,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,YAECzE,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EoBgTamhB,CAAyB,CAC3B/a,UAAWtZ,IAEM,mBAAditB,OFrYchxB,OAAOY,IAClC,MAAAyc,UAAEA,GAAczc,EAElB,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,kCAIT2I,EAAU,CACVyb,QAAS,CACL5c,GAAID,EAAeuZ,KAI3B,aAAarY,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EE0WaohB,CAA8B,CAChChb,UAAWtZ,IAERgtB,GAAgCpvB,SAASqvB,SD/d3BhxB,OAAOY,IAClC,MAAAyc,UAAEA,EAAW2T,UAAAA,GAAcpwB,EAE7B,IAAAkW,EAAwC,oBAAjB1W,cAA+BA,aAAa2W,QAAQ7Z,IAAoC,GAE/GgD,EAAM,GAAG3D,2CAKT2I,EAAU,CACV+rB,WAAYntB,EAAeuZ,GAC3B7C,OAAQwW,GAGZ,aAAahsB,EAAS,CAClB9E,MACAI,OAAQ,OACR2E,cAAe6R,EACf5R,UACAC,QAdU,CACV,eAAgB,oBAchBC,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,ECocaqhB,CAAsC,CACxCjb,UAAWtZ,EACXitB,cAIR6G,EAAsB,MACtBH,GAAoBA,EAAiB,WAEjCE,EACAhzB,OAAOwW,SAASjH,KAAO,QAEvBvP,OAAOyc,wBAAwB,CAC3BtG,MAAO,aACPC,QAAS,iCACTlL,KAAM,UACNuE,6BAAOvB,GAAQ,CAAAxH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAIpDynB,GAAoBA,EAAiB,UAErCjrB,YAAW,WACPorB,EAAsB,MACA,oBAAXjzB,QAA0BA,OAAOyc,yBACxCzc,OAAOyc,wBAAwB,CAC3BtG,MAAO,SACPC,SAAS,OAAAzS,EAAqB,MAArBwvB,OAAqB,EAAAA,EAAAQ,oBAArBhwB,EAAkCpE,QAAS4zB,EAAoBQ,YAAc,uCACtFzoB,KAAM,SACNuE,6BAAOvB,GAAQ,CAAAxH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,WAC/C,GACN,KACP,EAWEuoB,EAAYf,EAAYgB,GAAW,MAEnCC,EACDjB,GAAa,CACVkB,qBAAsB,gBAE1B,KAWJ,OATAt2B,EAAME,WAAU,KACZiG,GAAoB5J,EAAyC,CACzDsiB,MAAO,YAGXyW,GAAwBA,EAAqB,WArB1B,MACf,IAAAiB,EAEJA,EAAkBryB,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAAsC,MAErF07B,GAAiBd,EAAuBc,EAAe,OAkB5D,MAGEhuB,kBAAAA,IAAA4tB,EAAA,CAAU/uB,UAAW,wBAAwBA,OAAiBivB,EAAoB,iBAAgB5oB,EAC9FnF,eAAA/J,WAAMoF,KAAI,CAACC,EAAWoK,MAEf/F,kBAAAM,IAACsmB,GAAA,CACGjrB,OAEAkrB,kBACAC,qBACAzH,yBACI5b,GAJC,uBAAuBsC,QAQ5C,EEvkBKwoB,GAAiB,EAAGpvB,YAAY,GAAI7I,OAAM6wB,MAAOC,EAAgBF,uBAAsBsH,8BAChGz2B,EAAME,WAAU,KACZiG,GAAoB5J,EAA4C,CAC5DsiB,MAAO,YAGX4X,GAA2BA,EAAwB,UAAS,GAC7D,IAIMluB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAAN/J,OAAM,EAAAA,EAAAuD,QACHyG,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAW,2BAA2BA,IACtCkB,SAAA/J,EAAKoF,KAAI,CAACC,EAAWoK,KAClB,MAAMtM,GAAEA,EAAIgX,MAAAA,EAAAge,UAAOA,EAAW74B,IAAAA,EAAAmR,MAAKA,GAAUpL,EAE7C,GAAIyrB,EAAgB,CACV,MAAAwC,EAAa,CAAEtzB,KAAMqF,GAGvB,+BAAC5D,EAAMuN,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQ/C,EAAe,IAAKwC,+BAA2BxC,EAAgB,IAAGwC,KADjH7jB,EAErB,CAGJ,+BACK,IAAE,CAAA8D,KAAMjU,EACLyK,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAU,+BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,6CACXkB,SAAAC,EAAAA,kBAAAA,IAAC,OAAInB,UAAU,qCACXkB,iCAAC,MAAI,CAAAkrB,KAAY,MAAPxkB,OAAO,EAAAA,EAAAwkB,MAAO,GAAGp5B,2BAAkCw5B,IAAI,oBAAoBC,QAAQ,eAGrG3rB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,uCACXkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,6CAA8CkB,SAAMoQ,IAClEge,0BAAa,MAAI,CAAAtvB,UAAU,mDAAoDkB,SAAU1D,GAAA8xB,KAAoB,YATvG1oB,EAc3B,MA7BK,QCXhB2oB,GAAW,EAAGvvB,YAAY,GAAI7I,OAAM6wB,MAAOC,EAAgBF,uBAAsByH,wBAC1F52B,EAAME,WAAU,KACZiG,GAAoB5J,EAAsC,CACtDsiB,MAAO,YAGX+X,GAAqBA,EAAkB,UAAS,GACjD,IAIMruB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAAN/J,OAAM,EAAAA,EAAAuD,QACHyG,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAW,qBAAqBA,IAChCkB,SAAA/J,EAAKoF,KAAI,CAACC,EAAWoK,KAClB,MAAMtM,GAAEA,EAAIgX,MAAAA,EAAAge,UAAOA,EAAW74B,IAAAA,EAAAmR,MAAKA,GAAUpL,EAE7C,GAAIyrB,EAAgB,CACV,MAAAwC,EAAa,CAAEtzB,KAAMqF,GAGvB,+BAAC5D,EAAMuN,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQ/C,EAAe,IAAKwC,+BAA2BxC,EAAgB,IAAGwC,KADjH7jB,EAErB,CAGJ,+BACK,IAAE,CAAA8D,KAAMjU,EACLyK,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAU,yBACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,uCACXkB,SAAAC,EAAAA,kBAAAA,IAAC,OAAInB,UAAU,+BACXkB,iCAAC,MAAI,CAAAkrB,KAAY,MAAPxkB,OAAO,EAAAA,EAAAwkB,MAAO,GAAGp5B,2BAAkCw5B,IAAI,oBAAoBC,QAAQ,eAGrG3rB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,iCACXkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,uCAAwCkB,SAAMoQ,IAC5Dge,0BAAa,MAAI,CAAAtvB,UAAU,6CAA8CkB,SAAU1D,GAAA8xB,KAAoB,YATjG1oB,EAc3B,MA7BK,QCVhB6oB,GAAW,EAAGzvB,YAAY,GAAI7I,OAAM6wB,MAAOC,EAAgBF,uBAAsB2H,wBAC1F92B,EAAME,WAAU,KACZiG,GAAoB5J,EAAsC,CACtDsiB,MAAO,YAGXiY,GAAqBA,EAAkB,UAAS,GACjD,IAIMvuB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAAN/J,OAAM,EAAAA,EAAAuD,QACHyG,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAW,qBAAqBA,IAChCkB,SAAM,MAAN/J,OAAM,EAAAA,EAAAoF,KAAI,CAACC,EAAWoK,KACnB,MAAMtM,GAAEA,EAAIgX,MAAAA,EAAAqe,WAAOA,EAAYl5B,IAAAA,EAAAmR,MAAKA,GAAUpL,EAE9C,GAAIyrB,EAAgB,CACV,MAAAwC,EAAa,CAAEtzB,KAAMqF,GAGvB,+BAAC5D,EAAMuN,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQ/C,EAAe,IAAKwC,+BAA2BxC,EAAgB,IAAGwC,KADjH7jB,EAErB,CAIA,SAAA/F,kBAAAC,KAAC,MAAI,CAAAd,UAAU,yBACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,4BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,+BACXkB,SAAAC,EAAAA,kBAAAA,IAAC,KAAEuJ,KAAMjU,EACLyK,iCAAC,MAAI,CAAAkrB,KAAY,MAAPxkB,OAAO,EAAAA,EAAAwkB,MAAO,GAAGp5B,2BAAkCw5B,IAAI,oBAAoBC,QAAQ,eAGrG3rB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,8BACXkB,SAAA,GAACC,kBAAAA,IAAA,IAAA,CAAEuJ,KAAMjU,EACLyK,SAAAC,EAAAN,kBAAAM,IAAC,OAAInB,UAAU,+BAAgCkB,eAElDyuB,0BAAc,MAAI,CAAA3vB,UAAU,iCAAkCkB,SAAYlE,EAAA2yB,KAAqB,WAGvGxuB,wBAAA,MAAA,CAAInB,UAAU,mCACXkB,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAEuJ,KAAMjU,EACLyK,SAACJ,EAAAA,kBAAAA,KAAAoJ,GAAA,CAAO7D,KAAK,SAAS+D,UAAU,QAC5BlJ,SAAA,CAAAC,wBAACwI,IAAS9H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cACvCrF,kBAAAA,IAAC,QAAKD,SAAS,uBAlBc0F,EAwBrD,MAvCK,QCXhBgpB,GAAc,EAAG5vB,YAAY,GAAI7I,OAAM6wB,MAAOC,EAAgBF,uBAAsB8H,2BAC7Fj3B,EAAME,WAAU,KACZiG,GAAoB5J,EAAyC,CACzDsiB,MAAO,YAGXoY,GAAwBA,EAAqB,UAAS,GACvD,IAIM1uB,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAO,MAAN/J,OAAM,EAAAA,EAAAuD,QACHyG,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAW,wBAAwBA,IACnCkB,SAAM,MAAN/J,OAAM,EAAAA,EAAAoF,KAAI,CAACC,EAAWoK,KACnB,MAAMtM,GAAEA,EAAIgX,MAAAA,EAAAqe,WAAOA,eAAYG,EAAcr5B,IAAAA,EAAAmR,MAAKA,GAAUpL,EAE5D,GAAIyrB,EAAgB,CACV,MAAAwC,EAAa,CAAEtzB,KAAMqF,GAGvB,+BAAC5D,EAAMuN,SAAN,CACIjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQ/C,EAAe,IAAKwC,+BAA2BxC,EAAgB,IAAGwC,KADjH7jB,EAErB,CAIA,SAAA/F,kBAAAC,KAAC,MAAI,CAAAd,UAAU,4BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,+BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,kCACXkB,SAAAC,EAAAA,kBAAAA,IAAC,KAAEuJ,KAAMjU,EACLyK,iCAAC,MAAI,CAAAkrB,KAAY,MAAPxkB,OAAO,EAAAA,EAAAwkB,MAAO,GAAGp5B,2BAAkCw5B,IAAI,oBAAoBC,QAAQ,eAGrG3rB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,iCACXkB,SAAA,GAACC,kBAAAA,IAAA,IAAA,CAAEuJ,KAAMjU,EACLyK,SAAAC,EAAAN,kBAAAM,IAAC,OAAInB,UAAU,kCAAmCkB,eAErDyuB,0BAAc,MAAI,CAAA3vB,UAAU,oCAAqCkB,SAAYlE,EAAA2yB,KAAqB,KAClGG,0BAAgB,MAAI,CAAA9vB,UAAU,iCAAkCkB,SAAU1D,GAAAsyB,KAAuB,WAGzG3uB,wBAAA,MAAA,CAAInB,UAAU,sCACXkB,SAACmB,EAAAxB,kBAAAM,IAAA,IAAA,CAAEuJ,KAAMjU,EACLyK,SAACJ,EAAAA,kBAAAA,KAAAoJ,GAAA,CAAO7D,KAAK,SAAS+D,UAAU,QAC5BlJ,SAAA,CAAAC,wBAACwI,IAAS9H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cACvCrF,kBAAAA,IAAC,QAAKD,SAAY,0BAnBc0F,EAyBxD,MAxCK,QCXhBvB,GAAU,EAAGnE,WAAUvB,UAASO,aAAY,EAAMC,cAAc,GAAIC,aAAa,EAAGC,cAAc,EAAGiF,eAAc,MAC5H,MAAOjO,EAAMiJ,GAAW1H,EAAMU,UAAS,GAYnC,OAVJV,EAAME,WAAU,WACZ,IAAIyH,EAAe,OAAAzB,EAAA,MAAAS,cAAA,EAAAA,SAAUiB,cAAc,gCAA2B,EAAA1B,EAAA2B,cAElEF,UAAgBJ,WAAazF,UAChB6F,EAAA+d,UAAUC,IAAI,gCAC3Bhe,EAAaK,UAAYT,EAC7B,GACD,CAAC9I,4BAGC04B,EAAAA,0CAAA,CAAwBC,cAAe,EACpC9uB,SAAAJ,EAAAD,kBAAAC,KAACmvB,4CAAA,CAAoBhvB,aAAcX,EAC/BY,SAAA,GAACC,kBAAAA,IAAA+uB,EAAAA,0CAAA,CAAuB5uB,SAAO,EAAEJ,WAAemB,EAAAxB,kBAAAM,IAAA,OAAA,CAAMD,aAAmBA,MACzEC,kBAAAA,IAACgvB,EAAeC,0CAAf,CACGlvB,SAAAJ,yBAACuvB,EAAAA,0CAAA,CAAuBrwB,UAAU,0BAA0BI,aAAwBC,cAC/Ea,SAAA,CAAAvB,EAEAO,EAAamC,EAAAxB,kBAAAM,IAAAmvB,4CAAA,CAAqBtwB,UAAU,0BAA6B,cAI1F,EC5BKuwB,GAAa,EAAGrvB,WAAU8N,aAAY,EAAOhP,YAAY,+BAE7DwwB,EAAkBC,0CAAlB,CAAuBzwB,UAAW,4BAA4BA,IAC3DkB,SAAA,CAACC,EAAAA,kBAAAA,IAAAuvB,2CAAA,CAA2B1wB,UAAW,iCAAgCgP,EAAY,uCAAyC,IAAO9N,cACjI8N,GAEMlO,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAA,kBAAAA,IAACwvB,EAAAA,0CAAA,CAA4B3wB,UAAU,gCAAgC4wB,YAAY,WAC/E1vB,SAAAC,EAAAA,kBAAAA,IAAC0vB,EAAAA,0CAAA,CAAwB7wB,UAAU,gCAEtCmB,EAAAA,kBAAAA,IAAAwvB,EAAAA,0CAAA,CAA4B3wB,UAAU,gCAAgC4wB,YAAY,aAC/E1vB,SAAAC,EAAAA,kBAAAA,IAAC0vB,EAAAA,0CAAA,CAAwB7wB,UAAU,sCCT9C8wB,GAAe,EAAGjvB,QAAOC,SAAQsW,UAAS5R,QAAO9F,QAAQ,CAAI,EAAAV,YAAY,MAAOyK,oBACzF,MAAO2E,EAAcC,GAAmBzW,EAAMU,SAAc,CAAA,GAiBxD,OALJV,EAAME,WAAU,KAVOvC,OAAOw6B,IACtB,IAAA95B,EAEOA,EAAA6F,KAAK6S,MAAMohB,GAEjB95B,GAELoY,EAAgBpY,EAAQ,EAIxB4Y,CAAelZ,aAAa2W,QAAQ7Z,IAAsC,KAAI,GAC/E,IAGC0N,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CACKjF,UAAc,OAAApC,EAAA,MAAAsQ,OAAA,EAAAA,EAAA4hB,eAAU,EAAAlyB,EAAAmyB,UACrBpwB,kBAAAM,IAAC,MAAA,CACGnB,UAAW,yDAAyDA,IACpEU,MAAO,CAECmB,QACAC,aAEA,OAAAuT,EAAA,OAAczH,EAAA,MAAAwB,OAAA,EAAAA,EAAA4hB,eAAU,EAAApjB,EAAA4f,iBAAQ0D,aAAc,CAC9CvD,WAAY,OAAA7X,EAAA,OAAAD,EAAA,MAAAzG,OAAA,EAAAA,EAAc4hB,eAAd,EAAAnb,EAAwB2X,aAAQ,EAAA1X,EAAAob,eAE7CxwB,GAEP,wBAAuB0X,EACvB,sBAAqB5R,KACjBiE,IAER,MACR,ECvCK0N,GAAkB,CAC3BtL,KAAMikB,GACNK,WCH8B,EAAG7Y,QAAOjS,OAAM+qB,kBAAkB,OAChE,IAAIC,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,KACPptB,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,4CACXkB,SAAAC,EAAAN,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAiB,SAATuE,IAA8B,SAATA,GAA4B,eAATA,IAA4C,MAAjB+qB,OAAiB,EAAAA,EAAA12B,SAAoB02B,EAAgBE,GAA1B,QACtG9qB,MAAM,UACN4R,QAAQ,QALgDkZ,IAYpE,SAAAzwB,kBAAAM,IAACowB,EAAAC,kBAAA,CACGC,wBAAkC,SAATprB,EAAkB,CAAE,IAAK,GAAM,CAAE,IAAK,EAAG,IAAK,EAAG,KAAM,GAChFrG,UAAU,8GAEVkB,SAACmB,EAAAxB,kBAAAM,IAAAuwB,UAAA,CAAQC,OAAO,OAAQzwB,SAAWmwB,KAAA,EDjB3CtD,YEN+B,EAAGzV,QAAOjS,WACzC,IAAIgrB,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,OACPztB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,4BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,+BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,2EACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,iCACXkB,SAAAC,EAAAA,kBAAAA,IAAC2vB,GAAa,CAAAjvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,SAAS4R,QAAQ,WAEpEvX,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHkxB,uBAAwB,EACxBC,wBAAyB,UAIrC/wB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,iCACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,kCACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA2vB,GAAA,CAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OACjEjX,EAAAA,kBAAAA,IAAC2vB,IAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,UAEpEjX,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,mCACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAEtEjX,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,iCACXkB,SAAAC,EAAAN,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHoxB,aAAc,kBAMjC3wB,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,sCACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,WAvCzBkZ,mCA8CnD,MAAI,CAAAtxB,UAAU,0FAA0F,iBAAgBqG,EACpHnF,SACLmwB,GAAA,EF9CJjC,eGRkC,EAAG9W,YACrC,IAAI+Y,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,6BACN,MAAI,CAAAvuB,UAAU,+BACXkB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAU,uCACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,6CACXkB,SAAAC,EAAAA,kBAAAA,IAAC2vB,GAAa,CAAAjvB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS4R,QAAQ,SAEpEjX,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,mDACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS4R,QAAQ,aAN1BkZ,IAanDnwB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,gGAAiGkB,SAAWmwB,GAAA,EHTlI9B,SIT4B,EAAGjX,YAC/B,IAAI+Y,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,6BACN,MAAI,CAAAvuB,UAAU,yBACXkB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAU,iCACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,uCACXkB,SAAAC,EAAAA,kBAAAA,IAAC2vB,GAAa,CAAAjvB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS4R,QAAQ,SAEpEjX,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,6CACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,QAAQC,OAAO,OAAO0E,MAAM,SAAS4R,QAAQ,aANhCkZ,IAa7CnwB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,oFAAqFkB,SAAWmwB,GAAA,EJRtH5B,SKV4B,EAAGnX,YAC/B,IAAI+Y,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,OACPztB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,yBACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,4BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,qEACXkB,SAAAC,EAAAN,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHkxB,uBAAwB,EACxBC,wBAAyB,SAIrC/wB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,8BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA2vB,GAAA,CAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SACjEvX,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHqxB,UAAW,OACXD,aAAc,UAGtB3wB,EAAAA,kBAAAA,IAAC2vB,IAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,aAGxEjX,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,mCACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,WA9B5BkZ,IAoC7CnwB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,oFAAqFkB,SAAWmwB,GAAA,EL9BtHzB,YMX+B,EAAGtX,YAClC,IAAI+Y,EAAa,GAEjB,IAAA,IAASC,EAAI,EAAGA,EAAIhZ,EAAOgZ,IACZD,EAAA9C,OACPztB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,4BACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,+BACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,2EACXkB,SAAAC,EAAAN,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHkxB,uBAAwB,EACxBC,wBAAyB,SAIrC/wB,kBAAAA,KAAC,MAAI,CAAAd,UAAU,iCACXkB,SAAA,CAACC,EAAAA,kBAAAA,IAAA2vB,GAAA,CAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SACjEvX,kBAAAM,IAAC2vB,GAAA,CACGjvB,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHqxB,UAAW,OACXD,aAAc,UAGtB3wB,EAAAA,kBAAAA,IAAC2vB,IAAajvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,aAGxEjX,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,sCACXkB,iCAAC4vB,GAAa,CAAAjvB,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,WA9BzBkZ,IAoChDnwB,OAAAA,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,0FAA2FkB,SAAWmwB,GAAA,GC7CnH5S,GAAc,MAEnB5d,kBAAAC,KAAC,MAAI,CAAAd,UAAU,uBACXkB,SAAA,GAACC,kBAAAA,IAAA,MAAA,CAAInB,UAAU,+BACfmB,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,+BACfmB,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,gCCMdgvB,GAAY1qB,IACrB,MAAMpD,SAAEA,EAAUlB,UAAAA,EAAY,GAAI,iBAAkBgyB,EAAA9C,qBAAcA,GAAyB5qB,GACpF2tB,EAAQC,GAAat5B,EAAMU,UAAkB,IAE9C5C,QACFA,EAAU,CACNy7B,eAAgB,OAChBpyB,MAAO,QACPqyB,UAAU,EACV5mB,SAAU,KAEdlH,GAEG+tB,EAAaC,GAAeC,mBAAiB77B,IAC7C87B,EAAiBC,GAAsB75B,EAAMU,UAAS,IACtDo5B,EAAiBC,GAAsB/5B,EAAMU,UAAS,IACtDs5B,EAAeC,GAAoBj6B,EAAMU,SAAS,IAClDw5B,EAAaC,GAAkBn6B,EAAMU,SAAmB,IAEzD05B,EAAap6B,EAAMY,aAAY,IAAM84B,GAAeA,EAAYU,cAAc,CAACV,IAC/EW,EAAar6B,EAAMY,aAAY,IAAM84B,GAAeA,EAAYW,cAAc,CAACX,IAC/Ej3B,EAAWzC,EAAMY,aAAaoN,GAAkB0rB,GAAeA,EAAYj3B,SAASuL,IAAQ,CAAC0rB,IAE7FY,EAAWt6B,EAAMY,aAAa84B,IACfA,EAAAA,EAAYa,sBACVV,GAACH,EAAYc,iBACbT,GAACL,EAAYe,gBAAe,GAChD,IAEGC,EAAS16B,EAAMY,aAAa84B,IACfA,EAAAA,EAAYiB,iBAAgB,GAC5C,IAGH36B,EAAME,WAAU,KACPw5B,IAELgB,EAAOhB,GACPY,EAASZ,GAEGA,EAAAkB,GAAG,SAAUF,GACbhB,EAAAkB,GAAG,SAAUN,GACbZ,EAAAkB,GAAG,SAAUN,GAAQ,GAClC,CAACZ,EAAaY,IAGjBt6B,EAAME,WAAU,KACPw5B,GAEmCJ,GAApCM,IAAmBE,EACJ,GACpB,CAACJ,EAAaE,EAAiBE,IAGlC95B,EAAME,WAAU,KACPw5B,GAELA,EAAYmB,OAAO/8B,EAAO,GAC3B,CAAC47B,EAAa15B,EAAMyf,SAASC,MAAMpX,KAGtCtI,EAAME,WAAU,KACPw5B,IAEAL,EACa,MAAAK,GAAAA,EAAAoB,iBAAiBC,YAAY5W,KAAKuV,GAD1B,MAAAA,GAAAA,EAAAoB,iBAAiBC,YAAYC,UACH,GACrD,CAAC3B,IAEJ,IAAI4B,EAAqG,CAAA,EAGzG,GACS,gBADD3E,EAEqB2E,EAAA,CACjB7zB,UAAW,kDACX,iBAAkBgyB,QAID6B,EAAA,CACjB7zB,UAAW,8BAMlBc,OAAAA,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAW,oBAAoBA,IAChCkB,SAAA,GAAAL,kBAAAM,IAAC2yB,GAAA,CACGrc,MAAO,CACH+a,kBACAE,mBAEJxiB,SAAS,OACT5J,SAAUksB,EACVxuB,QAASgvB,EACThzB,UAAU,iCAEbmB,wBAAA,MAAA,CAAInB,UAAW,8BAA8BiyB,EAAU,YAAgB,IAAMt5B,IAAK05B,EAC/EnxB,SAACC,EAAAA,kBAAAA,IAAA,MAAA,IAAQ0yB,EAAqB3yB,iBAElCL,kBAAAM,IAAC2yB,GAAA,CACGrc,MAAO,CACH+a,kBACAE,mBAEJxiB,SAAS,QACT5J,SAAUosB,EACV1uB,QAASivB,EACTjzB,UAAU,iCAEdmB,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,wBACVkB,SAAA4xB,EAAYv2B,KAAI,CAACw3B,EAAGntB,IAChBzF,EAAAN,kBAAAM,IAAA6yB,GAAA,CAAsBhwB,QAAS,IAAM3I,EAASuL,GAAQ5G,UAAW,uBAAuBi0B,OAAOrtB,IAAUgsB,EAAgB,kCAAoC,KAA9IhsB,SAG5B,EAIKktB,GAA6BxvB,IACtC,MAAMpD,SAAEA,EAAUuW,MAAAA,EAAAzX,UAAOA,WAAWkQ,KAAagkB,GAAc5vB,GACzDkuB,gBAAEA,EAAiBE,gBAAAA,GAAoBjb,EAE7C,GAAI+a,GAAmBE,EAAwB,OAAA,KAE/C,MAAMyB,EACFhzB,EAAAA,kBAAAA,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,+XACFF,KAAK,cAKXoyB,EACFjzB,EAAAA,kBAAAA,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,iYACFF,KAAK,cAKXqyB,EAAO,IAAoB,SAAbnkB,EAAsBikB,EAAWC,EAGhDjzB,OAAAA,EAAAA,kBAAAA,IAAA,SAAA,CAAOnB,UAAW,2BAA2BA,IAAaqG,KAAK,YAAa6tB,EACzEhzB,SAACC,EAAAA,kBAAAA,IAAAkzB,EAAA,CAAA,IACL,EAIKL,GAA4B1vB,IACrC,MAAMpD,SAAEA,KAAagzB,GAAc5vB,iCAG9B,SAAO,CAAA+B,KAAK,YAAa6tB,EACrBhzB,YACL,EChKKozB,GAAgB,EAAGhjB,QAAO3R,UAAStI,OAAMiJ,eAE9CO,kBAAAC,KAAC,MAAA,CACGd,UAAU,wBACVU,MACIrJ,EACM,CACIsU,QAAS,IACT4oB,WAAY,WAEhB,CAAC,EAGXrzB,SAAA,yBAAC,OAAIlB,UAAU,yBAAyBgE,QAAS,IAAM1D,GAAQ,KAC/DQ,EAAAA,kBAAAA,KAAC,MAAI,CAAAd,UAAU,gCAAgCU,MAAOrJ,EAAO,CAAEm9B,KAAM,GAAM,CAAA,EACvEtzB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,wBACXkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,8BAA+BkB,SAAMoQ,MACpDnQ,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,qCACXkB,SAAAC,EAAAA,kBAAAA,IAAC,UAAOnB,UAAU,6BAA6BqG,KAAK,SAASrC,QAAS,IAAM1D,GAAQ,GAChFY,SAACC,EAAAN,kBAAAM,IAAAmI,GAAA,CAAUzH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,mBAInDrF,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,gCAAiCkB,SAAQvB,UCxBlE80B,GAAa,EAAGptB,WAAUqtB,2BACtB,MAAA55B,EAAyDyE,SAASiB,cAAc6G,GACjFvM,EAIA45B,EAAqB55B,GAHtBkI,YAAW,KACIyxB,GAAA,CAAEptB,WAAUqtB,wBAAsB,GAC9C,GAC0B,EAGxBltB,GAAkB,EAAGJ,gBAAeK,WAAUf,YAAAA,EAAaW,qBACpE,MAAOstB,EAAmBD,GAA6B97B,EAAMU,SAAS8N,IAEjEutB,GAAqBttB,GAAqBotB,GAAA,CAAEptB,WAAUqtB,yBAErD,MAAAE,EAAcC,EAAAA,eAAe,CAC/Bvc,MAAO7Q,EACPqtB,iBAAkB,IAAMH,EACxBI,aAAc,IAAM,KAGlB7tB,EAAQ0tB,EAAYI,kBAGtB,SAAAn0B,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHoB,OAAQ8yB,EAAYK,eACpBpzB,MAAO,OACPqO,SAAU,YAEdlQ,UAAU,8BAEVkB,WAAAL,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHwP,SAAU,WACVhV,IAAK,EACLs5B,KAAM,EACN3yB,MAAO,OACP4B,UAAW,eAAc,OAAA3E,EAAAoI,EAAM,SAAN,EAAApI,EAAUo2B,QAAS,QAEhDl1B,UAAU,2BAETkB,WAAM3E,KAAK44B,2BACP,MAAA,CAAyB,aAAYA,EAAWvuB,MAAOjO,IAAKi8B,EAAYQ,eAAgBp1B,UAAU,sCAC9FkB,SAAAwF,EAAYyuB,IADPA,EAAWh5B,UAI7B,ECpDCk5B,GCFkB,EAC3BC,eAAgBC,EAChB94B,OACA4J,OACAa,QACA6gB,uBACAG,qBACAC,wBACAqN,uBAWA,GAAID,EAAgB,CAChB,MAAME,EAAa,CAAEh5B,OAAM4J,OAAMa,QAAOghB,qBAAoBC,yBAErD,+BAACvvB,EAAMuN,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQuK,EAAe,IAAKE,OAA2Bt0B,EAAAA,kBAAAA,IAAAo0B,EAAA,IAAmBE,KAAe,CAExK,SAEQ50B,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,8DAA+DkB,SAAKzE,KAC3E,MAAPyK,OAAO,EAAAA,EAAAxM,gCACH,KAAG,CAAAsF,UAAU,6DACTkB,SAAMgG,EAAA3K,KAAI,CAACm5B,EAAU9uB,KACZ,MAAA0K,MAAEA,EAAO7a,IAAAA,GAAQi/B,EAGnBv0B,OAAAA,EAAAA,kBAAAA,IAAC,KACG,CAAAD,SAAAC,EAAAN,kBAAAM,IAAC,IAAE,CAAAuJ,KAAMjU,EAAKuJ,UAAU,kEACnBkB,SACLoQ,KAHK1K,EAIT,8BAKX,KAAG,CAAA5G,UAAU,6DACVkB,iCAAC,KAAA,CAAGlB,UAAU,sEAAuEkB,UAAkB,aAAA,EAAAs0B,EAAAG,kBAAmB,MAAM,MAAAl5B,OAAA,EAAAA,EAAMoB,iCAK1J,ED9CSw3B,GECyB,EAClCC,eAAgBC,EAChBK,WACA7N,wBAAuB,EACvBG,qBACAC,wBACA0N,kBAAkB,GAClBlV,kBAYA,GAAI4U,EAAgB,CAChB,MAAMpnB,+BAAEA,GAAmCvV,EAAM0V,WAA2BC,EAAaA,gBAEjF7O,QAASo2B,IAAqC,OAAAh3B,mBAAgCiU,oBAAhC,EAAAjU,EAA+Ci3B,eAAgB,GAM/GN,EAAa,CAAEG,WAAU1N,qBAAoBC,wBAAuB6N,sBAJ3Ct9B,IACvBo9B,GAAkCA,EAAiCp9B,EAAK,GAKzE,+BAACE,EAAMuN,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQuK,EAAe,IAAKE,OAA2Bt0B,EAAAA,kBAAAA,IAAAo0B,EAAA,IAAmBE,KAAe,CACrK,CACH,MAAMQ,GAAe,MAAAtV,OAAA,EAAAA,EAAOlH,SAAUkH,EAAMlH,QAAUlkB,EAEtD,SAEQsL,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,8DAA8DkB,SAAW,wCACvF,MAAGlB,UAAU,6DACTkB,SAAU,aAAA,EAAA00B,EAAAr5B,KAAI,CAACkd,EAAiB7S,4BAExB,KACG,CAAA1F,WAAAL,kBAAAC,KAAC,IAAA,CACG4J,KAAM,GAAGmrB,GAAmBvgC,KAA6B2gC,KAAgBxc,IACzEzZ,UAAU,6IAEVkB,SAAA,CAAAC,wBAACqI,IAAW3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAAY,IAAEiT,MALtD7S,SAajC,GFtDSyuB,GGAuB,EAChC7K,UAAW0L,EACXzc,UACAsO,wBAAuB,EACvBG,qBACAC,wBACA0N,kBAAkB,GAClBM,0BAA0B,GAC1BxV,QACA6U,6BAcA,GAAIU,EAAW,CACX,MAAM/nB,+BAAEA,GAAmCvV,EAAM0V,WAA2BC,EAAaA,gBAEjF7O,QAASo2B,IAAqC,OAAAh3B,mBAAgCiU,oBAAhC,EAAAjU,EAA+Ci3B,eAAgB,GAM/GK,EAAiB,CAAE3c,UAASyO,qBAAoBC,wBAAuB6N,sBAJ9Ct9B,IACvBo9B,GAAkCA,EAAiCp9B,EAAK,EAGoBy9B,2BAE7F,+BAACv9B,EAAMuN,SAAN,CAAgBjF,WAAwBC,EAAAA,kBAAAA,IAAA,MAAA,CAAI4pB,wBAAyB,CAAEC,OAAQkL,EAAU,IAAKE,OAA+Bj1B,EAAAA,kBAAAA,IAAA+0B,EAAA,IAAcE,KAAmB,CACnK,CACH,MAAMH,GAAe,MAAAtV,OAAA,EAAAA,EAAOlH,SAAUkH,EAAMlH,QAAUlkB,EAGlD,SAAAsL,kBAAAM,IAAC,IAAA,CACGuJ,KAAMyrB,GAAoD,GAAGN,GAAmBvgC,KAA6B2gC,KAAgBxc,IAC7HzZ,UAAU,iDAETkB,2BAAkBm1B,mBAAoB,oBAGnD,GCvBSC,GAA2Bt6B,OAAOqwB,QAAQj2B,GAAmCmG,KAAKg6B,GAAgCA,EAAuB,KAiBzIC,GAA6B,EAAGC,sBAAqBC,YAAWC,0BACzE,IAAIC,EAAoBN,GAAyBO,QAAO,CAACr6B,EAAML,KAC3D,IAAI26B,EAAgC,CAAA,EAEpC,IAAA,IAASC,EAAS,EAAGA,E1E6JS,E0E7JwBA,IAClDD,EAAyB,MAAMC,KAAY,GAG/C,MAAO,IAAKv6B,EAAML,CAACA,GAAM26B,EAAyB,GACnD,CAAE,GAgBE,OAfP96B,OAAOqwB,QAAQoK,GAAqBl6B,KAAKy6B,UACrC,IAAW,MAAPA,OAAO,EAAAA,EAAAt8B,SAAUs8B,EAAM,GAAGt8B,OAAQ,CAClC,MAAMu8B,EAAeD,EAAM,KAAO5gC,EAAkCC,YAE/CigC,GAAyBp+B,SAAS8+B,EAAM,MAGzD,OAAAl4B,EAAAk4B,EAAM,KAAIl4B,EAAAvC,KAAKC,IACX,MAAM06B,EAAU18B,OAAOgC,GAAM5E,MAAMq/B,EAAeN,EAAsBD,IAE3D,MAATQ,OAAS,EAAAA,EAAAx8B,SAAUsB,OAAOstB,OAAOsN,EAAkBI,EAAM,IAAK,OAAME,EAAQx8B,OAAS,KAAwBk8B,EAAAI,EAAM,IAAI,OAAME,EAAQx8B,OAAS,IAAK6zB,KAAK/xB,EAAI,IAE5K,KAGGo6B,CAAA,EAGEO,GAAoB,EAAGC,SAAQC,0BAAyBn9B,WAAUo9B,aAAa,GAAIZ,YAAWC,kCACvG,IAAIY,EAAU,MAAAD,OAAA,EAAAA,EAAYt/B,QAAQwE,GAASA,IAEvCg7B,EA9C+B,GAAGJ,SAAQC,0BAAyBn9B,eACvE,MAAMu9B,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QACrD2Q,EAAqB17B,OAAO27B,YAAYF,GAE9C,IAAA,MAAWG,KAAmBF,GACM,MAAAN,OAAA,EAAAA,EAAQ18B,SAAU08B,EAAOl/B,SAAS0/B,KAEnCP,EAAwBO,GAAmBF,EAAmBE,GAAiBhgC,MAAM,MAKjH,OAFHoE,OAAOC,KAAKo7B,GAAyB38B,QAAQR,EAASm9B,GAEnDA,CAAA,EAkCmBQ,CAAwB,CAC9CT,SACAC,0BACAn9B,aAEA08B,EAAoBJ,GAA2B,CAC/CC,oBAAqBe,EACrBd,YACAC,wBAGJ,MAAMmB,EAAe97B,OAAOqwB,QAAQmL,IAAwB,GAE5D,IAAA,MAAWO,KAAcD,EAAc,CACnC,MAAME,EAA0BD,EAEhC,KAAM,MAAAC,OAAA,EAAAA,EAAoBt9B,UAAUs9B,EAAmB,GAAGt9B,OAAS,SAEnE,IAAIu9B,EAAW,CAAC,+BAA+B//B,SAAS8/B,EAAmB,IACvEE,EAAU,CAAC,iBAAkB,yBAAyBhgC,SAAS8/B,EAAmB,IAGtF,GAFqB1B,GAAyBp+B,SAAS8/B,EAAmB,IAEtD,CAChB,IAAIG,EAA4B,GACzBn8B,OAAAqwB,QAAQuK,EAAkBoB,EAAmB,KAAKz7B,KAAK67B,WACtD,OAAAt5B,EAAAs5B,EAAiB,WAAjBt5B,EAAqBpE,SAAQy9B,EAAqB5J,KAAK,CAAC,GAAGyJ,EAAmB,MAAMI,EAAiB,KAAMA,EAAiB,IAAG,IAGvI,IAAIC,EAA0B,MAAAF,OAAA,EAAAA,EACxB57B,KAAK+7B,GACI,IAAIA,EAAmB,UAAUx7B,KAAKC,UAAUu7B,EAAmB,QAE7EC,KAAK,SAEVhB,EAAQhJ,KAAK8J,EAAuB,KACjC,CACC,IAAAG,EAAa,IAAIR,EAAmB,UAAUl7B,KAAKC,UAAUi7B,EAAmB,MAEhFE,IAASM,EAAa,IAAIR,EAAmB,UAAUA,EAAmB,GAAG,WAAWA,EAAmB,UAAUA,EAAmB,GAAG,MAC3IC,IAEIO,EADAtmB,MAAMumB,QAAQT,EAAmB,MAAO,OAAAl5B,EAAAk5B,EAAmB,SAAI,EAAAl5B,EAAApE,QAAS,EAC3D,IAAI,OAAAkT,EAAmBoqB,EAAA,SAC9B,EAAApqB,EAAArR,KAAKC,GACI,IAAIw7B,EAAmB,OAAOx7B,MAExC+7B,KAAK,WAEG,IAAIP,EAAmB,OAAOA,EAAmB,MAItET,EAAQhJ,KAAKiK,EACjB,CACJ,CAEO,MAAA,IAAI,IAAIE,IAAInB,EAAQtD,OAAOz+B,KAAqC+iC,KAAK,QAAO,EAsF1EI,GAA4C,EAAGjgC,QAAOkgC,oBAC/D,IAAIC,EAA0B,GAC9B78B,OAAOqwB,QAAQuM,GAAer8B,KAAKy6B,KACpB,MAAPA,OAAO,EAAAA,EAAAt8B,SAAUs8B,EAAM,GAAGt8B,QACTm+B,EAAAtK,KAAKyI,EAAM,GAChC,IAGA,IAEA8B,EAAuC,MAAlBD,OAAkB,EAAAA,EAAAn+B,OACvCq+B,GAAuBD,EACvBE,EAAuBF,GAAsBD,EAAiB3gC,SAASQ,IAAiC,IAAvBogC,EACjFG,EAA2BJ,EAAiB3gC,SAAS,mBAAqB2gC,EAAiB3gC,SAAS,yBACpGghC,EAAkBJ,IAAuBE,GANtB,CAAC,UAM8D9gC,SAASQ,KAAWugC,EAE1G,OAAOF,GAAuBC,GAAwBE,CAAA,EC/N7CC,GAAkB70B,gBA4BrB,MAAAtM,OACFA,EAAA8W,eACAA,EAAAsqB,gBACAA,EAAAlZ,oBACAA,EAAAmZ,wBACAA,EAAAT,cACAA,EAAAU,iBACAA,EAAAC,mBACAA,EAAAC,kBACAA,EAAAC,uBACAA,EAAAC,0BACAA,EAAAC,wBACAA,EAAAC,2BACAA,EAAAC,oBACAA,EAAAC,uBACAA,EAAAC,SACAA,EAAAC,sBACAA,EAAAC,WACAA,EAAAC,aACAA,EAAAC,cACAA,EAAAC,UACAA,EAAY,GAAA5E,iBACZA,EAAA6E,qBACAA,EAAAC,wBACAA,EAAAC,wBACAA,EAAAC,yBACAA,GACAl2B,GAEGm2B,EAAcC,GAAmB9hC,EAAMU,SAAS,KAChDqhC,EAAWC,GAAgBhiC,EAAMU,UAAS,GAE3CuhC,EAAiBjiC,EAAMC,OAAY,MAEnCupB,EAAqB3pB,EAAY,CAAEgiC,iBAEzC,IAAIK,EAAe,CAAA,EACE,4BAAjB9iC,EAAOU,QAA+CoiC,EAAAf,EAASgB,oBAAsB,IACpE,4BAAjB/iC,EAAOU,QAA+CoiC,EAAAf,EAASiB,mBAAqB,IAExF,MAAMC,iBAAEA,IAAqB,MAAA/a,OAAA,EAAAA,EAAqBpP,YAAa,CAAA,GAEzDoqB,0BAAEA,EAA2BC,+BAAAA,EAAAC,wBAAgCA,GAA4B5F,GAAoB,CAAA,GAG/GhvB,MAAO60B,EACP1iB,UAAW2iB,EACXziB,YAAa0iB,EACbxiB,eAAgByiB,IAChB,OAAA18B,EAAA,MAAAs6B,OAAA,EAAAA,EAAiBphC,aAAjB,EAAA8G,EAAyB8N,SAAU,IAE/B6uB,gBAAiBC,GAAqB,EAAAC,sBAAMA,EAAwBlmC,IAAyC,MAAjB2jC,OAAiB,EAAAA,EAAAphC,SAAU,GAEzH4jC,EAAsB,IACpBP,GAAuB,CAAE70B,MAAO60B,MAChCC,GAA2B,CAAEliB,SAAUkiB,MACvCC,GAA6B,CAAEliB,WAAYkiB,MAC3CC,GAAgC,CAAEliB,cAAekiB,IAGrD,IAAA9iC,MAAEA,SAAOmL,GAAOlD,QAAAA,GAAAk7B,YAASA,SAAa30B,GAAO6yB,SAAU+B,IAAmB9jC,EACxE,MAAA+jC,OAAEA,GAAQC,YAAAA,GAAAC,cAAaA,GAAeC,gBAAAA,GAAAC,YAAiBA,sBAAaC,GAAoBC,iBAAAA,IAAqBP,IAAkB,GAE/HQ,IAAgCD,GAElC,GAAAvtB,EAAuB,OAAA,KAE3B,IAAIytB,GAAiB,KAEf,MAAAC,GAA8B,OAAA5uB,EAAiB,MAAAwrB,OAAA,EAAAA,EAAAphC,aAAQ,EAAA4V,EAAA6uB,6BACvDC,GAA2B,OAAArnB,EAAiB,MAAA+jB,OAAA,EAAAA,EAAAphC,aAAQ,EAAAqd,EAAAsnB,qBACpDC,GAA4C,WAA1Bj8B,GAAQ9C,cAC1Bg/B,GAAW,GAAGnkC,MAASmjC,KAEzBM,IAAe1B,IAAiBmC,KAAiB11B,GAAe,MAAPA,QAAO,EAAAA,GAAAlP,QAAO,EAAGyE,mBAAgBmR,OAAA,OAAAA,EAAA,OAAA9O,EAAAtE,OAAOiC,SAAPqC,EAAAA,EAAcjB,oBAAd,EAAA+P,EAA6B1V,SAAuB,MAAduiC,OAAc,EAAAA,EAAA58B,cAAA,KAG5I,MAAAi/B,GAAqB51B,UACvB,IAAI61B,EAAqB,GAEzB,KAAY,MAAP71B,OAAO,EAAA81B,EAAAtiC,QAAe,OAAAqiC,EAE3B,IAAA,MAAWvgC,KAAQ0K,EAAO,CAChB,MAAA+1B,EAAiBzgC,GAAwB,WAAhBw/B,MAA6B,MAAAE,QAAA,EAAAA,GAAiBhkC,SAAe,MAANsE,OAAM,EAAAA,EAAA9D,QACtFwkC,EAAiB1gC,GAAwB,WAAhBw/B,MAAqC,MAARD,QAAQ,EAAAA,GAAAoB,MAAMC,UAAoB,OAAA,OAAAt+B,EAAA,MAAAtC,OAAA,EAAAA,EAAM9D,YAAN,EAAAoG,EAAau+B,WAAWD,EAAA,KAElH,IAAC5gC,GAAQygC,GAAkBC,EAAgB,SAE/C,MAAMI,EAAsBthC,OAAOstB,OAAO9sB,EAAM,YAEhD,IAAI+gC,EAAY/gC,EAAKC,KACjBogC,EAAWS,EAAsB,GAAG5kC,SAAY8D,EAAKghC,QAAU9kC,GAE/D88B,IAAqBA,EAAiBh5B,EAAK9D,QAAU88B,EAAiBh5B,EAAKC,SAAQ8gC,EAAY/H,EAAiBh5B,EAAK9D,QAAU88B,EAAiBh5B,EAAKC,OAEzJ,IAAIghC,EAAU9E,GAA0C,CACpDjgC,MAAOmkC,EACPjE,mBAEE,MAAAp8B,OAAA,EAAAA,EAAMgG,QAAS,GACf,MAAA62B,OAAA,EAAAA,EAA0BwD,MAAa,OAAA/9B,EAAA,MAAAu6B,OAAA,EAAAA,EAA0BwD,SAA1B/9B,EAAAA,EAAsCtC,EAAK9D,QAClF2gC,EAAwBwD,GAAUrgC,EAAK9D,OACvC,EAEFglC,EAAe5C,EAAQyC,IAAcA,EAC1B,MAAAtB,IAAAA,GAAA1/B,KAAKohC,IACZnjC,OAAOkjC,GAAcL,WAAWM,KAAeD,EAAeljC,OAAOkjC,GAAchgC,QAAQigC,EAAc,IAAE,IAG7GjB,KAA6Be,GAC/BV,EAAYxO,KAAK,IACV/xB,EACH+gC,UAAWG,EACXD,WAEZ,CAEO,OAAAV,CAAA,EAGLa,GAAsB,EAAGC,iBAC3B,MAAMC,EAAiBlB,GAAkBiB,EAAaf,GAAkBe,GAEpE,IAACnC,GAAsBkB,GAChB,MAAA,CACHmB,cAAc,EACdC,aAAcF,GAItB,MAAMG,EAAgBpE,EAAoBgD,KAAaqB,OAAOvC,GAE9D,IAAIoC,EAAe1qB,QAAQ4qB,GAAgB,MAAAH,OAAA,EAAAA,EAAgBpjC,SACvDyjC,EAAcL,EAKX,OAJHC,IAAuBI,EAAAA,EAAO9gB,MAAM,EAAG4gB,IAIpC,CACHF,aAAAA,EACAC,aAJeG,EAKfC,WAAYF,OAAO,MAAAJ,OAAA,EAAAA,EAAgBpjC,QAAM,GAU3CqjC,aAAEA,GAAAC,aAAcA,GAAcI,WAAAA,IAAeR,GAAoB,CACnEC,WAAY32B,KAGVm3B,GAAyB1gC,GAAa,2BAA2Bk/B,MAEvEjkC,EAAME,WAAU,KACZ,IAAKqjC,GAAa,OAElBn5B,YAAW,WAAM,OAAA,OAAAlE,EAAAS,SAASiB,cAAc,IAAI69B,YAA3B,EAAAv/B,EAAsDmf,iBAAiB,SAAS,IAfxE,cACzB2c,GAAa,IAEG,MAAAC,OAAA,EAAAA,EAAA9hC,WAAW,OAAA6U,EAAA,OAAA9O,EAAgB,MAAhB+7B,OAAgB,EAAAA,EAAA9hC,gBAAhB+F,EAAyBqM,QAAzByC,EAAA0P,KAAAxe,GAAAA,EAY4Ew/B,IAAqB,GAAI,KAEhI,IAAIC,EAAwBlrB,QAAQ+O,GAAiBA,EAAcqY,eAAiBA,GAChF+D,EAAoCnrB,QAAQmnB,IAA4B,MAAAA,OAAA,EAAAA,EAA0B5B,iBAAkBA,GAExH,GAAI6B,GAAgB8D,EAAuB,CACjC,MAAAE,EAAkBz7B,YAAW,aAC/B,MAAM07B,EAAoBrrB,QAAQ+oB,IAAsBgC,IAAqC,IAAvBF,OAAOE,KAEzE,IAAAO,EAAmB,OAAA7/B,EACjB,MADiBk/B,QACjB,EAAAA,GAAAzhC,KAAI,EAAG7D,MAAOkmC,cACZ,OAAO,OAAAhxB,EAAA,OAAA9O,EAAgB,MAAhB85B,OAAgB,EAAAA,EAAAlgC,UAAhBoG,EAAAA,EAAwB5G,eAAxB,EAAA0V,EAAA0P,KAAAxe,EAAmC8/B,IAAa,KAAOA,CAAA,UAF/C,EAAA9/B,EAIjB9G,QAAQwE,GAAcA,IAExB,GAAAkiC,UAAqBC,WAAkBjkC,QAAQ,CAC/C,IAAImkC,EAAqB,IAClBjG,EAEClgC,CAACA,IAAQ,IAAQ,IAAAggC,IAAI,KAAK,OAAA9qB,EAAA,MAAAgrB,OAAA,EAAAA,EAAgBlgC,UAAhBkV,EAAAA,EAAwBlT,QAAyB,MAAhBk+B,OAAgB,EAAAA,EAAAlgC,IAAS,MAAQimC,MAIhGG,EAA8BD,EAG9B7iC,OAAOstB,OAAOwV,EAA6B,iCAAqE,MAAAA,UAAAA,EAAA,gCAE1F,MAAAvE,GAAAA,EAAAuE,GAEP,MAAAxF,GAAAA,EAAAuF,GACnB,MAAAvE,GAAAA,GAA2BD,EAC/B,IACD,KACI,MAAA,IAAMp3B,aAAaw7B,EAC9B,CACM9D,GAAa6D,GAAoC5D,GAAa,EAAK,GAC1E,CAACH,EAAc7B,IAEZ,MAAAmG,KACFl+B,kBAAAC,KAAC,MAAA,CACGd,UAAU,sDACVgE,QAAS,IACoB,MAAzB81B,OAAyB,EAAAA,GAACkF,IACL,IACVA,EACHnC,CAACA,KAAYmC,EAAInC,KAAaqB,OAAOvC,IAA0BuC,OAAOvC,OAOjFz6B,SAAA,CAAoB+5B,GAAA,oCACpB7xB,GAAqB,CAAAvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,eAIrDy4B,GAAuB36B,YACnB,MAAAy4B,YAAEA,EAAap2B,YAAAA,GAAgBrC,GAC/BsC,MAAEA,EAAAzK,IAAOA,GAAQwK,GAAe,CAAA,EAE/BiH,OAAA,OAAAA,EAAAkvB,GAAkBn2B,IAAe,OAAA7H,EAAA9C,OAAOC,KAAK0K,SAAZ,EAAA7H,EAA0BpE,QAAS,CAACqiC,EAAYn2B,IAAUm2B,SAA3FnvB,EAAAA,EAAyGrR,KAAK2iC,UACjH,MAAM3B,UAAEA,EAAW7kC,MAAOkmC,UAAWnB,EAASv8B,SAAAA,EAAAs8B,MAAUA,GAAU0B,EAE5D5B,EAAsBthC,OAAOstB,OAAO4V,EAAY,YAChDC,EAAgB7B,IAAiC,MAAVp8B,OAAU,EAAAA,EAAAxG,QACjD0kC,EAAY/rB,QAAQulB,IAAiB,OAAA95B,EAAA85B,EAAclgC,UAAd,EAAAoG,EAAsB5G,SAAS0mC,MAElEb,aAAAA,EAAcC,aAAAA,GAAiBJ,GAAoB,CACvDC,WAAY38B,IAGVm+B,EAAyBJ,GAAoB,CAC/ClC,YAAaiB,IAGXr+B,IACFkB,kBAAAM,IAACwC,GAAA,CACGrJ,GAAI,GAAGuiC,MAAYj2B,IAAQ02B,EAAsB,IAAI3/B,GAAaihC,KAAe,KACjFniC,KAAM/D,GACNA,MAAOkmC,EACP/6B,QAEQhD,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACL,kBAAAM,IAAA,OAAA,CAAMD,SAAG,GAAAq8B,SAAwB,IAAZE,GAAyBjB,GAA8B,KAAKiB,KAAa,OAC9F0B,IACGt+B,kBAAAM,IAACoL,EAAAA,OAAOC,IAAP,CACGC,SAAS,EACTC,QAAS0yB,EAAY,OAAS,SAC9BzyB,SAAUvB,GACVpL,UAAU,iEAEVkB,iCAACkI,GAAqB,CAAAvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,cAEvD,QAGZxC,QAAUgH,GACNuuB,EAAmB,CACf+F,SAAU5mC,GACVA,MAAOsS,EAAE2hB,cAAcj0B,QAG/BoL,QAASs7B,EACTr7B,WAAY63B,IAIpB,SAEQ/6B,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAAAL,kBAAAM,IAAC,KAAA,CAEGnB,UAAW,uDACPs9B,EAAsB,qHAAqHE,IAAU,IAGxJt8B,SAAAvB,GALIxD,GAORgjC,GAAiBC,EACZrB,EACInlC,EAAM4f,sCAEGrS,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA,CAAAm+B,EACAN,OAGTM,EACJ,OACV,GAAA,EAKZ,IAAIj4B,GAAgB7H,SAASiB,cACzBw5B,GAAyB,WAAW6B,MAAe5B,KAAcC,GAAgB,kBAAkBv8B,GAAajF,uDAGpH,MAAM6mC,GAAelsB,QACjB8oB,KAA0C,aAA1Bx7B,GAAQ9C,eAA0D,SAA1B8C,GAAQ9C,eAAsD,UAA1B8C,GAAQ9C,iBAA+BugC,IAAe3D,IAAiB2D,KAGjKoB,KAEG1+B,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAk9B,GAAW,gBAAc,MAC1Bj9B,kBAAAA,IAAC,OAAK,CAAAnB,UAAU,0DAA0D1F,GAAI+jC,GAAwBr6B,QAAS,IAAM42B,GAAa,GAAO15B,SAEzI,eAAQ,IAAI,aAKpB,IAAIu+B,GAA6BtE,EACjC,GAAIsE,GAA4B,CAC5B,MAAMC,EtE5RgB,CAAC7kC,IAC3B,MAAMq6B,MAAEA,EAAAyK,IAAOA,EAAK/hC,KAAAA,GAAS/C,EAEzB,GAAAq6B,GAASt3B,EAAK1F,SAASg9B,IAAUyK,GAAO/hC,EAAK1F,SAASynC,GAAM,CAC5D,IAAIC,EAAUhiC,EAAKiiC,QAAQ3K,GAASA,EAAMx6B,OAE1C,OAAOkD,EAAKkiC,UAAUF,EAAShiC,EAAKiiC,QAAQF,EAAKC,GAAQ,CAElD,OAAAhiC,CACX,EsEmR0BmiC,CAAe,CACjC7K,MAAO,WACPyK,IAAK,YACL/hC,KAAMu9B,IAGmBsE,GAAAA,GAA2Br5B,WAAW1Q,EAA0C8E,OAAO0jC,OAAOE,MAC3HqB,GAA6BA,GAA2Br5B,WACpD,WAAWs5B,aACX,2FAC4ErB,yBACtEqB,yBAGd,CAEA,GAAI9C,GAAiB,CACjB11B,IAA4B,MAApBsyB,OAAoB,EAAAA,EAAA9gC,MAAUsD,OAAOC,KAAKu9B,EAAkB9gC,KAAQgC,OAAS8+B,EAAkB9gC,IAAS,CAAA,EAEhH,IAAIsnC,EAAiC,GACvB,mBAAVtnC,GAC0BsnC,EAAAvG,EACT,0BAAV/gC,KACmBsnC,EAAArG,GAG1B,IAAAsG,GAA4C,MAA1BD,OAA0B,EAAAA,EAAA,MAAa,MAAP94B,QAAO,EAAAA,GAAA3C,KACzD27B,GAA4C,MAA1BF,OAA0B,EAAAA,EAAA,MAAa,MAAP94B,QAAO,EAAAA,GAAA1C,KAGzD+3B,KAAA17B,kBAAAC,KAAC,MAAI,CAAAd,UAAU,wDACXkB,SAAA,GAAAL,kBAAAM,IAACkD,GAAA,CACG3L,MAAOunC,IAAoBC,EAAkB,CAACA,GAAmB,CAACD,EAAiBC,OACvE,MAAPh5B,QAAO,EAAAA,GAAA3C,QAAe,MAAP2C,QAAO,EAAAA,GAAA1C,KACrB,CAAA,EACA,CACID,IAAY,MAAP2C,QAAO,EAAAA,GAAA3C,KAEtBC,IAAY,MAAP0C,QAAO,EAAAA,GAAA1C,IACZC,KAAM,EACNC,eAAiBK,GACbw0B,EAAmB,CACf+F,SAAU5mC,GACVA,MAAOqM,IAGfJ,eAAiBM,IACC,mBAAVvM,GACAghC,EAA0Bz0B,GACT,0BAAVvM,IACPkhC,EAA2B30B,EAC/B,MAGRnE,kBAAAA,KAAC,MAAI,CAAAd,UAAU,+DACXkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oDAAqDkB,SAAgB++B,IACnF9+B,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oDAAqDkB,SAAgBg/B,SAIpG,MAwBI3D,GAxBkC,aAA1B57B,GAAQ9C,eAA0D,SAA1B8C,GAAQ9C,iBAA6B,MAAAmgC,QAAA,EAAAA,GAActjC,QAuBlE,UAA1BiG,GAAQ9C,sBAA6BmgC,aAActjC,gCAErD,KACG,CAAAwG,WAAAL,kBAAAM,IAAC6F,GAAA,CACG1M,GAAIuiC,GACJpgC,KAAMogC,GACN73B,cAAgBC,GACZs0B,EAAmB,CACf+F,SAAU5mC,GACVA,MAAOuM,EACPk7B,OAAO,IAGfj5B,MAAO,MAAA82B,QAAA,EAAAA,GAAczhC,KAAKC,IACtB,MAAM+gC,UAAEA,EAAW7kC,MAAAA,EAAAA,QAAO+kC,GAAYjhC,EAE/B,MAAA,CACHqH,MAAO,GAAG05B,UAAyB,IAAZE,GAAyBjB,GAA8B,KAAKiB,KAAa,KAChG/kC,MAAAA,EAAA,IAGRuO,aAAc2xB,IAAiB,OAAA/iB,EAAA+iB,EAAclgC,UAAQ,EAAAmd,EAAAnb,QAASk+B,EAAclgC,IAAO,GAAK,GACxFqL,WAAY63B,EACZz0B,gBAAc,EACdE,SAAU2yB,KACL5yB,IAAiB,CAClBA,sBAKiB,WAA1BzG,GAAQ9C,sBAA8BmgC,aAActjC,gCAEtD,KACG,CAAAwG,WAAAL,kBAAAM,IAAC8G,GAAA,CACGC,YAAa,UAAUrE,KACvBpH,KAAM/D,GACNsM,cAAgB63B,GACZtD,EAAmB,CACf+F,SAAU5mC,GACVA,MAAOmkC,EACPsD,OAAO,IAGfj5B,MAAO,MAAA82B,QAAA,EAAAA,GAAczhC,KAAKC,IACtB,MAAM+gC,UAAEA,EAAW7kC,MAAAA,EAAAA,QAAO+kC,GAAYjhC,EAE/B,MAAA,CACHqH,MAAO,GAAG05B,UAAyB,IAAZE,GAAyBjB,GAA8B,KAAKiB,KAAa,KAChG/kC,MAAAA,EAAA,IAGRqL,WAAY63B,MAIS,WAA1Bj7B,GAAQ9C,sBAA8BqJ,aAAOxM,QAG3CyG,EAAAA,kBAAAA,IAAAgF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAO,MAAPgG,QAAO,EAAAA,GAAA3K,KAAI,CAACC,EAAWoK,WACpB,IAAI6mB,GAAiB,MAAA0M,OAAA,EAAAA,EAAeniC,QAAO,EAAGyE,UAAgB,MAAAA,OAAA,EAAAA,EAAMvE,SAASsE,EAAK9D,SAAQ,KAAM,CAAA,EAEhG,+BACK,KACG,CAAAwI,WAAAL,kBAAAM,IAACuG,GAAA,CACGpN,GAAI,GAAGuiC,MAAYj2B,IACnBnK,KAAM/D,GACNA,MAAO8D,EAAK9D,MACZiP,IAAqB,MAAhB8lB,OAAgB,EAAAA,EAAA9lB,IACrBC,MAAuB,MAAhB6lB,OAAgB,EAAAA,EAAA7lB,MACvB5D,QAAUgH,GACNuuB,EAAmB,CACf+F,SAAU5mC,GACVA,MAAOsS,EAAE2hB,cAAcj0B,QAG/BmP,eAAgBwL,QAAQulB,IAAiB,OAAA95B,EAAA85B,EAAclgC,UAAdoG,EAAAA,EAAsB5G,SAASsE,EAAK9D,YAb5EkO,EAeT,8BAOX,KAAG,CAAA5G,UAAU,sDAAsDU,MAAOk7B,EACtE16B,YAA2B,iBA3GN,aAA1BP,GAAQ9C,gBACJgD,kBAAAM,IAACqG,GAAA,CACGH,SAAU2yB,KACL5yB,IAAiB,CAClBA,kBAEJK,SAAwB,MAAdu2B,QAAc,EAAAA,GAAAtjC,OACxBgM,YAAcpC,GACV26B,GAAoB,CAChBlC,YAAaiB,GACbr3B,YAAarC,4DAMpBpD,SAAoB+9B,GAAA,CACjBlC,YAAaiB,OAwGjC,OATID,KACAxB,GAAiB3jC,EAAM4f,sCAEdrS,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA,CAAAq7B,GACAwC,UAOJl+B,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CACGq+B,KAAA1+B,kBAAAC,KAAC,MAAI,CAAAd,UAAU,sDACXkB,SAAA,GAAAL,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACLuE,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,YAAagzB,GAA6B,oBAC1CnwB,SAAU8vB,EACVniC,MAAO+hC,EACP70B,SAAU,EAAGlN,MAAAA,KAAiBgiC,EAAgBhiC,GAC9CoS,aAAc,IAAM4vB,EAAgB,IACpC16B,UAAU,mDACV6K,gBAAc,IAEjB4vB,GAAgB2D,IAAcF,OAAOE,IAAc,IAAM9B,KAAiC3B,EACvFt4B,EAAAxB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,mDAAmDU,MAAOk7B,EACpE16B,SAA6Bu+B,GAAAt+B,EAAAN,kBAAAM,IAAC,MAAI,CAAA4pB,wBAAyB,CAAEC,OAAQyU,MAAuCD,KAEjH,QAER,MACFrD,IAAgBA,KAAgBG,KAAkCA,MAAkC8B,IAAsC,IAAvBF,OAAOE,KAAqB3D,IAAmBE,GAChKx5B,EAAAN,kBAAAM,IAAC,MAAGnB,UAAWo6B,EAAYl5B,cAC3B,OACR,EAIKk/B,GAA2B97B,IAuBpC,MAAMtM,OAAEA,EAAA8jC,eAAQA,EAAgBD,YAAAA,EAAAwE,iBAAaA,EAAmB,CAAI,EAAAC,yBAAAA,EAAAC,mBAA0BA,EAAoBC,iBAAAA,EAAAvG,WAAkBA,EAAYC,aAAAA,GAAiB51B,GAE3J5L,MAAEA,EAAOmL,MAAAA,GAAU7L,EAEnB6kC,EAAW,GAAGnkC,KAASmjC,IAEvB4E,EAAe,UAAU5E,KAAe5B,KAAcC,GAAgB,SAASsG,KAAoB7iC,GAAak/B,MAEhH6D,SAAEA,EAAAC,iBAAUA,EAAkBC,kBAAAA,GAAsB9E,EAAe,CACrE9jC,OAAQ,IACDA,EACH6jC,eAEJ7B,sBAAuB,IAAIyG,sDAGxB,OAAAC,EACFr+B,EAAAxB,kBAAAC,KAAA,MAAA,CAAId,UAAU,4CAA4C1F,GAAImmC,EAC3Dv/B,SAAA,0BAAC,OAAIlB,UAAU,kDAAkDgE,QAAS,IAAMs8B,EAAyBzD,GACrG37B,SAAA,CAAAC,wBAAC,OAAK,CAAAnB,UAAU,6CAA6CU,MAAO2/B,EAC/Dn/B,SACL2C,IACA1C,EAAAA,kBAAAA,IAACoL,SAAOC,IAAP,CAAWC,SAAS,EAAOC,QAAS6zB,EAAmBroC,SAAS2kC,GAAY,OAAS,SAAUlwB,SAAUvB,GACtGlK,SAAAC,wBAACiI,GAAqB,CAAAvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAG1D+5B,EAAmBroC,SAAS2kC,4BACxB,MAAI,CAAA78B,UAAU,oDACVkB,SAAkB0/B,EAAA,CACfxG,UAAWuG,EAAiBpI,KAAK,WAZiCsD,GAiBlF,IAAA,EAGKgF,GAA6Bv8B,IAyBhC,MAAAtM,OACFA,EAAA8jC,eACAA,EAAAD,YACAA,EAAAiF,WACAA,EAAAC,8BACAA,EAAAC,iCACAA,EAAAC,oCACAA,EAAAC,uCACAA,EAAAC,cACAA,EAAgB,GAAClH,WACjBA,EAAAC,aACAA,GACA51B,GAEE5L,MAAEA,EAAOmL,MAAAA,GAAU7L,EAEnByoC,EAAe,UAAU5E,KAAe5B,KAAcC,GAAgB,SAAS4G,KAAcnjC,GAAajF,KAG1G0oC,GADsC,WAAfN,EAA0BG,EAAsCF,KACrCroC,GAElDgoC,SAAEA,EAAUC,iBAAAA,EAAAC,kBAAkBA,EAAmBS,YAAAA,GAAgBvF,EAAe,CAClF9jC,OAAQ,IACDA,EACH6jC,eAEJ7B,sBAAuB,IAAIyG,sDAGxB,OAAAC,IACHv/B,kBAAAA,IAACvI,EAAMuN,SAAN,CACGjF,SAAAC,EAAAN,kBAAAM,IAAC1B,GAAA,CACGC,UACImB,kBAAAC,KAACoJ,GAAA,CACG7D,KAAK,SACLrC,QAAS,KACc,WAAf88B,EACyC,MAAAI,GAAAA,EAAAxoC,GAEN,MAAAsoC,GAAAA,EAAAtoC,EACvC,EAEJsH,UAAW,IAAGqhC,GAAe,MAAAF,OAAA,EAAAA,EAAezmC,QAAS,EAAI,mDAAqD,oDAAuD,IAEpKwG,SAAA,CAAA2C,EACD1C,EAAAA,kBAAAA,IAACoL,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAAS00B,EAAyB,OAAS,SAAUz0B,SAAUvB,GAA+BpL,UAAU,oBACjIkB,iCAACkI,GAAqB,CAAAvH,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,iBAI/D7G,UACIkB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,wDAAwD1F,GAAImmC,EACtEv/B,SAAAkgC,GACIjgC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oDACVkB,SAAkB0/B,EAAA,CACfxG,UAAWuG,EAAiBpI,KAAK,WAMrDt4B,eAAa,EACbL,OAAQwhC,EACRvhC,UAAYxI,IACW,WAAfypC,EACyC,MAAAI,GAAAA,EAAC7pC,EAAYqB,EAAL,IAEd,MAAAsoC,GAAAA,EAAC3pC,EAAYqB,EAAL,GAC/C,EAEJoH,eAAa,EACbC,MAAM,SACNC,UAAU,yDACVG,YAAa,kYA3CA07B,GA8CrB,IAAA,ECnkBFyF,GAAiB,EAAG1jC,OAAMoG,UAASu9B,mBAAkB97B,cAAaC,YAAWC,cAAaE,SAAUC,EAAc07B,uBAAsB/2B,MAC1I,MAAO9R,EAAKS,GAASJ,EAAwB,CACzCC,UAAW,EACXC,KAAM,KACNC,WAAY,SAGT0M,EAAUI,GAAerN,EAAMU,SAAc,MA4BhD,OAVJV,EAAME,WAAU,KAGR,GAnBe,MACb,MAAAoN,IACApF,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,QACQuE,EAAY,OAAKC,EAAU,YAAUC,EAAY,aAI3DG,IAGAA,GADAA,GADAA,EAAeA,EAAaM,WAAW1Q,EAAqC8E,OAAOiL,KACvDW,WAAW1Q,EAAmC8E,OAAOkL,KACrDU,WAAW1Q,EAAqC8E,OAAOmL,KAG3EM,EAAAH,GAA8BI,EAAe,KAMrDq7B,GAAoBC,IAAqB,MAAApoC,OAAA,EAAAA,EAAOye,gBAAgB,CAChE,MAAMlV,EAAQK,YAAW,IAAM,MAAAgB,OAAA,EAAAA,KAAa,KACrC,MAAA,IAAMf,aAAaN,EAC9B,IACD,CAACvJ,MAGA+H,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,qBAAqBrH,MAC/BuI,UAAO,aAAA,EAAA9H,EAAAye,mBACJhX,kBAAAC,KAAC,MAAI,CAAAd,UAAU,mCACXkB,SAAA,GAAAC,kBAAAA,IAAC,QAAMD,SAAS2E,4BACftD,GAAS,CAAA7J,MAAO+M,EAAajD,MAAOkD,EAAW/C,MAAO,IACtD6+B,GACGn/B,EAAAxB,kBAAAM,IAAC+I,GAAO,CAAA7D,KAAK,SAASo7B,KAAK,SAASr3B,UAAU,QAAQpG,aAAsByG,EACvEvJ,SACLtD,QAIhB,EAIK8jC,GAAsBp9B,sDACzB,MAAA21B,WACFA,EAAa,UAAAp4B,MACbA,EAAQxM,EAAAsrB,MACRA,EAAA9lB,OACAA,EAAAqG,SACAA,EAAA+sB,iBACAA,EAAAza,mBACAA,EAAAC,sBACAA,EAAAya,qBACAA,EAAAmB,wBACAA,EAAAG,kBACAA,EAAAE,kBACAA,EAAAG,qBACAA,EACA14B,KAAM8W,EAAAiT,eACNA,IACA5c,EAEEq9B,GCpNH,WACG,MAAAC,EAAYhpC,EAAMC,QAAO,GAE3B,OAAsB,IAAtB+oC,EAAU7oC,SACV6oC,EAAU7oC,SAAU,GACb,GAGJ6oC,EAAU7oC,OACrB,CD2M0B8oC,GAEhB5L,IAAe,MAAAtV,OAAA,EAAAA,EAAOlH,SAAUkH,EAAMlH,QAAUlkB,EAChDusC,IAAc,MAAAnhB,OAAA,EAAAA,EAAOohB,QAASphB,EAAMohB,OAASxsC,GAE7C2kC,aAAEA,IAAiBr/B,GAAU,GAE7B48B,GAAmC,oBAAbl4B,SAA2B,IAAI6W,gBAAgB,OAAAtX,EAAU,MAAAS,cAAA,EAAAA,SAAAoS,eAAU,EAAA7S,EAAAioB,QAAU,MAElGgT,IAAYnhC,EAAMU,SAAiC,oBAAjB3C,aAA+BmG,KAAK6S,MAAMhZ,aAAa2W,QAAQ7Z,IAA6C,MAAQ,CAAA,IACtJqb,GAAgBC,IAAqBnW,EAAMU,UAAU2U,IACrDe,GAAWC,IAAgBrW,EAAMU,UAAU2U,IAC3CwL,GAASD,IAAc5gB,EAAMU,SAAS,MAAAm+B,QAAA,EAAAA,GAAcuK,IAAI/L,MACxDgM,GAAmBC,IAAwBtpC,EAAMU,SAAiC,OAClF6oC,GAAqBC,IAA0BxpC,EAAMU,YACrD+oC,GAAqBC,IAA0B1pC,EAAMU,YACrDipC,GAAiBC,IAAsB5pC,EAAMU,iCAAUmpC,IAAc,KACrEC,GAAkBC,IAAuB/pC,EAAMU,UAAU2U,IACzD20B,GAAcC,IAAmBjqC,EAAMU,UAAS,OAAAsU,EAAA,MAAAsT,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAl1B,EAA+Bm1B,gBAAiB,KAChG5B,GAAe6B,IAAoBpqC,EAAMU,SAAS,KAClD2pC,GAAaC,IAAkBtqC,EAAMU,SAAgB,KACrD89B,GAAQ+L,IAAavqC,EAAMU,SAAgB,KAC3C8pC,GAAcC,IAAmBzqC,EAAMU,UAAS,OAAA+b,EAAgB,MAAA6L,QAAA,EAAAA,GAAA4hB,oBAAe,EAAAztB,EAAAiuB,gBAAiB,KAChGC,GAAYC,IAAiB5qC,EAAMU,UAAS,OAAAuc,EAAA,MAAAqL,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAjtB,EAA+B4tB,cAAe,KAC1FrK,GAAiBsK,IAAsB9qC,EAAMU,UAAc,OAAAwc,EAAA,MAAAoL,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAhtB,EAA+BnV,UAAW,CAAA,IACrGw5B,GAAewJ,IAAoB/qC,EAAMU,UAAgB,OAAAsiB,EAAA,MAAAsF,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAlnB,EAA+B4R,SAAU,KAClGoW,GAAaC,IAAkBjrC,EAAMU,UAAuB,MAAdm+B,QAAc,EAAAA,GAAAuK,IAAIF,KAAe,MAAArK,QAAA,EAAAA,GAAcuK,IAAIF,KAAe,OAAAjmB,EAAA,MAAAqF,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAjnB,EAA+BwI,eAAgB,KAC/Jyf,GAAcC,IAAmBnrC,EAAMU,SAAclE,EAAoB,KACzEogC,GAAkBwO,IAAuBprC,EAAMU,UAAS,OAAA0iB,EAAA,MAAAkF,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAA9mB,EAA+BlL,YAAa,CAAA,IACpGmzB,GAAiCC,IAAsCtrC,EAAMU,UAAS,OAAA6qC,EAAA,MAAAjjB,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAqB,EAA+BC,4BAA6B,CAAA,IAClJC,GAAiCC,IAAsC1rC,EAAMU,UAAS,OAAAirC,EAAA,MAAArjB,QAAA,EAAAA,GAAgB4hB,oBAAhB,EAAAyB,EAA+BC,2BAA4B,CAAA,IACjJC,GAAqBC,IAA0B9rC,EAAMU,UAAS,IAC9DkgC,GAAmBmL,IAAwB/rC,EAAMU,SAAS,CAAA,IAC1DsrC,GAAwBC,IAA6BjsC,EAAMU,UAAS,IACpEwrC,GAAqBC,IAA0BnsC,EAAMU,UAAS,IAC9D0rC,GAAoBC,IAAyBrsC,EAAMU,SAAc,CAAA,IACjE4mB,GAAqBmO,IAA0Bz1B,EAAMU,UAAc,MAAA4nB,QAAA,EAAAA,GAAgBgkB,UAAW,CAAA,IAC9FtM,GAAeU,IAAoB1gC,EAAMU,SAAc,CAAA,IACvDynC,GAA+BC,IAAoCpoC,EAAMU,SAAsC,OAC/G2nC,GAAqCC,IAA0CtoC,EAAMU,SAAsC,OAC3HugC,GAAqBC,IAA+BlhC,EAAMU,SAAS,CAAA,IACnE6rC,GAAoBC,IAAyBxsC,EAAMU,SAAgB,KACnE+rC,GAAwBC,IAA6B1sC,EAAMU,UAAS,IACpEisC,GAAkBC,IAAuB5sC,EAAMU,UAAS,GAGzDmsC,GElQM,SAAY/sC,EAAYiK,GACpC,MAAO+iC,EAAgBC,GAAqB/sC,EAAMU,SAASZ,GAYpD,OAVPE,EAAME,WAAU,KACN,MAAA8sC,EAAU5iC,YAAW,KACvB2iC,EAAkBjtC,EAAK,GACxBiK,GAEH,MAAO,KACHM,aAAa2iC,EAAO,CAAA,GAEzB,CAACltC,EAAOiK,IAEJ+iC,CACX,CFoP6BG,CAAYpsB,GAAS,KAG9C,IAAIqsB,GAA6B,KAC7BC,GAAgC,KAChCC,GAA0B,KAC1BC,GAA0B,KAC1BC,GAA6B,KACjCttC,EAAMyf,SAAS9b,IAAI2E,GAAWqX,IAC1B,GAAI3f,EAAMutC,eAAe5tB,IAAU5d,EAAW4d,EAAMlS,MAAO,CACjD,MAAA+/B,YAAEA,iBAAaC,EAAgBC,SAAAA,EAAAC,SAAUA,cAAUC,IAA4B,MAAPjuB,OAAO,EAAAA,EAAAjU,QAAS,GAE1F8hC,GAAezrC,EAAWyrC,KAAsCN,GAAAM,GAChEC,GAAkB1rC,EAAW0rC,KAA4CN,GAAAM,GACzEC,GAAY3rC,EAAW2rC,KAAgCN,GAAAM,GACvDC,GAAY5rC,EAAW4rC,KAAgCN,GAAAM,GACvDC,GAAe7rC,EAAW6rC,KAAsCN,GAAAM,EACxE,KAGE,MAAAt4B,YAAEA,eAAaG,GAAaF,+BAAAA,IAAmCvV,EAAM0V,WAA2BC,EAAAA,gBAE9FwE,cAAe0zB,IAA6Bv4B,IAAe,CAAA,GAC3DxV,MAAOguC,GAAgChnC,QAASo2B,KAAqC,OAAA6Q,EAAgC,MAAAx4B,QAAA,EAAAA,GAAA4E,oBAAe,EAAA4zB,EAAA5Q,eAAgB,GAEtJ6Q,GAA2BhuC,EAAMC,OAAO,MAExCupB,GAAqB3pB,EAAY,CAAEghB,aA8RzCxf,GAAkB,KACd,IAAKwsC,GAA0B,OAE/B,MAAMhP,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAEhD0Q,IAAAA,MAAAA,OAAAA,EAAAA,EAAcuK,IAAI/L,MAAiB,IArG3B,CAAC4Q,UAGhB,IAAA5vC,EACAk4B,EACA2X,EAKJ,GATAnE,IAAoB,GAMT1rC,EAAA6F,KAAK6S,MAAMk3B,GACtB1X,EAAkBryB,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAAsC,OAEpFwD,EAAU,OAEXk4B,GAAiBd,GAAuBc,GAEtC,MAAA4T,cACFA,EAAA1e,aACAA,EAAAif,cACAA,EAAAyD,KACAA,EAAAtD,YACAA,EAAA9iC,QACAA,EAAA6sB,OACAA,EAAAwZ,kBACAA,EAAAl2B,UACAA,EAAAszB,0BACAA,EAAAI,yBACAA,EAAAyC,0BACAA,EAAAC,oBACAA,GACAjwC,GAEEkwC,MAAEA,IAAU,MAAAxmC,OAAA,EAAAA,EAASomB,SAAU,CAAA,EAErC,IAAIqgB,GAAmC,MAAfrE,OAAe,EAAAA,EAAAroC,QACjCw/B,GACI6I,EAAcxmC,KAAK8qC,IACf,MAAM3uC,MAAEA,KAAU4uC,GAAuBD,EAElC,MAAA,IACAC,EACH5uC,MAAO8B,OAAO9B,GAAO0N,WAAW1Q,EAAsC8E,OAAO0/B,KAAa,IAGlG6I,EAAc/qC,QAAQqvC,IACZ,MAAA3uC,MAAEA,GAAU2uC,EAElB,IAAK7sC,OAAO9B,GAAOR,SAASxC,GAA8C,OAAA2xC,CAAA,IAElF,GAENxE,GAAgBuE,GAChB/D,GAAgBC,GAChBE,GAAcC,GACdC,GAAmB/iC,GACnBgjC,GAAiBnW,GACjBqW,IACkB,MAAdpM,QAAc,EAAAA,GAAAuK,IAAIF,KACZ,MAAArK,QAAA,EAAAA,GAAcuK,IAAIF,IAClB5H,GACA1/B,OAAO6pB,GAAcje,WAAW1Q,EAAsC8E,OAAO0/B,KAC7E1/B,OAAO6pB,GAAcnsB,SAASxC,GAC9B,OAAAoJ,EAAAsoC,EAAkB,SAAlB,EAAAtoC,EAAsBpG,MACtB2rB,GAEV0f,IAA8B,MAAdptC,kBAAc,EAAAA,aAAA2W,QAAQ7Z,KAAoC0zC,GAC1EnD,GAAoBlzB,GACpBozB,GAAmCE,GACnCE,GAAmCE,GACnCc,GAA0B2B,GAC1BzB,GAAoB0B,GAEfF,GACgB1N,GAAA,CACb,8BAA+B,QAGvBwN,EAAAC,EAAK5J,MAAK,EAAGv2B,WAAiBA,EAAM1O,SAASorC,KAEzDtnC,OAAOC,KAAK6qC,GAAepsC,SAC3BwnC,GAAqB4E,EAAclgC,OACnCw7B,GAAuB0E,EAAcrqC,MACrC6lC,GAAuBwE,EAAczgC,OAGzCs8B,IAAoB,EAAK,EAoBzB9yB,CAAelZ,aAAa2W,QAAQ7Z,IAA6C,KAAI,GACtF,CAACgzC,KAEJxsC,GAAkB,KACTysC,KAED5Q,IAAkCA,GAAiC,IAEvEtc,GAAWktB,IAA8B,GAC1C,CAACA,KAEJzsC,GAAkB,KACd,GAAI0nC,IAAiBe,GAAkB,OAEjC,MAAA6E,EAAyBzqC,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAA6C,MAEzG8zC,GA1SiBhxC,OAAOY,kBAC5B,MAAMogC,QAAEA,EAAS+L,cAAAA,EAAAyD,KAAeA,cAAMtD,EAAauD,kBAAAA,EAAArmC,QAAmBA,GAAYxJ,EAElF,IACIF,EACA4F,EAAO,CACP2qC,SAHyB,mBAAfvN,EAAkC8M,EAAK/uC,QAAO,EAAG4O,WAAiB,MAAAA,OAAA,EAAAA,EAAO1O,SAASorC,KAAkByD,GAG7FxqC,KAAKkrC,IACZ,MAAA7gC,MAAEA,GAAU6gC,EAElB,IAAIC,GAAc,EACdC,EAAaD,EAgBX,GAfS,MAATnQ,OAAS,EAAAA,EAAAh7B,KAAKvE,IACJ,MAAA3B,YAAEA,EAAa6Q,MAAAA,GAAUlP,EAEzB4vC,EAAW,MAAA1gC,OAAA,EAAAA,EAAO3K,KAAI,EAAG7D,WAAUmvC,KAA6C,UAAZ,MAAXA,OAAW,EAAAA,EAAAlnC,SAAqBvK,EAAkCsC,GAASA,IAE1I,OAAIwhC,KAAgB,MAAA7jC,OAAA,EAAAA,EAAa6B,SAASgmC,OAAOhE,QAIzC,MAAA7jC,OAAA,EAAAA,EAAa6B,SAAS,SAHZwvC,GAAA,EACPE,QAEH,CAIR,IAGNE,EAAiBlhC,EAAM1O,SAASorC,GAChCyE,EAAqBD,GAAkBH,EAAUjtC,OACjDstC,EAAmB,GAQhB,OANU,MAAbvE,OAAa,EAAAA,EAAA/oC,SAAQstC,EAAiBzZ,KAAK,iBAAiBzxB,KAAKC,UAAU0mC,MAC1EuD,GAAmBgB,EAAiBzZ,KAAK,qCAC1C2L,IAA+B8N,EAAAzZ,KAAK,uBAAuB2L,OAE3D6N,GAA8B5E,GAAAwE,EAAU,IAErC,CACHM,SAAUrhC,EACVshC,EAAGzuB,IAAW,GACd0uB,YAAa,EACb/Q,OAAQ2Q,EAAqBJ,EAAU,GAAK,GAC5C3vC,OAAQ8vC,EAAiB,IAAI,IAAIpP,IAAIsP,EAAiB/T,OAAOz+B,KAAqC+iC,KAAK,SAAW,GAClH6P,qBAAsB,GACtBjB,MAAO,EACPkB,KAAM,EAAA,KAUlB,GALIp6B,GAAaw2B,IACbxtC,EAAWgX,EAAUV,OACrBm3B,IAAuB,IACTztC,QAAMgwB,GAAYpqB,IAE/B5F,EAAU,OAET,MAAAqxC,QAAEA,GAAYrxC,EAEpB8X,IAAkB,GAClBE,IAAa,GAEb,MAAMs5B,WAAEA,EAAAC,UAAYA,EAAWC,kBAAAA,IAA+B,MAATH,OAAS,EAAAA,EAAAnL,MAAK,EAAG8K,cAAoBA,EAAS/vC,SAASorC,OAAmB,CAAA,EAE/H,IAAIoF,GAA8B,OAAA5pC,EAAA,MAAA6B,OAAA,EAAAA,EAAS3I,aAAT8G,EAAAA,EAAiB6pC,sBAAuBH,GAAa,EACnFI,EAA0BH,EACxBzsC,OAAO27B,YACH37B,OAAOqwB,QAAQoc,GAAmBlsC,KAAKy6B,IAC/B,IAAAt+B,EAAQs+B,EAAM,GACd9vB,EAAa,GAmBV,OAhBKA,EADE,gCAAVxO,EACQ,CACJ,CACI+D,KAAM,WACN/D,MAAO,QAIPsD,OAAOC,KAAKwsC,EAAkB/vC,IAAQ6D,KAAKC,IACxC,CACHC,KAAMD,EACN9D,MAAO8D,EACPgG,MAAOimC,EAAkB/vC,GAAO8D,IAAS,MAK9C,CAAC9D,EAAOwO,EAAK,KAG5B,GAEN+9B,GAAsB2D,GACtBjE,GAAqB4D,GACrB1D,GAA0B6D,GACtB,IAAAG,GAAiB,OAAAxzB,EAAA,OAAAzH,EAAA,MAAAsT,QAAA,EAAAA,GAAgB4hB,oBAAhBl1B,EAAAA,EAA+B2pB,cAA/BliB,EAAAA,EAAwC3a,QAAS,OAAAmb,EAAA,MAAAqL,QAAA,EAAAA,GAAgB4hB,oBAAhBjtB,EAAAA,EAA+B0hB,SAAmB,MAATA,OAAS,EAAAA,EAAA78B,QAAS68B,EAAU,GAEvI,IAAG,OAAAzhB,EAAA,MAAAnV,OAAA,EAAAA,EAAS3I,aAAT8d,EAAAA,EAAiBgzB,oBAAoBJ,EAA8B,CACtE,IAAIhB,GAAc,EACdqB,EAA0B,GAyB9B,GAvBKrB,GACe,MAAAmB,GAAAA,EAAAtsC,KAAKvE,IACX,MAAA3B,YAAEA,EAAa6Q,MAAAA,GAAUlP,EAEzB4vC,QAAW1gC,WAAO3K,KAAI,EAAG7D,WAAUmvC,MAC9B,IACAA,EACHnvC,MAA8B,UAAZ,MAAXmvC,OAAW,EAAAA,EAAAlnC,SAAqBvK,EAAkCsC,GAASA,OAItFwhC,KAAgB,MAAA7jC,OAAA,EAAAA,EAAa6B,SAASgmC,OAAOhE,QAIzC,MAAA7jC,OAAA,EAAAA,EAAa6B,SAAS,WAHZwvC,GAAA,EACOqB,EAAAnB,EAMzB,IAGJF,GAAa1E,GAAiB+F,SAC9BA,WAAoBruC,OAAQ,CAC5B,IAAIsuC,EAAiCD,EAChCxsC,KAAKvE,UACF,MAAMU,MAAEA,EAAOmL,MAAAA,EAAOlD,QAAAA,EAASo5B,SAAAA,GAAa/hC,GACtC+jC,OAAEA,EAAQC,YAAAA,EAAAE,gBAAaA,GAAoBnC,GAAY,CAAA,EAIzD,GAF8C,WAA1Bp5B,EAAQ9C,cAEX,OAErB,IAAIqJ,EAAe,GACfvG,GAA0B,SAA1BA,EAAQ9C,cACR,IAAA,IAAS2/B,EAAQ,EAAGA,E5EtOV,E4EsO0CA,IACxCt2B,EAAA,IAAIA,KAAU0hC,EAAwB,GAAGlwC,QAAY8kC,WAGjEt2B,EAAQ0hC,EAAwBlwC,GAG7B,MAAA,CACHmL,QACAk2B,SAAAA,EACA7yB,MAAO,OAAApI,EACD,MADCoI,OACD,EAAAA,EAAA3K,KAAKC,IACG,MAAAygC,EAAiBzgC,GAAwB,WAAhBw/B,KAA6B,MAAAE,OAAA,EAAAA,EAAiBhkC,SAAe,MAANsE,OAAM,EAAAA,EAAA9D,QACtFwkC,EAAiB1gC,GAAwB,WAAhBw/B,KAAqC,MAARD,OAAQ,EAAAA,EAAAoB,MAAMC,UAAoB,OAAA,OAAAt+B,EAAA,MAAAtC,OAAA,EAAAA,EAAM9D,YAAN,EAAAoG,EAAau+B,WAAWD,EAAA,KAElH,GAAC5gC,IAAQygC,IAAkBC,EAE/B,OAAO1gC,EAAK9D,KAAA,UAPb,EAAAoG,EASD9G,QAAQwE,GAAcA,IAAI,IAGvCxE,QAAQwE,GAAcA,IAC3B4oC,GAAsB4D,EAC1B,CACJ,CAEA9F,GACI,MAAA6D,OAAA,EAAAA,EAAMxqC,KAAKkrC,IACD,MAAA7gC,MAAEA,GAAU6gC,GACVe,UAAAA,IAA4B,MAATF,OAAS,EAAAA,EAAAnL,MAAK,EAAG8K,cAAoBA,IAAarhC,MAAU,CAAA,EAEhF,MAAA,IACA6gC,EAECjlC,MAAOgmC,EACX,IAEP,EA2HuBS,CAAiB1B,EAAsB,GACpE,CAAC9B,GAAkB9D,GAAee,KAGrC,MAAMwG,GACF/nC,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,2DACVkB,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAKqK,KACvBzF,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAOsW,QAAQ,KAAK5R,MAAM,WAAeI,OAK1FuiC,GACa,YAAflP,IACI94B,kBAAAA,IAAC,OAAInB,UAAU,yFACVkB,SAAC,CAAA,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAKqK,GAClBzF,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAOsW,QAAQ,KAAK5R,MAAM,WAAeI,OAG5F,KAEFwiC,IACF,OAAAC,EAAA,MAAAjQ,QAAA,EAAAA,GAAiBphC,aAAjB,EAAAqxC,EAAyBP,mBAAwD,gBAApC,OAAAQ,EAAA,MAAAlQ,QAAA,EAAAA,GAAiBphC,aAAjB,EAAAsxC,EAAyBC,UAA4B3E,GAAyBsE,GAAoC,KAE7JM,IACF,OAAAC,EAAiB,MAAArQ,QAAA,EAAAA,GAAAphC,iBAAQ8wC,mBAAwD,cAApC,OAAAY,EAAA,MAAAtQ,QAAA,EAAAA,GAAiBphC,aAAQ,EAAA0xC,EAAAH,UAA0B3E,KAExF/jC,kBAAAC,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,GAAAL,kBAAAC,KAAC,MAAA,CACGJ,MAAO,CACHC,QAAS,OACTgpC,SAAU,OACVC,WAAY,SACZ3xB,IAAK,MACLC,eAAgB,gBAChB4Z,aAAc,QAGlB5wB,SAAA,CAACC,EAAAA,kBAAAA,IAAAgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,OAC1EjX,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,YAE7EvX,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,UAGrB,CAAC,EAAG,EAAG,GAAGv1B,KAAKqK,GACZzF,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KAER1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,QAHblrB,OAOb/F,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,WAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,WAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,UAGrB,CAAC,EAAG,EAAG,GAAGv1B,KAAKqK,GACZzF,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KAER1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,QAHblrB,OAOb/F,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHmpC,SAAU,QACV/X,aAAc,YAGtBjxB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACTgpC,SAAU,OACVC,WAAY,SACZ3xB,IAAK,QAGR/W,SAAA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG3E,KAAKqK,GAC9BvE,EAAAxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,QAAYxR,UAIjG,KAEFkjC,KAEGhpC,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,EAAiB,OAAA6oC,qBAAA/xC,aAAA,EAAA+xC,EAAQC,sBAA2D,cAApC,OAAAC,EAAiB,MAAA7Q,QAAA,EAAAA,GAAAphC,iBAAQuxC,QACtEpoC,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,oCACXkB,WAAAL,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,QACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KACR1X,MAAO,CACHoxB,aAAc,YAI1B,6BACH3Z,GAAgB4V,YAAhB,CAA4BzV,MAAO,GAAIjS,KAAK,aAI/C6jC,2BACD,MAAA,CAAIlqC,UAAU,0GACXkB,iCAACiX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAI5E+xB,GAA+BhpC,EAAAA,kBAAAA,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,OAAOC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,KAAKpY,UAAU,oDAEvHoqC,KACFtpC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,0GACXkB,SAAA,CAAAC,wBAAC,MAAI,CAAAnB,UAAU,+DACXkB,SAAAmB,EAAAxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,iCAE7E,MAAI,CAAApY,UAAU,+DACXkB,SAAAmB,EAAAxB,kBAAAM,IAACgX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,YAKhFiyB,KACFvpC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,6CACVkB,SAAA,EAAA,OAAAopC,EAAA,MAAAlR,QAAA,EAAAA,GAAiBphC,aAAQ,EAAAsyC,EAAAN,sBAA2D,gBAApC,OAAAO,qBAAiBvyC,aAAjB,EAAAuyC,EAAyBhB,QAA0BW,GAAsB,KACzHC,GACAC,MAIHI,2BACD,MAAI,CAAAxqC,UAAU,yFACXkB,SAACJ,EAAAA,kBAAAA,KAAA,MAAA,CAAId,UAAU,6CACVkB,SAAA,EAAA,OAAAupC,EAAA,MAAArR,QAAA,EAAAA,GAAiBphC,aAAQ,EAAAyyC,EAAAT,sBAA2D,gBAApC,OAAAU,qBAAiB1yC,aAAjB,EAAA0yC,EAAyBnB,QAA0BW,GAAsB,KACzHC,GACAjB,GACAkB,QAKPO,GAAiB,CACnBd,SAAUhoC,mCAIT,MAAI,CAAA7B,UAAU,0CAA0CrH,IAAKiuC,GAA0BlmC,MAAOiqC,GAC1FzpC,SAAA,CACG4N,GAAAq6B,GACe,YAAflP,UAA4BgJ,aAAavoC,QACxCyG,wBAAA,MAAA,CAAInB,UAAW,IAAkB,YAAfi6B,IAA4B,MAAAgJ,QAAA,EAAAA,GAAavoC,QAAS,oCAAsC,8CACvGwG,SAACC,EAAAN,kBAAAM,IAAA,KAAA,CAAGnB,UAAU,yCACTkB,SAAA+hC,GAAY1mC,KAAKC,IACd,MAAMC,KAAEA,EAAAmK,MAAMA,EAAOP,KAAAA,EAAA7D,MAAMA,GAAUhG,EAErC,IAAIgO,EAAWy3B,KAAsBr7B,EAGjC,SAAA/F,kBAAAC,KAAC,KAAA,CACGkD,QAAUgH,GAvkBb,CAACnQ,IAC1B,MAAMP,GAAEA,EAAAmC,KAAIA,EAAM4J,KAAAA,GAASxL,EAE3BqnC,GAAqB5nC,GACrB8nC,GAAuB3lC,GACvB6lC,GAAuBj8B,GACJm8B,GAAAloC,EAAGpC,SAASkrC,4BAAiBX,GAAc,CAAA,GAAMpgC,EAAAxB,kBAAAM,IAAAypC,GAAA,CAAA,GAAiB,EAkkBrDC,CAAqB,CACjBvwC,GAAIsM,EACJnK,OACA4J,SAGRrG,UAAW,IAAGwK,EAAW,qDAAuD,IAG/EtJ,SAAA,CAAAzE,EACA0E,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,0CAA2CkB,YAAS,MAH/D0F,EAAA,QAUzBuiC,GAGHr6B,KAAkB,MAAAmrB,OAAA,EAAAA,EAAYv/B,UAAWuT,EAEjCnN,yBAAAqF,EAAAA,kBAAAA,SAAA,CAAAjF,SAAA,CAAAspC,GACArpC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oCAAqCkB,SAAyBkoC,OAC7EtoC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,uFACVkB,SAAA,EAAA,OAAA4pC,EAAA,MAAA1R,QAAA,EAAAA,GAAiBphC,aAAQ,EAAA8yC,EAAAhC,mBAAwD,cAApC,OAAAiC,qBAAiB/yC,aAAjB,EAAA+yC,EAAyBxB,UAA0B3E,GAC5FzjC,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,yEAA0EkB,cACzF,OACJJ,kBAAAA,KAAC,MAAI,CAAAd,UAAU,qCACXkB,SAAA,CAACC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oCAAqCkB,SAA8BmpC,KAEjFP,YAKblxC,EAAM4f,aAAa+pB,GAAiB,CAChCtI,aACAnrB,kBACA2K,WACAgsB,oBACAxD,qBACAE,uBACAE,uBACAK,oBACAE,gBACAzB,iBACA/J,UACAoC,qBACAoL,0BACArB,cACAnK,mBACAe,iBACAyJ,eACAE,gBACAtO,oBACAyO,mCACAI,mCACA1jB,QACA9lB,SACAwT,eACAy3B,yBACAC,4BACAC,sBACAC,sBACAC,yBACAjY,mBACAza,qBACAC,wBACAya,uBACAmB,0BACAG,oBACAE,oBACAG,uBACA5gB,gBACAuK,cACA4vB,4BACAF,qCACAM,0BACAM,uBACAO,iCACAH,uBACAC,gCACAC,iCACAxD,4BACAzvC,KAAM8W,EACN8rB,YACA+K,uBACAC,0BACAC,sBACAgG,oBAhZatyC,IACzB,MAAM++B,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAE9CkkB,EAAAC,IAAIjV,GAAcv9B,GAE/B8gB,GAAW9gB,GAEXyC,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,YAAY5T,EAAanhB,aAAY,EA0YjF4J,uBACAuX,gBACAqC,0BACAD,uBACAjB,iBACAU,oBACAgS,oBAAqBlpB,GACrB2e,iCACAC,oCACAC,uCACAC,0CACAiE,sBACAE,0BACAE,wBAGZ,EAIF9C,GAAiBn+B,kEACb,MAAA21B,WACFA,EAAAxgB,QACAA,EAAAwoB,kBACAA,EAAAS,iBACAA,EAAAE,aACAA,EAAAzB,cACAA,EAAA/J,OACAA,EAAAoC,kBACAA,EAAAoL,uBACAA,EAAArB,WACAA,EAAAnK,gBACAA,EAAAe,cACAA,EAAAyJ,YACAA,GAAAE,aACAA,GAAAtO,iBACAA,GAAAyO,gCACAA,GAAAI,gCACAA,GAAA1jB,MACAA,GAAA9lB,OACAA,GAAAwT,YACAA,GAAAy3B,sBACAA,GAAAsD,yBACAA,GAAAF,kCACAA,GAAAM,uBACAA,GAAAM,oBACAA,GAAAO,8BACAA,GAAAH,oBACAA,GAAAC,6BACAA,GAAAC,8BACAA,GAAAnc,iBACAA,GAAAza,mBACAA,GAAAC,sBACAA,GAAAya,qBACAA,GAAA0Y,yBACAA,GACAzvC,KAAM8W,GAAA8rB,SACNA,GAAA+K,oBACAA,GAAAC,uBACAA,GAAAC,mBACAA,GAAAgG,oBACAA,GAAA9qB,oBACAA,GAAAuX,aACAA,GAAAqC,uBACAA,GAAAD,oBACAA,GAAAjB,cACAA,GAAAU,iBACAA,GAAAgS,oBACAA,GAAAvK,8BACAA,GAAAC,iCACAA,GAAAC,oCACAA,GAAAC,uCACAA,GAAApyB,eACAA,GAAAq2B,mBACAA,GAAAE,uBACAA,GAAAE,iBACAA,IACAjhC,GAAS,CAAA,EAEPw9B,IAAc,MAAAnhB,QAAA,EAAAA,GAAOohB,QAASphB,GAAMohB,OAASxsC,EAC7Cg2C,IAAY,MAAA5qB,QAAA,EAAAA,GAAO0nB,MAAO1nB,GAAM0nB,KAAO9yC,EACvCi2C,IAAa,MAAA7qB,QAAA,EAAAA,GAAOwmB,OAAQxmB,GAAMwmB,MAAQ5xC,GAE1C2kC,aAAEA,GAAAuR,eAAcA,IAAmB5wC,IAAU,CAAA,EAE7C6wC,GAAa,CAAC,YAAa,mBAAmBxzC,SAAS,OAAA4G,EAAA,MAAAs6B,OAAA,EAAAA,EAAiBrS,aAAjB,EAAAjoB,EAAyB6sC,kBAE/EC,GAAkBC,IAAuBjzC,EAAMU,UAAU2U,KACzDe,GAAWC,IAAgBrW,EAAMU,UAAU2U,KAC3CwW,GAAeC,IAAoB9rB,EAAMU,SAAiBsqC,IAAe,KACzEkI,GAAgBC,IAAqBnzC,EAAMU,SAAS4kC,QAAqB,MAAdzG,QAAc,EAAAA,GAAAuK,IAAIwJ,MAAe1H,IAAgB1uC,EAAoB,MAChImrC,GAAoByL,IAAyBpzC,EAAMU,gBACtD6nC,WAAezmC,QACTymC,EACK5kC,KAAI,CAAC+H,EAAYsC,KACd,MAAMlO,MAAEA,EAAOqhC,SAAAA,GAAaz1B,GACtB2nC,SAAEA,GAAalS,GAAY,GAEjC,OAAOkS,EAAW,KAAO,GAAGvzC,KAASkO,GAAK,IAE7C5O,QAAQwE,GAASA,IACtB,KAEH69B,GAAsBC,IAA2B1hC,EAAMU,UAAS,IAChEy8B,GAAcmW,IAAmBtzC,EAAMU,UAAgB,OAAAuc,EAAA,OAAAR,EAAA,OAAAzH,EAAA,MAAAK,QAAA,EAAAA,GAAWV,aAAX,EAAAK,EAAmB06B,cAAU,EAAAjzB,EAAA,SAAI,EAAAQ,EAAAs2B,OAAQ,KAChGC,GAAwBC,IAA6BzzC,EAAMU,SAA0B,IACrFmM,GAAa6mC,IAAkB1zC,EAAMU,SAAS4kC,OAAqB,MAAdzG,QAAc,EAAAA,GAAAuK,IAAIuJ,OAAgBG,GAAaxN,aAAOzG,aAAcuK,IAAIuJ,KAAc,IAC3I7lC,GAAW6mC,IAAgB3zC,EAAMU,SAAS,IAC1CkzC,GAAmBC,IAAwB7zC,EAAMU,UAAS,OAAAuiB,EAAA,OAAAD,EAAA,OAAA9F,EAAA,MAAA7H,QAAA,EAAAA,GAAWV,aAAX,EAAAuI,EAAmBwyB,cAAnB,EAAA1sB,EAA6B,SAA7B,EAAAC,EAAiC2sB,YAAa,IACxG/O,GAAwBC,IAA6B9gC,EAAMU,SAAmB,KAC9EqgC,GAAyBC,IAA8BhhC,EAAMU,SAAmB,KAChFozC,GAA6BC,IAAkC/zC,EAAMU,UAAS,IAC9E+/B,GAAyBuT,IAA8Bh0C,EAAMU,SAAc,CAAA,IAC3EuzC,GAAyBC,IAA8Bl0C,EAAMU,UAAS,IACtEyzC,GAAwBC,IAA6Bp0C,EAAMU,UAAS,IAGvEirB,QAASC,GACTjX,OAAQ0/B,GACRvzB,wBAAyBwzB,GACzB/F,MAAOgG,GACPC,YAAaC,GACbr1C,OAAQs1C,GACRC,aAAcC,GACdC,gBAAiBC,GACjBC,kBAAmBC,IACnBpY,IAAoB,CAAA,GAEhBkB,UAAWmX,GAAwBC,QAASC,IAAyB9J,IAAmC,IACxGvN,UAAWsX,GAAoCF,QAASG,IAAqC5J,IAAmC,IAClIpJ,iBAAEA,GAAkBiT,eAAAA,GAAAC,wBAAgBA,KAA4B,MAAAjuB,QAAA,EAAAA,GAAqBpP,YAAa,GAElGs9B,GAAwBzoC,UACpB,MAAA0oC,IAEGvtC,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAyE,EAAY,IAAEsnC,IAAmB,SAAU,KAC3C,MAAAxzB,OAAA,EAAAA,EAAS/e,QACJoG,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,SACMJ,kBAAAA,KAAC,OAAK,CAAAd,UAAU,0DAA0DkB,SAAA,CAAA,IAAEuY,EAAQ,UAE5F,QAIR,IAAA60B,EAAiBV,GAA0C,mBAAf3T,IAA6C,MAATxgB,OAAS,EAAAA,EAAA/e,QAA4B,UAAnB,kBAClG6zC,EAA4BX,IAA8BU,EAQ9D,OANIC,IACAD,EAAiBA,EAAeloC,WAAW1Q,EAAqCiQ,GAE7D,mBAAfs0B,IAAiCqU,EAAiBA,EAAeloC,WAAW1Q,EAAwC+1C,IAAkB,cAIzIppC,EAAAxB,kBAAAM,IAAA,MAAA,CAAInB,UAAU,kDACVkB,oCAAiBlJ,iBAAQgyC,qBACrB3nC,EAAAxB,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,kDAAmDkB,SAAAqtC,EAA4BD,EAAiBD,IAChH,MACR,GAIDG,GAAaC,IAAkB71C,EAAMU,SAA0B2U,GAAYmgC,GAAqB5B,IAAqB,MAEtHpqB,GAAqB3pB,EAAY,CAAEqzC,kBAAgBrnB,iBAAemU,iBAAeqJ,uBAE/Ez7B,MAAOkoC,GAAoB/1B,UAAWg2B,GAAwB91B,YAAa+1B,GAA0B71B,eAAgB81B,KAAgC,OAAA7yB,EAAA,MAAAod,OAAA,EAAAA,EAAiBphC,aAAjB,EAAAgkB,EAAyB1K,QAAS,CAAA,GAE3L9K,MAAO60B,GACP1iB,UAAW2iB,GACXziB,YAAa0iB,GACbxiB,eAAgByiB,KAChB,OAAA2I,EAAA,MAAA/K,OAAA,EAAAA,EAAiBphC,aAAjB,EAAAmsC,EAAyBv3B,SAAU,IAEnCsN,WAAY40B,GACZ10B,aAAc20B,GACdz0B,cAAe00B,GACfx0B,YAAay0B,GACbv0B,eAAgBw0B,GAChBt0B,aAAcu0B,GACdr0B,cAAes0B,GACfp0B,iBAAkBq0B,GAClB12B,UAAW22B,GACXz2B,YAAa02B,GACbx2B,eAAgBy2B,KAChB,OAAAjL,EAAA,MAAAnL,OAAA,EAAAA,EAAiBphC,aAAjB,EAAAusC,EAAyB7Y,SAAU,GAEjC+jB,GAAqB,IACnBf,IAAsB,CAAEloC,MAAOkoC,OAC/BC,IAA0B,CAAEv1B,SAAUu1B,OACtCC,IAA4B,CAAEv1B,WAAYu1B,OAC1CC,IAA+B,CAAEv1B,cAAeu1B,KAGlDjT,GAAsB,IACpBP,IAAuB,CAAE70B,MAAO60B,OAChCC,IAA2B,CAAEliB,SAAUkiB,OACvCC,IAA6B,CAAEliB,WAAYkiB,OAC3CC,IAAgC,CAAEliB,cAAekiB,KAiBnDgG,KAAoB97B,KAAcD,KAAgBonC,KAAkCnnC,IAAaD,GAEjG80B,GAA2BsE,UAC7B,MAAMpH,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QACrD2Q,EAAqB17B,OAAO27B,YAAYF,GAE9C,IAAIiY,EAA8B,CAAA,EAClC,IAAA,MAAW9X,KAAmBF,EAAoB,EACP,MAARN,OAAQ,EAAAA,EAAA18B,UAAW08B,EAAOl/B,SAAS0/B,KAEb8X,EAAA9X,GAAmBF,EAAmBE,GAC/F,CAGA,IAAA,MAAW+X,KAAyB9Q,GAC5B,OAAA//B,EAAA+/B,EAAmB8Q,WAAnB7wC,EAA2CpE,UAA+Bg1C,EAAAC,GAAyB9Q,EAAmB8Q,IAGxH,MAAAC,EAAiB,IAAIx5B,gBAAgB,IACpCs5B,IAEJp5B,WAEHnb,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,kBAAWuE,WAAgBl1C,QAAS,IAAIk1C,IAAmB,KAAI,EAyBrHtP,GAA4BhmC,IAC9B,IAAIu1C,EAAiCtP,GACjC,GAAAsP,EAAwB33C,SAASoC,GAAK,CAChC,MAAAw1C,EAAYD,EAAwBhQ,QAAQvlC,GAC9Cw1C,GAAY,GAA4BD,EAAAE,OAAOD,EAAW,EAAC,MAE/DD,EAAwBthB,KAAKj0B,GAGjC0xC,GAAsB6D,GACtB7sC,YAAW,KACP,MAAA82B,IAAAA,IAA0BkF,IACL,IACVA,EACH1kC,CAACA,GAAK,QAGH,GAEZ,IAAG,EAGJ01C,GAAoB,KACtB,MAAA1W,IAAAA,GAAmB,CAAE,GACrBgB,IAAyBD,IACzBE,GAAwB,CAAE,GAC1Bb,GAA0B,IAC1BE,GAA2B,GAAE,EAG3BL,GAAqB,EAAG+F,WAAU5mC,QAAOynC,SAAQ,YAC/C/I,IAAAA,EAAc,CAAC1+B,GACfw/B,EAAU,CAAC,iBAAkB,yBAAyBhgC,SAASonC,GAC/D2Q,EAAiB3Z,GAAyBp+B,SAASonC,GAEnD1G,KACIuH,EACA/I,EAAS,CAAC1+B,IAEN,OAAAoG,EAAA85B,GAAc0G,SAAdxgC,EAAAA,EAAyB5G,SAASQ,KAClC0+B,EAASwB,GAAc0G,GAAUtnC,QAAQg/B,GAAeA,IAAUt+B,IAG9Du3C,IAAyB7Y,EAAAA,EAAOp/B,QAAQg/B,IAAgBA,EAAMqG,WAAW3kC,OAEzEw/B,GACKU,GAAc0G,GAAW1G,GAAc0G,KAAc5mC,GACtD0+B,EAAS,GAEQ,mBAAbkI,EACA5F,GAA0B,IACN,0BAAb4F,GACP1F,GAA2B,KAGtBsW,EAAAx3C,GAGJw3C,EAAAtX,GAAc0G,GAAY,IAAI1G,GAAc0G,GAAW5mC,GAAS,CAACA,IAM1F,IAAImmC,EAAqB,IAClBjG,GAEC0G,CAACA,GAAWlI,GAIhB0H,EAA8BD,EAG9B7iC,OAAOstB,OAAOwV,EAA6B,iCAAqE,MAAAA,UAAAA,EAAA,gCAEpHvE,GAAwBuE,GAEL,MAAAxF,IAAAA,GAAAuF,GACnBvE,IAAyBD,GAAoB,EA6B3C8V,GAAqB55C,MAAO+N,YAC9B,IAAK29B,EAAmB,OAExB,MAAQyJ,WAAAA,GAAa,EAAO0E,cAAAA,GAAgB,GAAU9rC,EAEtD,GAAI8rC,EAAe,CACf9D,GAAe,GACfJ,GAAgB,IAEhB,MAAMzU,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAE3D0Q,EAAayT,IAAIK,GAAW/wC,OAAO,IACnCi9B,EAAayT,IAAIM,GAAYhxC,OAAOsxC,KAEpC3wC,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,YAAY5T,EAAanhB,aACrF,CAII,IAAArf,EAFSgY,KAAAmhC,IAAwB1E,GAGrC,IAAI1zC,EAAcm/B,GAAkB,CAChCC,SACAC,wBAAyBuB,GACzB1+B,SAAWm9B,IACY,MAAAiC,IAAAA,GAAAjC,GAEfA,EAAwB,mBAA6CqC,GAAArC,EAAwB,mBAC7FA,EAAwB,0BAAqDuC,GAAAvC,EAAwB,yBAAwB,EAErIX,UAAWmX,GACXlX,oBAAqBqX,GACrB1W,WAAY,EAAa,MAAZiM,OAAY,EAAAA,EAAA7oC,QAAS,iBAAiBoC,KAAKC,UAAUwmC,KAAgB,KAAMrJ,GAAe,uBAAuBA,MAAkB,QAGhJmW,EAAO9K,GAAmB,CAAC,oBAAsB,GACjD9gB,IAAe4rB,EAAK9hB,KAAK9J,IAE7B,IAAI5nB,EAAO,CACPqrC,EAAGzuB,EACH42B,OACAhI,KAAM+H,EAAgB,EAAI3qC,GAC1B0iC,YAAa2D,GACb1U,SACAp/B,UAGAiW,IAAay+B,IACF9+B,EAAA,OAAAA,EAAA,OAAA9O,EAAW,MAAXmP,QAAW,EAAAA,GAAAV,eAAXzO,EAAmBwpC,gBAAnB16B,EAA6B,GACxC++B,IAA+B,IACjB11C,QAAM8vB,GAAOkb,EAAmBplC,GA3EvB,CAACyH,IAC5B,MAAQonC,WAAAA,GAAa,EAAOn+B,OAAAA,EAAA+iC,SAAQA,GAAahsC,EAEjD,IAAKiJ,EAAQ,OAEb,MAAM4+B,KAAEA,EAAMoE,iBAAAA,EAAA/H,UAAkBA,EAAWgI,WAAAA,EAAA/H,kBAAYA,GAAsBl7B,EAEzE+iC,UAAY72B,WAAS/e,SACPwsB,GAAA,CACVzN,UACA0N,YAAaqhB,GAAa,IAIlCv5B,IAAa,GACb48B,IAAoB,GACpBiB,IAA2B,GACF,MAAA/H,IAAAA,IAAA,GACzBmH,IAAuB,MAANC,OAAM,EAAAA,EAAAzxC,QAAe+1C,IAAoB,MAAA1a,QAAA,EAAAA,GAAcr7B,SAAUgxC,EAAa,IAAI+E,KAActE,GAAQA,EAAzF,IAChCE,GAA0BkE,GAAoB,GAC9ChE,GAAaiE,GACb/D,GAAqBjE,GAAa,GACnBiG,GAAAL,GAAqB5F,IACpCoE,GAA2BnE,EAAiB,EAsDrBiI,CAAA,CACnBnjC,OAAQtW,KACLqN,GACN,EA4BL1L,EAAME,WAAU,KACZ,IAAI63C,EAAmBt9B,QAAQi4B,IAAuBA,GAAoB7xB,UAAYA,GAClF22B,EAAgB/8B,QACf+O,YAAkBA,aAAe0pB,kBAAmBA,WAAkB1pB,aAAeqC,iBAAkBA,KAAgC,MAAfrC,QAAe,EAAAA,GAAAwW,iBAAkBA,KACtJ+X,GAGR,GAAIA,EAAkB,CACZ,MAAAlS,EAAkBz7B,YAAW,KACZmtC,GAAA,CACfC,eAAe,EACfE,UAAU,GACb,GACF,KACI,MAAA,IAAMrtC,aAAaw7B,EAAe,CAEtB0R,GAAA,CACfC,iBAER,GACD,CAAC3rB,GAAeqnB,GAAgBzR,GAAsB5gB,EAASygB,KAElEthC,EAAME,WAAU,KACZ,IAAIs3C,EAAgB/8B,QAAQ+O,KAAiB,MAAAA,QAAA,EAAAA,GAAe6f,qBAAsBA,IAE9E6C,IAAuBsL,IACJD,GAAA,CACfC,eAAe1E,IAAqB0E,EACpC1E,eAER,GACD,CAAC5G,GAAqB7C,IAEzB,IAAI2O,GAA2B,GAC/B50C,OAAOqwB,QAAQuM,IAAer8B,KAAKy6B,YAC/B,IAAW,MAAPA,OAAO,EAAAA,EAAAt8B,SAAUs8B,EAAM,GAAGt8B,OAAQ,CAC9B,IAAAm2C,EAAU7Z,EAAM,GAGhB,GAFqB,CAAC,+BAA+B9+B,SAAS24C,GAE1C,OAExB,IAAI3Y,EAAU,CAAC,iBAAkB,yBAAyBhgC,SAAS24C,GAC/DC,QAA2B3P,WAAenpC,QAAO,EAAGU,iBAAiBA,WAAOR,SAAS24C,KACrFE,GAAgC,MAArBD,OAAqB,EAAAA,EAAAp2C,QAASo2C,EAAoB,GAAGjtC,MAAQgtC,EAuBrE,OApBH3+B,MAAMumB,QAAQzB,EAAM,MAAO,OAAAl4B,EAAAk4B,EAAM,SAANl4B,EAAAA,EAAUpE,QAAS,EACxCw9B,EACI0Y,GAAkBriB,KAAK,CACnB1qB,MAAOktC,EACPt0C,KAAMo0C,EACNn4C,MAAOs+B,EAAM,KAEjB,OAAAppB,EAAAopB,EAAM,SAANppB,EAAAA,EAAUrR,KAAKC,IACXo0C,GAAkBriB,KAAK,CACnB1qB,MAAOktC,EACPt0C,KAAMo0C,EACNn4C,MAAO8D,GACV,IAETo0C,GAAkBriB,KAAK,CACnB1qB,MAAOktC,EACPt0C,KAAMo0C,EACNn4C,MAAOs+B,EAAM,GAAG,IAIlC,KAGJ,MAAMga,GAAqB,EAAGntC,QAAOpH,OAAM/D,QAAOkO,sBAC9C,IAAIqqC,EAAYv4C,EACZw/B,EAAU,CAAC,iBAAkB,yBAAyBhgC,SAASuE,GAC/Ds0C,EAAWltC,EACXqtC,EAAmB,CAAA,SACnB/L,aAAoBzqC,SACDyqC,GAAA5oC,KAAK40C,IACpB,MAAQttC,MAAOutC,EAAAlqC,MAAwBA,EAAO6yB,SAAUsX,GAA8BF,GAElF,MAAAjqC,OAAA,EAAAA,EAAOhP,SAASQ,MACLq4C,EAAAK,EACGF,EAAAG,EAClB,IAIK,OAAAvyC,EAAA,MAAAoyC,OAAA,EAAAA,EAAAjV,gBAAAn9B,EAAevC,KAAKohC,IACzBnjC,OAAOy2C,GAAW5T,WAAWM,KAAesT,EAAYz2C,OAAOy2C,GAAWvzC,QAAQigC,EAAc,IAAE,IAGjFsT,EAArB/Y,QAAqBx/B,WAAO6/B,KAAK,OACpB,OAAA3qB,EAAApT,OAAOy2C,SAAPrjC,EAAAA,EAAmBxH,WAAW4nC,GAAoC,OAEnFiD,EAAY,OAAA57B,EAAA7a,OAAOy2C,SAAP57B,EAAAA,EAAmBjP,WAAW,IAAK,KAE/C,IAAI00B,EAAe,CAAA,EACfwW,EAAqB,GACrBC,EAAiB,GASrB,GARa,4BAAT90C,IACUq+B,EAAAf,GAASiB,mBAAqB,GACxCuW,EAAiBlN,GAAgC3N,WAExC,4BAATj6B,IACUq+B,EAAAf,GAASgB,oBAAsB,GACzCwW,EAAiBtN,GAAgCvN,WAEjD,CAAC,0BAA2B,2BAA2Bx+B,SAASuE,IAAS80C,EAAgB,CACnF,MAAAC,EAAgB94C,EAAMd,MAAM25C,GAClC,IAAIE,EAAmB,GACvB,IAAA,MAAWC,KAAgBF,EACvBC,EAAiBljB,KAAKuM,EAAQ4W,EAAaC,SAAWD,GAE7CJ,EAAAG,EAAiBlZ,KAAK,MACvC,CAGKz3B,OAAAA,EAAAA,kBAAAA,KAAA,MAAA,CAAgBd,UAAU,4DAA4DU,MAAOk7B,GAC1F16B,SAAA,GAACJ,kBAAAA,KAAA,OAAA,CAAKd,UAAU,8DACXkB,SAAA,CAAA6vC,EAAS,KAAGO,GAAcL,OAE/BpwC,kBAAAM,IAAC,OAAA,CACGnB,UAAU,+DACVgE,QAAS,IACLu1B,GAAmB,CACf+F,SAAU7iC,EACV/D,UAIRwI,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,kBAlBfwE,EAsBV,EAIFk1B,GAAiB,EACnB9jC,SACAgiC,kCAUA,MAAMthC,MAAEA,EAAAiI,QAAOA,EAASk7B,YAAAA,GAAgB7jC,EAExC,IAAIkP,EAC0B,SAA1BvG,EAAQ9C,cFj6CmB,GACnC+zC,aACA55C,SACAgtC,qBACAtO,YACAC,sBACAF,sBACAqX,UACA+D,oBACAzY,kBACAC,sCAEM,MAAAyY,eAAEA,GAAmB95C,EAErBi/B,EAAe2a,IAAex7C,EAAkCC,YAChE07C,EAAc9a,EAAe4a,EAAoB/D,EAEvD,IAAIkE,EAA+Bxb,GAA2B,CAC1DC,sBACAC,YACAC,wBAGAsb,EAA0B,GAC9B,IAAA,IAASzU,EAAQ,EAAGA,E1EgDc,E0EhDkBA,IAAS,CACzD,IAAIpG,EAAS4N,EAAmB,GAAG4M,QAAiBpU,KAGpD,GAD+B,OAAA1+B,EAAiB,MAAAs6B,OAAA,EAAAA,EAAAphC,aAAQ,EAAA8G,EAAA69B,qBAC1B,CACtB,IAAAuV,GAA2C,MAA1B7Y,OAA0B,EAAAA,EAAA,GAAGuY,QAAiBpU,OAAY,GAC/EpG,EAASp7B,OAAOC,KAAKi2C,GAAgB31C,KAAKC,IAC/B,CACHC,KAAMD,EACN9D,MAAO8D,EACPgG,MAAO0vC,EAAe11C,IAAS,KAG3C,CAGA,IAAK46B,GAAWA,IAAWp7B,OAAOC,KAAKm7B,GAAQ18B,OAAS,SAExD,IAAIy3C,EAASF,EAEb,IAAA,IAASjb,KAASI,EAAQ,CACtB,MAAMgb,EAAQpb,EAAMv6B,KAAK7E,MAAMq/B,EAAeN,EAAsBD,GAC9D2b,EAA4BL,EAA6BJ,GAAY,MAAMpU,KAC3E8U,EAA6BR,IAA6C,MAA3BO,OAA2B,EAAAA,EAAA33C,UAAW23C,EAA0Bn6C,SAAS8+B,EAAMt+B,OAC9H65C,EAAW,MAAAR,OAAA,EAAAA,EAAa5U,MAAMqV,UAA6B,OAAA,OAAA1zC,EAAAk4B,EAAMt+B,YAAN,EAAAoG,EAAau+B,WAAWmV,EAAA,IAGzF,IAAIF,IAA8BC,EAAlC,CAEA,GAAI/U,EAAQ,EAAG,CACF2U,EAAAF,EAET,IAAA,IAAS3gB,EAAI,EAAGA,EAAI8gB,EAAM13C,OAAS,EAAG42B,IAAK,CACvC,IAAImhB,EAAqB,MAARN,OAAQ,EAAAA,EAAArC,WAAW73C,GAAWA,EAAEwE,KAAKk1C,OAAO9zC,gBAAkBu0C,EAAM9gB,GAAGqgB,OAAO9zC,gBAEtFs0C,EAAA,OAAAvkC,EAAA,MAAAukC,OAAA,EAAAA,EAASM,SAAa,EAAA7kC,EAAA1M,QACnC,CAEA,MAAAixC,GAAAA,EAAQ5jB,KAAK,IACNyI,EACHv6B,KAAM21C,EAAMA,EAAM13C,OAAS,GAAGi3C,OAC9BnU,QACAt8B,SAAU,IAElB,CAEc,IAAVs8B,IACA,MAAA2U,GAAAA,EAAQ5jB,KAAK,IACNyI,EACHv6B,KAAM21C,EAAMA,EAAM13C,OAAS,GAAGi3C,OAC9BnU,MAAO,EACPt8B,SAAU,KAxB0B,CA0BhD,CACJ,CAEO,OAAA+wC,CAAA,EEk1COS,CAAwB,CACpBd,WAAYl5C,EACZV,SACAgtC,sBACAtO,UAAWmX,GACXlX,oBAAqBqX,GACrBvX,oBAAqBmC,GACrBkV,QAASC,GACT8D,kBAAmB5D,GACnB7U,kBACAC,6BAEJ2L,GAAmBtsC,GAEzBgoC,EAAWrtB,QAAkC,WAA1B1S,EAAQ9C,cAA6BqJ,QAAQA,WAAOxM,QACvE,GAA0B,WAA1BiG,EAAQ9C,cAA4B,CACpC,IAAI80C,GAAoB,MAAAnZ,OAAA,EAAAA,EAAoB9gC,KAAUsD,OAAOC,KAAKu9B,EAAkB9gC,IAAQgC,OAAS8+B,EAAkB9gC,GAAS,CAAA,EAE5HsnC,EAAiC,GACvB,mBAAVtnC,EAC0BsnC,EAAAvG,GACT,0BAAV/gC,IACmBsnC,EAAArG,IAG1B,IAAAsG,GAA4C,MAA1BD,OAA0B,EAAAA,EAAA,MAAyB,MAAnB2S,OAAmB,EAAAA,EAAApuC,KACrE27B,GAA4C,MAA1BF,OAA0B,EAAAA,EAAA,MAAyB,MAAnB2S,OAAmB,EAAAA,EAAAnuC,KAEzEk8B,KAAYT,IAAoBC,EACpC,CAEI,IAAAS,EAAmB,CAAC,kDA8CxB,MAN8B,WAA1BhgC,EAAQ9C,gBAAqC,MAAPqJ,OAAO,EAAAA,EAAAxM,SAAQimC,EAAiBpS,KAAK,4DACjD,SAA1B5tB,EAAQ9C,eAA0B8iC,EAAiBpS,KAAK,kDACpB,cAApC,OAAAzvB,QAAAs6B,WAAiBphC,aAAjB,EAAA8G,EAAyByqC,SAAmD,WAA1BpI,WAAezmC,UAAc,MAAAimC,GAAAA,EAAkBpS,KAAK,4DAInG,CAAEmS,WAAUC,mBAAkBC,kBA5CVt8B,IACvB,MAAM81B,UAAEA,EAAY,IAAO91B,GAAS,CAAA,EAGhC,SAAAzD,kBAAAM,IAACg4B,GAAA,CACGnhC,OAAQ,IACDA,EACHkP,SAEJ4H,kBACAsqB,kBACAlZ,uBACA6Z,YACAV,2BACAT,iBACAU,oBACAC,sBACAC,oBACAC,0BACAC,6BACAC,2BACAC,8BACAC,uBACAC,0BACAE,wBACAC,aACAC,gBACAC,gBACAC,YACA5E,oBACA6E,wBACAC,2BACAC,2BACAC,yBAA0BpY,IAAA,EAWkBif,cAFtCF,IAA+B,MAAfA,OAAe,EAAAA,EAAAzmC,QAAS,IAAMmhC,EAEI,EAGlE+W,GAAyBv/B,SAAQ,MAAAu9B,QAAA,EAAAA,GAAmBl2C,UAAU,OAAAisC,EAAA,MAAAvN,OAAA,EAAAA,EAAiBphC,aAAQ,EAAA2uC,EAAAkM,uBACzF/xC,EAAAD,kBAAAC,KAAC,MAAI,CAAAd,UAAU,4CACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,yDACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,SAAO,CAAAnB,UAAU,iEAAkEkB,SAAAosC,IAAmB,mCACtG,OAAK,CAAAttC,UAAU,+DAA+DgE,QAASgsC,GACnF9uC,aAAyB,yCAGjC,OAAIlB,UAAU,iEACVkB,YAAkB3E,KAAI,CAACu2C,EAAuBlsC,KAC3C,MAAM/C,MAAEA,EAAApH,KAAOA,EAAM/D,MAAAA,GAAUo6C,EAE/B,OAAO9B,GAAmB,CACtBntC,QACApH,OACA/D,QACAkO,SACH,SAIb,KAEEmsC,GAA2B,EAAGvS,sBACjB,MAAfW,OAAe,EAAAA,EAAA5kC,KAAI,CAACvE,EAAa6jC,IAC7B16B,EAAAN,kBAAAM,IAACi/B,GAAA,CACGpoC,SACA8jC,kBACAD,cACAwE,iBAAkBoP,GAClBnP,4BACAC,sBACAC,mBACAvG,aACAC,oBAIN8Y,GAA6B,EAAGlS,gBACnB,MAAfK,OAAe,EAAAA,EAAA5kC,KAAI,CAACvE,EAAa6jC,IAC7B16B,EAAAN,kBAAAM,IAAC0/B,GAAA,CACG7oC,SACA8jC,kBACAD,cACAiF,aACAC,iCACAC,oCACAC,uCACAC,0CACAC,gBACAlH,aACAC,oBAIN+Y,GAAsBvH,GACxBvqC,EAAAN,kBAAAM,IAACmgC,GAAA,CACGh7B,SAAUumC,GACV7oC,QA9Se,KACnBsoC,GAAe7mC,GAAc,GAC7BqnC,IAA2B,GACF,MAAA/H,IAAAA,IAAA,EAAA,EA4SrBrkC,MAAO,IACCmsC,IAA2B,CAC3Bhf,OAAQ,SAGhBjwB,KAAMivC,GAA0BqB,IAAkB,aAAejT,IAAoB,YACrFsG,iBAA+D,qBAA7C,OAAA8H,EAAA,MAAAjQ,OAAA,EAAAA,EAAiBrS,aAAjB,EAAAsiB,EAAyBsC,iBAC3ClmC,eACAC,aACAC,YAAa6mC,GACb3mC,SAAU6nC,GACVlM,uBAGJrgC,EAAAA,kBAAAA,IAACqE,GAAW,CAAAC,eAA0BC,aAAsBC,YAAa6mC,GAAmB5mC,SAAWyiC,GAhVlF,CAACA,IACtB,MAAM5Q,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAE3D0Q,EAAayT,IAAIK,GAAW/wC,OAAO6tC,IACnC5Q,EAAayT,IAAIM,GAAYhxC,OAAOsxC,KAEpCQ,GAAejE,GACU,MAAAtD,IAAAA,IAAA,GAEzB/hC,YAAW,KACSpI,EAAA,CACZE,QAAS8rC,GAAyB7tC,QAClCgC,aAAc,IACjB,GACF,KAEHI,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,YAAY5T,EAAanhB,aAAY,EAgU2B48B,CAAiB7K,GAAOxiC,SAAU6nC,KAGxJyF,GAAiC,EAAGrS,yBACtChiC,OAAA,OAAAA,QAAAs6B,WAAiBphC,aAAjB,EAAA8G,EAAyBgqC,oBAAoB,MAAA3H,OAAA,EAAAA,EAAezmC,QAEnDyG,EAAAN,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA4N,KAAmBb,GAChBm7B,GAEA/mC,EAAAxB,kBAAAM,IAAAgF,EAAAtF,kBAAAsF,SAAA,CACKjF,SAAoBwhC,IAACz0B,GAClB9M,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,0DAA2DkB,SAAAkoC,KAE1E/mC,EAAAxB,kBAAAC,KAAC,MAAI,CAAAd,UAAU,0DACXkB,SAAA,yBAAC,OAAIlB,UAAU,4GACVkB,YAA2B,CAAE4/B,iBAGjCztB,SAA2B,MAAnBu9B,QAAmB,EAAAA,GAAAl2C,UAAU,OAAAkT,EAAA,MAAAwrB,OAAA,EAAAA,EAAiBphC,aAAjB4V,EAAAA,EAAyBilC,yBAC3D/xC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,kDACXkB,SAAA,GAAAL,kBAAAM,IAAC,MAAA,CACGnB,UAAU,oIACVgE,QAASgsC,GACZ9uC,SAAA,cAGA0vC,GAAkBr0C,KAAI,CAACu2C,EAAuBlsC,KAC3C,MAAM/C,MAAEA,EAAApH,KAAOA,EAAM/D,MAAAA,GAAUo6C,EAE/B,OAAO9B,GAAmB,CACtBntC,QACApH,OACA/D,QACAkO,SACH,OAGT,YAMxB,IAAA,EAEFwsC,KACFvyC,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACLuE,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,mBAAaglC,aAAkCh2B,UAAW,qBAC1Dxe,MAAO+gB,EACP7T,SAAU,EAAGlN,WAAuC,MAAtBsyC,QAAsB,EAAAA,GAAAtyC,GACpDoS,aAAc,IAA4B,MAAtBkgC,QAAsB,EAAAA,GAAA,IAC1ChrC,UAAU,kDACV6K,gBAAc,IAIhBwoC,GAAuB,WACjB,OAAA,OAAAv0C,EAAA,MAAAs6B,OAAA,EAAAA,EAAiBphC,aAAjB,EAAA8G,EAAyBw0C,eAC7B,IAAK,SAEG,SAAAzyC,kBAAAC,KAAC,MAAI,CAAAd,UAAU,kDACXkB,SAAA,CAACJ,EAAAA,kBAAAA,KAAAoJ,GAAA,CAAO7D,KAAK,SAASrG,UAAU,+CAA+CgE,QAAS,IAAMgpC,IAA0B,GACpH9rC,SAAA,CAACC,EAAAA,kBAAAA,IAAA,OAAA,CAAMD,aAAmB,mCACzB0I,GAAW,CAAA/H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,eAE5C4sC,MAKb,IAAK,WACD,SAESvyC,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAAkyC,GACAD,GAA+B,CAAErS,WAAY,cAK1D,QACW,OAAA,KAEf,EAGJ,SAGSjgC,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAA2C,YAA1B,OAAAooC,mBAAAtxC,aAAA,EAAAsxC,EAAQgK,kBACtBzyC,kBAAAM,IAACmzB,GAAA,CACGhjB,MAAOg8B,IAAmB,SAC1B3tC,UAESkB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAA0xC,IACA,OAAAlJ,EAAA,OAAyBD,EAAAsJ,GAAA,CACtBvS,iBAAkB,iBAClB,EAAAiJ,EAAAzxC,QAAQwE,GAASA,UAAO,EAAAktC,EAAAhvC,QACtBq4C,GAAyB,CACrBvS,iBAAkB,WAEtB,QAGdnpC,KAAM01C,GACNzsC,QAAS0sC,MAIhB,OAAAjD,EAAA,MAAA3Q,OAAA,EAAAA,EAAiBphC,aAAjB,EAAA+xC,EAAyBjB,mBAAwD,gBAApC,OAAAmB,EAAA,MAAA7Q,OAAA,EAAAA,EAAiBphC,aAAjB,EAAAiyC,EAAyBV,UAA0C,MAAfpI,OAAe,EAAAA,EAAAzmC,gCAC5G,MAAI,CAAAsF,UAAU,oCAAqCkB,SAA+BiyC,GAAA,CAAErS,WAAY,cACjG,KACJ3/B,EAAAA,kBAAAA,IAAC,OAAInB,UAAU,wCAAwC,qBAAoB,OAAAsqC,EAAiB,MAAAlR,OAAA,EAAAA,EAAAphC,iBAAQuxC,OAChGroC,WACIL,kBAAAC,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CACKC,EAAAA,kBAAAA,IAAAgF,EAAAtF,kBAAAsF,SAAA,CAAAjF,UAAA,OAAAqpC,EAAA,MAAAnR,OAAA,EAAAA,EAAiBphC,aAAjB,EAAAuyC,EAAyBzB,mBAAwD,cAApC,OAAA2B,EAAA,MAAArR,OAAA,EAAAA,EAAiBphC,aAAQ,EAAAyyC,EAAAlB,UAA0B3E,IAC5E,MAAfzD,OAAe,EAAAA,EAAAhE,MAAK,EAAGx8B,aAA8C,UAA3B,MAAAA,OAAA,EAAAA,EAAS9C,mBAA6BiR,KACjF,MAAAqyB,OAAA,EAAAA,EAAehE,MAAK,EAAGx8B,aAA8C,UAAlB,MAATA,OAAS,EAAAA,EAAA9C,mBAA6B+tC,KAC7E/qC,kBAAAM,IAAC,OAAInB,UAAU,yEAA0EkB,cAEzFC,wBAAC,OAAInB,UAAU,yEACVkB,SACGwhC,EAAA8G,GAGK1oC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA0xC,GACAG,GAAyB,CACtBvS,iBAAkB,kBAMtC,SAGR1/B,kBAAAA,KAAC,MAAI,CAAAd,UAAU,qCACVkB,SAAA,CAAA4N,KAEOjO,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,OAAInB,UAAU,oCACXkB,SAACJ,EAAAD,kBAAAC,KAAA,MAAA,CAAId,UAAU,6CACVkB,SAAA,EAAiB,OAAAwpC,EAAA,MAAAtR,OAAA,EAAAA,EAAAphC,aAAQ,EAAA0yC,EAAAV,qBAAsBE,GAAsB,KACrEC,GACAjB,GACAkB,QAIRjpC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,oCAAqCkB,SAA8BmpC,QAGtFvpC,EAAAA,kBAAAA,KAAC,MAAI,CAAAd,UAAU,6CACXkB,SAAA,GAAAL,kBAAAM,IAAC,MAAA,CACGnB,UAAW,4GAC6B,gBAApC,OAAA8qC,EAAiB,MAAA1R,OAAA,EAAAA,EAAAphC,iBAAQuxC,QAA0B,GAAK,qCAG3DroC,SAAAstC,KAGJrtC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,2EAA4EkB,SAA0BkyC,6BAEpH,MAAI,CAAApzC,UAAU,0FACXkB,SAAAC,wBAACkyC,IAAqB,OAG1BvyC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,0GACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,+DACXkB,SAAA,GAACJ,kBAAAA,KAAA,OAAA,CAAKd,UAAU,+DAAgEkB,SAAA,CAAoBsjB,IAAA,UAAU,OAC7Goe,GAAgBvvB,QAAQ,MAAAuvB,OAAA,EAAAA,EAAcloC,WACnCmG,kBAAAM,IAAC4K,GAAA,CACGhM,MAAM,MACNkM,YACI5J,EAAAxB,kBAAAM,IAAC,MAAI,CAAAU,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAC9Df,WAAAL,kBAAAM,IAAC,OAAA,CACGe,EAAE,u7FACFF,KAAK,YAIjBtL,QAASksC,EAAarmC,KAAKC,IACjB,MAAAqH,MAAEA,EAAOnL,MAAAA,GAAU8D,EAClB,MAAA,CACHqH,QACAnL,QAAA,IAGRA,MAAO+rB,GACP7e,SAAU,EAAGlN,WAxsBhC,CAACA,IACtB,MAAM++B,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAE9CkkB,EAAAC,IAAIpJ,GAAappC,GAE9BgsB,GAAiBhsB,GAEjByC,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,YAAY5T,EAAanhB,aAAY,EAisBvB8J,CAAiB1nB,MACzC2sC,GAIA,CAAC,EAHD,CACIr5B,4BAA6BmiC,IAA2B,eAM9ErtC,kBAAAA,KAAC,MAAI,CAAAd,UAAU,+DACXkB,SAAA,0BAAC,OAAM,CAAAA,SAAA,CAAkBisC,IAAA,QAAQ,QAChC,OAAApC,EAAiB,MAAA3R,OAAA,EAAAA,EAAArS,aAAQ,EAAAgkB,EAAAwI,gBAAiBlgC,QAAQ,OAAAmgC,EAAA,OAAAC,EAAA,MAAAra,OAAA,EAAAA,EAAiBrS,aAAjB,EAAA0sB,EAAyBF,oBAAzB,EAAAC,EAAwC94C,WACvFmG,kBAAAM,IAAC4K,GAAA,CACGhM,MAAM,MACNrJ,QAAS0iC,EAAgBrS,OAAOwsB,cAAch3C,KAAKC,IACxC,CACHqH,MAAOrH,EACP9D,MAAO8D,MAGf9D,MAAOozC,GACPlmC,SAAU,EAAGlN,WAntB/B,CAACA,IACvB,MAAM++B,EAAe,IAAIrhB,gBAAgB7W,SAASoS,SAASoV,QAE3D0Q,EAAayT,IAAIM,GAAYhxC,OAAO9B,IAElBqzC,GAAA7N,OAAOxlC,IAEX,MAAA/B,cAAAA,aAAA8Y,QAAQhc,EAAiCiF,GAEvDyC,OAAOgwC,QAAQC,UAAU,KAAM,GAAI,GAAG7rC,SAASoS,SAAS05B,YAAY5T,EAAanhB,aAAY,EA0sBvBmK,CAAkB/nB,cAOvEsW,KAEQnO,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,CAAA4oC,IACA,MAAA/T,QAAA,EAAAA,GAAcr7B,QAASu4C,GAAsB,QAI7CnyC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAoC,cAApC,OAAAwyC,EAAA,MAAAta,OAAA,EAAAA,EAAiBphC,aAAjB,EAAA07C,EAAyBnK,WACtBpoC,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,oCACXkB,SAAAmB,EAAAxB,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,wGAAyGkB,SAAAstC,QAG/H,MAAAzY,QAAA,EAAAA,GAAcr7B,QAEPoG,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,GAAAL,kBAAAM,IAAC4sB,GAAA,CACGxG,UAAU,iBACVlhB,KAAK,QACLlP,KAAM4+B,GAAax5B,KAAKC,IACpB,MAAMmQ,SAAEA,KAAauK,GAAY1a,GAAQ,CAAA,EAElC,MAAA,CACH0a,UACAvK,WAAA,IAGRib,QAAS,CACLU,YAAa,OAAAqrB,EAAiB,MAAAva,OAAA,EAAAA,EAAArS,aAAQ,EAAA4sB,EAAArrB,YACtCC,SAAU,OAAAqrB,EAAiB,MAAAxa,OAAA,EAAAA,EAAArS,aAAQ,EAAA6sB,EAAArrB,SACnCC,WAAY,OAAAqrB,EAAiB,MAAAza,OAAA,EAAAA,EAAArS,aAAQ,EAAA8sB,EAAArrB,WACrCE,4BAA6B2kB,GAC7B1kB,6BAA8B6M,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5HzN,qBAAsB1Z,GACtB2Z,MAAO8d,GACPje,sBAAsB,EACtBoG,oBACAza,sBACAC,yBACAya,wBACA7F,cAA0B,MAAXpa,QAAW,EAAAA,GAAA6lC,UAC1B1rB,YAAwB,MAAXna,QAAW,EAAAA,GAAA8lC,UAE3Bd,MAGL5wC,EAAAxB,kBAAAM,IAAC6yC,GAAa,IAAG1vC,iBAO7C,EAIFsmC,GAAkBtmC,IACd,MAAAmV,QACFA,EAAAgsB,iBACAA,EAAAxD,kBACAA,EAAAE,oBACAA,EAAAE,oBACAA,EAAAjJ,gBACAA,EAAA/qB,YACAA,EAAA03B,yBACAA,EAAAC,mBACAA,EAAAC,mBACAA,EAAAC,sBACAA,EAAAU,yBACAA,EAAAvX,wBACAA,EAAAG,kBACAA,EAAAE,kBACAA,EAAAG,qBACAA,EAAA2F,iBACAA,EAAAsP,oBACAA,EAAAC,uBACAA,EAAAiG,oBACAA,GACA1mC,GAAS,CAAA,GAENwK,EAAgBC,GAAqBnW,EAAMU,UAAS,IACpD0V,EAAWC,GAAgBrW,EAAMU,UAAS,IAC1Cy8B,EAAcmW,GAAmBtzC,EAAMU,SAAS,KAChD8yC,EAAwBC,GAA6BzzC,EAAMU,SAA0B,IACrFmM,EAAa6mC,GAAkB1zC,EAAMU,SAAS,IAC9CoM,EAAW6mC,GAAgB3zC,EAAMU,SAAS,IAC1CkzC,EAAmBC,GAAwB7zC,EAAMU,SAAS,IAC1Dk1C,EAAaC,GAAkB71C,EAAMU,SAA0B,MAEhE8oB,EAAqB3pB,EAAY,CAAEwpC,uBAGrCwL,gBAAiBC,EACjBh0B,wBAAyBwzB,EACzB3/B,OAAQ0/B,EACRU,kBAAmBC,GACnBpY,GAAoB,CAAA,EA4BlBkb,EAA0BnjC,IAC5B,IAAKA,EAAQ,OAEb,MAAM4+B,KAAEA,EAAAoE,iBAAMA,EAAkB/H,UAAAA,EAAAgI,WAAWA,GAAejjC,EAE1DwB,GAAkB,GAClBE,GAAa,GACY,MAAA81B,GAAAA,GAAA,GACzBmH,EAAgBC,GAChBE,EAA0BkE,GAAoB,GAC9ChE,EAAaiE,GACb/D,EAAqBjE,GAAa,GACnBiG,EAtCU,CAAC9oC,UACpB,MAAA0oC,IAEGvtC,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAyE,EAAY,IAAEsnC,GAAmB,SAAU,KAC3C,MAAAxzB,OAAA,EAAAA,EAAS/e,QACJoG,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAA,SACMJ,kBAAAA,KAAC,OAAK,CAAAd,UAAU,0DAA0DkB,SAAA,CAAA,IAAEuY,EAAQ,UAE5F,QAIZ,IAAI60B,EAAiBjM,EAAsBuL,EAA2BvL,GAAuB,KACzFkM,EAA4BX,GAA8BU,EAKzDntC,OAHDotC,IAA2BD,EAAiBA,EAAeloC,WAAW1Q,EAAqCiQ,IAG1GxE,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,kDACVkB,oCAAiBlJ,iBAAQgyC,qBACrB7oC,EAAAN,kBAAAM,IAAA,OAAA,CAAKnB,UAAU,kDAAmDkB,SAAAqtC,EAA4BD,EAAiBD,IAChH,MACR,EAgBWD,CAAqB5F,GAAU,EAG5C2H,EAAqB55C,MAAO65C,GAAgB,KAC9C,IAAKnO,EAAmB,OAMpB,IAAAhrC,EAJAm5C,GAAe9D,EAAe,GAElCr9B,GAAa,GAGb,IAAIpS,EAAO,CACPqrC,EAAGzuB,EACH42B,KAAM,GACNhI,KAAM+H,EAAgB,EAAI3qC,EAC1B0iC,YAAa,IAGNlxC,QAAM8vB,GAAOkb,EAAmBplC,GAE3C6zC,EAAuBz5C,EAAQ,EAenC2B,EAAME,WAAU,WAEb,CAAC2sC,IAEJ7sC,EAAME,WAAU,KACZ,IAAIm7C,EAAwB5gC,QAAQ+O,IAAiB,MAAAA,OAAA,EAAAA,EAAe6f,qBAAsBA,IAEtF6C,GAAuBmP,IACvB9D,EAAmB8D,EACvB,GACD,CAACnP,EAAqB7C,IAEnB,MAAAiS,EACF/yC,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,iGACXkB,SAAAC,EAAAN,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACLuE,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,YACIm6B,GAAuB6K,EAAiC7K,GAClD6K,EAAiC7K,GACjC,UAAUF,EAAsBA,EAAoBtkC,cAAgB,QAE9EnF,MAAO+gB,EACP7T,SAAU,EAAGlN,WAAuC,MAAtBsyC,OAAsB,EAAAA,EAAAtyC,GACpDoS,aAAc,IAA4B,MAAtBkgC,OAAsB,EAAAA,EAAA,IAC1ChrC,UAAU,kDACV6K,gBAAc,MAKpBq/B,0BACD,MAAA,CAAIlqC,UAAU,6CACXkB,iCAACiX,GAAgBtL,KAAhB,CAAqBhL,MAAM,QAAQC,OAAO,OAAO0E,MAAM,UAAU4R,QAAQ,SAI5E+7B,EACsB,eAAxB9R,EACKlhC,EAAAN,kBAAAM,IAAAgX,GAAgBiX,eAAhB,CAA+B9W,MAAO,IACf,SAAxB+pB,EACAhgC,EAAAxB,kBAAAM,IAACgX,GAAgBoX,SAAhB,CAAyBjX,MAAO,IACT,SAAxB+pB,IACClhC,kBAAAA,IAAAgX,GAAgBsX,SAAhB,CAAyBnX,MAAO,KACT,YAAxB+pB,0BACClqB,GAAgByX,YAAhB,CAA4BtX,MAAO,KACpC,KAEF87B,EAA6B,6BAC9B,MAAA,CAAIp0C,UAAU,sDACVkB,SAAA,CAAAgzC,EACAhK,EACAiK,KAIHE,EAAwB,IAErBvzC,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAgzC,EACAhK,EACAiK,KAIHG,GAAkBC,GACI,eAAxBlS,EACIlhC,EAAAA,kBAAAA,IAACiuB,IAAepH,MAAO+d,EAA0B1W,6BAAsDklB,IAC/E,SAAxBlS,0BACC9S,GAAS,CAAAvH,MAAOge,EAAoBxW,uBAA0C+kB,IACvD,SAAxBlS,EACAlhC,EAAAA,kBAAAA,IAACsuB,IAASzH,MAAOie,EAAoBvW,uBAA0C6kB,IACvD,YAAxBlS,0BACCzS,GAAY,CAAA5H,MAAOke,EAAuBrW,0BAAgD0kB,IAC3F,KAER,+BACK,MAAI,CAAAv0C,UAAU,wCACVkB,SAAA4N,0BACIslC,EAA2B,CAAA,KAE3BvzC,kBAAAM,IAAA,MAAA,CAAInB,UAAU,sDACVkB,SAAA8N,EACI3M,EAAAxB,kBAAAM,IAAAkzC,EAAA,CAAA,KAGIvzC,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAgzC,EACA/yC,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,6CAA8CkB,SAAYstC,KACxE,MAAAzY,OAAA,EAAAA,EAAcr7B,QAEPoG,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,EAAAN,kBAAAM,IAACmzC,GAAe,CAAAn9C,KAAM4+B,EAAchO,qBAAsB1Z,MAE1DxN,kBAAAM,IAACqE,GAAA,CACGC,cACAC,YACAC,YAAa6mC,EACb5mC,SAAWyiC,GA3GtB,CAACA,IACtBiE,EAAejE,GACU,MAAAtD,GAAAA,GAAA,GAEzB/hC,YAAW,KACSpI,EAAA,CACZE,QAAS8rC,EAAyB7tC,QAClCgC,aAAc,IACjB,GACF,IAAG,EAkGsDm4C,CAAiB7K,GAC7CxiC,SAAU6nC,OAIlBrrC,EAAAxB,kBAAAM,IAAC6yC,GAAa,IAAG1vC,UAMzC,EAIF0vC,GAAe1vC,IACjB,MAAMkxB,iBAAEA,GAAqBlxB,GAAS,IAE9BqxB,gBAAiB6e,EAA0BC,eAAgBC,GAA4Blf,GAAoB,GAG/G,SAAA30B,kBAAAC,KAAC,MAAI,CAAAd,UAAU,sCACXkB,SAAA,yBAAC,MAAA,CAAIlB,UAAU,4CAA4C+qB,wBAAyB,CAAEC,OAAQwpB,GAA4B,wBAC1H3zC,kBAAAM,IAAC,MAAA,CACGnB,UAAU,kDACV+qB,wBAAyB,CAAEC,OAAQ0pB,GAA2B,+DAEtE,8B7ErqE4BpwC,GACxBnD,EAAAA,kBAAAA,IAAAugC,GAAA,CAAmBzH,WAAW,oBAAqB31B,6BgFR9BA,IACvB,MAAA4J,YAAEA,cAAaG,EAAasmC,aAAAA,GAAiB/7C,EAAM0V,WAA2BC,EAAAA,gBAE5EwE,cAAe0zB,GAA6Bv4B,GAAe,CAAA,GAC3D0mC,iBAAkBC,GAAwBF,GAAgB,CAAA,GAE5D7zB,KAAEA,EAAO,KAAM5f,SAAAA,EAAA+sB,iBAAUA,EAAkBza,mBAAAA,EAAAC,sBAAoBA,EAAuBya,qBAAAA,EAAA2H,gBAAsBA,EAAiBlV,MAAAA,GAAUrc,GAAS,CAAA,EAGtJ,IAAIwhC,EAA6B,KAC7BgP,EAAuC,KACvCC,EAAgC,KAChCC,EAAqC,KACzCp8C,EAAMyf,SAAS9b,IAAI2E,GAAWqX,IAC1B,GAAI3f,EAAMutC,eAAe5tB,IAAU5d,EAAW4d,EAAMlS,MAAO,CACjD,MAAA+/B,YAAEA,wBAAa6O,EAAuBC,eAAAA,EAAAC,qBAAgBA,IAA8B,MAAA58B,OAAA,EAAAA,EAAOjU,QAAS,GAEtG8hC,GAAezrC,EAAWyrC,KAAsCN,EAAAM,GAChE6O,GAAyBt6C,EAAWs6C,KAA0DH,EAAAG,GAC9FC,GAAkBv6C,EAAWu6C,KAA4CH,EAAAG,GACzEC,GAAwBx6C,EAAWw6C,KAAuDH,EAAAG,EAClG,KAGJ,MAAOxzB,EAAQC,GAAahpB,EAAMU,SAAS,CACvCuI,MAAO,EACPC,OAAQ,IAGZlJ,EAAME,WAAU,KACP2tC,GAGS7kB,EADD,OAATd,EACU,CACNjf,MAAO,GACPC,OAAQ,IAEI,OAATgf,EACG,CACNjf,MAAO,GACPC,OAAQ,IAGF,CACND,MAAO,GACPC,OAAQ,IAEhB,GACD,CAAC2kC,IAoBCtlC,OAAAA,EAAAA,kBAAAA,IAAA,OAAA,CAAKnB,UAAU,qCAAqCgE,QAlBhC,KACC,oBAAX7I,QAA0BA,OAAOi6C,oCACxCj6C,OAAOi6C,mCAAmC,CACtCnnB,mBACAza,qBACAC,wBACAya,uBACA7f,cACAy3B,wBACAgP,kCACAC,2BACAC,gCACAnf,kBACAlV,SACH,EAI2EhoB,IAAKk8C,EACjF3zC,SAAAmB,EAAAxB,kBAAAM,IAACqI,GAAY,IAAGmY,EAAQnb,MAAM,kBAClC,gCC1D6B,uDACjC,MAAM0H,YAAEA,GAAgBtV,EAAM0V,WAA2BC,EAAaA,gBAE9DwE,cAAe0zB,GAA6Bv4B,GAAe,CAAA,GAE5Dc,EAAWC,GAAgBrW,EAAMU,UAAS,IAC1C+7C,EAAUC,GAAe18C,EAAMU,UAAS,IACxCmgB,EAASD,GAAc5gB,EAAMU,SAAS,KACtCi8C,EAAqBC,GAA0B58C,EAAMU,SAAS,KAC9Dm8C,EAAmBC,GAAwB98C,EAAMU,SAAS,KAC1D8uB,EAAautB,GAAkB/8C,EAAMU,SAAS,CAAA,IAC9C8/B,EAAiBsK,GAAsB9qC,EAAMU,SAAc,CAAA,IAC3Ds8C,EAAoBC,GAAyBj9C,EAAMU,SAAc,CAAA,IACjEw8C,GAAiBC,IAAsBn9C,EAAMU,SAAS,KACtDu8B,GAAiBmgB,IAAsBp9C,EAAMU,SAAS,KACtDk8B,GAAkBwO,IAAuBprC,EAAMU,SAAc,CAAA,IAC7D28C,GAAmBC,IAAwBt9C,EAAMU,SAAS,KAC1D68C,GAAgBC,IAAqBx9C,EAAMU,SAAc,CAAA,IACzD+8C,GAAYC,IAAiB19C,EAAMU,UAAS,IAC5Cmb,GAAiB8hC,IAAsB39C,EAAMU,SAAS,CACzD20B,iBAAmBxW,IAAD,EAClBjE,mBAAqBiE,IAAD,EACpBhE,sBAAwBgE,IAAD,EACvByW,qBAAuBzW,IAAD,EACtBpJ,YAAa,KACby3B,sBAAuB,KACvBgP,gCAAiC,KACjCC,yBAA0B,KAC1BC,8BAA+B,KAC/Br0B,MAAO,CAAC,IAGNhH,GAAiB/gB,EAAMC,OAAyB,MAEhDupB,GAAqB3pB,EAAY,CAAEghB,aAEjC+8B,UAAWrgB,IAA4BggB,IAAkB,CAAA,EAE3DM,GAAoBlgD,MAAOsE,kCAC7B,MAAM1D,KAAEA,EAAMm5C,SAAAA,GAAW,EAAOoG,oBAAAA,GAAsB,GAAU77C,EAE1D87C,EAA2BV,GAAkB9Y,MAAK,EAAG1jB,QAASm9B,YAAsB,OAAA,OAAA93C,EAAAtE,OAAOo8C,SAAP,EAAA93C,EAAyBjB,iBAAkB4b,CAAA,IAC/Ho9B,EAAkBxjC,QAAQ,OAAAvU,QAAA63C,WAAqBH,gBAArB,EAAA13C,EAAgCpE,QAEhE07C,GAAkBO,GAClBL,GAAcO,GAEd5nC,GAAa,GAEb,MAAMq0B,cAAEA,EAAeyD,KAAAA,EAAAtD,YAAMA,EAAa9iC,QAAAA,EAAAqmC,kBAASA,GAAsB7vC,EACnE2/C,GAAa,OAAAlpC,EAAA,MAAAjN,OAAA,EAAAA,EAASomB,aAATnZ,EAAAA,EAAiBkpC,aAAc,CAAA,EAE9C,IAAA7/C,EACA4F,EAAO,CACP2qC,QAAST,EAAKxqC,KAAKkrC,IACT,MAAA7gC,MAAEA,GAAU6gC,EAEd,IAAAK,EAAiBlhC,EAAM1O,SAASorC,GAChC0E,EAAmBxyC,EAKhB,OAHU,MAAbiuC,OAAa,EAAAA,EAAA/oC,SAAyBstC,EAAAzZ,KAAK,gBAAgBkV,MAC1DuD,GAAmBgB,EAAiBzZ,KAAK,qCAEvC,CACH0Z,SAAUrhC,EACVshC,EAAGzuB,EACH0uB,YAAaL,EAAiB,EAAI,EAClC9vC,OAAQ8vC,EAAiB,IAAI,IAAIpP,IAAIsP,IAAmBzP,KAAK,SAAW,GAAA,KAOpF,GAFWthC,QAAMgwB,GAAYpqB,IAExB5F,EAAU,OAET,MAAAqxC,QAAEA,GAAYrxC,EAEhB,IAAA8/C,QAA2BzO,WAAStwC,QAAO,EAAGiwC,oBAAoBA,WAAU/vC,SAASorC,KAErFgN,UAAY72B,WAAS/e,SACPwsB,GAAA,CACVzN,UACA0N,aAAa,OAAA9R,EAAA0hC,EAAyB,SAAzB,EAAA1hC,EAA6BmzB,YAAa,IAI/D,IAAIwO,GACA,OAAAnhC,EAAA,MAAAyyB,OAAA,EAAAA,EACMtwC,QAAO,EAAGiwC,gBAAqB,MAAAA,OAAA,EAAAA,EAAU/vC,SAASorC,YADxD,EAAAztB,EAEMtZ,KAAKgR,IACG,MAAA06B,SAAEA,GAAa16B,GAEf9Q,KAAEA,EAAA4J,KAAMA,GAAe,MAAN0gC,OAAM,EAAAA,EAAA5J,MAAK,EAAGv2B,WAAiBA,EAAM1O,SAAS+vC,KAE9D,MAAA,IACA16B,EAEC9Q,KAAMA,GAAQ,GACd4J,KAAMA,GAAQ,GAClB,MAEF,GAEV4wC,GAAwD,MAA1BF,OAA0B,EAAAA,EAAAr8C,QAAS,OAAAob,EAAAihC,EAAyB,SAAzB,EAAAjhC,EAA6Bq2B,KAAO,GACrG+K,EAAwBz9B,EAAQ/e,QAA6B,MAAAu8C,OAAA,EAAAA,EAA6Bv8C,QAAuB,GAAd,YAA1D,iBAMzCy8C,EAJ0B9jC,SACzBoG,EAAQ/e,QAAUsB,OAAOC,KAAK66C,GAAYp8C,SAAU,OAAAmhB,EAAA,OAAAD,EAAAk7B,EAAWI,WAAXt7B,EAAkCgB,eAAlCf,EAAAA,EAA4CoW,UAAU,OAAAsS,EAAA,OAAAJ,EAAA,OAAAnoB,EAAA86B,EAAWI,SAAXl7B,EAAAA,EAAkCY,eAAlC,EAAAunB,EAA4CiT,aAA5C7S,EAAkD7pC,SAGzG,OAAA2uC,EAAA,OAAA1C,EAAAmQ,EAAWI,SAAX,EAAAvQ,EAAkC/pB,eAAlCysB,EAAAA,EAA4C+N,KAAOH,EAE3G,GAAIP,EAAqB,CACrB,IAAIW,EAAyBF,EAAwB56C,KAAI,EAAGjC,QAAcA,IACtEg9C,OtCxD0B/gD,OAAOghD,EAAUnqC,KACvD,IAAIoqC,EAAaD,EAAIh7C,KAAKk7C,GAAcp9C,EAAeo9C,KACnDpqC,EAAgBD,GAAwC,oBAAjBzW,eAA6C,MAAdA,kBAAc,EAAAA,aAAA2W,QAAQ7Z,KAAoC,GAEhIgD,EAAM,GAAG3D,qBAA2B0kD,EAAWjf,KAAK,QAAQ3iC,EAAoBC,iBAAiBwX,IAErG,aAAa9R,EAAS,CAClB9E,MACAI,OAAQ,MACR2E,cAAe6R,EACf1R,iBAAiB,IAEhB3E,MAAMuW,GACIA,IAEVC,OAAM,KACH,GACH,EsCuCgCkqC,CAAsBL,GAEZ,OAAnC,OAAA/N,EAAA,MAAAgO,OAAA,EAAAA,EAAkB5pC,aAAlB,EAAA47B,EAA0B37B,OAAcgoC,QAAe2B,WAAkBngD,KAAI,MAEjFw+C,EAAe,CAAE,GAGrBH,EAAuB2B,GACvBzB,EAAqBsB,GACrBjB,GAAmBmB,GACnBjoC,GAAa,EAAK,EAiFlB,OA1DJrW,EAAME,WAAU,KACP2tC,IAEiB,oBAAXtrC,SACPA,OAAOi6C,mCAAqC,EACxCnnB,mBAAmB,SACnBza,qBAAqB,SACrBC,wBAAwB,SACxBya,uBAAuB,SACvB7f,cAAc,KACdy3B,wBAAwB,SACxBgP,kCAAkC,SAClCC,2BAA2B,SAC3BC,gCAAgC,SAChCnf,gBAAAA,EAAkB,GAClBlV,QAAQ,CAAC,MAET20B,GAAY,GACOiB,GAAA,CACftoB,mBACAza,qBACAC,wBACAya,uBACA7f,cACAy3B,wBACAgP,kCACAC,2BACAC,gCACAr0B,UAEJq1B,GAAmBngB,EAAe,GAlDvBt/B,OAAOswC,UACtB,IAAA5vC,EAIJ,GAFWA,EAAA6F,KAAK6S,MAAMk3B,IAEjB5vC,EAAU,OAEf,MAAM0J,QAAEA,EAAAmQ,UAASA,EAAW6mC,UAAAA,GAAc1gD,EAE1CysC,EAAmB/iC,GACGk1C,EAAA,OAAA/2C,EAAA,MAAA6B,OAAA,EAAAA,EAASomB,aAAT,EAAAjoB,EAAiBg4C,YACvC9S,GAAoBlzB,GACpBolC,GAAqByB,SAEflB,GAAkB,CACpBt/C,KAAMF,EACNy/C,qBAAqB,GACxB,EAqCD7mC,CAAelZ,aAAa2W,QAAQ7Z,IAA6C,MAAI,GACtF,CAACgzC,IAEJ7tC,EAAME,WAAU,KAEDu8C,EAAA91C,SAAS1C,KAAKyhB,UAAUC,IAAI,4BAA8Bhf,SAAS1C,KAAKyhB,UAAUjM,OAAO,2BAA0B,GAC/H,CAACgjC,IAEJz8C,EAAME,WAAU,KACZ,GAAIua,QAAQ+O,KAAgC,MAAfA,QAAe,EAAAA,GAAA3I,WAAYA,GAAU,CACxD,MAAA8tB,EAAyBzqC,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAA6C,MAEvGgrC,EAAkBz7B,YAAW,KAC3BukC,GACkBkP,GAAA,CACdt/C,KAAMowC,EACN+I,UAAU,GACb,GACN,KACI,MAAA,IAAMrtC,aAAaw7B,EAC9B,IACD,CAAChlB,4BAGCm+B,EAAAA,0CAAA,CAAYvgD,KAAMg+C,EAAUp0C,aAAcq0C,EACvCp0C,SAAAJ,EAAAA,kBAAAA,KAAC+2C,EAAOC,0CAAP,CACG52C,SAAA,CAAAC,EAAAA,kBAAAA,IAAC42C,EAAOC,0CAAP,CAAeh4C,UAAU,0BACzBmB,EAAAA,kBAAAA,IAAA42C,EAAAC,0CAAA,CAAeh4C,UAAU,+BAC1Bc,EAAAA,kBAAAA,KAACm3C,EAAOC,0CAAP,CAAel4C,UAAU,0DAA0D,oBAAkB,OAAAlB,EAAiB,MAAAs6B,OAAA,EAAAA,EAAArS,aAAQ,EAAAjoB,EAAAyqC,SAAU,GACrIroC,SAAA,GAAAL,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACLuE,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,aAAa,OAAA0F,EAAA,MAAA4nB,QAAA,EAAAA,GAAkB9b,8BAAlB,EAAA9L,EAA2CmD,SAAU,qBAClErY,MAAO+gB,EACP1O,SAAU4O,GACV/T,SAAU,EAAGlN,WAAiB8gB,EAAW9gB,GACzCy/C,UAAYC,IAEJ,GAAc,UAAdA,EAAMj8C,IAAiB,CACvB,MAAMwkB,EAAalM,GAAgBkM,MAC7BsV,GAAe,MAAAtV,OAAA,EAAAA,EAAOlH,SAAUkH,EAAMlH,QAAUlkB,EAChD8iD,EAAoBhC,GAAalgB,GAA0B,GAAGN,IAAmBvgC,KAA6B2gC,KAAgBxc,IAEpIte,OAAOwW,SAASjH,KAAO2tC,CAC3B,GAEJr4C,UAAU,uDACV6K,gBAAc,4BAGjB,MAAA,CAAI7K,UAAU,wDACVkB,WACIC,EAAAA,kBAAAA,IAAAovB,GAAA,CACGrvB,SAACmB,EAAAxB,kBAAAM,IAAA,MAAA,CAAInB,UAAU,gEACXkB,kCAAC,MAAA,CAAIlB,UAAU,6DACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,uJACVkB,SAAA,CAAC,EAAG,EAAG,GAAG3E,KAAKqK,GACX9F,EAAAA,kBAAAA,KAAAlI,EAAMuN,SAAN,CACGjF,SAAA,GAAAL,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,QACH/E,QAAQzM,IAAU,CACnBlG,MAAO,CAAEqxB,UAAW,aAG5BlxB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACT23C,cAAe,SACfpgC,eAAgB,SAChBD,IAAK,OACL8Z,UAAW,QAGd7wB,UAAC,EAAG,EAAG,GAAG3E,KAAKqK,GACZzF,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KAER1X,MAAO,CACHmpC,SAAU,UAFTjjC,SAzBAA,OAmC5BzF,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,0EACXkB,SAACC,EAAAA,kBAAAA,IAAAgX,GAAgB4V,YAAhB,CAA4BzV,MAAO,EAAGjS,KAAK,oBAM5DlF,EAAAN,kBAAAM,IAACovB,GACG,CAAArvB,SAAAC,wBAAC,MAAI,CAAAnB,UAAU,gEACXkB,SAAAJ,EAAAD,kBAAAC,KAAC,MAAI,CAAAd,UAAU,6DACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,wEACVkB,SAAA,CAAAlF,OAAOC,KAAK25C,GAAoBl7C,SACjC,OAAAmb,EAAA,OAAmBR,EAAAugC,EAAAE,UAAnB,EAAAzgC,EAAqCugB,eAArC,EAAA/f,EAA+Coc,UAC/C,OAAApW,EAAA,OAAmBD,EAAnB,OAAmB9F,EAAA8/B,EAAAE,UAAkB,EAAAhgC,EAAA8f,mBAAUwhB,WAA/C,EAAAv7B,EAAqDnhB,QACjDyG,EAAAN,kBAAAM,IAACk0B,GAAA,CACGC,eAAgB7gB,GAAgBqgC,gCAChClf,SAAUggB,EAAmBE,IAAiBlgB,SAASwhB,KACvDrvB,qBAAsBtT,GAAgBpG,YACtC6Z,mBAAoBmtB,EACpBltB,sBAAuBmtB,EACvBzf,mBACAlV,MAAOlM,GAAgBkM,QAE3B,KAEH80B,GACGA,EAAkBl5C,KAAI,CAACC,EAAWoK,KAC9B,MAAMulC,KAAEA,EAAA1vC,KAAMA,EAAM4J,KAAAA,GAAS7J,EAGzB2E,OAAAA,EAAAN,kBAAAM,IAACvI,EAAMuN,SAAN,CACGjF,WAAAL,kBAAAM,IAACk0B,GAAA,CACGC,eAAgB7gB,GAAgBsgC,yBAChCt4C,OACA4J,OACAa,MAAOilC,EACPpkB,qBAAsBtT,GAAgBpG,YACtC6Z,mBAAoBmtB,EACpBltB,sBAAuBmtB,EACvB9f,uBATa5uB,EAWrB,SAIhB9F,kBAAAA,KAAC,MAAI,CAAAd,UAAU,0EACVkB,SAAA,EAAA,MAAAq0C,OAAA,EAAAA,EAAqB76C,QAClByG,wBAAC,MAAI,CAAAnB,UAAU,gEACXkB,SAAAC,EAAAN,kBAAAM,IAAC4sB,GAAA,CACGxG,UAAU,iBACVlhB,KAAK,SACLlP,KAAMo+C,EAAoBh5C,KAAKC,IAC3B,MAAMmQ,SAAEA,KAAauK,GAAY1a,GAAQ,CAAA,EAElC,MAAA,CACH0a,UACAvK,WAAA,IAGRib,QAAS,CACLU,YAAa,OAAAtM,EAAiB,MAAAod,OAAA,EAAAA,EAAArS,aAAQ,EAAA/K,EAAAsM,YACtCC,SAAU,OAAA4b,EAAiB,MAAA/K,OAAA,EAAAA,EAAArS,aAAQ,EAAAod,EAAA5b,SACnCC,WAAY,OAAA+b,EAAiB,MAAAnL,OAAA,EAAAA,EAAArS,aAAQ,EAAAwd,EAAA/b,WACrCE,4BAA+C,MAAlB8M,QAAkB,EAAAA,GAAA4X,YAC/CzkB,6BAA8B6M,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3N,sBAAsB,EACtBE,qBAAsBtT,GAAgBpG,YACtC2Z,MAAOvT,GAAgBqxB,sBACvB7X,iBAAkBxZ,GAAgBwZ,iBAClCza,mBAAoBiB,GAAgBjB,mBACpCC,sBAAuBgB,GAAgBhB,sBACvCya,qBAAsBzZ,GAAgByZ,qBACtChG,mBAAoBmtB,EACpBltB,sBAAuBmtB,EACvBltB,kBAGRpsB,OAAOC,KAAK25C,GAAoBl7C,SAClC,OAAA2uC,EAAA,OAAmB1C,EAAAiP,EAAAE,UAAnB,EAAAnP,EAAqC/pB,eAAU,EAAAysB,EAAApX,UAC/C,OAAAyX,EAAA,OAAmBD,EAAnB,OAAmBH,EAAAsM,EAAAE,UAAnB,EAAAxM,EAAqC1sB,eAArC,EAAA6sB,EAA+C2N,WAAM,EAAA1N,EAAAhvC,QAE/C2H,EAAAxB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,0FACXkB,SAAA,GAAAC,kBAAAA,IAAC,QAAKD,SAAK,UAAO,yBAAoBC,kBAAAA,IAAC,QAAMD,SAAQuY,IAAO,uBAEhE5Y,kBAAAM,IAAC4sB,GAAA,CACGxG,UAAU,iBACVlhB,KAAK,SACLlP,KAAMy+C,EAAmBE,IAAiBl5B,SAASw6B,KAAK76C,KAAKC,IACzD,MAAMmQ,SAAEA,KAAauK,GAAY1a,GAAQ,CAAA,EAElC,MAAA,CACH0a,UACAvK,WAAA,IAGRib,QAAS,CACLU,YAAa,OAAAyhB,EAAiB,MAAA3Q,OAAA,EAAAA,EAAArS,aAAQ,EAAAgjB,EAAAzhB,YACtCC,SAAU,OAAA0hB,EAAiB,MAAA7Q,OAAA,EAAAA,EAAArS,aAAQ,EAAAkjB,EAAA1hB,SACnCC,WAAY,OAAA8hB,EAAiB,MAAAlR,OAAA,EAAAA,EAAArS,aAAQ,EAAAujB,EAAA9hB,WACrCE,4BAA+C,MAAlB8M,QAAkB,EAAAA,GAAA4X,YAC/CzkB,6BAA8B6M,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3N,sBAAsB,EACtBE,qBAAsBtT,GAAgBpG,YACtC2Z,MAAOvT,GAAgBqxB,sBACvB7X,iBAAkBxZ,GAAgBwZ,iBAClCza,mBAAoBiB,GAAgBjB,mBACpCC,sBAAuBgB,GAAgBhB,sBACvCya,qBAAsBzZ,GAAgByZ,qBACtChG,mBAAoBmtB,EACpBltB,sBAAuBmtB,OAK3Bx0C,EAAAA,kBAAAA,KAAAqF,EAAAtF,kBAAAsF,SAAA,CAAAjF,SAAA,CAAAC,wBAAC,MAAI,CAAAnB,UAAU,8DAA+DkB,UAAA,MAAAs0B,QAAA,EAAAA,GAAkBte,UAAW,qCAC1G,MAAI,CAAAlX,UAAU,sEACVkB,UAAA,MAAAs0B,QAAA,EAAAA,GAAkBif,iBAAkB,8BAI3B,MAArBc,OAAqB,EAAAA,EAAA76C,SACrBsB,OAAOC,KAAK25C,GAAoBl7C,SAC7B,OAAA+vC,EAAA,OAAmBF,EAAAqL,EAAAE,UAAnB,EAAAvL,EAAqC3tB,eAArC,EAAA6tB,EAA+CxY,UAC/C,OAAA8Y,EAAA,OAAmBD,EAAnB,OAAmBJ,EAAAkL,EAAAE,UAAnB,EAAApL,EAAqC9tB,eAArC,EAAAkuB,EAA+CsM,WAA/C,EAAArM,EAAqDrwC,QACrDyG,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,yDACXkB,WAAAL,kBAAAM,IAACk0B,GAAA,CACG7K,UAAW/V,GAAgBugC,8BAC3Bv7B,UACAsO,qBAAsBtT,GAAgBpG,YACtC6Z,mBAAoBmtB,EACpBltB,sBAAuBmtB,EACvBzf,mBACAM,2BACAxV,MAAOlM,GAAgBkM,MACvB6U,wBAGR,wBASxC,qDC5aqBlxB,oDACzB,MAAM4J,YAAEA,EAAaG,YAAAA,GAAgBzV,EAAM0V,WAA2BC,EAAAA,gBAE9DwE,cAAe0zB,GAA6Bv4B,GAAe,CAAA,GAE7DrM,MAAEA,EAAQ,QAAAX,SAASA,EAAU+sB,iBAAAA,EAAAza,mBAAkBA,wBAAoBC,EAAuBya,qBAAAA,EAAA2H,gBAAsBA,EAAiBlV,MAAAA,GAAUrc,EAGjJ,IAAIwhC,EAA6B,KAC7BgP,EAAuC,KACvCC,EAAgC,KAChCC,EAAqC,KACzCp8C,EAAMyf,SAAS9b,IAAI2E,GAAWqX,IAC1B,GAAI3f,EAAMutC,eAAe5tB,IAAU5d,EAAW4d,EAAMlS,MAAO,CACjD,MAAA+/B,YAAEA,wBAAa6O,EAAuBC,eAAAA,EAAAC,qBAAgBA,IAA8B,MAAA58B,OAAA,EAAAA,EAAOjU,QAAS,GAEtG8hC,GAAezrC,EAAWyrC,KAAsCN,EAAAM,GAChE6O,GAAyBt6C,EAAWs6C,KAA0DH,EAAAG,GAC9FC,GAAkBv6C,EAAWu6C,KAA4CH,EAAAG,GACzEC,GAAwBx6C,EAAWw6C,KAAuDH,EAAAG,EAClG,KAGJ,MAAOnmC,EAAWC,GAAgBrW,EAAMU,UAAS,IAC1CmgB,EAASD,GAAc5gB,EAAMU,SAAS,KACtCi8C,EAAqBC,GAA0B58C,EAAMU,SAAS,KAC9Dm8C,EAAmBC,IAAwB98C,EAAMU,SAAS,KAC1D8/B,GAAiBsK,IAAsB9qC,EAAMU,SAAc,CAAA,IAC3Ds8C,GAAoBC,IAAyBj9C,EAAMU,SAAc,CAAA,IACjEw8C,GAAiBC,IAAsBn9C,EAAMU,SAAS,KACtDi/C,GAAkBC,IAAuB5/C,EAAMU,UAAS,IACxDk8B,GAAkBwO,IAAuBprC,EAAMU,SAAc,CAAA,IAC7D28C,GAAmBC,IAAwBt9C,EAAMU,SAAS,KAC1D68C,GAAgBC,IAAqBx9C,EAAMU,SAAc,CAAA,IACzD+8C,GAAYC,IAAiB19C,EAAMU,UAAS,GAE7C8oB,GAAqB3pB,EAAY,CAAEghB,YAEnCE,GAAiB/gB,EAAMC,OAAO,OAE5B29C,UAAWrgB,IAA4BggB,IAAkB,CAAA,EAE3DM,GAAoBlgD,MAAOY,EAAWm5C,GAAW,iCACnD,IAAK72B,EAAQ/e,OAAQ,OAErB,MAAMi8C,EAA2BV,GAAkB9Y,MAAK,EAAG1jB,QAASm9B,YAAsB,OAAA,OAAA93C,EAAAtE,OAAOo8C,SAAP,EAAA93C,EAAyBjB,iBAAkB4b,CAAA,IAC/Ho9B,EAAkBxjC,QAAQ,OAAAvU,QAAA63C,WAAqBH,gBAArB,EAAA13C,EAAgCpE,QAEhE07C,GAAkBO,GAClBL,GAAcO,GAEd5nC,GAAa,GAEb,MAAMq0B,cAAEA,EAAeyD,KAAAA,EAAAtD,YAAMA,EAAa9iC,QAAAA,EAAAqmC,kBAASA,GAAsB7vC,EACnE2/C,GAAa,OAAAlpC,EAAA,MAAAjN,OAAA,EAAAA,EAASomB,aAATnZ,EAAAA,EAAiBkpC,aAAc,CAAA,EAE9C,IAAA7/C,EACA4F,EAAO,CACP2qC,QAAST,EAAKxqC,KAAKkrC,IACT,MAAA7gC,MAAEA,GAAU6gC,EAEd,IAAAK,EAAiBlhC,EAAM1O,SAASorC,GAChC0E,EAAmBxyC,EAKhB,OAHU,MAAbiuC,OAAa,EAAAA,EAAA/oC,SAAyBstC,EAAAzZ,KAAK,gBAAgBkV,MAC1DuD,GAAmBgB,EAAiBzZ,KAAK,qCAEvC,CACH0Z,SAAUrhC,EACVshC,EAAGzuB,EACH0uB,YAAaL,EAAiB,EAAI,EAClC9vC,OAAQ8vC,EAAiB,IAAI,IAAIpP,IAAIsP,IAAmBzP,KAAK,SAAW,GAAA,KAOpF,GAFWthC,QAAMgwB,GAAYpqB,IAExB5F,EAAU,OAET,MAAAqxC,QAAEA,GAAYrxC,EAEhB,IAAA8/C,QAA2BzO,WAAStwC,QAAO,EAAGiwC,oBAAoBA,WAAU/vC,SAASorC,KAErFgN,UAAY72B,WAAS/e,SACPwsB,GAAA,CACVzN,UACA0N,aAAa,OAAA9R,EAAA0hC,EAAyB,SAAzB,EAAA1hC,EAA6BmzB,YAAa,IAI/D,IAAIwO,GACA,OAAAnhC,EAAA,MAAAyyB,OAAA,EAAAA,EACMtwC,QAAO,EAAGiwC,gBAAqB,MAAAA,OAAA,EAAAA,EAAU/vC,SAASorC,YADxD,EAAAztB,EAEMtZ,KAAKgR,IACG,MAAA06B,SAAEA,GAAa16B,GAEf9Q,KAAEA,EAAA4J,KAAMA,GAAe,MAAN0gC,OAAM,EAAAA,EAAA5J,MAAK,EAAGv2B,WAAiBA,EAAM1O,SAAS+vC,KAE9D,MAAA,IACA16B,EAEC9Q,KAAMA,GAAQ,GACd4J,KAAMA,GAAQ,GAClB,MAEF,GAEV4wC,GAAwD,MAA1BF,OAA0B,EAAAA,EAAAr8C,QAAS,OAAAob,EAAAihC,EAAyB,SAAzB,EAAAjhC,EAA6Bq2B,KAAO,GACrG+K,EAAwBz9B,EAAQ/e,QAA6B,MAAAu8C,OAAA,EAAAA,EAA6Bv8C,QAAuB,GAAd,YAA1D,iBAEzC+9C,EAA0BplC,SACzBoG,EAAQ/e,QAAUsB,OAAOC,KAAK66C,GAAYp8C,SAAU,OAAAmhB,EAAA,OAAAD,EAAAk7B,EAAWI,WAAXt7B,EAAkCgB,eAAlCf,EAAAA,EAA4CoW,UAAU,OAAAsS,EAAA,OAAAJ,EAAA,OAAAnoB,EAAA86B,EAAWI,SAAXl7B,EAAAA,EAAkCY,eAAlC,EAAAunB,EAA4CiT,aAA5C7S,EAAkD7pC,SAGjK86C,EAAuBiD,EAA0B,OAAApP,EAAA,OAAA1C,EAAAmQ,EAAWI,SAAXvQ,EAAAA,EAAkC/pB,eAAlC,EAAAysB,EAA4C+N,KAAOH,GACpGvB,GAAqBsB,GACrBjB,GAAmBmB,GACnBjoC,GAAa,EAAK,EAoBtBrW,EAAME,WAAU,KACP2tC,GAlBclwC,OAAOswC,UACtB,IAAA5vC,EAIJ,GAFWA,EAAA6F,KAAK6S,MAAMk3B,IAEjB5vC,EAAU,OAEf,MAAM0J,QAAEA,EAAAmQ,UAASA,EAAW6mC,UAAAA,GAAc1gD,EAE1CysC,GAAmB/iC,GACGk1C,GAAA,OAAA/2C,EAAA,MAAA6B,OAAA,EAAAA,EAASomB,aAAT,EAAAjoB,EAAiBg4C,YACvC9S,GAAoBlzB,GACpBolC,GAAqByB,GAEjBl+B,EAAQ/e,cAAc+7C,GAAkBx/C,EAAQ,EAMpD4Y,CAAelZ,aAAa2W,QAAQ7Z,IAA6C,KAAI,GACtF,CAACgzC,IAEJ7tC,EAAME,WAAU,KACZ,GAAIua,QAAQ+O,KAAgC,MAAfA,QAAe,EAAAA,GAAA3I,WAAYA,GAAU,CACxD,MAAA8tB,EAAyBzqC,KAAK6S,MAAOhZ,aAAa2W,QAAQ7Z,IAA6C,MAExGgmB,GAAS++B,IAAoB,GAE5B,MAAA/Z,EAAkBz7B,YAAW,KAC3ByW,GAAS++B,IAAoB,GAE7BjR,GAAwBkP,GAAkBlP,GAAwB,EAAI,GAC3E,KACI,MAAA,IAAMtkC,aAAaw7B,EAC9B,IACD,CAAChlB,IAEJ7gB,EAAME,WAAU,KACOy/C,GAAAh5C,SAAS1C,KAAKyhB,UAAUC,IAAI,8BAAgChf,SAAS1C,KAAKyhB,UAAUjM,OAAO,6BAA4B,GAC3I,CAACkmC,KAEJ,MAAMG,GAAe,CACjB7O,SAAUhoC,GAITf,OAAAA,EAAAA,kBAAAA,KAAA,MAAA,CAAId,UAAU,oDAAoDU,MAAOg4C,GACrEx3C,SAAA,CAAmBq3C,GAAAp3C,EAAAN,kBAAAM,IAAC,OAAInB,UAAU,qBAAqBgE,QAAS,IAAMw0C,IAAoB,KAAiB,OAE5G33C,kBAAAM,IAACwJ,GAAA,CACGtE,KAAK,OACL0E,SAAU4O,GACV/O,6BAAOpB,GAAW,CAAA3H,MAAO,GAAIC,OAAQ,GAAI0E,MAAM,YAC/C0B,aAAa,OAAApJ,EAAA,MAAA02B,QAAA,EAAAA,GAAkB9b,8BAAlB,EAAA5a,EAA2CiS,SAAU,qBAClErY,MAAO+gB,EACP7T,SAAU,EAAGlN,WAAiB8gB,EAAW9gB,GACzCy/C,UAAYC,IAEJ,GAAc,UAAdA,EAAMj8C,IAAiB,CACvB,MAAM85B,GAAe,MAAAtV,OAAA,EAAAA,EAAOlH,SAAUkH,EAAMlH,QAAUlkB,EAChD8iD,EAAoBhC,GAAalgB,GAA0B,GAAGN,GAAmBvgC,KAA6B2gC,KAAgBxc,IAEpIte,OAAOwW,SAASjH,KAAO2tC,CAC3B,GAEJvtC,aAAc,IAAM0O,EAAW,IAC/Bm/B,QAAS,KACDl/B,GAAS++B,IAAoB,EAAI,EAEzC3tC,gBAAc,IAGlB1J,EAAAA,kBAAAA,IAACoL,SAAOC,IAAP,CAAWC,QAAQ,SAASC,QAAS6rC,GAAmB,UAAY,SAAU5rC,SAAUlB,GAAmBzL,UAAU,mDACjHkB,SACG8N,EAAA7N,EAAAN,kBAAAM,IAACovB,IACGrvB,SAACmB,EAAAxB,kBAAAC,KAAA,MAAA,CAAId,UAAU,wDACXkB,SAAA,CAAAC,EAAAN,kBAAAM,IAAC,MAAI,CAAAnB,UAAU,6IACVkB,SAAA,CAAC,EAAG,EAAG,GAAG3E,KAAKqK,GACX9F,EAAAA,kBAAAA,KAAAlI,EAAMuN,SAAN,CACGjF,SAAA,GAAAL,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,QACH/E,QAAQzM,IAAU,CACnBlG,MAAO,CAAEqxB,UAAW,aAG5BlxB,kBAAAM,IAAC,MAAA,CACGT,MAAO,CACHC,QAAS,OACT23C,cAAe,SACfpgC,eAAgB,SAChBD,IAAK,OACL8Z,UAAW,QAGd7wB,UAAC,EAAG,EAAG,GAAG3E,KAAKqK,GACZzF,EAAAN,kBAAAM,IAACgX,GAAgBtL,KAAhB,CACGhL,MAAM,OACNC,OAAO,OACP0E,MAAM,UACN4R,QAAQ,KAER1X,MAAO,CACHmpC,SAAU,UAFTjjC,SAzBAA,OAmC5BzF,EAAAN,kBAAAM,IAAA,MAAA,CAAInB,UAAU,qEACXkB,SAACC,EAAAA,kBAAAA,IAAAgX,GAAgB4V,YAAhB,CAA4BzV,MAAO,EAAGjS,KAAK,iBAKvDlF,EAAAN,kBAAAM,IAAAovB,GAAA,CAAWvhB,YACR9N,WACIL,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,wDACXkB,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,mEACVkB,SAAA,CAAAlF,OAAOC,KAAK25C,IAAoBl7C,SAAU,OAAA2a,EAAA,OAAmBzH,EAAAgoC,GAAAE,UAAnB,EAAAloC,EAAqCgoB,eAArC,EAAAvgB,EAA+C4c,UAAU,OAAArW,EAAA,OAAmB9F,EAAnB,OAAmBD,EAAA+/B,GAAAE,UAAkB,EAAAjgC,EAAA+f,mBAAUwhB,WAA/C,EAAAx7B,EAAqDlhB,QACrJyG,EAAAN,kBAAAM,IAACk0B,GAAA,CACGC,eAAgBwf,EAChBlf,SAAUggB,GAAmBE,IAAiBlgB,SAASwhB,KACvDrvB,qBAAsB1Z,EACtBwnB,kBACAlV,UAEJ,KAEH80B,EAAkBl5C,KAAI,CAACC,EAAWoK,KAC/B,MAAMulC,KAAEA,EAAA1vC,KAAMA,EAAM4J,KAAAA,GAAS7J,EAGzB2E,OAAAA,EAAAN,kBAAAM,IAACvI,EAAMuN,SAAN,CACGjF,WAAAL,kBAAAM,IAACk0B,GAAA,CACGC,eAAgByf,EAChBt4C,OACA4J,OACAa,MAAOilC,EACPpkB,qBAAsB1Z,EACtBmnB,uBAPa5uB,EASrB,SAIZ9F,kBAAAA,KAAC,MAAI,CAAAd,UAAU,qEACXkB,SAAA,CAAAC,wBAAC,MAAI,CAAAnB,UAAU,iEAAkEkB,UAAA,MAAAs0B,QAAA,EAAAA,GAAkBte,UAAW,cAC7G,MAAAq+B,OAAA,EAAAA,EAAqB76C,QACjByG,wBAAA,MAAA,CAAInB,UAAU,2DACXkB,SAAAC,EAAAN,kBAAAM,IAAC4sB,GAAA,CACGxG,UAAU,iBACVlhB,KAAK,QACLlP,KAAMo+C,EAAoBh5C,KAAKC,IAC3B,MAAMmQ,SAAEA,KAAauK,GAAY1a,GAAQ,CAAA,EAElC,MAAA,CACH0a,UACAvK,WAAA,IAGRib,QAAS,CACLU,YAAa,OAAAzM,EAAiB,MAAAud,QAAA,EAAAA,GAAArS,aAAQ,EAAAlL,EAAAyM,YACtCC,SAAU,OAAAvM,EAAiB,MAAAod,QAAA,EAAAA,GAAArS,aAAQ,EAAA/K,EAAAuM,SACnCC,WAAY,OAAA2b,EAAiB,MAAA/K,QAAA,EAAAA,GAAArS,aAAQ,EAAAod,EAAA3b,WACrCE,4BAA+C,MAAlB8M,QAAkB,EAAAA,GAAA4X,YAC/CzkB,6BAA8B6M,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3N,sBAAsB,EACtBE,qBAAsB1Z,EACtB2Z,MAAO8d,EACP7X,mBACAza,qBACAC,wBACAya,2BAGRlyB,OAAOC,KAAK25C,IAAoBl7C,SAClC,OAAAisC,EAAA,OAAmBpC,EAAAqR,GAAAE,UAAnB,EAAAvR,EAAqC3nB,eAAU,EAAA+pB,EAAA1U,UAC/C,OAAAwX,EAAA,OAAmBH,EAAnB,OAAmBD,EAAAuM,GAAAE,UAAnB,EAAAzM,EAAqCzsB,eAArC,EAAA0sB,EAA+C8N,WAAM,EAAA3N,EAAA/uC,QAE/C2H,EAAAxB,kBAAAC,KAAAqF,6BAAA,CAAAjF,SAAA,GAACJ,kBAAAA,KAAA,MAAA,CAAId,UAAU,qFACXkB,SAAA,GAAAC,kBAAAA,IAAC,QAAKD,SAAwB,6BAAO,MAACC,kBAAAA,IAAC,UAAQD,SAAQuY,IAAS,OAAEtY,kBAAAA,IAAC,QAAKD,SAAa,uBAEzFL,kBAAAM,IAAC4sB,GAAA,CACGxG,UAAU,iBACVlhB,KAAK,QACLlP,KAAMy+C,GAAmBE,IAAiBl5B,SAASw6B,KAAK76C,KAAKC,IACzD,MAAMmQ,SAAEA,KAAauK,GAAY1a,GAAQ,CAAA,EAElC,MAAA,CACH0a,UACAvK,WAAA,IAGRib,QAAS,CACLU,YAAa,OAAAohB,EAAiB,MAAAtQ,QAAA,EAAAA,GAAArS,aAAQ,EAAA2iB,EAAAphB,YACtCC,SAAU,OAAAwhB,EAAiB,MAAA3Q,QAAA,EAAAA,GAAArS,aAAQ,EAAAgjB,EAAAxhB,SACnCC,WAAY,OAAAyhB,EAAiB,MAAA7Q,QAAA,EAAAA,GAAArS,aAAQ,EAAAkjB,EAAAzhB,WACrCE,4BAA+C,MAAlB8M,QAAkB,EAAAA,GAAA4X,YAC/CzkB,6BAA8B6M,IAAoBA,GAAiB,gBAAkBA,GAAiB,gBAAkB,IAE5H3N,sBAAsB,EACtBE,qBAAsB1Z,EACtB2Z,MAAO8d,EACP7X,mBACAza,qBACAC,wBACAya,4BAIP/sB,EAAAA,kBAAAA,IAAA,MAAA,CAAInB,UAAU,oEAAqEkB,UAAkB,MAAlBs0B,QAAkB,EAAAA,GAAAif,iBAAkB,iCAI9G,MAArBc,OAAqB,EAAAA,EAAA76C,SACrBsB,OAAOC,KAAK25C,IAAoBl7C,SAAU,OAAA6vC,EAAA,OAAmBD,EAAAsL,GAAAE,UAAnB,EAAAxL,EAAqC1tB,eAArC,EAAA2tB,EAA+CtY,UAAU,OAAA6Y,EAAA,OAAmBJ,EAAnB,OAAmBD,EAAAmL,GAAAE,UAAnB,EAAArL,EAAqC7tB,eAArC,EAAA8tB,EAA+C0M,WAA/C,EAAAtM,EAAqDpwC,QACrJyG,EAAAA,kBAAAA,IAAC,MAAI,CAAAnB,UAAU,oDACXkB,WAAAL,kBAAAM,IAACk0B,GAAA,CACG7K,UAAWwqB,EACXv7B,UACAsO,qBAAsB1Z,EACtBwnB,kBACAM,2BACAxV,QACA6U,wBAGR,cAKxB"}
|