@sledge-app/react-instant-search 1.0.113 → 1.0.115

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/Icons/InfoCircleIcon/InfoCircleIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../../core/lib/polyfills.ts","../../../core/api/shopify.ts","../../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/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","../../../core/components/Alert/Alert.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 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 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 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 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 ELEMENT_BADGE_COUNTER: 'wishlist-badge-counter'\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}=\"${INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_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\nexport const addCustomCode = ({ type, code }: { type: 'js' | 'css'; code: any }) => {\n var customCodeElement = document.createElement(type === 'js' ? 'script' : 'style');\n\n try {\n customCodeElement.appendChild(document.createTextNode(code));\n } catch (e) {\n customCodeElement.innerHTML = code;\n }\n\n document[type === 'js' ? 'body' : 'head'].appendChild(customCodeElement);\n};\n\nexport const setElementAttribute = ({ element, attributeName, value }: { element: HTMLElement | null; attributeName: string; value: string }) => {\n if (element && element.hasAttribute(attributeName)) {\n element.setAttribute(attributeName, value);\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=\"sledge__progress-indicator 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 textValue?: string[];\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, textValue = [], min, max, step = 1, setValueCommit, setValueChange } = props;\n\n let content: any = textValue?.length ? textValue : value;\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 {...(textValue?.length\n ? {\n innerHTMLContent: content[0]\n }\n : {\n content: content[0]\n })}\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 {...(textValue?.length\n ? {\n innerHTMLContent: content[1]\n }\n : {\n content: content[1]\n })}\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 { Tooltip } from '@core/components';\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 checked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, checked, 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 <Tooltip\n content={value}\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 <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n checked={checked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n </Tooltip>\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","export interface IInfoCircleIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const InfoCircleIcon = ({ width, height, color }: IInfoCircleIcon) => {\n return (\n <span className=\"sledge-icon__info-circle\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 2.00293C6.49 2.00293 2 6.49293 2 12.0029C2 17.5129 6.49 22.0029 12 22.0029C17.51 22.0029 22 17.5129 22 12.0029C22 6.49293 17.51 2.00293 12 2.00293ZM11.25 8.00293C11.25 7.59293 11.59 7.25293 12 7.25293C12.41 7.25293 12.75 7.59293 12.75 8.00293V13.0029C12.75 13.4129 12.41 13.7529 12 13.7529C11.59 13.7529 11.25 13.4129 11.25 13.0029V8.00293ZM12.92 16.3829C12.87 16.5129 12.8 16.6129 12.71 16.7129C12.61 16.8029 12.5 16.8729 12.38 16.9229C12.26 16.9729 12.13 17.0029 12 17.0029C11.87 17.0029 11.74 16.9729 11.62 16.9229C11.5 16.8729 11.39 16.8029 11.29 16.7129C11.2 16.6129 11.13 16.5129 11.08 16.3829C11.03 16.2629 11 16.1329 11 16.0029C11 15.8729 11.03 15.7429 11.08 15.6229C11.13 15.5029 11.2 15.3929 11.29 15.2929C11.39 15.2029 11.5 15.1329 11.62 15.0829C11.86 14.9829 12.14 14.9829 12.38 15.0829C12.5 15.1329 12.61 15.2029 12.71 15.2929C12.8 15.3929 12.87 15.5029 12.92 15.6229C12.97 15.7429 13 15.8729 13 16.0029C13 16.1329 12.97 16.2629 12.92 16.3829Z\"\n fill={color}\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","interface ObjectConstructor {\n hasOwn(o: object, v: PropertyKey): boolean;\n}\n\nif (!Object.hasOwn) {\n Object.hasOwn = function (obj: object, prop: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\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 { 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 type?: 'add' | 'remove' | 'toggle';\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice, type = 'toggle' } = 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 type: type === 'toggle' ? '' : type\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 { INTERNAL_SELECTOR_VALUE, 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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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 = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE;\n\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(getSelector));\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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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';\nimport { IAddWishlistParams } from '@core/api/global';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: IAddWishlistParams;\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 reload?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default', reload = false } = 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(reload);\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({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\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} className=\"sledge-wishlist__trigger-root\">\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({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\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 reload?: boolean;\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 reload = false\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(reload);\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 '@core/lib/polyfills';\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, setElementAttribute, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { useIntersectionObserver } from '@core/hooks';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n 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 const [hasEntryImage, setHasEntryImage] = React.useState(false);\n\n const [imageRef, imageEntry] = useIntersectionObserver({\n threshold: 0.1,\n root: null,\n rootMargin: '0px'\n });\n\n React.useEffect(() => {\n if (!hasEntryImage && imageEntry?.isIntersecting) setHasEntryImage(imageEntry?.isIntersecting);\n }, [imageEntry]);\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 setElementAttribute({\n element: selectedInput,\n attributeName: `data-selected-option${optionIndex}`,\n value: value\n });\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 setElementAttribute({\n element: selectedInput,\n attributeName: 'data-variant-id',\n value: selectOption?.attributes?.['data-graphql-id']?.value || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-quantity',\n value: inventoryQuantity || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-management',\n value: inventoryManagement || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-policy',\n value: inventoryPolicy || ''\n });\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 <div className=\"sledge__product-grid-card-featured-image-element\">\n <img\n ref={imageRef}\n {...(hasEntryImage\n ? {\n src: image?.src || `${CDN_URL}/images/blank-image.png`,\n ['loaded']: ''\n }\n : {\n ['data-src']: image?.src || `${CDN_URL}/images/blank-image.png`\n })}\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>\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} data-custom-card={Boolean(props?.cards)}>\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 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 innerHTMLContent?: string;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content = null, innerHTMLContent = '', 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 {innerHTMLContent && <div dangerouslySetInnerHTML={{ __html: innerHTMLContent }}></div>}\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 './Alert.css';\n\nexport interface IAlertProps {\n children: any;\n className?: string;\n type: 'info';\n icon?: any;\n}\n\nexport const Alert = ({ children, className = '', type, icon = null }: IAlertProps) => {\n return (\n <div className={`sledge__alert ${className}`} data-alert-type={type}>\n {icon && <div>{icon}</div>}\n\n <div>{children}</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 '@core/lib/polyfills';\n\nimport { 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 allowedFilterSlider?: any[];\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\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 hierarchicalFacetAliases?: any[];\n}\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 = ({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n}: {\n clickedFacetsObject: any;\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}) => {\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\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = String(facet[0])?.includes(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 = ({\n facets,\n facetsQueryStringObject,\n callback,\n additional = [],\n separator,\n separatorCollection,\n allowedFilterSlider,\n hierarchicalFacetAliases\n}: 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 hierarchicalFacetAliases\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 = allowedFilterSlider?.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 hierarchicalFacetAliases\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = String(indexValue)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\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 = ({\n value,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n value: any;\n clickedFacets: any;\n keepCounterFacets: any;\n allowedFilterSlider?: any;\n}) => {\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 isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = false;\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider) return;\n\n isSelectedFacetWithPrice = arrFacetSelected.includes(filterSlider);\n });\n\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && keepCounterFacets?.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n\nexport const handleFacetValues = ({\n filter,\n items,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n filter?: any;\n items?: any;\n languageSettings?: any;\n clickedFacets?: any;\n searchFacetDistribution?: any;\n displaySettings?: any;\n settings?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}): any => {\n const { value, settings: filterSettings } = filter;\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n const { prefix, filter_list, delete_prefix, selected_filter } = filterSettings || {};\n\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 keepCounterFacets,\n allowedFilterSlider\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","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleFacetValues } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, shopifyFormatMoney, 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 valueFilterSliderOthers: any;\n setValueFilterSliderOthers(value: React.SetStateAction<any>): 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 keepCounterFacets?: any;\n allowedFilterSlider?: 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 valueFilterSliderOthers,\n setValueFilterSliderOthers,\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 keepCounterFacets,\n allowedFilterSlider\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 const { money_format } = generalDataSettings || {};\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 { 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 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 const handleFacetValuesProps = {\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider\n ? facetItems\n : handleFacetValues({\n ...handleFacetValuesProps,\n items: facetItems\n });\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({\n ...handleFacetValuesProps,\n items: virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues\n })?.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 e.stopPropagation();\n\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 onClick={(e) => {\n e.preventDefault();\n\n handleFilterChange({\n parentId: value,\n value: itemValue\n });\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 if (items && Object.keys(items)?.length) {\n items = {\n min: items?.min < 0 ? 0 : items?.min,\n max: items?.max\n };\n }\n\n let valueFilterSliderChange: any[] = [];\n let isPriceValue = false;\n let isSalePercent = false;\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n isPriceValue = true;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n isSalePercent = true;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || items?.max;\n\n let contentDefaultValueMin = isPriceValue ? shopifyFormatMoney(defaultValueMin * 100, money_format) : isSalePercent ? `${defaultValueMin}%` : defaultValueMin;\n let contentDefaultValueMax = isPriceValue ? shopifyFormatMoney(defaultValueMax * 100, money_format) : isSalePercent ? `${defaultValueMax}%` : defaultValueMax;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n textValue={defaultValueMin === defaultValueMax ? [contentDefaultValueMax] : [contentDefaultValueMin, contentDefaultValueMax]}\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 } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [value]: 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\" dangerouslySetInnerHTML={{ __html: contentDefaultValueMin }}></div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\" dangerouslySetInnerHTML={{ __html: contentDefaultValueMax }}></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' && currentItems?.length) {\n blockComponent = (\n <>\n {currentItems?.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 checked={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';\n\nimport '@core/lib/polyfills';\n\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 Alert,\n InfoCircleIcon\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, shopifyFormatMoney } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, handleFacetValues } 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 attributesToRetrieve?: any;\n allowedFilterSlider?: any[];\n hierarchicalFacetAliases?: any[];\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\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 [instantSearchSettings, setInstantSearchSettings] = React.useState<any>(sledgeSettings?.instantsearch || {});\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 const [attributesToRetrieve, setAttributesToRetrieve] = React.useState(sledgeSettings?.instantsearch?.attributes_to_retrieve || []);\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [allowedFilterSlider, setAllowedFilterSlider] = React.useState<any[]>([]);\n const [hierarchicalFacetAliases, setHierarchicalFacetAliases] = React.useState<any[]>([]);\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: any = [];\n\n if (!isSetFilter)\n filters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value));\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n getFacets = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n getFacets = 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);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets : [],\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 setTotalHitsProduct(totalHits || 0);\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 { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value\n };\n });\n\n if (collectionId && collections?.includes(String(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\n let valueAllowedFilterSlider: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n if (!isDisplaySlider) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n let valueHierarchicalFacetAliases: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplayTree = display.toLowerCase() === 'tree';\n\n if (!isDisplayTree) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n setDefaultFilterItems(valueDefaultFilterItems);\n setAllowedFilterSlider(valueAllowedFilterSlider);\n setHierarchicalFacetAliases(valueHierarchicalFacetAliases);\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 setInstantSearchSettings(response);\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 attributes_to_retrieve,\n collections_all_id\n } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId || collections_all_id\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n const valueReplaced = collectionId ? String(collectionId) : String(collections_all_id);\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, valueReplaced)\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 : collections_all_id\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))\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 setAttributesToRetrieve(attributes_to_retrieve);\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 const alertFirstSyncComponent =\n !isFirstLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__alert-first-sync-product\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {alertFirstSyncComponent}\n\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 attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\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 attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\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 [valueFilterSliderOthers, setValueFilterSliderOthers] = React.useState<any>({});\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 { money_format } = generalDataSettings || {};\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 <>\n {isSummaryTextFromLanguage ? (\n <span className=\"sledge-instant-search__result-data-summary-text\" dangerouslySetInnerHTML={{ __html: getSummaryText }}></span>\n ) : (\n <span className=\"sledge-instant-search__result-data-summary-text\">{defaultSummaryText}</span>\n )}\n </>\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 setValueFilterSliderOthers({});\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = allowedFilterSlider?.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 } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [parentId]: [] }));\n }\n } else {\n facets = value?.length === 1 ? [...value, ...value] : 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 // Set value filter slider others\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider || (filterSlider && ['variants.price', 'variants.sale_percent'].includes(filterSlider))) return;\n\n if (facetsQueryStringObject[filterSlider]) setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [filterSlider]: facetsQueryStringObject[filterSlider] }));\n });\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 allowedFilterSlider,\n hierarchicalFacetAliases\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 attributesToRetrieve,\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 = allowedFilterSlider?.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 let keepCounterFacets: any[] = [];\n allowedFilter?.map((filter) => {\n if (filter?.settings?.keep_counter) keepCounterFacets.push(filter?.value);\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = languageSettings?.[value] || value;\n let isRange = allowedFilterSlider?.includes(name);\n let getLabel = label;\n let getSettings: any = {};\n let isPriceValue = false;\n let isSalePercent = false;\n if (name === 'variants.price') {\n isPriceValue = true;\n } else if (name === 'variants.sale_percent') {\n isSalePercent = true;\n }\n\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) {\n // Detect same value on array\n const getValueRange = new Set(value).size === 1 ? [value[0]] : value;\n\n valueText = getValueRange?.map((valueItem: any) => (isPriceValue ? shopifyFormatMoney(valueItem * 100, money_format) : isSalePercent ? `${valueItem}%` : valueItem))?.join(' - ');\n } else {\n valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n }\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\" dangerouslySetInnerHTML={{ __html: `${getLabel}: ${aliasValue || valueText}` }}></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 hierarchicalFacetAliases\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(\n display.toLowerCase() === 'slider'\n ? items\n : Number(\n handleFacetValues({\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n items,\n allowedFilterSlider\n })?.length\n )\n );\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 } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\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 valueFilterSliderOthers={valueFilterSliderOthers}\n setValueFilterSliderOthers={setValueFilterSliderOthers}\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 keepCounterFacets={keepCounterFacets}\n allowedFilterSlider={allowedFilterSlider}\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 renderFilterLayoutOnMobile = () => {\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\">{renderFilterLayoutOnMobile()}</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, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading, Alert, InfoCircleIcon } 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 const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>({});\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, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\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 let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\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 setTotalHitsProduct(valueSearchResultProduct[0]?.totalHits || 0);\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 setInstantSearchSettings(response);\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 const alertFirstSyncComponent =\n !isLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__icon-widget-popup-alert-first-sync\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\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 {alertFirstSyncComponent}\n\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, OBJECT_DATA_STRING_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 const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\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(searchParams?.get(queryKeyword) || '');\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, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\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 let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\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 }, 250);\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 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 {showSearchResult ? (\n <div 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 &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n 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 </div>\n ) : null}\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","ELEMENT_WIDGET_POPUP","ELEMENT_BADGE_COUNTER","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","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","setElementAttribute","attributeName","hasAttribute","setAttribute","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","textValue","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","innerHTMLContent","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","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","InfoCircleIcon","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","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","hasOwn","obj","prop","prototype","hasOwnProperty","call","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","reload","getSelector","Array","from","querySelectorAll","getElementContainerWidgetQuery","remove","elementContainerWidget","createElement","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","hidden","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","slice","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","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","hasEntryImage","setHasEntryImage","imageRef","imageEntry","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","loaded","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","opacity","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Alert","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","hierarchicalFacetAliases","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","allowedFilterSlider","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","keepCounterFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","filterSlider","isPriorityFacet","handleFacetValues","searchFacetDistribution","displaySettings","settings","filterSettings","aliases","productTypeAliases","collectionAliases","isHideFacetWhenZeroValue","hide_when_zero_value","prefix","filter_list","delete_prefix","selected_filter","facetValues","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","getValue","level","counter","getLabelName","deletePrefix","FacetComponent","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","valueFilterSliderOthers","setValueFilterSliderOthers","separatedFilterItem","setSeparatedFilterItem","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","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","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isDisplaySlider","handleFacetValuesProps","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","isPriceValue","isSalePercent","defaultValueMin","defaultValueMax","contentDefaultValueMin","contentDefaultValueMax","prevState","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","instantSearchSettings","setInstantSearchSettings","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","attributesToRetrieve","setAttributesToRetrieve","_k","attributes_to_retrieve","totalHitsProduct","setTotalHitsProduct","setAllowedFilterSlider","setHierarchicalFacetAliases","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_l","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","collections_all_id","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","valueReplaced","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","valueAllowedFilterSlider","valueHierarchicalFacetAliases","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_m","_n","layout","filterVerticalSkeleton","_o","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","alertFirstSyncComponent","first_sync","ResultCategory","handleChangeTabIndex","_w","_x","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","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","keep_counter","facetBlockSelected","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","getValueRange","valueItem","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","mobile_layout","allowed_limit","_y","_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","search_use_default_sort","suggestion","instantSearchLimit","instantsearch_limit","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/Icons/InfoCircleIcon/InfoCircleIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../../core/lib/polyfills.ts","../../../core/api/shopify.ts","../../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/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","../../../core/components/Alert/Alert.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 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 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 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 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 ELEMENT_BADGE_COUNTER: 'wishlist-badge-counter'\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}=\"${INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_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 FILTER_TITLE: '{{ filter_title }}',\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\nexport const addCustomCode = ({ type, code }: { type: 'js' | 'css'; code: any }) => {\n var customCodeElement = document.createElement(type === 'js' ? 'script' : 'style');\n\n try {\n customCodeElement.appendChild(document.createTextNode(code));\n } catch (e) {\n customCodeElement.innerHTML = code;\n }\n\n document[type === 'js' ? 'body' : 'head'].appendChild(customCodeElement);\n};\n\nexport const setElementAttribute = ({ element, attributeName, value }: { element: HTMLElement | null; attributeName: string; value: string }) => {\n if (element && element.hasAttribute(attributeName)) {\n element.setAttribute(attributeName, value);\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=\"sledge__progress-indicator 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 textValue?: string[];\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, textValue = [], min, max, step = 1, setValueCommit, setValueChange } = props;\n\n let content: any = textValue?.length ? textValue : value;\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 {...(textValue?.length\n ? {\n innerHTMLContent: content[0]\n }\n : {\n content: content[0]\n })}\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 {...(textValue?.length\n ? {\n innerHTMLContent: content[1]\n }\n : {\n content: content[1]\n })}\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 { Tooltip } from '@core/components';\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 checked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, checked, 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 <Tooltip\n content={value}\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 <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n checked={checked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n </Tooltip>\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 const [isLoading, setIsLoading] = React.useState(true);\n\n React.useEffect(() => {\n // Trigger Re-render on defaultValue change\n setIsLoading(true);\n setTimeout(() => {\n setIsLoading(false);\n }, 0);\n }, [defaultValue]);\n\n const handleClassNameRoot = (open: boolean) => {\n if (!open) return;\n\n const selectContentElement = document.querySelector('.sledge__select-content');\n if (selectContentElement) {\n const selectRootElement = selectContentElement.parentElement;\n if (selectRootElement) selectRootElement.classList.toggle('sledge__select-root');\n }\n };\n\n return (\n <>\n {isLoading ? null : (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root\n name={name}\n required={required}\n onValueChange={onValueChange}\n onOpenChange={(open) => handleClassNameRoot(open)}\n {...(defaultValue\n ? {\n defaultValue\n }\n : {})}\n >\n <SelectElement.Trigger className=\"sledge__select-trigger\" style={labelStyle}>\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 className=\"sledge__select-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 );\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","export interface IInfoCircleIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const InfoCircleIcon = ({ width, height, color }: IInfoCircleIcon) => {\n return (\n <span className=\"sledge-icon__info-circle\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 2.00293C6.49 2.00293 2 6.49293 2 12.0029C2 17.5129 6.49 22.0029 12 22.0029C17.51 22.0029 22 17.5129 22 12.0029C22 6.49293 17.51 2.00293 12 2.00293ZM11.25 8.00293C11.25 7.59293 11.59 7.25293 12 7.25293C12.41 7.25293 12.75 7.59293 12.75 8.00293V13.0029C12.75 13.4129 12.41 13.7529 12 13.7529C11.59 13.7529 11.25 13.4129 11.25 13.0029V8.00293ZM12.92 16.3829C12.87 16.5129 12.8 16.6129 12.71 16.7129C12.61 16.8029 12.5 16.8729 12.38 16.9229C12.26 16.9729 12.13 17.0029 12 17.0029C11.87 17.0029 11.74 16.9729 11.62 16.9229C11.5 16.8729 11.39 16.8029 11.29 16.7129C11.2 16.6129 11.13 16.5129 11.08 16.3829C11.03 16.2629 11 16.1329 11 16.0029C11 15.8729 11.03 15.7429 11.08 15.6229C11.13 15.5029 11.2 15.3929 11.29 15.2929C11.39 15.2029 11.5 15.1329 11.62 15.0829C11.86 14.9829 12.14 14.9829 12.38 15.0829C12.5 15.1329 12.61 15.2029 12.71 15.2929C12.8 15.3929 12.87 15.5029 12.92 15.6229C12.97 15.7429 13 15.8729 13 16.0029C13 16.1329 12.97 16.2629 12.92 16.3829Z\"\n fill={color}\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","interface ObjectConstructor {\n hasOwn(o: object, v: PropertyKey): boolean;\n}\n\nif (!Object.hasOwn) {\n Object.hasOwn = function (obj: object, prop: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\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 { 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 type?: 'add' | 'remove' | 'toggle';\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice, type = 'toggle' } = 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 type: type === 'toggle' ? '' : type\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 { INTERNAL_SELECTOR_VALUE, 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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_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 = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE;\n\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(getSelector));\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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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 if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.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';\nimport { IAddWishlistParams } from '@core/api/global';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: IAddWishlistParams;\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 reload?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default', reload = false } = 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(reload);\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({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\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} className=\"sledge-wishlist__trigger-root\">\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({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\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 reload?: boolean;\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 reload = false\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(reload);\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 '@core/lib/polyfills';\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, setElementAttribute, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { useIntersectionObserver } from '@core/hooks';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n 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 const [hasEntryImage, setHasEntryImage] = React.useState(false);\n\n const [imageRef, imageEntry] = useIntersectionObserver({\n threshold: 0.1,\n root: null,\n rootMargin: '0px'\n });\n\n React.useEffect(() => {\n if (!hasEntryImage && imageEntry?.isIntersecting) setHasEntryImage(imageEntry?.isIntersecting);\n }, [imageEntry]);\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 setElementAttribute({\n element: selectedInput,\n attributeName: `data-selected-option${optionIndex}`,\n value: value\n });\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 setElementAttribute({\n element: selectedInput,\n attributeName: 'data-variant-id',\n value: selectOption?.attributes?.['data-graphql-id']?.value || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-quantity',\n value: inventoryQuantity || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-management',\n value: inventoryManagement || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-policy',\n value: inventoryPolicy || ''\n });\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 <div className=\"sledge__product-grid-card-featured-image-element\">\n <img\n ref={imageRef}\n {...(hasEntryImage\n ? {\n src: image?.src || `${CDN_URL}/images/blank-image.png`,\n ['loaded']: ''\n }\n : {\n ['data-src']: image?.src || `${CDN_URL}/images/blank-image.png`\n })}\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>\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} data-custom-card={Boolean(props?.cards)}>\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 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 innerHTMLContent?: string;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content = null, innerHTMLContent = '', 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 {innerHTMLContent && <div dangerouslySetInnerHTML={{ __html: innerHTMLContent }}></div>}\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 './Alert.css';\n\nexport interface IAlertProps {\n children: any;\n className?: string;\n type: 'info';\n icon?: any;\n}\n\nexport const Alert = ({ children, className = '', type, icon = null }: IAlertProps) => {\n return (\n <div className={`sledge__alert ${className}`} data-alert-type={type}>\n {icon && <div>{icon}</div>}\n\n <div>{children}</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 '@core/lib/polyfills';\n\nimport { 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 allowedFilterSlider?: any[];\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\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 hierarchicalFacetAliases?: any[];\n}\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 = ({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n}: {\n clickedFacetsObject: any;\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}) => {\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\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = String(facet[0])?.includes(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 = ({\n facets,\n facetsQueryStringObject,\n callback,\n additional = [],\n separator,\n separatorCollection,\n allowedFilterSlider,\n hierarchicalFacetAliases\n}: 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 hierarchicalFacetAliases\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 = allowedFilterSlider?.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 hierarchicalFacetAliases\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = String(indexValue)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\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 = ({\n value,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n value: any;\n clickedFacets: any;\n keepCounterFacets: any;\n allowedFilterSlider?: any;\n}) => {\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 isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = false;\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider) return;\n\n isSelectedFacetWithPrice = arrFacetSelected.includes(filterSlider);\n });\n\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && keepCounterFacets?.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n\nexport const handleFacetValues = ({\n filter,\n items,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n filter?: any;\n items?: any;\n languageSettings?: any;\n clickedFacets?: any;\n searchFacetDistribution?: any;\n displaySettings?: any;\n settings?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}): any => {\n const { value, settings: filterSettings } = filter;\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n const { prefix, filter_list, delete_prefix, selected_filter } = filterSettings || {};\n\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 keepCounterFacets,\n allowedFilterSlider\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","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleFacetValues } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, shopifyFormatMoney, 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 valueFilterSliderOthers: any;\n setValueFilterSliderOthers(value: React.SetStateAction<any>): 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 keepCounterFacets?: any;\n allowedFilterSlider?: 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 valueFilterSliderOthers,\n setValueFilterSliderOthers,\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 keepCounterFacets,\n allowedFilterSlider\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 const { money_format } = generalDataSettings || {};\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { search_filter_placeholder, search_filter_show_more_result, search_filter_no_result, filter_select_placeholder } = 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 { 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 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 const handleFacetValuesProps = {\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider\n ? facetItems\n : handleFacetValues({\n ...handleFacetValuesProps,\n items: facetItems\n });\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({\n ...handleFacetValuesProps,\n items: virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues\n })?.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 e.stopPropagation();\n\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 onClick={(e) => {\n e.preventDefault();\n\n handleFilterChange({\n parentId: value,\n value: itemValue\n });\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 if (items && Object.keys(items)?.length) {\n items = {\n min: items?.min < 0 ? 0 : items?.min,\n max: items?.max\n };\n }\n\n let valueFilterSliderChange: any[] = [];\n let isPriceValue = false;\n let isSalePercent = false;\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n isPriceValue = true;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n isSalePercent = true;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || items?.max;\n\n let contentDefaultValueMin = isPriceValue ? shopifyFormatMoney(defaultValueMin * 100, money_format) : isSalePercent ? `${defaultValueMin}%` : defaultValueMin;\n let contentDefaultValueMax = isPriceValue ? shopifyFormatMoney(defaultValueMax * 100, money_format) : isSalePercent ? `${defaultValueMax}%` : defaultValueMax;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n textValue={defaultValueMin === defaultValueMax ? [contentDefaultValueMax] : [contentDefaultValueMin, contentDefaultValueMax]}\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 } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [value]: 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\" dangerouslySetInnerHTML={{ __html: contentDefaultValueMin }}></div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\" dangerouslySetInnerHTML={{ __html: contentDefaultValueMax }}></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={filter_select_placeholder ? String(filter_select_placeholder).replaceAll(OBJECT_DATA_STRING_KEY.FILTER_TITLE, label) : `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 defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && currentItems?.length) {\n blockComponent = (\n <>\n {currentItems?.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 checked={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';\n\nimport '@core/lib/polyfills';\n\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 Alert,\n InfoCircleIcon\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, shopifyFormatMoney } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, handleFacetValues } 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 attributesToRetrieve?: any;\n allowedFilterSlider?: any[];\n hierarchicalFacetAliases?: any[];\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\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 [instantSearchSettings, setInstantSearchSettings] = React.useState<any>(sledgeSettings?.instantsearch || {});\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 const [attributesToRetrieve, setAttributesToRetrieve] = React.useState(sledgeSettings?.instantsearch?.attributes_to_retrieve || []);\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [allowedFilterSlider, setAllowedFilterSlider] = React.useState<any[]>([]);\n const [hierarchicalFacetAliases, setHierarchicalFacetAliases] = React.useState<any[]>([]);\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: any = [];\n\n if (!isSetFilter)\n filters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value));\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n getFacets = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n getFacets = 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);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets : [],\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 setTotalHitsProduct(totalHits || 0);\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 { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value\n };\n });\n\n if (collectionId && collections?.includes(String(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\n let valueAllowedFilterSlider: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n if (!isDisplaySlider) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n let valueHierarchicalFacetAliases: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplayTree = display.toLowerCase() === 'tree';\n\n if (!isDisplayTree) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n setDefaultFilterItems(valueDefaultFilterItems);\n setAllowedFilterSlider(valueAllowedFilterSlider);\n setHierarchicalFacetAliases(valueHierarchicalFacetAliases);\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 setInstantSearchSettings(response);\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 attributes_to_retrieve,\n collections_all_id\n } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId || collections_all_id\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n const valueReplaced = collectionId ? String(collectionId) : String(collections_all_id);\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, valueReplaced)\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 : collections_all_id\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))\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 setAttributesToRetrieve(attributes_to_retrieve);\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 const alertFirstSyncComponent =\n !isFirstLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__alert-first-sync-product\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {alertFirstSyncComponent}\n\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 attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\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 attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\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 [valueFilterSliderOthers, setValueFilterSliderOthers] = React.useState<any>({});\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 { money_format } = generalDataSettings || {};\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 <>\n {isSummaryTextFromLanguage ? (\n <span className=\"sledge-instant-search__result-data-summary-text\" dangerouslySetInnerHTML={{ __html: getSummaryText }}></span>\n ) : (\n <span className=\"sledge-instant-search__result-data-summary-text\">{defaultSummaryText}</span>\n )}\n </>\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 setValueFilterSliderOthers({});\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = allowedFilterSlider?.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 } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [parentId]: [] }));\n }\n } else {\n facets = value?.length === 1 ? [...value, ...value] : 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 // Set value filter slider others\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider || (filterSlider && ['variants.price', 'variants.sale_percent'].includes(filterSlider))) return;\n\n if (facetsQueryStringObject[filterSlider]) setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [filterSlider]: facetsQueryStringObject[filterSlider] }));\n });\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 allowedFilterSlider,\n hierarchicalFacetAliases\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 attributesToRetrieve,\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 = allowedFilterSlider?.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 let keepCounterFacets: any[] = [];\n allowedFilter?.map((filter) => {\n if (filter?.settings?.keep_counter) keepCounterFacets.push(filter?.value);\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = languageSettings?.[value] || value;\n let isRange = allowedFilterSlider?.includes(name);\n let getLabel = label;\n let getSettings: any = {};\n let isPriceValue = false;\n let isSalePercent = false;\n if (name === 'variants.price') {\n isPriceValue = true;\n } else if (name === 'variants.sale_percent') {\n isSalePercent = true;\n }\n\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) {\n // Detect same value on array\n const getValueRange = new Set(value).size === 1 ? [value[0]] : value;\n\n valueText = getValueRange?.map((valueItem: any) => (isPriceValue ? shopifyFormatMoney(valueItem * 100, money_format) : isSalePercent ? `${valueItem}%` : valueItem))?.join(' - ');\n } else {\n valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n }\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\" dangerouslySetInnerHTML={{ __html: `${getLabel}: ${aliasValue || valueText}` }}></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 hierarchicalFacetAliases\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(\n display.toLowerCase() === 'slider'\n ? items\n : Number(\n handleFacetValues({\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n items,\n allowedFilterSlider\n })?.length\n )\n );\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 } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\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 valueFilterSliderOthers={valueFilterSliderOthers}\n setValueFilterSliderOthers={setValueFilterSliderOthers}\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 keepCounterFacets={keepCounterFacets}\n allowedFilterSlider={allowedFilterSlider}\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 renderFilterLayoutOnMobile = () => {\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\">{renderFilterLayoutOnMobile()}</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, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading, Alert, InfoCircleIcon } 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 const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>({});\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, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\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 let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\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 setTotalHitsProduct(valueSearchResultProduct[0]?.totalHits || 0);\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 setInstantSearchSettings(response);\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 const alertFirstSyncComponent =\n !isLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__icon-widget-popup-alert-first-sync\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\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 {alertFirstSyncComponent}\n\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, OBJECT_DATA_STRING_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 const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\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(searchParams?.get(queryKeyword) || '');\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, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\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 let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\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 }, 250);\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 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 {showSearchResult ? (\n <div 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 &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n 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 </div>\n ) : null}\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","ELEMENT_WIDGET_POPUP","ELEMENT_BADGE_COUNTER","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","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","setElementAttribute","attributeName","hasAttribute","setAttribute","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","textValue","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","innerHTMLContent","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","styles","backgroundImage","backgroundSize","Select","placeholder","isLoading","setIsLoading","SelectElement.Root","$cc7e05a45900e73f$export$be92b6f5f03c0fe9","selectContentElement","selectRootElement","classList","toggle","handleClassNameRoot","SelectElement.Trigger","$cc7e05a45900e73f$export$41fb9f06171c75f4","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","$cc7e05a45900e73f$export$602eac185826482c","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","InfoCircleIcon","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","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","hasOwn","obj","prop","prototype","hasOwnProperty","call","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","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","reload","getSelector","Array","from","querySelectorAll","getElementContainerWidgetQuery","remove","elementContainerWidget","createElement","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","hidden","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","slice","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","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","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","hasEntryImage","setHasEntryImage","imageRef","imageEntry","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","loaded","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","opacity","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Alert","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","hierarchicalFacetAliases","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","allowedFilterSlider","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","keepCounterFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","filterSlider","isPriorityFacet","handleFacetValues","searchFacetDistribution","displaySettings","settings","filterSettings","aliases","productTypeAliases","collectionAliases","isHideFacetWhenZeroValue","hide_when_zero_value","prefix","filter_list","delete_prefix","selected_filter","facetValues","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","getValue","level","counter","getLabelName","deletePrefix","FacetComponent","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","valueFilterSliderOthers","setValueFilterSliderOthers","separatedFilterItem","setSeparatedFilterItem","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","button_load_more","search_filter_placeholder","search_filter_show_more_result","search_filter_no_result","filter_select_placeholder","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","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isDisplaySlider","handleFacetValuesProps","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","isPriceValue","isSalePercent","defaultValueMin","defaultValueMax","contentDefaultValueMin","contentDefaultValueMax","prevState","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","instantSearchSettings","setInstantSearchSettings","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","attributesToRetrieve","setAttributesToRetrieve","_k","attributes_to_retrieve","totalHitsProduct","setTotalHitsProduct","setAllowedFilterSlider","setHierarchicalFacetAliases","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_l","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","collections_all_id","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","valueReplaced","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","valueAllowedFilterSlider","valueHierarchicalFacetAliases","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_m","_n","layout","filterVerticalSkeleton","_o","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","alertFirstSyncComponent","first_sync","ResultCategory","handleChangeTabIndex","_w","_x","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","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","keep_counter","facetBlockSelected","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","getValueRange","valueItem","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","mobile_layout","allowed_limit","_y","_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","search_use_default_sort","suggestion","instantSearchLimit","instantsearch_limit","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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"}