@sledge-app/react-instant-search 1.0.69 → 1.0.71

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/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useIsFirstRender.ts","../../../core/hooks/useDebounce.ts","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product',\n WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge-counter\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share',\n SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n 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';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) =>\n text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n\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","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => {\n if (valueProgress) setProgress(valueProgress);\n }, delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\n\nexport interface ISliderProps {\n value: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { value, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n value={value}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => setValueCommit?.(valueCommit)}\n onValueChange={(valueChange: number[]) => setValueChange?.(valueChange)}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {!value[1] ? null : (\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\nimport { LoadingDots, 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 scrollElement?: Element | (Window & typeof globalThis) | undefined;\n useVirtualized?: boolean;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle, useVirtualized }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any; useVirtualized: boolean }) => {\n const { index, key = '', style = {}, isScrolling = false, isVisible = false } = 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} style={style}>\n {!useVirtualized ? content : !isVisible && isScrolling ? <LoadingDots /> : content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, scrollElement, useVirtualized = false }: 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 {...(scrollElement && {\n scrollElement\n })}\n rowCount={items?.length}\n rowHeight={36}\n rowRenderer={({ index, key, style, isScrolling, isVisible }) =>\n rowRenderer({\n virtualized: {\n index,\n key,\n style,\n isScrolling,\n isVisible\n },\n item: items[index],\n id,\n labelStyle,\n useVirtualized\n })\n }\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 useVirtualized\n })\n )\n )}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","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 { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import { 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 const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { 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) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const 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 ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = () => {\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeCounterInitSelector();\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\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <div ref={rootRef}>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeCounterInitSelector();\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const previousState: any = usePrevious({ productId });\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppProductReview || !hasEntry) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, hasEntry, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n ref={rootRef}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId, isRenderAppProductReview]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n generalDataSettings?: any;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists,\n generalDataSettings\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n 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 { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <div style={display_price_style}>{shopifyFormatMoney(price * 100, money_format)}</div>\n {isOnSale && <div className=\"sledge__product-grid-card-compare-at-price\">{shopifyFormatMoney(compare_at_price * 100, money_format)}</div>}\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n handleSettings();\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n {/* TODO: Change the class 'is-active' for avoid the class global, maybe change to 'sledge__carousel-viewport-active' */}\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 { Index, ListRowRenderer, List, WindowScroller } from 'react-virtualized';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined;\n rowCount: number;\n rowHeight: number | ((params: Index) => number);\n rowRenderer: ListRowRenderer;\n minHeight?: number;\n}\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowHeight, rowRenderer, minHeight = 72 }: IVirtualizedListProps) => {\n return (\n <WindowScroller\n {...(scrollElement && {\n scrollElement\n })}\n >\n {({ width, height, isScrolling, onChildScroll, scrollTop }) => (\n <List\n autoHeight\n height={height || minHeight}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n scrollTop={scrollTop}\n width={width}\n rowCount={rowCount}\n rowHeight={rowHeight}\n rowRenderer={rowRenderer}\n />\n )}\n </WindowScroller>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n separator: string;\n separatorCollection: string;\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n}\n\nexport const hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({ clickedFacetsObject, separator, separatorCollection }: { clickedFacetsObject: any; separator: string; separatorCollection: string }) => {\n let facetHierarchical = hierarchicalFacetAliases.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = facet[0] === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({ facets, facetsQueryStringObject, callback, additional = [], separator, separatorCollection }: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = ['variants.price'].includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = indexValue === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hiddensProp?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n\n // Hide item tree\n if (isWhenSelectedHideSiblings || isHidden) continue;\n\n if (level > 0) {\n parent = hierarchicalFacets;\n\n for (let i = 0; i < names.length - 1; i++) {\n let foundIndex = parent?.findIndex((f: any) => f.name.trim().toLowerCase() === names[i].trim().toLowerCase());\n\n parent = parent?.[foundIndex]?.children;\n }\n\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level: 0,\n children: []\n });\n }\n }\n\n return hierarchicalFacets;\n};\n\nexport const handleConditionNotUpdateFacetDistribution = ({ value, clickedFacets }: { value: any; clickedFacets: any }) => {\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n }\n });\n\n let arrPriorityFacet = ['vendor'];\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = arrFacetSelected.includes('variants.price');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Checkbox, ChevronArrowDownIcon, ColorSwatch, LoadingDots, RadioGroup, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleConditionNotUpdateFacetDistribution } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT } from '@core/lib/const';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; items: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings\n } = props;\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { colors: colorSwatches, languages: languageSettings } = displaySettings || {};\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, items } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n if (!item) continue;\n\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution({\n value: getValue,\n clickedFacets\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: aliases[labelName] || labelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any } => {\n const arrFacetValues = isDisplaySlider ? facetItems : handleFacetValues(facetItems);\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[value] || 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 };\n };\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: items\n });\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 [value]: (old[value] || 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, style, isScrolling, isVisible } = virtualized || {};\n\n return handleFacetValues(virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues)?.map((facetValue: any) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content =\n !isVisible && isScrolling ? (\n <LoadingDots />\n ) : (\n <Checkbox\n id={`${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n );\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 style={style}\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(`#filter-component-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`);\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowHeight={36}\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={value}\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 {...(scrollElement && {\n scrollElement\n })}\n useVirtualized\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return blockComponent;\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid,\n Progress,\n FlyoutSidebar\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { 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 OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement, stringToSlug } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, hierarchicalFacetAliases } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent } 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 clickedOpenFilterId?: string | number | null | '';\n setClickedOpenFilterId?(value: React.SetStateAction<string | number | null | ''>): void;\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value));\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return newItems;\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value\n };\n });\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) setAllowedFilter(valueAllowedFilter);\n }\n\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const { allowed_sorts, default_sort, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages, hierarchical_product_type, hierarchical_collections } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\n : collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n setIsLoadingSetting(false);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n useEffectCallback(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterId,\n setClickedOpenFilterId\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 clickedOpenFilterId,\n setClickedOpenFilterId,\n isFirstLoading\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>(allowedFilter?.length ? allowedFilter.map(({ value }: any) => value) : []);\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 [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const { separator: hierarchical_collections_separator, hiddens: hierarchical_collections_hiddens } = hierarchicalCollectionsSettings || {};\n const { button_load_more, button_loading } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId?.(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n 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 };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n 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 setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n 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 },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null]\n });\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter?.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n else valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n if (name === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n if (name === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {aliases[value] || valueText}\n </span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const filterSettings = (filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n }): { isActive: boolean; isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n if (display.toLowerCase() === 'slider') {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterPriceChange[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 = () => (\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 handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\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 { isActive, 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 = allowedFilter?.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings(filter);\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={`filter-component-${stringToSlug(value)}`} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent()}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter?.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings(filter);\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId?.(value)}\n className={`${isLastIndex ? (allowedFilter?.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent()}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId?.(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter?.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n const searchInputFieldComponent = (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n );\n\n const FilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n {language_filter || 'Filter'}\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent}\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?.filter((item) => item)?.length ? filterVerticalComponents : 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}</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 </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">\n <FilterLayoutOnMobile />\n </div>\n\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n handleSearchResult();\n }, [debouncedKeyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\n\nexport function useIsFirstRender() {\n const renderRef = React.useRef(true);\n\n if (renderRef.current === true) {\n renderRef.current = false;\n return true;\n }\n\n return renderRef.current;\n}\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget} ref={searchIconWidgetRef}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_COUNTER","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","error","getData","usePrevious","value","ref","React","useRef","useEffect","current","useIntersectionObserver","threshold","root","rootMargin","entry","setEntry","useState","previousObserver","useCallback","node","disconnect","nodeType","Node","ELEMENT_NODE","observer","IntersectionObserver","observe","useEffectCallback","callback","dependencies","memoizedCallback","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","SliderElement.Thumb","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","rowRenderer","virtualized","useVirtualized","index","isScrolling","isVisible","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","LoadingDots","RadioGroup","defaultValue","items","scrollElement","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","rowHeight","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","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","BadgeCounterInitSelector","Array","from","querySelectorAll","remove","elementContainerWidget","createElement","setAttribute","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","productId","productVariantId","defaultColorIcon","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","colorIcon","setColorIcon","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","hasEntry","setHasEntry","rootRef","rootEntry","global","show","show_notification","location","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","languages","alert_login","alert","login_button","_e","widget","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","Boolean","checkWishlist","handleClick","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","onMouseEnter","onMouseLeave","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","isOnSale","money_format","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","position","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","main_color","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","FlyoutSidebar","visibility","left","minHeight","WindowScroller","onChildScroll","scrollTop","List","autoHeight","onScroll","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","hierarchicalFacetAliases","hierarchicalFacetAlias","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","FacetComponent","displaySettings","searchFacetDistribution","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","separatedFilterItem","setSeparatedFilterItem","settings","aliases","productTypeAliases","collectionAliases","button_load_more","colorSwatches","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","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","isDisplaySlider","handleFacetValues","facetValues","items2","isFacetHierarchical","labelName","getValue","level","counter","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","sliced","loadMoreComponent","old","handleFacetCheckbox","facetValue","itemValue","isHasChildren","isChecked","blockComponentChildren","parentId","defaultValueMin","defaultValueMax","force","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","layoutType","isFirstRender","renderRef","useIsFirstRender","querySortBy","sortBy","collectionId","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilter","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","setClickedFacets","clickedOpenFilterId","setClickedOpenFilterId","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_k","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","find","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","attributesToRetrieve","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","allowedFilters","enable_on_search","valueAllowedFilter","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_l","_m","layout","filterVerticalSkeleton","_n","_o","flexWrap","alignItems","maxWidth","productGridSkeleton","_p","show_total_products","_q","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_r","_s","mobileFilterWithSearchAndSelectOptionSkeleton","_t","_u","containerStyle","ResultCategory","handleChangeTabIndex","_v","_w","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","clickedOpenFilters","setClickedOpenFilters","triggerClickedFacets","setTriggerClickedFacets","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","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","handleQueryStringFilter","valueClickedFacets","otherQueryStringObject","valueClickedFacetsKey","newQueryString","handleFilterReset","isHierarchical","startsWith","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","isKeywordChanged","delayDebounceFn","dataClickedFacets","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","filterSettings","indexFilter","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","findIndex","trim","createHierarchicalFacet","isRender","defaultItemSlider","classesUlElement","getFacetComponent","isLastIndex","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","valueClickedOpenFilters","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","FilterLayoutOnMobile","mobile_layout","_x","allowed_limit","_z","_y","_A","_B","_C","_D","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","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}
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/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useIsFirstRender.ts","../../../core/hooks/useDebounce.ts","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options',\n TRIGGER_BADGE: 'data-trigger-badge'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product',\n WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge-counter\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share',\n SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n 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';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) =>\n text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n\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","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => {\n if (valueProgress) setProgress(valueProgress);\n }, delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\n\nexport interface ISliderProps {\n value: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { value, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n value={value}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => setValueCommit?.(valueCommit)}\n onValueChange={(valueChange: number[]) => setValueChange?.(valueChange)}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {!value[1] ? null : (\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\nimport { VirtualizedList } from '@core/components';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n scrollElement?: Element | (Window & typeof globalThis) | undefined;\n useVirtualized?: boolean;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle, useVirtualized }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any; useVirtualized: boolean }) => {\n const { index, key = '', style = {} } = 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} style={style}>\n {content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, scrollElement, useVirtualized = false }: 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 {...(scrollElement && {\n scrollElement\n })}\n rowCount={items?.length}\n rowHeight={36}\n rowRenderer={({ index, key, style }) =>\n rowRenderer({\n virtualized: {\n index,\n key,\n style\n },\n item: items[index],\n id,\n labelStyle,\n useVirtualized\n })\n }\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 useVirtualized\n })\n )\n )}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","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 { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import { 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 const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { 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) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const defaultTotalWishlist = isJsVersion ? localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || null : null;\n\n return <>{isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}</>;\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\nimport { wishlistInfo } from './utils';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [data, setData] = React.useState<any>({});\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist, proxyUrl: valueProxyUrl, data: valueData }) => {\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setData(valueData);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component=\"wishlist-badge-counter\"\n >\n <div data-component=\"container-widget\">\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = () => {\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n triggerBadge?: 'default' | 'rerender';\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default' } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist, hasEntry]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, hasEntry, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <div ref={rootRef}>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n triggerBadge?: 'default' | 'rerender';\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading, triggerBadge }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector();\n } else {\n BadgeCounterInitSelector();\n }\n }\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(false);\n\n const previousState: any = usePrevious({ productId });\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppProductReview || !hasEntry) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, hasEntry, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n ref={rootRef}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId, isRenderAppProductReview]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n generalDataSettings?: any;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists,\n generalDataSettings\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n 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 { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <div style={display_price_style}>{shopifyFormatMoney(price * 100, money_format)}</div>\n {isOnSale && <div className=\"sledge__product-grid-card-compare-at-price\">{shopifyFormatMoney(compare_at_price * 100, money_format)}</div>}\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n handleSettings();\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n {/* TODO: Change the class 'is-active' for avoid the class global, maybe change to 'sledge__carousel-viewport-active' */}\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 { Index, ListRowRenderer, List, WindowScroller } from 'react-virtualized';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined;\n rowCount: number;\n rowHeight: number | ((params: Index) => number);\n rowRenderer: ListRowRenderer;\n minHeight?: number;\n}\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowHeight, rowRenderer, minHeight = 72 }: IVirtualizedListProps) => {\n return (\n <WindowScroller\n {...(scrollElement && {\n scrollElement\n })}\n >\n {({ width, height, isScrolling, onChildScroll, scrollTop }) => (\n <List\n autoHeight\n height={height || minHeight}\n isScrolling={isScrolling}\n onScroll={onChildScroll}\n scrollTop={scrollTop}\n width={width}\n rowCount={rowCount}\n rowHeight={rowHeight}\n rowRenderer={rowRenderer}\n />\n )}\n </WindowScroller>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n separator: string;\n separatorCollection: string;\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n}\n\nexport const hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({ clickedFacetsObject, separator, separatorCollection }: { clickedFacetsObject: any; separator: string; separatorCollection: string }) => {\n let facetHierarchical = hierarchicalFacetAliases.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = facet[0] === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({ facets, facetsQueryStringObject, callback, additional = [], separator, separatorCollection }: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = ['variants.price'].includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const isCollection = indexValue === HIERARCHICAL_FACET_OBJECT_ALIASES.collections;\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n const isHidden = hiddensProp?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n\n // Hide item tree\n if (isWhenSelectedHideSiblings || isHidden) continue;\n\n if (level > 0) {\n parent = hierarchicalFacets;\n\n for (let i = 0; i < names.length - 1; i++) {\n let foundIndex = parent?.findIndex((f: any) => f.name.trim().toLowerCase() === names[i].trim().toLowerCase());\n\n parent = parent?.[foundIndex]?.children;\n }\n\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name: names[names.length - 1].trim(),\n level: 0,\n children: []\n });\n }\n }\n\n return hierarchicalFacets;\n};\n\nexport const handleConditionNotUpdateFacetDistribution = ({ value, clickedFacets }: { value: any; clickedFacets: any }) => {\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n }\n });\n\n let arrPriorityFacet = ['vendor'];\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = arrFacetSelected.includes('variants.price');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Checkbox, ChevronArrowDownIcon, ColorSwatch, LoadingDots, RadioGroup, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleConditionNotUpdateFacetDistribution } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT } from '@core/lib/const';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; items: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings\n } = props;\n\n let aliases: any = {};\n if (filter.value === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n if (filter.value === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { colors: colorSwatches, languages: languageSettings } = displaySettings || {};\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, items } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n const isDisplaySlider = display.toLowerCase() === 'slider';\n\n // Update array facets with counter\n const handleFacetValues = (items: any): any => {\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n if (!item) continue;\n\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution({\n value: getValue,\n clickedFacets\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: aliases[labelName] || labelName,\n counter\n });\n }\n\n return facetValues;\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any } => {\n const arrFacetValues = isDisplaySlider ? facetItems : handleFacetValues(facetItems);\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[value] || 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 };\n };\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: items\n });\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 [value]: (old[value] || 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, style } = virtualized || {};\n\n return handleFacetValues(virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues)?.map((facetValue: any) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content = (\n <Checkbox\n id={`${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n );\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 style={style}\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(`#filter-component-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`);\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowHeight={36}\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={value}\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 {...(scrollElement && {\n scrollElement\n })}\n useVirtualized\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return blockComponent;\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid,\n Progress,\n FlyoutSidebar\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { 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 OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement, stringToSlug } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, hierarchicalFacetAliases } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent } 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 clickedOpenFilterId?: string | number | null | '';\n setClickedOpenFilterId?(value: React.SetStateAction<string | number | null | ''>): void;\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value));\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return newItems;\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value\n };\n });\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) setAllowedFilter(valueAllowedFilter);\n }\n\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const { allowed_sorts, default_sort, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages, hierarchical_product_type, hierarchical_collections } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\n : collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n setIsLoadingSetting(false);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n useEffectCallback(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterId,\n setClickedOpenFilterId\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 clickedOpenFilterId,\n setClickedOpenFilterId,\n isFirstLoading\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>(allowedFilter?.length ? allowedFilter.map(({ value }: any) => value) : []);\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 [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const { separator: hierarchical_collections_separator, hiddens: hierarchical_collections_hiddens } = hierarchicalCollectionsSettings || {};\n const { button_load_more, button_loading } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId?.(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n 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 };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n 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 setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n 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 },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null]\n });\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter?.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n else valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n if (name === 'hierarchicalCollections') aliases = settings.collectionAliases || {};\n if (name === 'hierarchicalProductType') aliases = settings.productTypeAliases || {};\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {aliases[value] || valueText}\n </span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const filterSettings = (filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n }): { isActive: boolean; isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n if (display.toLowerCase() === 'slider') {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterPriceChange[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 = () => (\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 handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\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 { isActive, 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 = allowedFilter?.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings(filter);\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={`filter-component-${stringToSlug(value)}`} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent()}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter?.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings(filter);\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId?.(value)}\n className={`${isLastIndex ? (allowedFilter?.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent()}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId?.(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter?.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n const searchInputFieldComponent = (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n );\n\n const FilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n {language_filter || 'Filter'}\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent}\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?.filter((item) => item)?.length ? filterVerticalComponents : 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}</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 </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">\n <FilterLayoutOnMobile />\n </div>\n\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n handleSearchResult();\n }, [debouncedKeyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\n\nexport function useIsFirstRender() {\n const renderRef = React.useRef(true);\n\n if (renderRef.current === true) {\n renderRef.current = false;\n return true;\n }\n\n return renderRef.current;\n}\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget} ref={searchIconWidgetRef}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","TRIGGER_BADGE","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_COUNTER","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","error","getData","usePrevious","value","ref","React","useRef","useEffect","current","useIntersectionObserver","threshold","root","rootMargin","entry","setEntry","useState","previousObserver","useCallback","node","disconnect","nodeType","Node","ELEMENT_NODE","observer","IntersectionObserver","observe","useEffectCallback","callback","dependencies","memoizedCallback","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","SliderElement.Thumb","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","rowRenderer","virtualized","useVirtualized","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","RadioGroup","defaultValue","items","scrollElement","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","rowHeight","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","wishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","_b","total_data","totalWishlist","proxyUrl","BadgeCounter","propsData","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","isJsVersion","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","setTotalWishlist","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","handleGetWishlistInfo","setItem","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","launch_point","defaultTotalWishlist","Badge","useProxyUrl","position","positionProp","defaultColorIcon","colorIcon","setColorIcon","setProxyUrl","proxy_url","setData","floating_button_type","alert_login","alert","login_button","languages","widget","defaultPosition","valueData","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeCounterInitSelector","Array","from","querySelectorAll","remove","elementContainerWidget","createElement","setAttribute","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","triggerBadge","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","hasEntry","setHasEntry","rootRef","rootEntry","global","show","show_notification","location_notification","_c","notification","title_added_to_wishlist","text_added_to_wishlist","title_removed_to_wishlist","text_removed_to_wishlist","title_fail_add_to_wishlist","text_fail_add_to_wishlist","_d","_e","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","isOnSale","money_format","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","main_color","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","FlyoutSidebar","visibility","left","minHeight","WindowScroller","isScrolling","onChildScroll","scrollTop","List","autoHeight","onScroll","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","hierarchicalFacetAliases","hierarchicalFacetAlias","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","facet","isCollection","arrItem","createQueryFilter","facets","facetsQueryStringObject","additional","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","Set","handleConditionNotUpdateFacetDistribution","clickedFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","FacetComponent","displaySettings","searchFacetDistribution","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","separatedFilterItem","setSeparatedFilterItem","settings","aliases","productTypeAliases","collectionAliases","button_load_more","colorSwatches","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","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isHideFacetWhenZeroValue","hide_when_zero_value","isDisplaySlider","handleFacetValues","facetValues","items2","isFacetHierarchical","labelName","getValue","level","counter","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","sliced","loadMoreComponent","old","handleFacetCheckbox","facetValue","itemValue","isHasChildren","isChecked","blockComponentChildren","parentId","defaultValueMin","defaultValueMax","force","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","layoutType","isFirstRender","renderRef","useIsFirstRender","querySortBy","sortBy","collectionId","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilter","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","setClickedFacets","clickedOpenFilterId","setClickedOpenFilterId","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_k","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","find","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","attributesToRetrieve","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","allowedFilters","enable_on_search","valueAllowedFilter","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_l","_m","layout","filterVerticalSkeleton","_n","_o","flexWrap","alignItems","maxWidth","productGridSkeleton","_p","show_total_products","_q","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_r","_s","mobileFilterWithSearchAndSelectOptionSkeleton","_t","_u","containerStyle","ResultCategory","handleChangeTabIndex","_v","_w","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","clickedOpenFilters","setClickedOpenFilters","triggerClickedFacets","setTriggerClickedFacets","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","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","handleQueryStringFilter","valueClickedFacets","otherQueryStringObject","valueClickedFacetsKey","newQueryString","handleFilterReset","isHierarchical","startsWith","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","prevState","handleSearchResultData","isKeywordChanged","delayDebounceFn","dataClickedFacets","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","filterSettings","indexFilter","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","findIndex","trim","createHierarchicalFacet","isRender","defaultItemSlider","classesUlElement","getFacetComponent","isLastIndex","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","valueClickedOpenFilters","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","FilterLayoutOnMobile","mobile_layout","_x","allowed_limit","_z","_y","_A","_B","_C","_D","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","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}