@sledge-app/react-instant-search 1.0.118 → 1.0.119
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/hooks/useIsFirstRender.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/hooks/useEffectOnChange.ts","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Icons/FilterIcon/FilterIcon.tsx","../../../core/components/Icons/InfoCircleIcon/InfoCircleIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../../core/lib/polyfills.ts","../../../core/api/shopify.ts","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/components/InputField/InputField.tsx","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../../../core/components/Alert/Alert.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useDebounce.ts","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options',\n TRIGGER_BADGE: 'data-trigger-badge'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n QUERY_KEYWORD: 'data-query-keyword',\n QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product',\n WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup',\n ELEMENT_BADGE_COUNTER: 'wishlist-badge-counter'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const CUSTOM_EVENT_NAMES = {\n AFTER_ADD_WISHLIST: 'after-add-wishlist',\n AFTER_REMOVE_WISHLIST: 'after-remove-wishlist',\n AFTER_ADD_TO_CART: 'after-add-to-cart',\n AFTER_ADD_REVIEW: 'after-add-review',\n AFTER_RENDER_PRODUCT: 'after-render-product',\n AFTER_RENDER_COLLECTION: 'after-render-collection',\n AFTER_RENDER_PAGE: 'after-render-page',\n AFTER_RENDER_BLOG: 'after-render-blog',\n AFTER_RENDER_ARTICLE: 'after-render-article'\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share',\n SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n TOTAL_FILTER_ITEM: '{{ total_filter_item }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}',\n FILTER_TITLE: '{{ filter_title }}',\n PRICE_MAX_MONEY_FORMAT: '{{ price_max_money_format }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H',\n shopifyUrl: 'NmIxMTNlYTVlM'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\nexport const SEPARATOR_HIERARCHICAL_FACET = '---5L3D9E---';\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 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 { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\nimport { ISledgeProps } from '@core/api/global';\n\ndeclare global {\n interface Window {\n // TODO: Soon `sledgeCommonModule` is deprecated\n sledgeCommonModule: ISledgeProps;\n sledge: ISledgeProps;\n Shopify: any;\n }\n}\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xl' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xl';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) => {\n if (!text) return text;\n\n return text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n};\n\nexport const shopifyFormatMoney = (cents: any, format: string) => {\n if (typeof cents == 'string') {\n cents = cents.replace('.', '');\n }\n\n var value = '';\n var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n var formatString: string = format || '${{amount}}';\n\n function defaultOption(opt: any, def: any) {\n return typeof opt == 'undefined' ? def : opt;\n }\n\n function formatWithDelimiters(number: any, precision: any, thousands?: any, decimal?: any) {\n precision = defaultOption(precision, 2);\n thousands = defaultOption(thousands, ',');\n decimal = defaultOption(decimal, '.');\n\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n var parts = number.split('.'),\n dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\n cents = parts[1] ? decimal + parts[1] : '';\n\n return dollars + cents;\n }\n\n switch (formatString.match(placeholderRegex)?.[1]) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return formatString.replace(placeholderRegex, value);\n};\n\nexport const selectedLocaleJs = () => {\n if (typeof window !== 'undefined') {\n const shopifyLocale = window?.Shopify?.locale;\n const sledgeLocale = window?.sledgeCommonModule?.config?.locale || window?.sledge?.config?.locale;\n\n return shopifyLocale ? shopifyLocale : sledgeLocale || '';\n }\n\n return '';\n};\n\nexport const sledgeConfigJs = () => {\n let sledgeConfig: ISledgeProps['config'] = {};\n\n if (typeof window !== 'undefined') {\n sledgeConfig = window?.sledgeCommonModule?.config || window?.sledge?.config;\n\n return sledgeConfig || {};\n }\n\n return sledgeConfig;\n};\n\nexport const dispatchCustomEvent = (eventName: string, detail?: any): void => {\n const customEvent = new CustomEvent(eventName, { bubbles: true, cancelable: true, composed: false, ...(detail && { detail }) });\n\n document.dispatchEvent(customEvent);\n};\n\nexport const listenerCustomEvent = (eventName: string, listener: (event: CustomEvent) => void, method: 'on' | 'off'): void => {\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n document[domMethod](eventName, (event: Event) => {\n if (event instanceof CustomEvent) {\n listener(event);\n }\n });\n};\n\nexport const addCustomCode = ({ type, code }: { type: 'js' | 'css'; code: any }) => {\n var customCodeElement = document.createElement(type === 'js' ? 'script' : 'style');\n\n try {\n customCodeElement.appendChild(document.createTextNode(code));\n } catch (e) {\n customCodeElement.innerHTML = code;\n }\n\n document[type === 'js' ? 'body' : 'head'].appendChild(customCodeElement);\n};\n\nexport const setElementAttribute = ({ element, attributeName, value }: { element: HTMLElement | null; attributeName: string; value: string }) => {\n if (element && element.hasAttribute(attributeName)) {\n element.setAttribute(attributeName, value);\n }\n};\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => {\n if (valueProgress) setProgress(valueProgress);\n }, delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"sledge__progress-indicator ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { InputField, Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\nimport * as Form from '@radix-ui/react-form';\nimport { useEffectOnChange } from '@core/hooks';\n\nexport interface ISliderProps {\n type?: 'slider' | 'input_range' | 'slider_with_input_range' | string;\n prefixInputRange?: string;\n descriptionInputRange?: string;\n valueFilterSliderChange?: any[];\n labelStyle?: any;\n value: number[];\n textValue?: any[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n wrapperClassName?: string;\n minMaxClassName?: string;\n minMaxTextClassName?: string;\n}\n\n// Formatting decimal value with 2 number\nconst inputRangeFormatter = (value: any) => {\n const cleanValue = String(value)?.replace?.(/[^0-9.]/g, '');\n const numValue = parseFloat(cleanValue);\n\n if (isNaN(numValue)) return value;\n\n if (Number.isInteger(numValue)) return numValue.toString();\n\n const [integerPart, decimalPart] = cleanValue.split('.');\n const formattedDecimal = (decimalPart || '').slice(0, 2).padEnd(2, '0');\n\n return `${integerPart}.${formattedDecimal}`;\n};\n\nexport const Slider = (props: ISliderProps) => {\n const {\n type = 'slider',\n prefixInputRange = '',\n descriptionInputRange = '',\n valueFilterSliderChange = [],\n labelStyle = {},\n value,\n textValue = [],\n min,\n max,\n step = 1,\n setValueCommit,\n setValueChange,\n wrapperClassName = '',\n minMaxClassName = '',\n minMaxTextClassName = ''\n } = props;\n\n const [inputRangeMin, setInputRangeMin] = React.useState(inputRangeFormatter(value?.[0]));\n const [inputRangeMax, setInputRangeMax] = React.useState(inputRangeFormatter(value?.[1] || value?.[0]));\n\n const delayInputRangeRef = React.useRef<any>(null);\n\n let content: any = textValue?.length ? textValue : value;\n\n const hasMaxValue = value?.length && value?.[1];\n const FormWrapper = String(type)?.includes('input_range') ? Form.Root : React.Fragment;\n const isTypeInputRange = type === 'input_range';\n const isTypeIncludeSlider = String(type)?.includes('slider');\n const isTypeIncludeInputRange = String(type)?.includes('input_range');\n\n const handleChangeInputRange = ({ event, type }: { event: React.ChangeEvent<HTMLInputElement>; type: 'min' | 'max' }) => {\n let valueInput: any = event?.target?.value;\n\n // Allowed number only\n if (!Number(valueInput) && Number(valueInput) !== 0) return;\n\n let valueCommit: number[] = type === 'min' ? [valueInput || 0, value?.[1] || value?.[0]] : [value?.[0], valueInput || 0];\n\n if (type === 'min') {\n setInputRangeMin(valueInput);\n } else {\n setInputRangeMax(valueInput);\n }\n\n if (delayInputRangeRef.current) {\n clearTimeout(delayInputRangeRef.current);\n }\n\n delayInputRangeRef.current = setTimeout(() => {\n const lastValueMin = valueCommit?.[0];\n const lastValueMax = valueCommit?.[1] || lastValueMin;\n const valueInputRange = inputRangeFormatter(type === 'min' ? lastValueMax : lastValueMin);\n const valueCommitFiltered = [valueInputRange, valueInputRange];\n\n valueInput = inputRangeFormatter(valueInput);\n valueCommit = [inputRangeFormatter(valueCommit[0]), inputRangeFormatter(valueCommit[1])];\n\n let filterValueMinOrMax = false;\n if (type === 'min') {\n filterValueMinOrMax = Number(valueInput) > Number(lastValueMax);\n } else {\n filterValueMinOrMax = Number(valueInput) < Number(lastValueMin);\n }\n\n // Filtering input range value when hit before min or after max\n if (filterValueMinOrMax) {\n setInputRangeMin(valueInputRange);\n setInputRangeMax(valueInputRange);\n\n setValueChange?.(valueCommitFiltered);\n setValueCommit?.(valueCommitFiltered);\n } else {\n if (type === 'min') {\n setInputRangeMin(valueInput);\n } else {\n setInputRangeMax(valueInput);\n }\n\n setValueChange?.(valueCommit);\n setValueCommit?.(valueCommit);\n }\n }, 500);\n };\n\n // Detect reset value for input range\n useEffectOnChange(() => {\n if (isTypeIncludeInputRange && !valueFilterSliderChange?.length) {\n setInputRangeMin(inputRangeFormatter(value?.[0]));\n setInputRangeMax(inputRangeFormatter(value?.[1] || value?.[0]));\n }\n }, [valueFilterSliderChange]);\n\n return (\n <div className={`sledge__slider-wrapper ${wrapperClassName}`} data-slider-type={type}>\n <FormWrapper>\n {isTypeIncludeInputRange ? (\n <>\n {isTypeInputRange && descriptionInputRange ? (\n <div className=\"sledge__slider-input-range-description\" style={labelStyle}>\n {descriptionInputRange}\n </div>\n ) : null}\n\n <div className=\"sledge__slider-input-range-wrapper\">\n {isTypeInputRange && prefixInputRange ? (\n <div className=\"sledge__slider-input-range-prefix\" style={labelStyle}>\n {prefixInputRange}\n </div>\n ) : null}\n <InputField\n className=\"sledge__slider-input-range-minmax\"\n type=\"text\"\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChangeInputRange({ event, type: 'min' })}\n value={inputRangeMin}\n style={labelStyle}\n />\n <span className=\"sledge__slider-input-range-minmax-separator\">-</span>\n <InputField\n className=\"sledge__slider-input-range-minmax\"\n type=\"text\"\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChangeInputRange({ event, type: 'max' })}\n value={inputRangeMax}\n style={labelStyle}\n />\n </div>\n </>\n ) : null}\n {isTypeIncludeSlider ? (\n <>\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[]) => {\n setValueChange?.(valueChange);\n if (isTypeIncludeInputRange) {\n setInputRangeMin(inputRangeFormatter(valueChange?.[0]));\n setInputRangeMax(inputRangeFormatter(valueChange?.[1] || valueChange?.[0]));\n }\n }}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n {...(textValue?.length\n ? {\n innerHTMLContent: content[0]\n }\n : {\n content: content[0]\n })}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {hasMaxValue ? (\n <Tooltip\n {...(textValue?.length\n ? {\n innerHTMLContent: content[1]\n }\n : {\n content: content[1]\n })}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n ) : null}\n </SliderElement.Root>\n </form>\n <div className={`sledge__slider-minmax ${minMaxClassName}`}>\n <div className={`sledge__slider-minmax-text ${minMaxTextClassName}`} dangerouslySetInnerHTML={{ __html: content[0] }}></div>\n {hasMaxValue ? <div className={`sledge__slider-minmax-text ${minMaxTextClassName}`} dangerouslySetInnerHTML={{ __html: content[1] }}></div> : null}\n </div>\n </>\n ) : null}\n </FormWrapper>\n </div>\n );\n};\n","import { useIsFirstRender } from './useIsFirstRender';\nimport useEffectCallback from './useEffectCallback';\n\nexport function useEffectOnChange(callback: Function, dependencies: any) {\n const isFirstRender = useIsFirstRender();\n\n useEffectCallback(() => {\n if (isFirstRender) return;\n\n callback();\n }, dependencies);\n}\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\nimport { VirtualizedList } from '@core/components';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n useVirtualized?: boolean;\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n selector?: string;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any }) => {\n const { index, key = '' } = virtualized || {};\n\n const { label, value } = item;\n\n const content = (\n <>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </>\n );\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={key || index}>\n {content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, useVirtualized = false, scrollElement, selector }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {useVirtualized ? (\n <VirtualizedList\n rowCount={items?.length}\n rowRenderer={({ index, key }) =>\n rowRenderer({\n virtualized: {\n index,\n key\n },\n item: items[index],\n id,\n labelStyle\n })\n }\n scrollElement={scrollElement}\n selector={selector}\n />\n ) : (\n items.map((item: { label: string; value: string }, index: number) =>\n rowRenderer({\n virtualized: {\n index\n },\n item,\n id,\n labelStyle\n })\n )\n )}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport { Tooltip } from '@core/components';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n checked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, checked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <Tooltip\n content={value}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n checked={checked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n </Tooltip>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n const [isLoading, setIsLoading] = React.useState(true);\n\n React.useEffect(() => {\n // Trigger Re-render on defaultValue change\n setIsLoading(true);\n setTimeout(() => {\n setIsLoading(false);\n }, 0);\n }, [defaultValue]);\n\n const handleClassNameRoot = (open: boolean) => {\n if (!open) return;\n\n const selectContentElement = document.querySelector('.sledge__select-content');\n if (selectContentElement) {\n const selectRootElement = selectContentElement.parentElement;\n if (selectRootElement) selectRootElement.classList.toggle('sledge__select-root');\n }\n };\n\n return (\n <>\n {isLoading ? null : (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root\n name={name}\n required={required}\n onValueChange={onValueChange}\n onOpenChange={(open) => handleClassNameRoot(open)}\n {...(defaultValue\n ? {\n defaultValue\n }\n : {})}\n >\n <SelectElement.Trigger className=\"sledge__select-trigger\" style={labelStyle}>\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal className=\"sledge__select-portal\">\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n )}\n </>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","export interface IFilterIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const FilterIcon = ({ width, height, color }: IFilterIcon) => {\n return (\n <span className=\"sledge-icon__filter\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M22 6.5H16\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6 6.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M10 10C11.933 10 13.5 8.433 13.5 6.5C13.5 4.567 11.933 3 10 3C8.067 3 6.5 4.567 6.5 6.5C6.5 8.433 8.067 10 10 10Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M22 17.5H18\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M8 17.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M14 21C15.933 21 17.5 19.433 17.5 17.5C17.5 15.567 15.933 14 14 14C12.067 14 10.5 15.567 10.5 17.5C10.5 19.433 12.067 21 14 21Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n );\n};\n","export interface IInfoCircleIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const InfoCircleIcon = ({ width, height, color }: IInfoCircleIcon) => {\n return (\n <span className=\"sledge-icon__info-circle\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 2.00293C6.49 2.00293 2 6.49293 2 12.0029C2 17.5129 6.49 22.0029 12 22.0029C17.51 22.0029 22 17.5129 22 12.0029C22 6.49293 17.51 2.00293 12 2.00293ZM11.25 8.00293C11.25 7.59293 11.59 7.25293 12 7.25293C12.41 7.25293 12.75 7.59293 12.75 8.00293V13.0029C12.75 13.4129 12.41 13.7529 12 13.7529C11.59 13.7529 11.25 13.4129 11.25 13.0029V8.00293ZM12.92 16.3829C12.87 16.5129 12.8 16.6129 12.71 16.7129C12.61 16.8029 12.5 16.8729 12.38 16.9229C12.26 16.9729 12.13 17.0029 12 17.0029C11.87 17.0029 11.74 16.9729 11.62 16.9229C11.5 16.8729 11.39 16.8029 11.29 16.7129C11.2 16.6129 11.13 16.5129 11.08 16.3829C11.03 16.2629 11 16.1329 11 16.0029C11 15.8729 11.03 15.7429 11.08 15.6229C11.13 15.5029 11.2 15.3929 11.29 15.2929C11.39 15.2029 11.5 15.1329 11.62 15.0829C11.86 14.9829 12.14 14.9829 12.38 15.0829C12.5 15.1329 12.61 15.2029 12.71 15.2929C12.8 15.3929 12.87 15.5029 12.92 15.6229C12.97 15.7429 13 15.8729 13 16.0029C13 16.1329 12.97 16.2629 12.92 16.3829Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {value && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const {\n className = '',\n placeholder = null,\n overridePlaceholderOnMobile = null,\n prefixLabel = null,\n prefixSelectedLabel = '',\n align = 'end',\n onChange,\n value = '',\n options = [],\n LinkComponent,\n link\n } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n const selectedLabelComponent = <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n\n {overridePlaceholderOnMobile ? (\n <>\n <span className=\"sledge__hide-element-mobile-on-md\">{overridePlaceholderOnMobile}</span>\n <span className=\"sledge__hide-element-md-on-mobile\">{selectedLabelComponent}</span>\n </>\n ) : (\n selectedLabelComponent\n )}\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","interface ObjectConstructor {\n hasOwn(o: object, v: PropertyKey): boolean;\n}\n\nif (!Object.hasOwn) {\n Object.hasOwn = function (obj: object, prop: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n}\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL } from '@core/lib/const';\n\nexport const wishlistInfo = async ({ callback }: { callback(props: { totalWishlist: any; proxyUrl: any; data: any }): void }) => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run)\n callback({\n totalWishlist: valueTotalWishlist,\n proxyUrl: valueProxyUrl,\n data: response?.data\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n ...(query || {})\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n type?: 'add' | 'remove' | 'toggle';\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice, type = 'toggle' } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n }),\n type: type === 'toggle' ? '' : type\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { wishlistInfo } from './utils';\n\nexport interface IBadgeCounterProps {\n data?: any;\n}\n\nexport const BadgeCounter = (props: IBadgeCounterProps) => {\n const { data: propsData } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleGetWishlistInfo = async () => {\n if (!propsData || (propsData && !Object.keys(propsData).length)) {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist }) => {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setIsFirstLoading(false);\n setIsLoading(false);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n } else {\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, totalWishlist);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const defaultTotalWishlist = isJsVersion ? localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || null : null;\n\n return <>{isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}</>;\n};\n","import React from 'react';\nimport { INTERNAL_SELECTOR_VALUE, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\nimport { wishlistInfo } from './utils';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [data, setData] = React.useState<any>({});\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist, proxyUrl: valueProxyUrl, data: valueData }) => {\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setData(valueData);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE;\n\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\nimport { dispatchCustomEvent } from '@core/lib/helper';\nimport { IAddWishlistParams } from '@core/api/global';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: IAddWishlistParams;\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n triggerBadge?: 'default' | 'rerender';\n reload?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default', reload = false } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [mouseEnter, setMouseEnter] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(reload);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data } = resAddWishlist || {};\n const { code } = status || {};\n const { product } = data || {};\n\n let run = code === 200;\n\n dispatchCustomEvent(!isWishlist ? CUSTOM_EVENT_NAMES.AFTER_ADD_WISHLIST : CUSTOM_EVENT_NAMES.AFTER_REMOVE_WISHLIST, {\n state: run ? 'success' : 'failed',\n product\n });\n\n if (run) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\n }\n }\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist, hasEntry]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, hasEntry, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n const wishlistActive = isActive || mouseEnter;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <div ref={rootRef} className=\"sledge-wishlist__trigger-root\">\n {!isLoading && !hidden && (\n <div\n className=\"sledge-wishlist__trigger-block\"\n {...(wishlistActive && {\n ['wishlist-active']: ''\n })}\n >\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n setMouseEnter(true);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n setMouseEnter(false);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n triggerBadge?: 'default' | 'rerender';\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading, triggerBadge }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\n }\n }\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n reload?: boolean;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5,\n reload = false\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(reload);\n\n const previousState: any = usePrevious({ productId });\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppProductReview || !hasEntry) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, hasEntry, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n ref={rootRef}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId, isRenderAppProductReview]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport '@core/lib/polyfills';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { dispatchCustomEvent, setElementAttribute, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { useIntersectionObserver } from '@core/hooks';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n generalDataSettings?: any;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists,\n generalDataSettings\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n const defaultSelectedVariantInventoryManagement = variants?.length && Object.hasOwn(variants[0], 'inventory_management') ? variants[0].inventory_management : null;\n const defaultSelectedVariantInventoryPolicy = variants?.length && Object.hasOwn(variants[0], 'inventory_policy') ? variants[0].inventory_policy : '';\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n const [selectedVariantInventoryManagement, setSelectedVariantInventoryManagement] = React.useState(defaultSelectedVariantInventoryManagement);\n const [selectedVariantInventoryPolicy, setSelectedVariantInventoryPolicy] = React.useState(defaultSelectedVariantInventoryPolicy);\n const [hasEntryImage, setHasEntryImage] = React.useState(false);\n\n const [imageRef, imageEntry] = useIntersectionObserver({\n threshold: 0.1,\n root: null,\n rootMargin: '0px'\n });\n\n React.useEffect(() => {\n if (!hasEntryImage && imageEntry?.isIntersecting) setHasEntryImage(imageEntry?.isIntersecting);\n }, [imageEntry]);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = showOptionOutOfStock ? !Boolean(selectedVariantStock > 0 || selectedVariantInventoryManagement === null || selectedVariantInventoryPolicy === 'continue') : false;\n let isOnSale = parseFloat(String(compare_at_price)) ? parseFloat(String(compare_at_price)) > parseFloat(String(price)) : false;\n\n const { money_format } = generalDataSettings || {};\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants?.map((variant: any, index: number) => {\n const isInventoryQuantity = Object.hasOwn(variants[index], 'inventory_quantity') ? variants[index].inventory_quantity > 0 : false;\n const isInventoryManagement = Object.hasOwn(variants[index], 'inventory_management') ? variants[index].inventory_management === null : false;\n const isInventoryPolicy = Object.hasOwn(variants[index], 'inventory_policy') ? variants[index].inventory_policy === 'continue' : false;\n\n return {\n ...variant,\n is_out_of_stock: !Boolean(isInventoryQuantity || isInventoryManagement || isInventoryPolicy)\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n defaultSelected['data-inventory-management'] = variants[0].inventory_management;\n defaultSelected['data-inventory-policy'] = variants[0].inventory_policy;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n setElementAttribute({\n element: selectedInput,\n attributeName: `data-selected-option${optionIndex}`,\n value: value\n });\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${stringToSlug(selectedInput?.attributes?.['data-selected-option1']?.value)}\"]`;\n const option2 = `${selectedInput?.attributes?.['data-selected-option2'] ? `[data-option-2=\"${stringToSlug(selectedInput?.attributes?.['data-selected-option2']?.value)}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption?.attributes?.['data-graphql-id']?.value;\n const imageId = selectOption?.attributes?.['data-image-id']?.value;\n const inventoryQuantity = selectOption?.attributes?.['data-inventory-quantity']?.value;\n const inventoryManagement = selectOption?.attributes?.['data-inventory-management']?.value;\n const inventoryPolicy = selectOption?.attributes?.['data-inventory-policy']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-variant-id',\n value: selectOption?.attributes?.['data-graphql-id']?.value || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-quantity',\n value: inventoryQuantity || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-management',\n value: inventoryManagement || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-policy',\n value: inventoryPolicy || ''\n });\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n if (inventoryManagement) setSelectedVariantInventoryManagement(inventoryManagement);\n if (inventoryPolicy) setSelectedVariantInventoryPolicy(inventoryPolicy);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <div className=\"sledge__product-grid-card-featured-image-element\">\n <img\n ref={imageRef}\n {...(hasEntryImage\n ? {\n src: image?.src || `${CDN_URL}/images/blank-image.png`,\n ['loaded']: ''\n }\n : {\n ['data-src']: image?.src || `${CDN_URL}/images/blank-image.png`\n })}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <div style={display_price_style} dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(price * 100, money_format) }}></div>\n {isOnSale && (\n <div\n className=\"sledge__product-grid-card-compare-at-price\"\n dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(compare_at_price * 100, money_format) }}\n ></div>\n )}\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity, inventory_management, inventory_policy }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': stringToSlug(option1),\n 'data-option-2': stringToSlug(option2),\n 'data-inventory-quantity': inventory_quantity,\n 'data-inventory-management': inventory_management,\n 'data-inventory-policy': inventory_policy,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PRODUCT, {\n state: 'success'\n });\n\n onAfterRenderProduct && onAfterRenderProduct('success');\n handleSettings();\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type} data-custom-card={Boolean(props?.cards)}>\n {data?.map((item: any, index: number) => {\n return (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\n })}\n </Container>\n );\n};\n","import React from 'react';\n\nimport './InputField.css';\n\nimport * as Form from '@radix-ui/react-form';\n\nexport const InputField = (props: any) => {\n const { className = '', value = '', onChange, required, type, name = '', ...otherProps } = props;\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(e);\n };\n\n return (\n <div className={`sledge__input-field-wrapper ${className || ''}`}>\n <Form.Field className=\"FormField\" name={name}>\n <Form.Control asChild>\n <input\n className=\"sledge__input-field\"\n type={type}\n value={value}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleChangeField(e)}\n {...(required\n ? {\n required\n }\n : {})}\n {...otherProps}\n />\n </Form.Control>\n {required && (\n <Form.Message className=\"FormMessage\" match=\"valueMissing\">\n Required field\n </Form.Message>\n )}\n {type === 'email' && (\n <Form.Message className=\"FormMessage\" match=\"typeMismatch\">\n Please fill a valid email address\n </Form.Message>\n )}\n </Form.Field>\n </div>\n );\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_COLLECTION, {\n state: 'success'\n });\n\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PAGE, {\n state: 'success'\n });\n\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_BLOG, {\n state: 'success'\n });\n\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_ARTICLE, {\n state: 'success'\n });\n\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content?: React.ReactNode;\n innerHTMLContent?: string;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content = null, innerHTMLContent = '', withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n {innerHTMLContent && <div dangerouslySetInnerHTML={{ __html: innerHTMLContent }}></div>}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport './FlyoutSidebar.css';\nimport { CloseIcon } from '@core/components';\n\nexport interface IFlyoutSidebarProps {\n title: string;\n content: React.ReactNode;\n open: boolean;\n setOpen(value: React.SetStateAction<boolean>): void;\n}\n\nexport const FlyoutSidebar = ({ title, content, open, setOpen }: IFlyoutSidebarProps) => {\n return (\n <div\n className=\"sledge__flyout-mobile\"\n style={\n open\n ? {\n opacity: '1',\n visibility: 'visible'\n }\n : {}\n }\n >\n <div className=\"sledge__flyout-overlay\" onClick={() => setOpen(false)} />\n <div className=\"sledge__flyout-mobile-wrapper\" style={open ? { left: 0 } : {}}>\n <div className=\"sledge__flyout-header\">\n <div className=\"sledge__flyout-mobile-title\">{title}</div>\n <div className=\"sledge__flyout-close-field-wrapper\">\n <button className=\"sledge__flyout-close-field\" type=\"button\" onClick={() => setOpen(false)}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n </div>\n <div className=\"sledge__flyout-mobile-content\">{content}</div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { VirtualItem, useVirtualizer } from '@tanstack/react-virtual';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n rowCount: number;\n rowRenderer: (props: VirtualItem) => React.ReactNode;\n selector?: string;\n}\n\nconst getElement = ({ selector, setUsedScrollElement }: { selector: string; setUsedScrollElement: any }) => {\n const element: Element | (Window & typeof globalThis) | null = document.querySelector(selector);\n if (!element)\n setTimeout(() => {\n getElement({ selector, setUsedScrollElement });\n }, 10);\n else setUsedScrollElement(element);\n};\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowRenderer, selector }: IVirtualizedListProps) => {\n const [usedScrollElement, setUsedScrollElement]: any = React.useState(scrollElement);\n\n if (!usedScrollElement && selector) getElement({ selector, setUsedScrollElement });\n\n const virtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => usedScrollElement,\n estimateSize: () => 45\n });\n\n const items = virtualizer.getVirtualItems();\n\n return (\n <div\n style={{\n height: virtualizer.getTotalSize(),\n width: '100%',\n position: 'relative'\n }}\n className=\"sledge__virtualized-wrapper\"\n >\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${items[0]?.start ?? 0}px)`\n }}\n className=\"sledge__virtualized-list\"\n >\n {items.map((virtualRow) => (\n <div key={virtualRow.key} data-index={virtualRow.index} ref={virtualizer.measureElement} className=\"sledge__virtualized-measure-element\">\n {rowRenderer(virtualRow)}\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import './Alert.css';\n\nexport interface IAlertProps {\n children: any;\n className?: string;\n type: 'info';\n icon?: any;\n}\n\nexport const Alert = ({ children, className = '', type, icon = null }: IAlertProps) => {\n return (\n <div className={`sledge__alert ${className}`} data-alert-type={type}>\n {icon && <div>{icon}</div>}\n\n <div>{children}</div>\n </div>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n redirectObjectDirection = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n redirectObjectDirection?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult, redirectObjectDirection };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a\n href={redirectObjectDirection ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-button-more\"\n >\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import '@core/lib/polyfills';\n\nimport { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL, SEPARATOR_HIERARCHICAL_FACET } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n allowedFilterSlider?: any[];\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n hierarchicalFacetAliases?: any[];\n hierarchicalCollectionsSettings?: any;\n}\n\nconst sortFacets = ({ facets, sortingOrder }: { facets: any[]; sortingOrder: any[] }) => {\n // Handle edge cases\n if (!facets?.length || !sortingOrder?.length) return facets;\n\n const sortRecursively = (objects: any[], orderArray: any[]): any[] => {\n // Determine sorting type based on first object structure\n const isCollectionIdSort = objects?.[0]?.parseObject?.collection_id !== undefined;\n const sortKey = isCollectionIdSort ? 'collection_id' : 'name';\n\n // Create map for quick lookups\n const objectsMap = new Map(objects.map((obj: any) => [isCollectionIdSort ? obj.parseObject[sortKey] : obj[sortKey], obj]));\n\n const sorted: any[] = [];\n const usedKeys = new Set<string>();\n\n // Sort according to order array\n orderArray.forEach((sortItem: any) => {\n const lookupKey = isCollectionIdSort ? sortItem?.id : sortItem;\n const matchingObject = objectsMap.get(lookupKey);\n\n if (lookupKey && matchingObject) {\n usedKeys.add(lookupKey);\n\n // Check if both objects have children before recursive call\n const hasMatchingChildren = matchingObject?.children?.length > 0 && sortItem?.children?.length > 0;\n\n sorted.push({\n ...matchingObject,\n ...(hasMatchingChildren\n ? {\n children: hasMatchingChildren ? sortRecursively(matchingObject?.children, sortItem?.children) : matchingObject?.children?.length ? matchingObject?.children : []\n }\n : {})\n });\n }\n });\n\n // Add remaining items that weren't in sorting order\n objects.forEach((obj: any) => {\n const objKey = isCollectionIdSort ? obj.parseObject[sortKey] : obj[sortKey];\n if (!usedKeys.has(objKey)) {\n sorted.push(obj);\n }\n });\n\n return sorted;\n };\n\n try {\n // Handle root level sorting\n const rootObjects = facets;\n const rootSortOrder = sortingOrder;\n\n // Check for root level matches and sort\n const sorted = sortRecursively(rootObjects, rootSortOrder);\n\n return sorted;\n } catch (error) {\n return facets;\n }\n};\n\nexport const parseFacetObject = ({ facet = '' }: { facet: string }) => {\n if (facet && String(facet)?.includes(SEPARATOR_HIERARCHICAL_FACET)) return JSON.parse(String(facet)?.replaceAll(SEPARATOR_HIERARCHICAL_FACET, ',')) as any;\n return null;\n};\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n}: {\n clickedFacetsObject: any;\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}) => {\n let facetHierarchical = hierarchicalFacetAliases?.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = String(facet[0])?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n\n let isHierarchical = hierarchicalFacetAliases?.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({\n facets,\n facetsQueryStringObject,\n callback,\n additional = [],\n separator,\n separatorCollection,\n allowedFilterSlider,\n hierarchicalFacetAliases\n}: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = allowedFilterSlider?.includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases?.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution,\n hierarchicalFacetAliases,\n hierarchicalCollectionsSettings\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const { hidden_ids: hierarchical_collections_hidden_ids, structure: hierarchical_collections_structure } = hierarchicalCollectionsSettings || {};\n\n const isCollection = String(indexValue)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const name = names?.[names.length - 1]?.trim?.();\n const parseObject = parseFacetObject({ facet: name });\n const isFacetObject = Boolean(parseObject?.collection_id);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n\n let isHidden = false;\n if (isCollection && isFacetObject && hierarchical_collections_hidden_ids?.length) {\n isHidden = hierarchical_collections_hidden_ids?.includes(parseObject?.collection_id);\n } else {\n isHidden = hiddensProp?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n }\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,\n level,\n parseObject,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name,\n level: 0,\n parseObject,\n children: []\n });\n }\n }\n\n // User-based sorting\n if (isCollection) {\n hierarchicalFacets = sortFacets({\n facets: hierarchicalFacets,\n sortingOrder: hierarchical_collections_structure\n });\n }\n\n return hierarchicalFacets;\n};\n\nexport const handleConditionNotUpdateFacetDistribution = ({\n value,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n value: any;\n clickedFacets: any;\n keepCounterFacets: any;\n allowedFilterSlider?: any;\n}) => {\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n }\n });\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = false;\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider) return;\n\n isSelectedFacetWithPrice = arrFacetSelected.includes(filterSlider);\n });\n\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && keepCounterFacets?.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n\nexport const handleFacetValues = ({\n filter,\n items,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n filter?: any;\n items?: any;\n languageSettings?: any;\n clickedFacets?: any;\n searchFacetDistribution?: any;\n displaySettings?: any;\n settings?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}): any => {\n const { value, settings: filterSettings } = filter;\n\n let aliases: any = {};\n if (filter.value === HIERARCHICAL_FACET_OBJECT_ALIASES.product_type) aliases = settings.productTypeAliases || {};\n if (filter.value === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) aliases = settings.collectionAliases || {};\n\n const isCollection = String(filter?.value)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n const { prefix, filter_list, delete_prefix, selected_filter, structure } = filterSettings || {};\n\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) continue;\n\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n if (isFacetHierarchical && isCollection) labelName = parseFacetObject({ facet: labelName })?.collection_title || labelName;\n\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution({\n value: getValue,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n let getLabelName = aliases[labelName] || labelName;\n delete_prefix?.map((deletePrefix: any) => {\n if (String(getLabelName).startsWith(deletePrefix)) getLabelName = String(getLabelName).replace(deletePrefix, '');\n });\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: getLabelName,\n counter\n });\n }\n\n facetValues = sortFacets({\n facets: facetValues,\n sortingOrder: structure\n });\n\n return facetValues;\n};\n","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleFacetValues } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; indexFilter: number; items: any; settings?: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n valueFilterOnSaleChange: number[];\n setValueFilterOnSaleChange(value: React.SetStateAction<number[]>): void;\n valueFilterSliderOthers: any;\n setValueFilterSliderOthers(value: React.SetStateAction<any>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n scrollElementSelector?: string;\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n colorSwatches?: any[];\n ulClasses?: string;\n languageSettings?: any;\n triggerClickedFacets?: boolean;\n setTriggerClickedFacets?(value: React.SetStateAction<boolean>): void;\n handleQueryStringFilter?(value: any): void;\n previousStateFromOutside?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n setClickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n valueFilterOnSaleChange,\n setValueFilterOnSaleChange,\n valueFilterSliderOthers,\n setValueFilterSliderOthers,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings,\n scrollElementSelector,\n layoutType,\n collectionId,\n colorSwatches,\n ulClasses = '',\n languageSettings,\n triggerClickedFacets,\n setTriggerClickedFacets,\n handleQueryStringFilter,\n previousStateFromOutside,\n keepCounterFacets,\n allowedFilterSlider\n } = props;\n\n const [keywordFacet, setKeywordFacet] = React.useState('');\n const [showFacet, setShowFacet] = React.useState(false);\n\n const searchFacetRef = React.useRef<any>(null);\n\n const previousState: any = usePrevious({ keywordFacet });\n\n const { money_format, default_currency_symbol } = generalDataSettings || {};\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { search_filter_placeholder, search_filter_show_more_result, search_filter_no_result, filter_select_placeholder, highest_price_info } = languageSettings || {};\n\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n\n const { item_pagination: is_item_pagination = true, item_pagination_limit = DEFAULT_FACET_LIMIT } = displaySettings?.filter || {};\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n let { value, label, display, indexFilter, items, settings: filterSettings } = filter;\n const { show_search, auto_select_search, hide_filter_list } = filterSettings || {};\n\n const show_filter_list_when_search = !hide_filter_list;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n const isDisplayInputRange = display.toLowerCase() === 'input_range';\n const getValue = `${value}-${indexFilter}`;\n\n if (show_search && keywordFacet && !isDisplaySlider) items = items?.filter(({ name }: any) => String(name)?.toLowerCase()?.includes(keywordFacet?.toLowerCase()));\n\n const handleFacetValuesProps = {\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider\n ? facetItems\n : handleFacetValues({\n ...handleFacetValuesProps,\n items: facetItems\n });\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[getValue] || Number(item_pagination_limit);\n\n let haveNextPage = Boolean(lastItemLimit < arrFacetValues?.length);\n let sliced: any = arrFacetValues;\n if (haveNextPage) sliced = sliced.slice(0, lastItemLimit);\n\n let currentItems = sliced;\n\n return {\n haveNextPage,\n currentItems,\n totalItems: Number(arrFacetValues?.length)\n };\n };\n\n const handleSearchShowMore = () => {\n setShowFacet(true);\n\n searchFacetRef?.current && searchFacetRef?.current?.focus?.();\n };\n\n const { haveNextPage, currentItems, totalItems } = handleFacetLoadMore({\n facetItems: items\n });\n\n const filterSearchShowMoreId = stringToSlug(`filter-search-show-more-${getValue}`);\n\n React.useEffect(() => {\n if (!show_search) return;\n\n setTimeout(() => document.querySelector(`#${filterSearchShowMoreId}`)?.addEventListener('click', () => handleSearchShowMore()), 100);\n\n let isKeywordFacetChanged = Boolean(previousState && previousState.keywordFacet !== keywordFacet);\n let isPreviousStateFromOutsideChanged = Boolean(previousStateFromOutside && previousStateFromOutside?.clickedFacets !== clickedFacets);\n\n if (keywordFacet && isKeywordFacetChanged) {\n const delayDebounceFn = setTimeout(() => {\n const isAutoSelectFacet = Boolean(auto_select_search && totalItems && Number(totalItems) === 1);\n\n let autoSelectFacets = currentItems\n ?.map(({ value: itemValue }: any) => {\n return clickedFacets?.[value]?.includes?.(itemValue) ? null : itemValue;\n })\n ?.filter((item: any) => item);\n\n if (isAutoSelectFacet && autoSelectFacets?.length) {\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [value]: [...new Set([...(clickedFacets?.[value]?.length ? clickedFacets?.[value] : []), ...autoSelectFacets])]\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter?.(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets?.(!triggerClickedFacets);\n }\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n if (!(showFacet && isPreviousStateFromOutsideChanged)) setShowFacet(false);\n }, [keywordFacet, clickedFacets]);\n\n const loadMoreComponent = (\n <div\n className=\"sledge-instant-search__result-filter-item-show-more\"\n onClick={() =>\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [getValue]: (old[getValue] || Number(item_pagination_limit)) + Number(item_pagination_limit)\n };\n\n return fixState;\n })\n }\n >\n {button_load_more || 'Load More'}\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </div>\n );\n\n const handleFacetCheckbox = (props: { facetValues: any; virtualized?: any }) => {\n const { facetValues, virtualized } = props;\n const { index, key } = virtualized || {};\n\n return handleFacetValues({\n ...handleFacetValuesProps,\n items: virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues\n })?.map((facetValue: any) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content = (\n <Checkbox\n id={`${getValue}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) => {\n e.stopPropagation();\n\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n });\n }}\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n );\n\n return (\n <>\n <li\n key={key}\n className={`sledge-instant-search__result-filter-checkbox-item ${\n isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ''\n }`}\n onClick={(e) => {\n e.preventDefault();\n\n handleFilterChange({\n parentId: value,\n value: itemValue\n });\n }}\n >\n {content}\n </li>\n {isHasChildren && isChecked\n ? haveNextPage\n ? React.cloneElement(\n <>\n {blockComponentChildren}\n {loadMoreComponent}\n </>\n )\n : blockComponentChildren\n : null}\n </>\n );\n });\n };\n\n let scrollElement = document.querySelector(\n scrollElementSelector || `#filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`\n );\n\n const isShowSearch = Boolean(\n show_search && (display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree' || display.toLowerCase() === 'radio') && (totalItems || (keywordFacet && !totalItems))\n );\n\n const defaultSearchShowMoreFilter = (\n <>\n {totalItems} items found,{' '}\n <span className=\"sledge-instant-search__result-filter-search-text-action\" id={filterSearchShowMoreId} onClick={() => setShowFacet(true)}>\n click here\n </span>{' '}\n to show\n </>\n );\n\n let searchFilterShowMoreResult = search_filter_show_more_result;\n if (searchFilterShowMoreResult) {\n const getActionText = getTextBetween({\n start: '<action>',\n end: '</action>',\n text: search_filter_show_more_result\n });\n\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_FILTER_ITEM, String(Number(totalItems)));\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(\n `<action>${getActionText}</action>`,\n `\n <span class=\"sledge-instant-search__result-filter-search-text-action\" id=\"${filterSearchShowMoreId}\">\n ${getActionText}\n </span>`\n );\n }\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n if (items && Object.keys(items)?.length) {\n items = {\n min: items?.min < 0 ? 0 : items?.min,\n max: items?.max\n };\n }\n\n let valueFilterSliderChange: any[] = [];\n let isPriceValue = false;\n let isSalePercent = false;\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n isPriceValue = true;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n isSalePercent = true;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || items?.max;\n\n // Filtering slider value when hit before min or after max\n const isTypeSliderWithInputRange = display.toLowerCase() === 'slider_with_input_range';\n if (isTypeSliderWithInputRange) {\n defaultValueMin = items?.min && Number(defaultValueMin) < Number(items?.min) ? items?.min : defaultValueMin;\n defaultValueMax = items?.max && Number(defaultValueMax) > Number(items?.max) ? items?.max : defaultValueMax;\n }\n\n let contentDefaultValueMin = isPriceValue ? shopifyFormatMoney(defaultValueMin * 100, money_format) : isSalePercent ? `${defaultValueMin}%` : defaultValueMin;\n let contentDefaultValueMax = isPriceValue ? shopifyFormatMoney(defaultValueMax * 100, money_format) : isSalePercent ? `${defaultValueMax}%` : defaultValueMax;\n\n let contentFacetStatsMax = isPriceValue ? shopifyFormatMoney(items?.max * 100, money_format) : isSalePercent ? `${items?.max}%` : items?.max;\n let descriptionInputRange = highest_price_info\n ? String(highest_price_info).replaceAll(OBJECT_DATA_STRING_KEY.PRICE_MAX_MONEY_FORMAT, contentFacetStatsMax)\n : `The highest price is ${contentFacetStatsMax}`;\n\n blockComponent = (\n <Slider\n type={display.toLowerCase()}\n valueFilterSliderChange={valueFilterSliderChange}\n labelStyle={filter_option_style}\n {...(isDisplayInputRange\n ? {\n prefixInputRange: default_currency_symbol,\n descriptionInputRange\n }\n : {})}\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n textValue={defaultValueMin === defaultValueMax ? [contentDefaultValueMax] : [contentDefaultValueMin, contentDefaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => {\n if (value === 'variants.price') {\n setValueFilterPriceChange(valueChange);\n } else if (value === 'variants.sale_percent') {\n setValueFilterOnSaleChange(valueChange);\n } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [value]: valueChange }));\n }\n }}\n wrapperClassName=\"sledge-instant-search__result-filter-item-list-slider\"\n minMaxClassName=\"sledge-instant-search__result-filter-item-list-slider-minmax\"\n minMaxTextClassName=\"sledge-instant-search__result-filter-minmax-field\"\n />\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowRenderer={(props) =>\n handleFacetCheckbox({\n facetValues: currentItems,\n virtualized: props\n })\n }\n />\n ) : (\n <>\n {handleFacetCheckbox({\n facetValues: currentItems\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && currentItems?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={getValue}\n name={getValue}\n onValueChange={(valueChange) =>\n handleFilterChange({\n parentId: value,\n value: valueChange,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n useVirtualized\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={filter_select_placeholder ? String(filter_select_placeholder).replaceAll(OBJECT_DATA_STRING_KEY.FILTER_TITLE, label) : `Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && currentItems?.length) {\n blockComponent = (\n <>\n {currentItems?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${getValue}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n } else {\n blockComponent = (\n <li className=\"sledge-instant-search__result-filter-item-no-result\" style={filter_option_style}>\n {search_filter_no_result || 'No result...'}\n </li>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return (\n <>\n {isShowSearch ? (\n <div className=\"sledge-instant-search__result-filter-search-wrapper\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={search_filter_placeholder || 'Search filters...'}\n fieldRef={searchFacetRef}\n value={keywordFacet}\n onChange={({ value }: any) => setKeywordFacet(value)}\n onResetField={() => setKeywordFacet('')}\n className=\"sledge-instant-search__result-filter-search-form\"\n withClearField\n />\n {keywordFacet && totalItems && Number(totalItems) > 1 && !show_filter_list_when_search && !showFacet ? (\n <div className=\"sledge-instant-search__result-filter-search-text\" style={filter_option_style}>\n {searchFilterShowMoreResult ? <div dangerouslySetInnerHTML={{ __html: searchFilterShowMoreResult }}></div> : defaultSearchShowMoreFilter}\n </div>\n ) : null}\n </div>\n ) : null}\n {!show_search || (show_search && (show_filter_list_when_search || (!show_filter_list_when_search && (!totalItems || (Number(totalItems) === 1 && keywordFacet))) || showFacet)) ? (\n <ul className={ulClasses}>{blockComponent}</ul>\n ) : null}\n </>\n );\n};\n\nexport const FilterVerticalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n filterTitleStyle?: any;\n handleOpenFilterVertical(id: string | number): void;\n clickedOpenFilters: any;\n filterLayoutType: 'standard' | 'flyout';\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const { filter, filterSettings, indexFilter, filterTitleStyle = {}, handleOpenFilterVertical, clickedOpenFilters, filterLayoutType, layoutType, collectionId } = props;\n\n const { value, label } = filter;\n\n const getValue = `${value}-${indexFilter}`;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${filterLayoutType}-${stringToSlug(getValue)}`;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={filterItemId} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(getValue)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filterTitleStyle}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(getValue) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(getValue) && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n ) : null;\n};\n\nexport const FilterHorizontalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n deviceType: 'mobile' | 'desktop';\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n allowedFilter?: any[];\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const {\n filter,\n filterSettings,\n indexFilter,\n deviceType,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n allowedFilter = [],\n layoutType,\n collectionId\n } = props;\n\n const { value, label } = filter;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${deviceType}-${stringToSlug(value)}`;\n\n const getValueOpenFilterId = deviceType === 'mobile' ? clickedOpenFilterHorizontalMobileId : clickedOpenFilterHorizontalId;\n const isOpenFilterHorizontal = getValueOpenFilterId === value;\n\n const { isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(value);\n } else {\n setClickedOpenFilterHorizontalId?.(value);\n }\n }}\n className={`${isLastIndex ? (allowedFilter?.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isOpenFilterHorizontal ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\" id={filterItemId}>\n {isOpenFilterHorizontal && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n }\n withOpenState\n isOpen={isOpenFilterHorizontal}\n setIsOpen={(open) => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(!open ? '' : value);\n } else {\n setClickedOpenFilterHorizontalId?.(!open ? '' : value);\n }\n }}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n};\n","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport {\n Pagination,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ArticleGrid,\n Progress,\n FlyoutSidebar,\n FilterIcon,\n Alert,\n InfoCircleIcon\n} from '@core/components';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useDebounce, useIntersectionObserver, useIsFirstRender, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n DEFAULT_QUERY_PRODUCT_MEILISEARCH,\n HIERARCHICAL_FACET_OBJECT_ALIASES,\n LOCAL_STORAGE_KEY,\n MAX_LIMIT_HIERARCHICAL,\n OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { currentMediaQuery, isFunction, scrollToElement, shopifyFormatMoney } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, handleFacetValues, parseFacetObject } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent, FilterHorizontalComponent, FilterVerticalComponent } from './Atoms';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isFirstLoading?: boolean;\n keyword?: string;\n debouncedKeyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilter?: any[];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n hierarchicalCollectionsSettings?: any;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n handleChangeKeyword?(value: string): void;\n generalDataSettings?: any;\n searchParams?: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n separatedFilterItem?: any;\n clickedFacets?: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n parentPreviousState?: any;\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n defaultFilterItems?: any[];\n mobileShowSelectedSort?: boolean;\n soldProductAtEnd?: boolean;\n attributesToRetrieve?: any;\n allowedFilterSlider?: any[];\n hierarchicalFacetAliases?: any[];\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>(sledgeSettings?.instantsearch || {});\n const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterHorizontalId, setClickedOpenFilterHorizontalId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilterHorizontalMobileId, setClickedOpenFilterHorizontalMobileId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n const [defaultFilterItems, setDefaultFilterItems] = React.useState<any[]>([]);\n const [mobileShowSelectedSort, setMobileShowSelectedSort] = React.useState(true);\n const [soldProductAtEnd, setSoldProductAtEnd] = React.useState(false);\n const [attributesToRetrieve, setAttributesToRetrieve] = React.useState(sledgeSettings?.instantsearch?.attributes_to_retrieve || []);\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [allowedFilterSlider, setAllowedFilterSlider] = React.useState<any[]>([]);\n const [hierarchicalFacetAliases, setHierarchicalFacetAliases] = React.useState<any[]>([]);\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets: any = [];\n\n if (!isSetFilter)\n filters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value));\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n getFacets = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n getFacets = newItems;\n }\n }\n });\n\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets : [],\n filter: isProductIndex ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setTotalHitsProduct(totalHits || 0);\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n let valueSearchResultFacets = facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {};\n\n setSearchResultFacets(valueSearchResultFacets);\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value\n };\n });\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) setAllowedFilter(valueAllowedFilter);\n if (valueAllowedFilter?.length) {\n let valueDefaultFilterItems: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, label, display, settings } = filter;\n const { prefix, filter_list, selected_filter } = settings || {};\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n if (isDisplaySlider) return;\n\n let items: any[] = [];\n if (display.toLowerCase() === 'tree') {\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n items = [...items, ...(valueSearchResultFacets?.[`${value}.lvl${level}`] || [])];\n }\n } else {\n items = valueSearchResultFacets[value];\n }\n\n return {\n label,\n settings,\n items: items\n ?.map((item: any) => {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) return;\n\n return item.value;\n })\n ?.filter((item: any) => item)\n };\n })\n .filter((item: any) => item);\n\n let valueAllowedFilterSlider: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n if (!isDisplaySlider) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n let valueHierarchicalFacetAliases: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplayTree = display.toLowerCase() === 'tree';\n\n if (!isDisplayTree) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n setDefaultFilterItems(valueDefaultFilterItems);\n setAllowedFilterSlider(valueAllowedFilterSlider);\n setHierarchicalFacetAliases(valueHierarchicalFacetAliases);\n }\n }\n\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n setInstantSearchSettings(response);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const {\n allowed_sorts,\n default_sort,\n index_product,\n tabs,\n hidden_tags,\n display,\n colors,\n show_out_of_stock,\n languages,\n hierarchical_product_type,\n hierarchical_collections,\n mobile_show_selected_sort,\n sold_product_at_end,\n attributes_to_retrieve,\n collections_all_id\n } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId || collections_all_id\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n const valueReplaced = collectionId ? String(collectionId) : String(collections_all_id);\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, valueReplaced)\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\n : collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : collections_all_id\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n setMobileShowSelectedSort(mobile_show_selected_sort);\n setSoldProductAtEnd(sold_product_at_end);\n setAttributesToRetrieve(attributes_to_retrieve);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n setIsLoadingSetting(false);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n useEffectCallback(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n const alertFirstSyncComponent =\n !isFirstLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__alert-first-sync-product\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {alertFirstSyncComponent}\n\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd,\n attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n isFirstLoading,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd,\n attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\n } = props || {};\n\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n const queryPage = query?.page ? query.page : DEFAULT_QUERY_PARAM.PAGE;\n const queryLimit = query?.limit ? query.limit : DEFAULT_QUERY_PARAM.LIMIT;\n\n const { collectionId, collectionName } = params || {};\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n\n const [isLoadingProduct, setIsLoadingProduct] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(Number(searchParams?.get(queryLimit) || defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>(\n allowedFilter?.length\n ? allowedFilter\n .map((props: any, index: number) => {\n const { value, settings } = props;\n const { collapse } = settings || {};\n\n return collapse ? null : `${value}-${index}`;\n })\n .filter((item) => item)\n : []\n );\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(Number(searchParams?.get(queryPage)) && !isLoadMore ? Number(searchParams?.get(queryPage)) : 1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [valueFilterOnSaleChange, setValueFilterOnSaleChange] = React.useState<number[]>([]);\n const [valueFilterSliderOthers, setValueFilterSliderOthers] = React.useState<any>({});\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const {\n separator: hierarchical_collections_separator,\n hiddens: hierarchical_collections_hiddens,\n hidden_ids: hierarchical_collections_hidden_ids,\n structure: hierarchical_collections_structure\n } = hierarchicalCollectionsSettings || {};\n const { money_format } = generalDataSettings || {};\n const { button_load_more, button_loading, mobile_sort_placeholder } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <>\n {isSummaryTextFromLanguage ? (\n <span className=\"sledge-instant-search__result-data-summary-text\" dangerouslySetInnerHTML={{ __html: getSummaryText }}></span>\n ) : (\n <span className=\"sledge-instant-search__result-data-summary-text\">{defaultSummaryText}</span>\n )}\n </>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n setTimeout(() => {\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [id]: null\n };\n\n return fixState;\n });\n }, 100);\n };\n\n const handleFilterReset = () => {\n setClickedFacets?.({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setValueFilterOnSaleChange([]);\n setValueFilterSliderOthers({});\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = allowedFilterSlider?.includes(parentId);\n let isHierarchical = hierarchicalFacetAliases?.includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n\n // Uncheck facet children from parent\n if (isHierarchical) facets = facets.filter((facet: any) => !facet.startsWith(value));\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n if (parentId === 'variants.price') {\n setValueFilterPriceChange([]);\n } else if (parentId === 'variants.sale_percent') {\n setValueFilterOnSaleChange([]);\n } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [parentId]: [] }));\n }\n } else {\n facets = value?.length === 1 ? [...value, ...value] : value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsLoading(false);\n setIsLoadingProduct(false);\n setIsLoadingButtonLoadMore(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(!hits?.length ? [] : (prevState: any) => (searchResult?.length && isLoadMore ? [...prevState, ...hits] : hits));\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n setSearchFacetDistribution(facetDistribution);\n };\n\n const handleSearchResult = async (props: { isLoadMore?: boolean; isReplaceData?: boolean; onSearch?: boolean }) => {\n if (!clickedTabIndexId) return;\n\n const { isLoadMore = false, isReplaceData = false } = props;\n\n if (isReplaceData) {\n setCurrentPage(1);\n setSearchResult([]);\n\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(1));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let response: any;\n let filter: any = createQueryFilter({\n facets,\n facetsQueryStringObject: clickedFacets,\n callback: (facetsQueryStringObject) => {\n setClickedFacets?.(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n if (facetsQueryStringObject['variants.sale_percent']) setValueFilterOnSaleChange(facetsQueryStringObject['variants.sale_percent']);\n\n // Set value filter slider others\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider || (filterSlider && ['variants.price', 'variants.sale_percent'].includes(filterSlider))) return;\n\n if (facetsQueryStringObject[filterSlider]) setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [filterSlider]: facetsQueryStringObject[filterSlider] }));\n });\n },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null],\n allowedFilterSlider,\n hierarchicalFacetAliases\n });\n\n let sort = soldProductAtEnd ? ['availability:asc'] : [];\n if (clickedSortId) sort.push(clickedSortId);\n\n let body = {\n q: keyword,\n sort,\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n attributesToRetrieve,\n filter\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = allowedFilterSlider?.includes(getName);\n let getAllowedFilterOne: any = allowedFilter?.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n let keepCounterFacets: any[] = [];\n allowedFilter?.map((filter) => {\n if (filter?.settings?.keep_counter) keepCounterFacets.push(filter?.value);\n });\n\n const facetBlockSelected = ({ label, name, value: valueProp, index }: any) => {\n let value = valueProp;\n\n // Parse facet object\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) {\n if (String(value)?.includes(hierarchical_collections_separator)) {\n let arrValue = String(value).split(hierarchical_collections_separator);\n value = arrValue?.length ? arrValue.map((item: any) => parseFacetObject({ facet: item })?.collection_title || item).join(hierarchical_collections_separator) : valueProp;\n } else {\n value = parseFacetObject({ facet: valueProp })?.collection_title || valueProp;\n }\n }\n\n let valueText = languageSettings?.[value] || value;\n let isRange = allowedFilterSlider?.includes(name);\n let getLabel = label;\n let getSettings: any = {};\n let isPriceValue = false;\n let isSalePercent = false;\n if (name === 'variants.price') {\n isPriceValue = true;\n } else if (name === 'variants.sale_percent') {\n isSalePercent = true;\n }\n\n if (defaultFilterItems?.length) {\n defaultFilterItems.map((defaultFilterItem) => {\n const { label: defaultFilterItemLabel, items, settings: defaultFilterItemSettings } = defaultFilterItem;\n\n if (items?.includes(value)) {\n getLabel = defaultFilterItemLabel;\n getSettings = defaultFilterItemSettings;\n }\n });\n }\n\n getSettings?.delete_prefix?.map((deletePrefix: any) => {\n if (String(valueText).startsWith(deletePrefix)) valueText = String(valueText).replace(deletePrefix, '');\n });\n\n if (isRange) {\n // Detect same value on array\n const getValueRange = new Set(value).size === 1 ? [value[0]] : value;\n\n valueText = getValueRange?.map((valueItem: any) => (isPriceValue ? shopifyFormatMoney(valueItem * 100, money_format) : isSalePercent ? `${valueItem}%` : valueItem))?.join(' - ');\n } else {\n valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n }\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n let aliasValue: string = '';\n let aliasSeparator = '';\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) {\n aliases = settings.collectionAliases || {};\n aliasSeparator = hierarchicalCollectionsSettings.separator;\n }\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.product_type) {\n aliases = settings.productTypeAliases || {};\n aliasSeparator = hierarchicalProductTypeSettings.separator;\n }\n if ([HIERARCHICAL_FACET_OBJECT_ALIASES.collections, HIERARCHICAL_FACET_OBJECT_ALIASES.product_type].includes(name) && aliasSeparator) {\n const splitedValues = value.split(aliasSeparator);\n let newSplitedValues = [];\n for (const splitedValue of splitedValues) {\n newSplitedValues.push(aliases[splitedValue.trim()] || splitedValue);\n }\n aliasValue = newSplitedValues.join(' > ');\n }\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\" dangerouslySetInnerHTML={{ __html: `${getLabel}: ${aliasValue || valueText}` }}></span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const filterSettings = ({\n filter,\n scrollElementSelector\n }: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution,\n hierarchicalFacetAliases,\n hierarchicalCollectionsSettings\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(\n isDisplaySlider\n ? items\n : Number(\n handleFacetValues({\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n items,\n allowedFilterSlider\n })?.length\n )\n );\n if (isDisplaySlider) {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || defaultItemSlider?.max;\n\n isRender = !defaultValueMin && !defaultValueMax ? false : true;\n }\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n const getFacetComponent = (props?: { ulClasses?: string }) => {\n const { ulClasses = '' } = props || {};\n\n return (\n <FacetComponent\n filter={{\n ...filter,\n items\n }}\n isFirstLoading={isFirstLoading}\n displaySettings={displaySettings}\n generalDataSettings={generalDataSettings}\n settings={settings}\n searchFacetDistribution={searchFacetDistribution}\n clickedFacets={clickedFacets}\n setClickedFacets={setClickedFacets}\n handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n valueFilterOnSaleChange={valueFilterOnSaleChange}\n setValueFilterOnSaleChange={setValueFilterOnSaleChange}\n valueFilterSliderOthers={valueFilterSliderOthers}\n setValueFilterSliderOthers={setValueFilterSliderOthers}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\n scrollElementSelector={scrollElementSelector}\n layoutType={layoutType}\n collectionId={collectionId}\n colorSwatches={colorSwatches}\n ulClasses={ulClasses}\n languageSettings={languageSettings}\n triggerClickedFacets={triggerClickedFacets}\n setTriggerClickedFacets={setTriggerClickedFacets}\n handleQueryStringFilter={handleQueryStringFilter}\n previousStateFromOutside={previousState}\n keepCounterFacets={keepCounterFacets}\n allowedFilterSlider={allowedFilterSlider}\n />\n );\n };\n\n if (display.toLowerCase() === 'swatch' && items?.length) classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n if (display.toLowerCase() === 'tree') classesUlElement.push('sledge-instant-search__result-filter-item-tree');\n if (displaySettings?.filter?.layout === 'vertical' && allowedFilter?.length === 1) classesUlElement?.push('sledge-instant-search__result-filter-item-list-just-one');\n\n let isLastIndex = allowedFilter ? allowedFilter?.length - 1 === indexFilter : false;\n\n return { isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalSelected = Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null;\n\n const filterVerticalComponents = ({ filterLayoutType }: { filterLayoutType: 'standard' | 'flyout' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterVerticalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n filterTitleStyle={filter_title_style}\n handleOpenFilterVertical={handleOpenFilterVertical}\n clickedOpenFilters={clickedOpenFilters}\n filterLayoutType={filterLayoutType}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const filterHorizontalComponents = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterHorizontalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n deviceType={deviceType}\n clickedOpenFilterHorizontalId={clickedOpenFilterHorizontalId}\n setClickedOpenFilterHorizontalId={setClickedOpenFilterHorizontalId}\n clickedOpenFilterHorizontalMobileId={clickedOpenFilterHorizontalMobileId}\n setClickedOpenFilterHorizontalMobileId={setClickedOpenFilterHorizontalMobileId}\n allowedFilter={allowedFilter}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n displaySettings?.filter?.enable_on_search && allowedFilter?.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">\n {filterHorizontalComponents({ deviceType })}\n </div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n const searchInputFieldComponent = (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n );\n\n const renderFilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n <span>{language_filter || 'Filter'}</span>\n <FilterIcon width={18} height={18} color=\"#393d4e\" />\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent({ deviceType: 'mobile' })}\n </>\n );\n break;\n\n default:\n return null;\n break;\n }\n };\n\n return (\n <>\n {/* Filter Flyout on Mobile */}\n {displaySettings?.filter?.mobile_layout === 'flyout' && (\n <FlyoutSidebar\n title={language_filter || 'Filter'}\n content={\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'flyout'\n })?.filter((item) => item)?.length\n ? filterVerticalComponents({\n filterLayoutType: 'flyout'\n })\n : null}\n </>\n }\n open={openFilterFlyoutMobile}\n setOpen={setOpenFilterFlyoutMobile}\n />\n )}\n\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter?.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent({ deviceType: 'desktop' })}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n (!allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isFirstLoading) ||\n (allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isLoadingProduct) ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'standard'\n })}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{renderFilterLayoutOnMobile()}</div>\n\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n {...(!mobileShowSelectedSort\n ? {\n overridePlaceholderOnMobile: mobile_sort_placeholder || 'Sort'\n }\n : {})}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n handleSearchResult();\n }, [debouncedKeyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget} ref={searchIconWidgetRef}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading, Alert, InfoCircleIcon } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>({});\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n setTotalHitsProduct(valueSearchResultProduct[0]?.totalHits || 0);\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n setInstantSearchSettings(response);\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n const alertFirstSyncComponent =\n !isLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__icon-widget-popup-alert-first-sync\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n {alertFirstSyncComponent}\n\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = isRedirect ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n redirectObjectDirection={redirectObjectDirection}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword) || '');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 250);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const urlToSearchResult = isRedirect ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n {showSearchResult ? (\n <div className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n redirectObjectDirection={redirectObjectDirection}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </div>\n ) : null}\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","TRIGGER_BADGE","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","ELEMENT_WIDGET_POPUP","ELEMENT_BADGE_COUNTER","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","CUSTOM_EVENT_NAMES","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","shopifyUrl","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","SEPARATOR_HIERARCHICAL_FACET","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","useIsFirstRender","renderRef","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","dispatchCustomEvent","eventName","detail","customEvent","CustomEvent","bubbles","cancelable","composed","document","dispatchEvent","setElementAttribute","attributeName","hasAttribute","setAttribute","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","inputRangeFormatter","cleanValue","_b","numValue","parseFloat","Number","isInteger","toString","integerPart","decimalPart","slice","padEnd","Slider","props","type","prefixInputRange","descriptionInputRange","valueFilterSliderChange","textValue","min","max","step","setValueCommit","setValueChange","wrapperClassName","minMaxClassName","minMaxTextClassName","inputRangeMin","setInputRangeMin","inputRangeMax","setInputRangeMax","delayInputRangeRef","hasMaxValue","FormWrapper","Form.Root","Fragment","isTypeInputRange","isTypeIncludeSlider","isTypeIncludeInputRange","_c","handleChangeInputRange","event","valueInput","target","valueCommit","lastValueMin","lastValueMax","valueInputRange","valueCommitFiltered","filterValueMinOrMax","isFirstRender","useEffectOnChange","InputField","onChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","innerHTMLContent","wrapTrigger","SliderElement.Thumb","dangerouslySetInnerHTML","__html","Pagination","currentPage","totalPage","totalResult","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","replaceAll","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","rowRenderer","virtualized","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","RadioGroup","defaultValue","items","useVirtualized","scrollElement","selector","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","ColorSwatch","rgb","image","styles","backgroundImage","backgroundSize","Select","placeholder","isLoading","setIsLoading","SelectElement.Root","$cc7e05a45900e73f$export$be92b6f5f03c0fe9","selectContentElement","selectRootElement","classList","toggle","handleClassNameRoot","SelectElement.Trigger","$cc7e05a45900e73f$export$41fb9f06171c75f4","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","$cc7e05a45900e73f$export$602eac185826482c","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","FilterIcon","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","strokeLinejoin","InfoCircleIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","hasOwn","obj","prop","prototype","hasOwnProperty","call","wishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","total_data","totalWishlist","proxyUrl","BadgeCounter","propsData","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","isJsVersion","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","setTotalWishlist","isFirstLoading","setIsFirstLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","handleGetWishlistInfo","setItem","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","launch_point","defaultTotalWishlist","Badge","useProxyUrl","position","positionProp","defaultColorIcon","colorIcon","setColorIcon","setProxyUrl","proxy_url","setData","floating_button_type","alert_login","alert","login_button","languages","widget","defaultPosition","valueData","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeCounterInitSelector","reload","getSelector","Array","from","querySelectorAll","getElementContainerWidgetQuery","remove","elementContainerWidget","createElement","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","hidden","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","triggerBadge","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","mouseEnter","setMouseEnter","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","hasEntry","setHasEntry","rootRef","rootEntry","global","show","show_notification","location_notification","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","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","state","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","wishlistActive","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","init","customInit","MutationObserver","mutations","mutation","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","hasEntryImage","setHasEntryImage","imageRef","imageEntry","isLoadingAddToCart","isOutOfStock","isOnSale","money_format","component","CardsProps","variant","isInventoryQuantity","isInventoryManagement","isInventoryPolicy","is_out_of_stock","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","_i","inventoryQuantity","_k","_j","inventoryManagement","_m","_l","inventoryPolicy","_o","_n","src","entries","images","productClickTrigger$1","loaded","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","push","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","Form.Field","Form.Control","Form.Message","$d94698215c4408a7$export$f69c19e57285b83a","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","main_color","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","FlyoutSidebar","opacity","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Alert","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","sortFacets","facets","sortingOrder","sortRecursively","objects","orderArray","isCollectionIdSort","parseObject","collection_id","sortKey","objectsMap","Map","sorted","usedKeys","Set","sortItem","lookupKey","matchingObject","get","hasMatchingChildren","objKey","has","parseFacetObject","facet","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","hierarchicalFacetAliases","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","isCollection","arrItem","createQueryFilter","facetsQueryStringObject","additional","allowedFilterSlider","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","handleConditionNotUpdateFacetDistribution","clickedFacets","keepCounterFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","filterSlider","isPriorityFacet","handleFacetValues","searchFacetDistribution","displaySettings","settings","filterSettings","aliases","productTypeAliases","collectionAliases","isHideFacetWhenZeroValue","hide_when_zero_value","prefix","filter_list","delete_prefix","selected_filter","structure","facetValues","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","collection_title","getValue","level","counter","getLabelName","deletePrefix","FacetComponent","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","valueFilterSliderOthers","setValueFilterSliderOthers","separatedFilterItem","setSeparatedFilterItem","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","default_currency_symbol","button_load_more","search_filter_placeholder","search_filter_show_more_result","search_filter_no_result","filter_select_placeholder","highest_price_info","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","item_pagination","is_item_pagination","item_pagination_limit","filter_option_style","indexFilter","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isDisplaySlider","isDisplayInputRange","handleFacetValuesProps","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","sliced","totalItems","filterSearchShowMoreId","handleSearchShowMore","isKeywordFacetChanged","isPreviousStateFromOutsideChanged","delayDebounceFn","isAutoSelectFacet","autoSelectFacets","itemValue","valueClickedFacets","handleQueryStringFilterProp","loadMoreComponent","old","handleFacetCheckbox","facetValue","isHasChildren","isChecked","blockComponentChildren","parentId","isShowSearch","defaultSearchShowMoreFilter","searchFilterShowMoreResult","getActionText","end","getText","indexOf","substring","getTextBetween","isPriceValue","isSalePercent","defaultValueMin","defaultValueMax","contentDefaultValueMin","contentDefaultValueMax","contentFacetStatsMax","prevState","force","FilterVerticalComponent","filterTitleStyle","handleOpenFilterVertical","clickedOpenFilters","filterLayoutType","filterItemId","isRender","classesUlElement","getFacetComponent","FilterHorizontalComponent","deviceType","clickedOpenFilterHorizontalId","setClickedOpenFilterHorizontalId","clickedOpenFilterHorizontalMobileId","setClickedOpenFilterHorizontalMobileId","allowedFilter","isOpenFilterHorizontal","isLastIndex","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","querySortBy","sortBy","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","setAllowedFilter","allowedTabs","setAllowedTabs","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","setDisplaySettings","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","setLanguageSettings","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","hierarchical_product_type","hierarchicalCollectionsSettings","setHierarchicalCollectionsSettings","hierarchical_collections","initStatesFirstTime","setInitStatesFirstTime","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","general","instantSearchSettings","setInstantSearchSettings","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","attributesToRetrieve","setAttributesToRetrieve","attributes_to_retrieve","totalHitsProduct","setTotalHitsProduct","setAllowedFilterSlider","setHierarchicalFacetAliases","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","collections_all_id","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","valueReplaced","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","valueAllowedFilterSlider","valueHierarchicalFacetAliases","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","layout","filterVerticalSkeleton","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","alertFirstSyncComponent","first_sync","ResultCategory","handleChangeTabIndex","_w","_x","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","setClickedOpenFilters","collapse","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","handleSearchResultFirstTime","setHandleSearchResultFirstTime","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","openFilterFlyoutMobile","setOpenFilterFlyoutMobile","language_result","language_search_form_placeholder","language_limit","add_to_cart","language_add_to_cart","language_filter","clear_filter","language_clear_filter","pagination_info","language_pagination_info","total_result_text","language_total_result_text","hierarchical_separator","hiddens","hierarchical_hiddens","hierarchical_collections_separator","hierarchical_collections_hiddens","hidden_ids","hierarchical_collections_hidden_ids","hierarchical_collections_structure","button_loading","mobile_sort_placeholder","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","otherQueryStringObject","valueClickedFacetsKey","newQueryString","valueClickedOpenFilters","findIndex","splice","handleFilterReset","isHierarchical","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","keep_counter","facetBlockSelected","valueProp","arrValue","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","getValueRange","valueItem","aliasValue","aliasSeparator","splitedValues","newSplitedValues","splitedValue","trim","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","isFacetObject","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","createHierarchicalFacet","defaultItemSlider","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","mobile_layout","allowed_limit","_y","_z","_A","_B","_C","wishlists","reviews","ResultEmpty","isRefreshSearchResult","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","componentRef","searchIconWidget","searchIconWidgetRef","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","redirectsSettings","setRedirectsSettings","redirectObject","setRedirectObject","isRedirect","setIsRedirect","setHandleFunctions","direction","handleMultiSearch","withFetchReviewInfo","valueRedirectObject","redirectKeyword","valueIsRedirect","search_use_default_sort","suggestion","instantSearchLimit","instantsearch_limit","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","redirects","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","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/hooks/useIsFirstRender.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/hooks/useEffectOnChange.ts","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Icons/FilterIcon/FilterIcon.tsx","../../../core/components/Icons/InfoCircleIcon/InfoCircleIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../../core/lib/polyfills.ts","../../../core/api/shopify.ts","../../wishlist/src/components/Badge/utils.ts","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeCounter.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/components/InputField/InputField.tsx","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../../../core/components/FlyoutSidebar/FlyoutSidebar.tsx","../../../core/components/Virtualized/VirtualizedList.tsx","../../../core/components/Alert/Alert.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/utils.ts","../src/components/SearchResultWidget/Atoms.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../../../core/hooks/useDebounce.ts","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options',\n TRIGGER_BADGE: 'data-trigger-badge'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n QUERY_KEYWORD: 'data-query-keyword',\n QUERY_SORT_BY: 'data-query-sort-by',\n QUERY_PAGE: 'data-query-page',\n QUERY_LIMIT: 'data-query-limit',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed',\n LIMIT_PRODUCT: 'sledge-limit-product',\n WISHLIST_BADGE_COUNTER: 'sledge-wishlist-badge-counter'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup',\n ELEMENT_BADGE_COUNTER: 'wishlist-badge-counter'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_COUNTER: `[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const CUSTOM_EVENT_NAMES = {\n AFTER_ADD_WISHLIST: 'after-add-wishlist',\n AFTER_REMOVE_WISHLIST: 'after-remove-wishlist',\n AFTER_ADD_TO_CART: 'after-add-to-cart',\n AFTER_ADD_REVIEW: 'after-add-review',\n AFTER_RENDER_PRODUCT: 'after-render-product',\n AFTER_RENDER_COLLECTION: 'after-render-collection',\n AFTER_RENDER_PAGE: 'after-render-page',\n AFTER_RENDER_BLOG: 'after-render-blog',\n AFTER_RENDER_ARTICLE: 'after-render-article'\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share',\n SORT_BY: 'sort_by',\n PAGE: 'page',\n LIMIT: 'limit'\n};\nexport const DEFAULT_QUERY_PRODUCT_MEILISEARCH = [`'status' = 'active'`, `published_at IS NOT NULL`];\nexport const DEFAULT_FACET_LIMIT = 100;\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n TOTAL_FILTER_ITEM: '{{ total_filter_item }}',\n COLLECTION_ID: '{{ collection_id }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}',\n FILTER_TITLE: '{{ filter_title }}',\n PRICE_MAX_MONEY_FORMAT: '{{ price_max_money_format }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H',\n shopifyUrl: 'NmIxMTNlYTVlM'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\nexport const SEPARATOR_HIERARCHICAL_FACET = '---5L3D9E---';\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 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 { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\nimport { ISledgeProps } from '@core/api/global';\n\ndeclare global {\n interface Window {\n // TODO: Soon `sledgeCommonModule` is deprecated\n sledgeCommonModule: ISledgeProps;\n sledge: ISledgeProps;\n Shopify: any;\n }\n}\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xl' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xl';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) => {\n if (!text) return text;\n\n return text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n};\n\nexport const shopifyFormatMoney = (cents: any, format: string) => {\n if (typeof cents == 'string') {\n cents = cents.replace('.', '');\n }\n\n var value = '';\n var placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n var formatString: string = format || '${{amount}}';\n\n function defaultOption(opt: any, def: any) {\n return typeof opt == 'undefined' ? def : opt;\n }\n\n function formatWithDelimiters(number: any, precision: any, thousands?: any, decimal?: any) {\n precision = defaultOption(precision, 2);\n thousands = defaultOption(thousands, ',');\n decimal = defaultOption(decimal, '.');\n\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n var parts = number.split('.'),\n dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\n cents = parts[1] ? decimal + parts[1] : '';\n\n return dollars + cents;\n }\n\n switch (formatString.match(placeholderRegex)?.[1]) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return formatString.replace(placeholderRegex, value);\n};\n\nexport const selectedLocaleJs = () => {\n if (typeof window !== 'undefined') {\n const shopifyLocale = window?.Shopify?.locale;\n const sledgeLocale = window?.sledgeCommonModule?.config?.locale || window?.sledge?.config?.locale;\n\n return shopifyLocale ? shopifyLocale : sledgeLocale || '';\n }\n\n return '';\n};\n\nexport const sledgeConfigJs = () => {\n let sledgeConfig: ISledgeProps['config'] = {};\n\n if (typeof window !== 'undefined') {\n sledgeConfig = window?.sledgeCommonModule?.config || window?.sledge?.config;\n\n return sledgeConfig || {};\n }\n\n return sledgeConfig;\n};\n\nexport const dispatchCustomEvent = (eventName: string, detail?: any): void => {\n const customEvent = new CustomEvent(eventName, { bubbles: true, cancelable: true, composed: false, ...(detail && { detail }) });\n\n document.dispatchEvent(customEvent);\n};\n\nexport const listenerCustomEvent = (eventName: string, listener: (event: CustomEvent) => void, method: 'on' | 'off'): void => {\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n document[domMethod](eventName, (event: Event) => {\n if (event instanceof CustomEvent) {\n listener(event);\n }\n });\n};\n\nexport const addCustomCode = ({ type, code }: { type: 'js' | 'css'; code: any }) => {\n var customCodeElement = document.createElement(type === 'js' ? 'script' : 'style');\n\n try {\n customCodeElement.appendChild(document.createTextNode(code));\n } catch (e) {\n customCodeElement.innerHTML = code;\n }\n\n document[type === 'js' ? 'body' : 'head'].appendChild(customCodeElement);\n};\n\nexport const setElementAttribute = ({ element, attributeName, value }: { element: HTMLElement | null; attributeName: string; value: string }) => {\n if (element && element.hasAttribute(attributeName)) {\n element.setAttribute(attributeName, value);\n }\n};\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n delay?: number;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '', delay = 150 }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n let valueProgress = (+value / total) * 100;\n\n if (delay) {\n const timer = setTimeout(() => {\n if (valueProgress) setProgress(valueProgress);\n }, delay);\n return () => clearTimeout(timer);\n } else {\n setProgress(valueProgress);\n }\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"sledge__progress-indicator ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: React.ReactNode;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { InputField, Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\nimport * as Form from '@radix-ui/react-form';\nimport { useEffectOnChange } from '@core/hooks';\n\nexport interface ISliderProps {\n type?: 'slider' | 'input_range' | 'slider_with_input_range' | string;\n prefixInputRange?: string;\n descriptionInputRange?: string;\n valueFilterSliderChange?: any[];\n labelStyle?: any;\n value: number[];\n textValue?: any[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n wrapperClassName?: string;\n minMaxClassName?: string;\n minMaxTextClassName?: string;\n}\n\n// Formatting decimal value with 2 number\nconst inputRangeFormatter = (value: any) => {\n const cleanValue = String(value)?.replace?.(/[^0-9.]/g, '');\n const numValue = parseFloat(cleanValue);\n\n if (isNaN(numValue)) return value;\n\n if (Number.isInteger(numValue)) return numValue.toString();\n\n const [integerPart, decimalPart] = cleanValue.split('.');\n const formattedDecimal = (decimalPart || '').slice(0, 2).padEnd(2, '0');\n\n return `${integerPart}.${formattedDecimal}`;\n};\n\nexport const Slider = (props: ISliderProps) => {\n const {\n type = 'slider',\n prefixInputRange = '',\n descriptionInputRange = '',\n valueFilterSliderChange = [],\n labelStyle = {},\n value,\n textValue = [],\n min,\n max,\n step = 1,\n setValueCommit,\n setValueChange,\n wrapperClassName = '',\n minMaxClassName = '',\n minMaxTextClassName = ''\n } = props;\n\n const [inputRangeMin, setInputRangeMin] = React.useState(inputRangeFormatter(value?.[0]));\n const [inputRangeMax, setInputRangeMax] = React.useState(inputRangeFormatter(value?.[1] || value?.[0]));\n\n const delayInputRangeRef = React.useRef<any>(null);\n\n let content: any = textValue?.length ? textValue : value;\n\n const hasMaxValue = value?.length && value?.[1];\n const FormWrapper = String(type)?.includes('input_range') ? Form.Root : React.Fragment;\n const isTypeInputRange = type === 'input_range';\n const isTypeIncludeSlider = String(type)?.includes('slider');\n const isTypeIncludeInputRange = String(type)?.includes('input_range');\n\n const handleChangeInputRange = ({ event, type }: { event: React.ChangeEvent<HTMLInputElement>; type: 'min' | 'max' }) => {\n let valueInput: any = event?.target?.value;\n\n // Allowed number only\n if (!Number(valueInput) && Number(valueInput) !== 0) return;\n\n let valueCommit: number[] = type === 'min' ? [valueInput || 0, value?.[1] || value?.[0]] : [value?.[0], valueInput || 0];\n\n if (type === 'min') {\n setInputRangeMin(valueInput);\n } else {\n setInputRangeMax(valueInput);\n }\n\n if (delayInputRangeRef.current) {\n clearTimeout(delayInputRangeRef.current);\n }\n\n delayInputRangeRef.current = setTimeout(() => {\n const lastValueMin = valueCommit?.[0];\n const lastValueMax = valueCommit?.[1] || lastValueMin;\n const valueInputRange = inputRangeFormatter(type === 'min' ? lastValueMax : lastValueMin);\n const valueCommitFiltered = [valueInputRange, valueInputRange];\n\n valueInput = inputRangeFormatter(valueInput);\n valueCommit = [inputRangeFormatter(valueCommit[0]), inputRangeFormatter(valueCommit[1])];\n\n let filterValueMinOrMax = false;\n if (type === 'min') {\n filterValueMinOrMax = Number(valueInput) > Number(lastValueMax);\n } else {\n filterValueMinOrMax = Number(valueInput) < Number(lastValueMin);\n }\n\n // Filtering input range value when hit before min or after max\n if (filterValueMinOrMax) {\n setInputRangeMin(valueInputRange);\n setInputRangeMax(valueInputRange);\n\n setValueChange?.(valueCommitFiltered);\n setValueCommit?.(valueCommitFiltered);\n } else {\n if (type === 'min') {\n setInputRangeMin(valueInput);\n } else {\n setInputRangeMax(valueInput);\n }\n\n setValueChange?.(valueCommit);\n setValueCommit?.(valueCommit);\n }\n }, 500);\n };\n\n // Detect reset value for input range\n useEffectOnChange(() => {\n if (isTypeIncludeInputRange && !valueFilterSliderChange?.length) {\n setInputRangeMin(inputRangeFormatter(value?.[0]));\n setInputRangeMax(inputRangeFormatter(value?.[1] || value?.[0]));\n }\n }, [valueFilterSliderChange]);\n\n return (\n <div className={`sledge__slider-wrapper ${wrapperClassName}`} data-slider-type={type}>\n <FormWrapper>\n {isTypeIncludeInputRange ? (\n <>\n {isTypeInputRange && descriptionInputRange ? (\n <div className=\"sledge__slider-input-range-description\" style={labelStyle}>\n {descriptionInputRange}\n </div>\n ) : null}\n\n <div className=\"sledge__slider-input-range-wrapper\">\n {isTypeInputRange && prefixInputRange ? (\n <div className=\"sledge__slider-input-range-prefix\" style={labelStyle}>\n {prefixInputRange}\n </div>\n ) : null}\n <InputField\n className=\"sledge__slider-input-range-minmax\"\n type=\"text\"\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChangeInputRange({ event, type: 'min' })}\n value={inputRangeMin}\n style={labelStyle}\n />\n <span className=\"sledge__slider-input-range-minmax-separator\">-</span>\n <InputField\n className=\"sledge__slider-input-range-minmax\"\n type=\"text\"\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => handleChangeInputRange({ event, type: 'max' })}\n value={inputRangeMax}\n style={labelStyle}\n />\n </div>\n </>\n ) : null}\n {isTypeIncludeSlider ? (\n <>\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[]) => {\n setValueChange?.(valueChange);\n if (isTypeIncludeInputRange) {\n setInputRangeMin(inputRangeFormatter(valueChange?.[0]));\n setInputRangeMax(inputRangeFormatter(valueChange?.[1] || valueChange?.[0]));\n }\n }}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n {...(textValue?.length\n ? {\n innerHTMLContent: content[0]\n }\n : {\n content: content[0]\n })}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {hasMaxValue ? (\n <Tooltip\n {...(textValue?.length\n ? {\n innerHTMLContent: content[1]\n }\n : {\n content: content[1]\n })}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n ) : null}\n </SliderElement.Root>\n </form>\n <div className={`sledge__slider-minmax ${minMaxClassName}`}>\n <div className={`sledge__slider-minmax-text ${minMaxTextClassName}`} dangerouslySetInnerHTML={{ __html: content[0] }}></div>\n {hasMaxValue ? <div className={`sledge__slider-minmax-text ${minMaxTextClassName}`} dangerouslySetInnerHTML={{ __html: content[1] }}></div> : null}\n </div>\n </>\n ) : null}\n </FormWrapper>\n </div>\n );\n};\n","import { useIsFirstRender } from './useIsFirstRender';\nimport useEffectCallback from './useEffectCallback';\n\nexport function useEffectOnChange(callback: Function, dependencies: any) {\n const isFirstRender = useIsFirstRender();\n\n useEffectCallback(() => {\n if (isFirstRender) return;\n\n callback();\n }, dependencies);\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 type?: string;\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nconst paginationTypes = ['standard', 'numbered_button'];\n\nexport const Pagination = (props: IPaginationProps) => {\n let { type = 'standard', currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n if (!paginationTypes.includes(type)) type = 'standard';\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 const handlePreviousPage = () => {\n if (isDisabledPreviousPage) return;\n\n if (currentPage > 1) {\n onChange(currentPage - 1);\n }\n };\n\n const handleNextPage = () => {\n if (isDisabledNextPage) return;\n\n if (currentPage < totalPage) {\n onChange(currentPage + 1);\n }\n };\n\n const additionalPreviousPagination = {\n ...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => handlePreviousPage()\n })\n };\n\n const additionalNextPagination = {\n ...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => handleNextPage()\n })\n };\n\n const StandardLayout = () => (\n <>\n <button type=\"button\" className=\"sledge__pagination-navigation\" {...additionalPreviousPagination}>\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button type=\"button\" className=\"sledge__pagination-navigation\" {...additionalNextPagination}>\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </>\n );\n\n const NumberedButtonLayout = () => {\n const separatorDots = '...';\n\n const getPageNumbers = (): (number | string)[] => {\n const pageNumbers: (number | string)[] = [];\n const visiblePages = 5;\n const halfVisible = Math.floor(visiblePages / 2);\n\n let startPage = Math.max(currentPage - halfVisible, 1);\n let endPage = Math.min(startPage + visiblePages - 1, totalPage);\n\n if (endPage - startPage + 1 < visiblePages) {\n startPage = Math.max(endPage - visiblePages + 1, 1);\n }\n\n if (startPage > 1) {\n pageNumbers.push(1);\n if (startPage > 2) {\n pageNumbers.push(separatorDots);\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pageNumbers.push(i);\n }\n\n if (endPage < totalPage) {\n if (endPage < totalPage - 1) {\n pageNumbers.push(separatorDots);\n }\n pageNumbers.push(totalPage);\n }\n\n return pageNumbers;\n };\n\n return (\n <>\n {isDisabledPreviousPage ? null : (\n <button className=\"sledge__pagination-navigation-borderless\" {...additionalPreviousPagination}>\n <ChevronArrowLeftIcon width={22} height={22} color=\"#43c6ac\" />\n </button>\n )}\n\n <div className=\"sledge__pagination-numbers\">\n {getPageNumbers()?.length\n ? getPageNumbers().map((pageNumber, index) => {\n const isActive = currentPage === pageNumber;\n\n return (\n <React.Fragment key={index}>\n {pageNumber === separatorDots ? (\n <span className=\"sledge__pagination-dots\">{pageNumber}</span>\n ) : (\n <button\n onClick={() => {\n if (!isActive) onChange(pageNumber as number);\n }}\n className={`sledge__pagination-button ${isActive ? 'sledge__pagination-button--active' : ''}`}\n >\n {pageNumber}\n </button>\n )}\n </React.Fragment>\n );\n })\n : null}\n </div>\n\n {isDisabledNextPage ? null : (\n <button className=\"sledge__pagination-navigation-borderless\" {...additionalNextPagination}>\n <ChevronArrowRightIcon width={22} height={22} color=\"#43c6ac\" />\n </button>\n )}\n </>\n );\n };\n\n const renderPaginationLayout = () => {\n switch (type) {\n case 'standard':\n return <StandardLayout />;\n break;\n case 'numbered_button':\n return <NumberedButtonLayout />;\n break;\n\n default:\n return <StandardLayout />;\n break;\n }\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\" data-pagination-type={type}>\n {renderPaginationLayout()}\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\nimport { VirtualizedList } from '@core/components';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n useVirtualized?: boolean;\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n selector?: string;\n}\n\nconst rowRenderer = ({ virtualized, item, id, labelStyle }: { virtualized?: any; item: { label: string; value: string }; id: string; labelStyle?: any }) => {\n const { index, key = '' } = virtualized || {};\n\n const { label, value } = item;\n\n const content = (\n <>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </>\n );\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={key || index}>\n {content}\n </div>\n );\n};\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange, useVirtualized = false, scrollElement, selector }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {useVirtualized ? (\n <VirtualizedList\n rowCount={items?.length}\n rowRenderer={({ index, key }) =>\n rowRenderer({\n virtualized: {\n index,\n key\n },\n item: items[index],\n id,\n labelStyle\n })\n }\n scrollElement={scrollElement}\n selector={selector}\n />\n ) : (\n items.map((item: { label: string; value: string }, index: number) =>\n rowRenderer({\n virtualized: {\n index\n },\n item,\n id,\n labelStyle\n })\n )\n )}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport { Tooltip } from '@core/components';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n checked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, checked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <Tooltip\n content={value}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n checked={checked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n </Tooltip>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n const [isLoading, setIsLoading] = React.useState(true);\n\n React.useEffect(() => {\n // Trigger Re-render on defaultValue change\n setIsLoading(true);\n setTimeout(() => {\n setIsLoading(false);\n }, 0);\n }, [defaultValue]);\n\n const handleClassNameRoot = (open: boolean) => {\n if (!open) return;\n\n const selectContentElement = document.querySelector('.sledge__select-content');\n if (selectContentElement) {\n const selectRootElement = selectContentElement.parentElement;\n if (selectRootElement) selectRootElement.classList.toggle('sledge__select-root');\n }\n };\n\n return (\n <>\n {isLoading ? null : (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root\n name={name}\n required={required}\n onValueChange={onValueChange}\n onOpenChange={(open) => handleClassNameRoot(open)}\n {...(defaultValue\n ? {\n defaultValue\n }\n : {})}\n >\n <SelectElement.Trigger className=\"sledge__select-trigger\" style={labelStyle}>\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal className=\"sledge__select-portal\">\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n )}\n </>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","export interface IFilterIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const FilterIcon = ({ width, height, color }: IFilterIcon) => {\n return (\n <span className=\"sledge-icon__filter\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M22 6.5H16\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M6 6.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M10 10C11.933 10 13.5 8.433 13.5 6.5C13.5 4.567 11.933 3 10 3C8.067 3 6.5 4.567 6.5 6.5C6.5 8.433 8.067 10 10 10Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M22 17.5H18\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M8 17.5H2\" stroke={color} strokeWidth=\"1.5\" strokeMiterlimit={10} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M14 21C15.933 21 17.5 19.433 17.5 17.5C17.5 15.567 15.933 14 14 14C12.067 14 10.5 15.567 10.5 17.5C10.5 19.433 12.067 21 14 21Z\"\n stroke={color}\n strokeWidth=\"1.5\"\n strokeMiterlimit={10}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n );\n};\n","export interface IInfoCircleIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const InfoCircleIcon = ({ width, height, color }: IInfoCircleIcon) => {\n return (\n <span className=\"sledge-icon__info-circle\">\n <svg width={width} height={height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 2.00293C6.49 2.00293 2 6.49293 2 12.0029C2 17.5129 6.49 22.0029 12 22.0029C17.51 22.0029 22 17.5129 22 12.0029C22 6.49293 17.51 2.00293 12 2.00293ZM11.25 8.00293C11.25 7.59293 11.59 7.25293 12 7.25293C12.41 7.25293 12.75 7.59293 12.75 8.00293V13.0029C12.75 13.4129 12.41 13.7529 12 13.7529C11.59 13.7529 11.25 13.4129 11.25 13.0029V8.00293ZM12.92 16.3829C12.87 16.5129 12.8 16.6129 12.71 16.7129C12.61 16.8029 12.5 16.8729 12.38 16.9229C12.26 16.9729 12.13 17.0029 12 17.0029C11.87 17.0029 11.74 16.9729 11.62 16.9229C11.5 16.8729 11.39 16.8029 11.29 16.7129C11.2 16.6129 11.13 16.5129 11.08 16.3829C11.03 16.2629 11 16.1329 11 16.0029C11 15.8729 11.03 15.7429 11.08 15.6229C11.13 15.5029 11.2 15.3929 11.29 15.2929C11.39 15.2029 11.5 15.1329 11.62 15.0829C11.86 14.9829 12.14 14.9829 12.38 15.0829C12.5 15.1329 12.61 15.2029 12.71 15.2929C12.8 15.3929 12.87 15.5029 12.92 15.6229C12.97 15.7429 13 15.8729 13 16.0029C13 16.1329 12.97 16.2629 12.92 16.3829Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {value && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const {\n className = '',\n placeholder = null,\n overridePlaceholderOnMobile = null,\n prefixLabel = null,\n prefixSelectedLabel = '',\n align = 'end',\n onChange,\n value = '',\n options = [],\n LinkComponent,\n link\n } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n const selectedLabelComponent = <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n\n {overridePlaceholderOnMobile ? (\n <>\n <span className=\"sledge__hide-element-mobile-on-md\">{overridePlaceholderOnMobile}</span>\n <span className=\"sledge__hide-element-md-on-mobile\">{selectedLabelComponent}</span>\n </>\n ) : (\n selectedLabelComponent\n )}\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","interface ObjectConstructor {\n hasOwn(o: object, v: PropertyKey): boolean;\n}\n\nif (!Object.hasOwn) {\n Object.hasOwn = function (obj: object, prop: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n}\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL } from '@core/lib/const';\n\nexport const wishlistInfo = async ({ callback }: { callback(props: { totalWishlist: any; proxyUrl: any; data: any }): void }) => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run)\n callback({\n totalWishlist: valueTotalWishlist,\n proxyUrl: valueProxyUrl,\n data: response?.data\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n ...(query || {})\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n type?: 'add' | 'remove' | 'toggle';\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice, type = 'toggle' } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n }),\n type: type === 'toggle' ? '' : type\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { wishlistInfo } from './utils';\n\nexport interface IBadgeCounterProps {\n data?: any;\n}\n\nexport const BadgeCounter = (props: IBadgeCounterProps) => {\n const { data: propsData } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleGetWishlistInfo = async () => {\n if (!propsData || (propsData && !Object.keys(propsData).length)) {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist }) => {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setIsFirstLoading(false);\n setIsLoading(false);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n } else {\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, totalWishlist);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const defaultTotalWishlist = isJsVersion ? localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || null : null;\n\n return <>{isFirstLoading ? defaultTotalWishlist : isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}</>;\n};\n","import React from 'react';\nimport { INTERNAL_SELECTOR_VALUE, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\nimport { wishlistInfo } from './utils';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [data, setData] = React.useState<any>({});\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n await wishlistInfo({\n callback: ({ totalWishlist: valueTotalWishlist, proxyUrl: valueProxyUrl, data: valueData }) => {\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setData(valueData);\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER, valueTotalWishlist);\n }\n });\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point || !isRenderAppWishlist) return;\n\n handleGetWishlistInfo();\n }, [dataSettings, isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge || !isRenderAppWishlist) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge, isRenderAppWishlist]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span\n className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}\n data-component={INTERNAL_SELECTOR_VALUE.WISHLIST.ELEMENT_BADGE_COUNTER}\n >\n <div data-component={INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}>\n <BadgeCounter\n data={\n isJsVersion\n ? {\n ...data,\n ...{\n total_data: localStorage?.getItem(LOCAL_STORAGE_KEY.WISHLIST_BADGE_COUNTER) || data?.total_data\n }\n }\n : data\n }\n />\n </div>\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\nimport { BadgeCounter } from './BadgeCounter';\n\nexport const BadgeCounterInitSelector = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE_COUNTER;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (isElementDetected) return;\n\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <BadgeCounter />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n};\n\nexport const BadgeInitSelector = (props?: { selector?: string; reload?: boolean }) => {\n const { selector = '', reload = false } = props || {};\n const getSelector = selector || SELECTOR.WISHLIST.ELEMENT_BADGE;\n\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null) as string) : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(getSelector));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n if (item?.hasAttribute('loaded') && !reload) return;\n\n item.setAttribute('loaded', '');\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n const getElementContainerWidgetQuery = item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`);\n if (getElementContainerWidgetQuery) getElementContainerWidgetQuery.remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { useIntersectionObserver } from '@core/hooks';\nimport { dispatchCustomEvent } from '@core/lib/helper';\nimport { IAddWishlistParams } from '@core/api/global';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: IAddWishlistParams;\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n triggerBadge?: 'default' | 'rerender';\n reload?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked, triggerBadge = 'default', reload = false } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [mouseEnter, setMouseEnter] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(reload);\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data } = resAddWishlist || {};\n const { code } = status || {};\n const { product } = data || {};\n\n let run = code === 200;\n\n dispatchCustomEvent(!isWishlist ? CUSTOM_EVENT_NAMES.AFTER_ADD_WISHLIST : CUSTOM_EVENT_NAMES.AFTER_REMOVE_WISHLIST, {\n state: run ? 'success' : 'failed',\n product\n });\n\n if (run) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\n }\n }\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist, hasEntry]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist || !hasEntry) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, hasEntry, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n const wishlistActive = isActive || mouseEnter;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <div ref={rootRef} className=\"sledge-wishlist__trigger-root\">\n {!isLoading && !hidden && (\n <div\n className=\"sledge-wishlist__trigger-block\"\n {...(wishlistActive && {\n ['wishlist-active']: ''\n })}\n >\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n setMouseEnter(true);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n setMouseEnter(false);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeCounterInitSelector, BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n triggerBadge?: 'default' | 'rerender';\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading, triggerBadge }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n if (isJsVersion) {\n if (triggerBadge === 'rerender') {\n BadgeInitSelector({ reload: true });\n } else {\n BadgeCounterInitSelector({ reload: true });\n }\n }\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { useIntersectionObserver, usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n reload?: boolean;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5,\n reload = false\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n const [hasEntry, setHasEntry] = React.useState(reload);\n\n const previousState: any = usePrevious({ productId });\n\n const [rootRef, rootEntry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!hasEntry && rootEntry?.isIntersecting) setHasEntry(rootEntry?.isIntersecting);\n }, [rootEntry]);\n\n React.useEffect(() => {\n if (!isRenderAppProductReview || !hasEntry) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, hasEntry, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n ref={rootRef}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId, isRenderAppProductReview]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport '@core/lib/polyfills';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\nimport { dispatchCustomEvent, setElementAttribute, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { useIntersectionObserver } from '@core/hooks';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n generalDataSettings?: any;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists,\n generalDataSettings\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const {\n id: variant_id = '',\n admin_graphql_api_id: variant_admin_graphql_api_id = '',\n title: variant_title = '',\n price = '',\n compare_at_price = '',\n sku = ''\n } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n const defaultSelectedVariantInventoryManagement = variants?.length && Object.hasOwn(variants[0], 'inventory_management') ? variants[0].inventory_management : null;\n const defaultSelectedVariantInventoryPolicy = variants?.length && Object.hasOwn(variants[0], 'inventory_policy') ? variants[0].inventory_policy : '';\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n const [selectedVariantInventoryManagement, setSelectedVariantInventoryManagement] = React.useState(defaultSelectedVariantInventoryManagement);\n const [selectedVariantInventoryPolicy, setSelectedVariantInventoryPolicy] = React.useState(defaultSelectedVariantInventoryPolicy);\n const [hasEntryImage, setHasEntryImage] = React.useState(false);\n\n const [imageRef, imageEntry] = useIntersectionObserver({\n threshold: 0.1,\n root: null,\n rootMargin: '0px'\n });\n\n React.useEffect(() => {\n if (!hasEntryImage && imageEntry?.isIntersecting) setHasEntryImage(imageEntry?.isIntersecting);\n }, [imageEntry]);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = showOptionOutOfStock ? !Boolean(selectedVariantStock > 0 || selectedVariantInventoryManagement === null || selectedVariantInventoryPolicy === 'continue') : false;\n let isOnSale = parseFloat(String(compare_at_price)) ? parseFloat(String(compare_at_price)) > parseFloat(String(price)) : false;\n\n const { money_format } = generalDataSettings || {};\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants?.map((variant: any, index: number) => {\n const isInventoryQuantity = Object.hasOwn(variants[index], 'inventory_quantity') ? variants[index].inventory_quantity > 0 : false;\n const isInventoryManagement = Object.hasOwn(variants[index], 'inventory_management') ? variants[index].inventory_management === null : false;\n const isInventoryPolicy = Object.hasOwn(variants[index], 'inventory_policy') ? variants[index].inventory_policy === 'continue' : false;\n\n return {\n ...variant,\n is_out_of_stock: !Boolean(isInventoryQuantity || isInventoryManagement || isInventoryPolicy)\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n defaultSelected['data-inventory-management'] = variants[0].inventory_management;\n defaultSelected['data-inventory-policy'] = variants[0].inventory_policy;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${stringToSlug(optionName)}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n setElementAttribute({\n element: selectedInput,\n attributeName: `data-selected-option${optionIndex}`,\n value: value\n });\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${stringToSlug(selectedInput?.attributes?.['data-selected-option1']?.value)}\"]`;\n const option2 = `${selectedInput?.attributes?.['data-selected-option2'] ? `[data-option-2=\"${stringToSlug(selectedInput?.attributes?.['data-selected-option2']?.value)}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption?.attributes?.['data-graphql-id']?.value;\n const imageId = selectOption?.attributes?.['data-image-id']?.value;\n const inventoryQuantity = selectOption?.attributes?.['data-inventory-quantity']?.value;\n const inventoryManagement = selectOption?.attributes?.['data-inventory-management']?.value;\n const inventoryPolicy = selectOption?.attributes?.['data-inventory-policy']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-variant-id',\n value: selectOption?.attributes?.['data-graphql-id']?.value || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-quantity',\n value: inventoryQuantity || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-management',\n value: inventoryManagement || ''\n });\n setElementAttribute({\n element: selectedInput,\n attributeName: 'data-inventory-policy',\n value: inventoryPolicy || ''\n });\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n if (inventoryManagement) setSelectedVariantInventoryManagement(inventoryManagement);\n if (inventoryPolicy) setSelectedVariantInventoryPolicy(inventoryPolicy);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n {isOnSale && <div className=\"sledge__product-grid-badge-on-sale\">ON SALE</div>}\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <div className=\"sledge__product-grid-card-featured-image-element\">\n <img\n ref={imageRef}\n {...(hasEntryImage\n ? {\n src: image?.src || `${CDN_URL}/images/blank-image.png`,\n ['loaded']: ''\n }\n : {\n ['data-src']: image?.src || `${CDN_URL}/images/blank-image.png`\n })}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <div style={display_price_style} dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(price * 100, money_format) }}></div>\n {isOnSale && (\n <div\n className=\"sledge__product-grid-card-compare-at-price\"\n dangerouslySetInnerHTML={{ __html: shopifyFormatMoney(compare_at_price * 100, money_format) }}\n ></div>\n )}\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity, inventory_management, inventory_policy }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': stringToSlug(option1),\n 'data-option-2': stringToSlug(option2),\n 'data-inventory-quantity': inventory_quantity,\n 'data-inventory-management': inventory_management,\n 'data-inventory-policy': inventory_policy,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${stringToSlug(optionName)}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n const colorDataSettings = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) as any)?.colors || [];\n const getColorSwatch = colorDataSettings?.filter(({ name }: any) => name === item)[0] || {};\n const colorSwatch = getColorSwatch?.image ? `url(${getColorSwatch?.image})` : getColorSwatch?.rgb || item;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n background: optionName === 'Color' ? colorSwatch : null,\n backgroundSize: 'contain'\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>({});\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const handleSettings = () => {\n let responseGeneral: any;\n\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PRODUCT, {\n state: 'success'\n });\n\n onAfterRenderProduct && onAfterRenderProduct('success');\n handleSettings();\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type} data-custom-card={Boolean(props?.cards)}>\n {data?.map((item: any, index: number) => {\n return (\n <ProductCard\n item={item}\n key={`sledge-product-card_${index}`}\n handleAddToCart={handleAddToCart}\n clickedAddToCartId={clickedAddToCartId}\n generalDataSettings={generalDataSettings}\n {...props}\n />\n );\n })}\n </Container>\n );\n};\n","import React from 'react';\n\nimport './InputField.css';\n\nimport * as Form from '@radix-ui/react-form';\n\nexport const InputField = (props: any) => {\n const { className = '', value = '', onChange, required, type, name = '', ...otherProps } = props;\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(e);\n };\n\n return (\n <div className={`sledge__input-field-wrapper ${className || ''}`}>\n <Form.Field className=\"FormField\" name={name}>\n <Form.Control asChild>\n <input\n className=\"sledge__input-field\"\n type={type}\n value={value}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleChangeField(e)}\n {...(required\n ? {\n required\n }\n : {})}\n {...otherProps}\n />\n </Form.Control>\n {required && (\n <Form.Message className=\"FormMessage\" match=\"valueMissing\">\n Required field\n </Form.Message>\n )}\n {type === 'email' && (\n <Form.Message className=\"FormMessage\" match=\"typeMismatch\">\n Please fill a valid email address\n </Form.Message>\n )}\n </Form.Field>\n </div>\n );\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_COLLECTION, {\n state: 'success'\n });\n\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_PAGE, {\n state: 'success'\n });\n\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_BLOG, {\n state: 'success'\n });\n\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { CDN_URL, CUSTOM_EVENT_NAMES } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, dispatchCustomEvent, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n dispatchCustomEvent(CUSTOM_EVENT_NAMES.AFTER_RENDER_ARTICLE, {\n state: 'success'\n });\n\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content?: React.ReactNode;\n innerHTMLContent?: string;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content = null, innerHTMLContent = '', withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n {innerHTMLContent && <div dangerouslySetInnerHTML={{ __html: innerHTMLContent }}></div>}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING as string);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import React from 'react';\nimport './FlyoutSidebar.css';\nimport { CloseIcon } from '@core/components';\n\nexport interface IFlyoutSidebarProps {\n title: string;\n content: React.ReactNode;\n open: boolean;\n setOpen(value: React.SetStateAction<boolean>): void;\n}\n\nexport const FlyoutSidebar = ({ title, content, open, setOpen }: IFlyoutSidebarProps) => {\n return (\n <div\n className=\"sledge__flyout-mobile\"\n style={\n open\n ? {\n opacity: '1',\n visibility: 'visible'\n }\n : {}\n }\n >\n <div className=\"sledge__flyout-overlay\" onClick={() => setOpen(false)} />\n <div className=\"sledge__flyout-mobile-wrapper\" style={open ? { left: 0 } : {}}>\n <div className=\"sledge__flyout-header\">\n <div className=\"sledge__flyout-mobile-title\">{title}</div>\n <div className=\"sledge__flyout-close-field-wrapper\">\n <button className=\"sledge__flyout-close-field\" type=\"button\" onClick={() => setOpen(false)}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n </div>\n <div className=\"sledge__flyout-mobile-content\">{content}</div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { VirtualItem, useVirtualizer } from '@tanstack/react-virtual';\n\nexport interface IVirtualizedListProps {\n scrollElement?: Element | (Window & typeof globalThis) | undefined | null;\n rowCount: number;\n rowRenderer: (props: VirtualItem) => React.ReactNode;\n selector?: string;\n}\n\nconst getElement = ({ selector, setUsedScrollElement }: { selector: string; setUsedScrollElement: any }) => {\n const element: Element | (Window & typeof globalThis) | null = document.querySelector(selector);\n if (!element)\n setTimeout(() => {\n getElement({ selector, setUsedScrollElement });\n }, 10);\n else setUsedScrollElement(element);\n};\n\nexport const VirtualizedList = ({ scrollElement, rowCount, rowRenderer, selector }: IVirtualizedListProps) => {\n const [usedScrollElement, setUsedScrollElement]: any = React.useState(scrollElement);\n\n if (!usedScrollElement && selector) getElement({ selector, setUsedScrollElement });\n\n const virtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => usedScrollElement,\n estimateSize: () => 45\n });\n\n const items = virtualizer.getVirtualItems();\n\n return (\n <div\n style={{\n height: virtualizer.getTotalSize(),\n width: '100%',\n position: 'relative'\n }}\n className=\"sledge__virtualized-wrapper\"\n >\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${items[0]?.start ?? 0}px)`\n }}\n className=\"sledge__virtualized-list\"\n >\n {items.map((virtualRow) => (\n <div key={virtualRow.key} data-index={virtualRow.index} ref={virtualizer.measureElement} className=\"sledge__virtualized-measure-element\">\n {rowRenderer(virtualRow)}\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import './Alert.css';\n\nexport interface IAlertProps {\n children: any;\n className?: string;\n type: 'info';\n icon?: any;\n}\n\nexport const Alert = ({ children, className = '', type, icon = null }: IAlertProps) => {\n return (\n <div className={`sledge__alert ${className}`} data-alert-type={type}>\n {icon && <div>{icon}</div>}\n\n <div>{children}</div>\n </div>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n redirectObjectDirection = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n redirectObjectDirection?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult, redirectObjectDirection };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a\n href={redirectObjectDirection ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-button-more\"\n >\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import '@core/lib/polyfills';\n\nimport { DEFAULT_QUERY_PRODUCT_MEILISEARCH, HIERARCHICAL_FACET_OBJECT_ALIASES, MAX_LIMIT_HIERARCHICAL, SEPARATOR_HIERARCHICAL_FACET } from '@core/lib/const';\n\ninterface IDetectQueryStringFilter {\n facets: any;\n facetsQueryStringObject: any;\n callback(facetsQueryStringObject: any): void;\n}\n\ninterface ICreateQueryFilter extends IDetectQueryStringFilter {\n additional?: any[];\n allowedFilterSlider?: any[];\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}\n\ninterface ICreateHierarchicalFacet {\n indexValue: any;\n filter: any;\n searchResultFacets: any;\n separator: string;\n separatorCollection: string;\n clickedFacetsObject: any;\n hiddens: any[];\n hiddensCollection: any[];\n displaySettings: any;\n searchFacetDistribution: any;\n hierarchicalFacetAliases?: any[];\n hierarchicalCollectionsSettings?: any;\n}\n\nconst sortFacets = ({ facets, sortingOrder }: { facets: any[]; sortingOrder: any[] }) => {\n // Handle edge cases\n if (!facets?.length || !sortingOrder?.length) return facets;\n\n const sortRecursively = (objects: any[], orderArray: any[]): any[] => {\n // Determine sorting type based on first object structure\n const isCollectionIdSort = objects?.[0]?.parseObject?.collection_id !== undefined;\n const sortKey = isCollectionIdSort ? 'collection_id' : 'name';\n\n // Create map for quick lookups\n const objectsMap = new Map(objects.map((obj: any) => [isCollectionIdSort ? obj.parseObject[sortKey] : obj[sortKey], obj]));\n\n const sorted: any[] = [];\n const usedKeys = new Set<string>();\n\n // Sort according to order array\n orderArray.forEach((sortItem: any) => {\n const lookupKey = isCollectionIdSort ? sortItem?.id : sortItem;\n const matchingObject = objectsMap.get(lookupKey);\n\n if (lookupKey && matchingObject) {\n usedKeys.add(lookupKey);\n\n // Check if both objects have children before recursive call\n const hasMatchingChildren = matchingObject?.children?.length > 0 && sortItem?.children?.length > 0;\n\n sorted.push({\n ...matchingObject,\n ...(hasMatchingChildren\n ? {\n children: hasMatchingChildren ? sortRecursively(matchingObject?.children, sortItem?.children) : matchingObject?.children?.length ? matchingObject?.children : []\n }\n : {})\n });\n }\n });\n\n // Add remaining items that weren't in sorting order\n objects.forEach((obj: any) => {\n const objKey = isCollectionIdSort ? obj.parseObject[sortKey] : obj[sortKey];\n if (!usedKeys.has(objKey)) {\n sorted.push(obj);\n }\n });\n\n return sorted;\n };\n\n try {\n // Handle root level sorting\n const rootObjects = facets;\n const rootSortOrder = sortingOrder;\n\n // Check for root level matches and sort\n const sorted = sortRecursively(rootObjects, rootSortOrder);\n\n return sorted;\n } catch (error) {\n return facets;\n }\n};\n\nexport const parseFacetObject = ({ facet = '' }: { facet: string }) => {\n if (facet && String(facet)?.includes(SEPARATOR_HIERARCHICAL_FACET)) return JSON.parse(String(facet)?.replaceAll(SEPARATOR_HIERARCHICAL_FACET, ',')) as any;\n return null;\n};\n\nexport const detectQueryStringFilter = ({ facets, facetsQueryStringObject, callback }: IDetectQueryStringFilter) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) callback(facetsQueryStringObject);\n\n return facetsQueryStringObject;\n};\n\nexport const detectArrFacetHierarchical = ({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n}: {\n clickedFacetsObject: any;\n separator: string;\n separatorCollection: string;\n hierarchicalFacetAliases?: any[];\n}) => {\n let facetHierarchical = hierarchicalFacetAliases?.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n\n Object.entries(clickedFacetsObject).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n const isCollection = String(facet[0])?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n\n let isHierarchical = hierarchicalFacetAliases?.includes(facet[0]);\n\n if (isHierarchical)\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(isCollection ? separatorCollection : separator);\n\n if (arrItem?.length && Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n });\n }\n });\n\n return facetHierarchical;\n};\n\nexport const createQueryFilter = ({\n facets,\n facetsQueryStringObject,\n callback,\n additional = [],\n separator,\n separatorCollection,\n allowedFilterSlider,\n hierarchicalFacetAliases\n}: ICreateQueryFilter) => {\n let filters = additional?.filter((item) => item);\n\n let detectClickedFacets = detectQueryStringFilter({\n facets,\n facetsQueryStringObject,\n callback\n });\n let facetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject: detectClickedFacets,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n });\n\n const facetEntries = Object.entries(detectClickedFacets) || [];\n\n for (const facetEntry of facetEntries) {\n const detectClickedFacet: any = facetEntry;\n\n if (!(detectClickedFacet?.length && detectClickedFacet[1].length)) continue;\n\n let isCustom = ['variants.inventory_quantity'].includes(detectClickedFacet[0]);\n let isRange = allowedFilterSlider?.includes(detectClickedFacet[0]);\n let isHierarchical = hierarchicalFacetAliases?.includes(detectClickedFacet[0]);\n\n if (isHierarchical) {\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[detectClickedFacet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${detectClickedFacet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let filterItemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return `'${filterHierarchical[0]}' IN ${JSON.stringify(filterHierarchical[1])}`;\n })\n .join(' AND ');\n\n filters.push(filterItemHierarchicals);\n } else {\n let filterItem = `'${detectClickedFacet[0]}' IN ${JSON.stringify(detectClickedFacet[1])}`;\n\n if (isRange) filterItem = `'${detectClickedFacet[0]}' >= ${detectClickedFacet[1][0]} AND '${detectClickedFacet[0]}' <= ${detectClickedFacet[1][1]}`;\n if (isCustom) {\n if (Array.isArray(detectClickedFacet[1]) && detectClickedFacet[1]?.length > 1) {\n filterItem = `(${detectClickedFacet[1]\n ?.map((item: any) => {\n return `'${detectClickedFacet[0]}' ${item}`;\n })\n .join(' OR ')})`;\n } else {\n filterItem = `'${detectClickedFacet[0]}' ${detectClickedFacet[1]}`;\n }\n }\n\n filters.push(filterItem);\n }\n }\n\n return [...new Set(filters.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ');\n};\n\nexport const createHierarchicalFacet = ({\n indexValue,\n filter,\n searchResultFacets,\n separator,\n separatorCollection,\n clickedFacetsObject,\n hiddens,\n hiddensCollection,\n displaySettings,\n searchFacetDistribution,\n hierarchicalFacetAliases,\n hierarchicalCollectionsSettings\n}: ICreateHierarchicalFacet) => {\n const { hide_unrelated } = filter;\n\n const { hidden_ids: hierarchical_collections_hidden_ids, structure: hierarchical_collections_structure } = hierarchicalCollectionsSettings || {};\n\n const isCollection = String(indexValue)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n const hiddensProp = isCollection ? hiddensCollection : hiddens;\n\n let arrSelectedFacetHierarchical = detectArrFacetHierarchical({\n clickedFacetsObject,\n separator,\n separatorCollection,\n hierarchicalFacetAliases\n });\n\n let hierarchicalFacets: any = [];\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n let facets = searchResultFacets[`${indexValue}.lvl${level}`];\n\n let isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n if (isHideFacetWhenZeroValue) {\n let filteredFacets = searchFacetDistribution?.[`${indexValue}.lvl${level}`] || {};\n facets = Object.keys(filteredFacets).map((item) => {\n return {\n name: item,\n value: item,\n total: filteredFacets[item] || 0\n };\n });\n }\n\n // If facets not found\n if (!facets || (facets && !Object.keys(facets).length)) continue;\n\n let parent = hierarchicalFacets;\n\n for (let facet of facets) {\n const names = facet.name.split(isCollection ? separatorCollection : separator);\n const name = names?.[names.length - 1]?.trim?.();\n const parseObject = parseFacetObject({ facet: name });\n const isFacetObject = Boolean(parseObject?.collection_id);\n const selectedFacetHierarchical = arrSelectedFacetHierarchical[indexValue][`lvl${level}`];\n const isWhenSelectedHideSiblings = hide_unrelated && selectedFacetHierarchical?.length && !selectedFacetHierarchical.includes(facet.value);\n\n let isHidden = false;\n if (isCollection && isFacetObject && hierarchical_collections_hidden_ids?.length) {\n isHidden = hierarchical_collections_hidden_ids?.includes(parseObject?.collection_id);\n } else {\n isHidden = hiddensProp?.find((hierarchical_hidden: any) => facet.value?.startsWith(hierarchical_hidden));\n }\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,\n level,\n parseObject,\n children: []\n });\n }\n\n if (level === 0)\n parent?.push({\n ...facet,\n name,\n level: 0,\n parseObject,\n children: []\n });\n }\n }\n\n // User-based sorting\n if (isCollection) {\n hierarchicalFacets = sortFacets({\n facets: hierarchicalFacets,\n sortingOrder: hierarchical_collections_structure\n });\n }\n\n return hierarchicalFacets;\n};\n\nexport const handleConditionNotUpdateFacetDistribution = ({\n value,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n value: any;\n clickedFacets: any;\n keepCounterFacets: any;\n allowedFilterSlider?: any;\n}) => {\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n }\n });\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = false;\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider) return;\n\n isSelectedFacetWithPrice = arrFacetSelected.includes(filterSlider);\n });\n\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && keepCounterFacets?.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n};\n\nexport const handleFacetValues = ({\n filter,\n items,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n}: {\n filter?: any;\n items?: any;\n languageSettings?: any;\n clickedFacets?: any;\n searchFacetDistribution?: any;\n displaySettings?: any;\n settings?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}): any => {\n const { value, settings: filterSettings } = filter;\n\n let aliases: any = {};\n if (filter.value === HIERARCHICAL_FACET_OBJECT_ALIASES.product_type) aliases = settings.productTypeAliases || {};\n if (filter.value === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) aliases = settings.collectionAliases || {};\n\n const isCollection = String(filter?.value)?.includes(HIERARCHICAL_FACET_OBJECT_ALIASES.collections);\n\n const isHideFacetWhenZeroValue = displaySettings?.filter?.hide_when_zero_value;\n\n const { prefix, filter_list, delete_prefix, selected_filter, structure } = filterSettings || {};\n\n let facetValues: any[] = [];\n\n if (!items?.length) return facetValues;\n\n for (const item of items) {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) continue;\n\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n if (isFacetHierarchical && isCollection) labelName = parseFacetObject({ facet: labelName })?.collection_title || labelName;\n\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution({\n value: getValue,\n clickedFacets,\n keepCounterFacets,\n allowedFilterSlider\n })\n ? item?.total || 0\n : searchFacetDistribution?.[getValue] && searchFacetDistribution?.[getValue]?.[item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n let getLabelName = aliases[labelName] || labelName;\n delete_prefix?.map((deletePrefix: any) => {\n if (String(getLabelName).startsWith(deletePrefix)) getLabelName = String(getLabelName).replace(deletePrefix, '');\n });\n\n if (!(isHideFacetWhenZeroValue && !counter))\n facetValues.push({\n ...item,\n labelName: getLabelName,\n counter\n });\n }\n\n facetValues = sortFacets({\n facets: facetValues,\n sortingOrder: structure\n });\n\n return facetValues;\n};\n","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport { motion } from 'framer-motion';\nimport { Button, Checkbox, ChevronArrowDownIcon, ColorSwatch, Popover, RadioGroup, SearchIcon, SearchInputField, Select, Slider, VirtualizedList } from '@core/components';\nimport { handleFacetValues } from './utils';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getTextBetween, shopifyFormatMoney, stringToSlug } from '@core/lib/helper';\nimport { DEFAULT_FACET_LIMIT, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\n\nexport const FacetComponent = (props: {\n filter: { value: any; label: string; display: string; indexFilter: number; items: any; settings?: any };\n isFirstLoading: boolean | undefined;\n displaySettings: any;\n generalDataSettings: any;\n searchFacetDistribution: any;\n clickedFacets: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n handleFilterChange(props: any): void;\n defaultFacetStats: any;\n valueFilterPriceChange: number[];\n setValueFilterPriceChange(value: React.SetStateAction<number[]>): void;\n valueFilterOnSaleChange: number[];\n setValueFilterOnSaleChange(value: React.SetStateAction<number[]>): void;\n valueFilterSliderOthers: any;\n setValueFilterSliderOthers(value: React.SetStateAction<any>): void;\n separatedFilterItem: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n settings?: any;\n scrollElementSelector?: string;\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n colorSwatches?: any[];\n ulClasses?: string;\n languageSettings?: any;\n triggerClickedFacets?: boolean;\n setTriggerClickedFacets?(value: React.SetStateAction<boolean>): void;\n handleQueryStringFilter?(value: any): void;\n previousStateFromOutside?: any;\n keepCounterFacets?: any;\n allowedFilterSlider?: any;\n}) => {\n const {\n filter,\n isFirstLoading,\n displaySettings,\n generalDataSettings,\n searchFacetDistribution,\n clickedFacets,\n setClickedFacets,\n handleFilterChange,\n defaultFacetStats,\n valueFilterPriceChange,\n setValueFilterPriceChange,\n valueFilterOnSaleChange,\n setValueFilterOnSaleChange,\n valueFilterSliderOthers,\n setValueFilterSliderOthers,\n separatedFilterItem,\n setSeparatedFilterItem,\n settings,\n scrollElementSelector,\n layoutType,\n collectionId,\n colorSwatches,\n ulClasses = '',\n languageSettings,\n triggerClickedFacets,\n setTriggerClickedFacets,\n handleQueryStringFilter,\n previousStateFromOutside,\n keepCounterFacets,\n allowedFilterSlider\n } = props;\n\n const [keywordFacet, setKeywordFacet] = React.useState('');\n const [showFacet, setShowFacet] = React.useState(false);\n\n const searchFacetRef = React.useRef<any>(null);\n\n const previousState: any = usePrevious({ keywordFacet });\n\n const { money_format, default_currency_symbol } = generalDataSettings || {};\n const { button_load_more } = generalDataSettings?.languages || {};\n\n const { search_filter_placeholder, search_filter_show_more_result, search_filter_no_result, filter_select_placeholder, highest_price_info } = languageSettings || {};\n\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n\n const { item_pagination: is_item_pagination = true, item_pagination_limit = DEFAULT_FACET_LIMIT } = displaySettings?.filter || {};\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n let { value, label, display, indexFilter, items, settings: filterSettings } = filter;\n const { show_search, auto_select_search, hide_filter_list } = filterSettings || {};\n\n const show_filter_list_when_search = !hide_filter_list;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n\n const isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n const isDisplayInputRange = display.toLowerCase() === 'input_range';\n const getValue = `${value}-${indexFilter}`;\n\n if (show_search && keywordFacet && !isDisplaySlider) items = items?.filter(({ name }: any) => String(name)?.toLowerCase()?.includes(keywordFacet?.toLowerCase()));\n\n const handleFacetValuesProps = {\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n keepCounterFacets,\n allowedFilterSlider\n };\n\n const handleFacetLoadMore = ({ facetItems }: { facetItems: any }): { haveNextPage: boolean; currentItems: any; totalItems?: number } => {\n const arrFacetValues = isDisplaySlider\n ? facetItems\n : handleFacetValues({\n ...handleFacetValuesProps,\n items: facetItems\n });\n\n if (!is_item_pagination || isDisplaySlider) {\n return {\n haveNextPage: false,\n currentItems: arrFacetValues\n };\n }\n\n const lastItemLimit = separatedFilterItem[getValue] || Number(item_pagination_limit);\n\n let haveNextPage = Boolean(lastItemLimit < arrFacetValues?.length);\n let sliced: any = arrFacetValues;\n if (haveNextPage) sliced = sliced.slice(0, lastItemLimit);\n\n let currentItems = sliced;\n\n return {\n haveNextPage,\n currentItems,\n totalItems: Number(arrFacetValues?.length)\n };\n };\n\n const handleSearchShowMore = () => {\n setShowFacet(true);\n\n searchFacetRef?.current && searchFacetRef?.current?.focus?.();\n };\n\n const { haveNextPage, currentItems, totalItems } = handleFacetLoadMore({\n facetItems: items\n });\n\n const filterSearchShowMoreId = stringToSlug(`filter-search-show-more-${getValue}`);\n\n React.useEffect(() => {\n if (!show_search) return;\n\n setTimeout(() => document.querySelector(`#${filterSearchShowMoreId}`)?.addEventListener('click', () => handleSearchShowMore()), 100);\n\n let isKeywordFacetChanged = Boolean(previousState && previousState.keywordFacet !== keywordFacet);\n let isPreviousStateFromOutsideChanged = Boolean(previousStateFromOutside && previousStateFromOutside?.clickedFacets !== clickedFacets);\n\n if (keywordFacet && isKeywordFacetChanged) {\n const delayDebounceFn = setTimeout(() => {\n const isAutoSelectFacet = Boolean(auto_select_search && totalItems && Number(totalItems) === 1);\n\n let autoSelectFacets = currentItems\n ?.map(({ value: itemValue }: any) => {\n return clickedFacets?.[value]?.includes?.(itemValue) ? null : itemValue;\n })\n ?.filter((item: any) => item);\n\n if (isAutoSelectFacet && autoSelectFacets?.length) {\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [value]: [...new Set([...(clickedFacets?.[value]?.length ? clickedFacets?.[value] : []), ...autoSelectFacets])]\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter?.(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets?.(!triggerClickedFacets);\n }\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n if (!(showFacet && isPreviousStateFromOutsideChanged)) setShowFacet(false);\n }, [keywordFacet, clickedFacets]);\n\n const loadMoreComponent = (\n <div\n className=\"sledge-instant-search__result-filter-item-show-more\"\n onClick={() =>\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [getValue]: (old[getValue] || Number(item_pagination_limit)) + Number(item_pagination_limit)\n };\n\n return fixState;\n })\n }\n >\n {button_load_more || 'Load More'}\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </div>\n );\n\n const handleFacetCheckbox = (props: { facetValues: any; virtualized?: any }) => {\n const { facetValues, virtualized } = props;\n const { index, key } = virtualized || {};\n\n return handleFacetValues({\n ...handleFacetValuesProps,\n items: virtualized && Object.keys(virtualized)?.length ? [facetValues[index]] : facetValues\n })?.map((facetValue: any) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n const { haveNextPage, currentItems } = handleFacetLoadMore({\n facetItems: children\n });\n\n const blockComponentChildren = handleFacetCheckbox({\n facetValues: currentItems\n });\n\n const content = (\n <Checkbox\n id={`${getValue}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={\n <>\n <span>{`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}</span>\n {isHasChildren ? (\n <motion.div\n initial={false}\n animate={isChecked ? 'open' : 'closed'}\n variants={ROTATE_FILTER_ARROW_ANIMATION}\n className=\"sledge-instant-search__result-filter-checkbox-item-level-arrow\"\n >\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n ) : null}\n </>\n }\n onClick={(e) => {\n e.stopPropagation();\n\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n });\n }}\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n );\n\n return (\n <>\n <li\n key={key}\n className={`sledge-instant-search__result-filter-checkbox-item ${\n isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ''\n }`}\n onClick={(e) => {\n e.preventDefault();\n\n handleFilterChange({\n parentId: value,\n value: itemValue\n });\n }}\n >\n {content}\n </li>\n {isHasChildren && isChecked\n ? haveNextPage\n ? React.cloneElement(\n <>\n {blockComponentChildren}\n {loadMoreComponent}\n </>\n )\n : blockComponentChildren\n : null}\n </>\n );\n });\n };\n\n let scrollElement = document.querySelector(\n scrollElementSelector || `#filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-standard-${stringToSlug(value)} .sledge-instant-search__result-filter-item-list`\n );\n\n const isShowSearch = Boolean(\n show_search && (display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree' || display.toLowerCase() === 'radio') && (totalItems || (keywordFacet && !totalItems))\n );\n\n const defaultSearchShowMoreFilter = (\n <>\n {totalItems} items found,{' '}\n <span className=\"sledge-instant-search__result-filter-search-text-action\" id={filterSearchShowMoreId} onClick={() => setShowFacet(true)}>\n click here\n </span>{' '}\n to show\n </>\n );\n\n let searchFilterShowMoreResult = search_filter_show_more_result;\n if (searchFilterShowMoreResult) {\n const getActionText = getTextBetween({\n start: '<action>',\n end: '</action>',\n text: search_filter_show_more_result\n });\n\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_FILTER_ITEM, String(Number(totalItems)));\n searchFilterShowMoreResult = searchFilterShowMoreResult.replaceAll(\n `<action>${getActionText}</action>`,\n `\n <span class=\"sledge-instant-search__result-filter-search-text-action\" id=\"${filterSearchShowMoreId}\">\n ${getActionText}\n </span>`\n );\n }\n\n if (isDisplaySlider) {\n items = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n if (items && Object.keys(items)?.length) {\n items = {\n min: items?.min < 0 ? 0 : items?.min,\n max: items?.max\n };\n }\n\n let valueFilterSliderChange: any[] = [];\n let isPriceValue = false;\n let isSalePercent = false;\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n isPriceValue = true;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n isSalePercent = true;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || items?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || items?.max;\n\n // Filtering slider value when hit before min or after max\n const isTypeSliderWithInputRange = display.toLowerCase() === 'slider_with_input_range';\n if (isTypeSliderWithInputRange) {\n defaultValueMin = items?.min && Number(defaultValueMin) < Number(items?.min) ? items?.min : defaultValueMin;\n defaultValueMax = items?.max && Number(defaultValueMax) > Number(items?.max) ? items?.max : defaultValueMax;\n }\n\n let contentDefaultValueMin = isPriceValue ? shopifyFormatMoney(defaultValueMin * 100, money_format) : isSalePercent ? `${defaultValueMin}%` : defaultValueMin;\n let contentDefaultValueMax = isPriceValue ? shopifyFormatMoney(defaultValueMax * 100, money_format) : isSalePercent ? `${defaultValueMax}%` : defaultValueMax;\n\n let contentFacetStatsMax = isPriceValue ? shopifyFormatMoney(items?.max * 100, money_format) : isSalePercent ? `${items?.max}%` : items?.max;\n let descriptionInputRange = highest_price_info\n ? String(highest_price_info).replaceAll(OBJECT_DATA_STRING_KEY.PRICE_MAX_MONEY_FORMAT, contentFacetStatsMax)\n : `The highest price is ${contentFacetStatsMax}`;\n\n blockComponent = (\n <Slider\n type={display.toLowerCase()}\n valueFilterSliderChange={valueFilterSliderChange}\n labelStyle={filter_option_style}\n {...(isDisplayInputRange\n ? {\n prefixInputRange: default_currency_symbol,\n descriptionInputRange\n }\n : {})}\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n textValue={defaultValueMin === defaultValueMax ? [contentDefaultValueMax] : [contentDefaultValueMin, contentDefaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => {\n if (value === 'variants.price') {\n setValueFilterPriceChange(valueChange);\n } else if (value === 'variants.sale_percent') {\n setValueFilterOnSaleChange(valueChange);\n } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [value]: valueChange }));\n }\n }}\n wrapperClassName=\"sledge-instant-search__result-filter-item-list-slider\"\n minMaxClassName=\"sledge-instant-search__result-filter-item-list-slider-minmax\"\n minMaxTextClassName=\"sledge-instant-search__result-filter-minmax-field\"\n />\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && currentItems?.length) {\n blockComponent =\n display.toLowerCase() === 'checkbox' ? (\n <VirtualizedList\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n rowCount={currentItems?.length}\n rowRenderer={(props) =>\n handleFacetCheckbox({\n facetValues: currentItems,\n virtualized: props\n })\n }\n />\n ) : (\n <>\n {handleFacetCheckbox({\n facetValues: currentItems\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && currentItems?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={getValue}\n name={getValue}\n onValueChange={(valueChange) =>\n handleFilterChange({\n parentId: value,\n value: valueChange,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n useVirtualized\n selector={scrollElementSelector}\n {...(scrollElement && {\n scrollElement\n })}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && currentItems?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={filter_select_placeholder ? String(filter_select_placeholder).replaceAll(OBJECT_DATA_STRING_KEY.FILTER_TITLE, label) : `Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={currentItems?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && currentItems?.length) {\n blockComponent = (\n <>\n {currentItems?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${getValue}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n } else {\n blockComponent = (\n <li className=\"sledge-instant-search__result-filter-item-no-result\" style={filter_option_style}>\n {search_filter_no_result || 'No result...'}\n </li>\n );\n }\n\n if (haveNextPage) {\n blockComponent = React.cloneElement(\n <>\n {blockComponent}\n {loadMoreComponent}\n </>\n );\n }\n\n return (\n <>\n {isShowSearch ? (\n <div className=\"sledge-instant-search__result-filter-search-wrapper\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={search_filter_placeholder || 'Search filters...'}\n fieldRef={searchFacetRef}\n value={keywordFacet}\n onChange={({ value }: any) => setKeywordFacet(value)}\n onResetField={() => setKeywordFacet('')}\n className=\"sledge-instant-search__result-filter-search-form\"\n withClearField\n />\n {keywordFacet && totalItems && Number(totalItems) > 1 && !show_filter_list_when_search && !showFacet ? (\n <div className=\"sledge-instant-search__result-filter-search-text\" style={filter_option_style}>\n {searchFilterShowMoreResult ? <div dangerouslySetInnerHTML={{ __html: searchFilterShowMoreResult }}></div> : defaultSearchShowMoreFilter}\n </div>\n ) : null}\n </div>\n ) : null}\n {!show_search || (show_search && (show_filter_list_when_search || (!show_filter_list_when_search && (!totalItems || (Number(totalItems) === 1 && keywordFacet))) || showFacet)) ? (\n <ul className={ulClasses}>{blockComponent}</ul>\n ) : null}\n </>\n );\n};\n\nexport const FilterVerticalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n filterTitleStyle?: any;\n handleOpenFilterVertical(id: string | number): void;\n clickedOpenFilters: any;\n filterLayoutType: 'standard' | 'flyout';\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const { filter, filterSettings, indexFilter, filterTitleStyle = {}, handleOpenFilterVertical, clickedOpenFilters, filterLayoutType, layoutType, collectionId } = props;\n\n const { value, label } = filter;\n\n const getValue = `${value}-${indexFilter}`;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${filterLayoutType}-${stringToSlug(getValue)}`;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" id={filterItemId} key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(getValue)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filterTitleStyle}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(getValue) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(getValue) && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n ) : null;\n};\n\nexport const FilterHorizontalComponent = (props: {\n filter: {\n value: any;\n label: string;\n display: string;\n };\n filterSettings(props: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent(props?: { ulClasses?: string }): any; isLastIndex: boolean };\n indexFilter: number;\n deviceType: 'mobile' | 'desktop';\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n allowedFilter?: any[];\n layoutType?: 'product-filter' | 'default';\n collectionId?: string | number | '';\n}) => {\n const {\n filter,\n filterSettings,\n indexFilter,\n deviceType,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n allowedFilter = [],\n layoutType,\n collectionId\n } = props;\n\n const { value, label } = filter;\n\n const filterItemId = `filter-${indexFilter}-${layoutType}-${collectionId || 'all'}-${deviceType}-${stringToSlug(value)}`;\n\n const getValueOpenFilterId = deviceType === 'mobile' ? clickedOpenFilterHorizontalMobileId : clickedOpenFilterHorizontalId;\n const isOpenFilterHorizontal = getValueOpenFilterId === value;\n\n const { isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings({\n filter: {\n ...filter,\n indexFilter\n },\n scrollElementSelector: `#${filterItemId} .sledge-instant-search__result-filter-item-list`\n });\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(value);\n } else {\n setClickedOpenFilterHorizontalId?.(value);\n }\n }}\n className={`${isLastIndex ? (allowedFilter?.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isOpenFilterHorizontal ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\" id={filterItemId}>\n {isOpenFilterHorizontal && (\n <div className=\"sledge-instant-search__result-filter-item-wrapper\">\n {getFacetComponent({\n ulClasses: classesUlElement.join(' ')\n })}\n </div>\n )}\n </div>\n }\n withOpenState\n isOpen={isOpenFilterHorizontal}\n setIsOpen={(open) => {\n if (deviceType === 'mobile') {\n setClickedOpenFilterHorizontalMobileId?.(!open ? '' : value);\n } else {\n setClickedOpenFilterHorizontalId?.(!open ? '' : value);\n }\n }}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n};\n","import React from 'react';\n\nimport '@core/lib/polyfills';\n\nimport {\n Pagination,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ArticleGrid,\n Progress,\n FlyoutSidebar,\n FilterIcon,\n Alert,\n InfoCircleIcon\n} from '@core/components';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { useDebounce, useIntersectionObserver, useIsFirstRender, usePrevious } from '@core/hooks';\nimport {\n DEFAULT_LIMIT_VALUE,\n DEFAULT_MAX_WIDTH_COMPONENT,\n DEFAULT_QUERY_PARAM,\n DEFAULT_QUERY_PRODUCT_MEILISEARCH,\n HIERARCHICAL_FACET_OBJECT_ALIASES,\n LOCAL_STORAGE_KEY,\n MAX_LIMIT_HIERARCHICAL,\n OBJECT_DATA_STRING_KEY\n} from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { currentMediaQuery, isFunction, scrollToElement, shopifyFormatMoney } from '@core/lib/helper';\nimport { createHierarchicalFacet, createQueryFilter, handleFacetValues, parseFacetObject } from './utils';\nimport useEffectCallback from '@core/hooks/useEffectCallback';\nimport { FacetComponent, FilterHorizontalComponent, FilterVerticalComponent } from './Atoms';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isFirstLoading?: boolean;\n keyword?: string;\n debouncedKeyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilter?: any[];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n defaultLimit?: any;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n hierarchicalCollectionsSettings?: any;\n query?: {\n keyword?: string;\n sortBy?: string;\n page?: string;\n limit?: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n handleChangeKeyword?(value: string): void;\n generalDataSettings?: any;\n searchParams?: any;\n setSeparatedFilterItem?(value: React.SetStateAction<any>): void;\n separatedFilterItem?: any;\n clickedFacets?: any;\n setClickedFacets?(value: React.SetStateAction<any>): void;\n parentPreviousState?: any;\n clickedOpenFilterHorizontalId?: string | number | null | '';\n setClickedOpenFilterHorizontalId?(value: React.SetStateAction<string | number | null | ''>): void;\n clickedOpenFilterHorizontalMobileId?: string | number | null | '';\n setClickedOpenFilterHorizontalMobileId?(value: React.SetStateAction<string | number | null | ''>): void;\n defaultFilterItems?: any[];\n mobileShowSelectedSort?: boolean;\n soldProductAtEnd?: boolean;\n attributesToRetrieve?: any;\n allowedFilterSlider?: any[];\n hierarchicalFacetAliases?: any[];\n}\n\nconst ButtonLoadMore = ({ text, onClick, isInfiniteScroll, currentPage, totalPage, totalResult, pageInfo: pageInfoProp, isVisibleLoadMore, ...otherProps }: any) => {\n const [ref, entry] = useIntersectionObserver({\n threshold: 0,\n root: null,\n rootMargin: '0px'\n });\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n\n if (isInfiniteScroll && isVisibleLoadMore && entry?.isIntersecting) {\n const delay = setTimeout(() => onClick?.(), 500);\n return () => clearTimeout(delay);\n }\n }, [entry]);\n\n return (\n <div className=\"sledge__pagination\" ref={ref}>\n {entry?.isIntersecting && (\n <div className=\"sledge-instant-search__load-more\">\n <span>{pageInfo}</span>\n <Progress value={currentPage} total={totalPage} delay={0} />\n {isVisibleLoadMore && (\n <Button type=\"button\" role=\"button\" colorType=\"light\" onClick={onClick} {...otherProps}>\n {text}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n\n const isFirstRender = useIsFirstRender();\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(searchParams?.get(querySortBy) ? searchParams?.get(querySortBy) : sledgeSettings?.instantsearch?.default_sort || '');\n const [defaultLimit, setDefaultLimit] = React.useState<any>(DEFAULT_LIMIT_VALUE[0]);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [hierarchicalCollectionsSettings, setHierarchicalCollectionsSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_collections || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n const [generalDataSettings, setGeneralDataSettings] = React.useState<any>(sledgeSettings?.general || {});\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>(sledgeSettings?.instantsearch || {});\n const [clickedFacets, setClickedFacets] = React.useState<any>({});\n const [clickedOpenFilterHorizontalId, setClickedOpenFilterHorizontalId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilterHorizontalMobileId, setClickedOpenFilterHorizontalMobileId] = React.useState<string | number | null | ''>(null);\n const [separatedFilterItem, setSeparatedFilterItem]: any = React.useState({});\n const [defaultFilterItems, setDefaultFilterItems] = React.useState<any[]>([]);\n const [mobileShowSelectedSort, setMobileShowSelectedSort] = React.useState(true);\n const [soldProductAtEnd, setSoldProductAtEnd] = React.useState(false);\n const [attributesToRetrieve, setAttributesToRetrieve] = React.useState(sledgeSettings?.instantsearch?.attributes_to_retrieve || []);\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [allowedFilterSlider, setAllowedFilterSlider] = React.useState<any[]>([]);\n const [hierarchicalFacetAliases, setHierarchicalFacetAliases] = React.useState<any[]>([]);\n\n // Debounced states\n const debouncedKeyword = useDebounce(keyword, 500);\n\n // Separate Components\n let productCardsComponent: any = null;\n let collectionCardsComponent: any = null;\n let pageCardsComponent: any = null;\n let blogCardsComponent: any = null;\n let articleCardsComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, collectionCard, pageCard, blogCard, articleCard }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (collectionCard && isFunction(collectionCard)) collectionCardsComponent = collectionCard;\n if (pageCard && isFunction(pageCard)) pageCardsComponent = pageCard;\n if (blogCard && isFunction(blogCard)) blogCardsComponent = blogCard;\n if (articleCard && isFunction(articleCard)) articleCardsComponent = articleCard;\n }\n });\n\n const { isRenderApp, isJsVersion, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { value: valueRenderInstantSearchResult, trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const searchResultContainerRef = React.useRef(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleChangeTabIndex = (params: { id: string; name: string; type: string }) => {\n const { id, name, type } = params;\n\n setClickedTabIndexId(id);\n setClickedTabIndexName(name);\n setClickedTabIndexType(type);\n setResultComponent(id.includes(indexProduct) ? <ResultProduct /> : <ResultCategory />);\n };\n\n const handleInitStates = async (data: any) => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets: any = [];\n\n if (!isSetFilter)\n filters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value));\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n getFacets = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n getFacets = newItems;\n }\n }\n });\n\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets);\n\n return {\n indexUid: index,\n q: keyword || '',\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets : [],\n filter: isProductIndex ? [...new Set(additionalFilter.concat(DEFAULT_QUERY_PRODUCT_MEILISEARCH))].join(' AND ') : '',\n attributesToRetrieve: [],\n limit: 0,\n page: 0\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setTotalHitsProduct(totalHits || 0);\n\n let valueHideFilterWhenOneValue = display?.filter?.hide_when_one_value && totalHits <= 1;\n let valueSearchResultFacets = facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {};\n\n setSearchResultFacets(valueSearchResultFacets);\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(valueHideFilterWhenOneValue);\n let allowedFilters = sledgeSettings?.instantsearch?.filters?.length ? sledgeSettings?.instantsearch?.filters : filters?.length ? filters : [];\n\n if (!(!display?.filter?.enable_on_search || valueHideFilterWhenOneValue)) {\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { active, collections, items } = filter;\n\n if (!active) return;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] || value : value\n };\n });\n\n if (collectionId && collections?.includes(String(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) setAllowedFilter(valueAllowedFilter);\n if (valueAllowedFilter?.length) {\n let valueDefaultFilterItems: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, label, display, settings } = filter;\n const { prefix, filter_list, selected_filter } = settings || {};\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n if (isDisplaySlider) return;\n\n let items: any[] = [];\n if (display.toLowerCase() === 'tree') {\n for (let level = 0; level < MAX_LIMIT_HIERARCHICAL; level++) {\n items = [...items, ...(valueSearchResultFacets?.[`${value}.lvl${level}`] || [])];\n }\n } else {\n items = valueSearchResultFacets[value];\n }\n\n return {\n label,\n settings,\n items: items\n ?.map((item: any) => {\n const isManualFilter = item && filter_list === 'manual' && !selected_filter?.includes(item?.value);\n const isPrefixFilter = item && filter_list === 'prefix' && !prefix?.find((prefixItem: any) => item?.value?.startsWith(prefixItem));\n\n if (!item || isManualFilter || isPrefixFilter) return;\n\n return item.value;\n })\n ?.filter((item: any) => item)\n };\n })\n .filter((item: any) => item);\n\n let valueAllowedFilterSlider: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n if (!isDisplaySlider) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n let valueHierarchicalFacetAliases: any[] = valueAllowedFilter\n .map((filter: any) => {\n const { value, display } = filter;\n\n const isDisplayTree = display.toLowerCase() === 'tree';\n\n if (!isDisplayTree) return;\n\n return value;\n })\n .filter((item: any) => item);\n\n setDefaultFilterItems(valueDefaultFilterItems);\n setAllowedFilterSlider(valueAllowedFilterSlider);\n setHierarchicalFacetAliases(valueHierarchicalFacetAliases);\n }\n }\n\n setAllowedTabs(\n tabs?.map((tab: any) => {\n const { index } = tab;\n const { totalHits }: any = results?.find(({ indexUid }: any) => indexUid === index) || {};\n\n return {\n ...tab,\n ...{\n total: totalHits\n }\n };\n })\n );\n };\n\n const handleSettings = (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let responseGeneral: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n responseGeneral = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null) as string);\n\n if (!response) return;\n\n setInstantSearchSettings(response);\n\n if (responseGeneral) setGeneralDataSettings(responseGeneral);\n\n const {\n allowed_sorts,\n default_sort,\n index_product,\n tabs,\n hidden_tags,\n display,\n colors,\n show_out_of_stock,\n languages,\n hierarchical_product_type,\n hierarchical_collections,\n mobile_show_selected_sort,\n sold_product_at_end,\n attributes_to_retrieve,\n collections_all_id\n } = response;\n\n const { limit } = display?.search || {};\n\n let valueAllowedSorts = allowed_sorts?.length\n ? collectionId || collections_all_id\n ? allowed_sorts.map((allowed_sort: any) => {\n const { value, ...other_allowed_sort } = allowed_sort;\n\n const valueReplaced = collectionId ? String(collectionId) : String(collections_all_id);\n\n return {\n ...other_allowed_sort,\n value: String(value).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, valueReplaced)\n };\n })\n : allowed_sorts.filter((allowed_sort: any) => {\n const { value } = allowed_sort;\n\n if (!String(value).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) return allowed_sort;\n })\n : [];\n\n setAllowedSorts(valueAllowedSorts);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(\n searchParams?.get(querySortBy)\n ? searchParams?.get(querySortBy)\n : collectionId\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collectionId))\n : collections_all_id\n ? String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))\n : String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)\n ? valueAllowedSorts[0]?.value\n : default_sort\n );\n setDefaultLimit(localStorage?.getItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT) || limit);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n setHierarchicalCollectionsSettings(hierarchical_collections);\n setMobileShowSelectedSort(mobile_show_selected_sort);\n setSoldProductAtEnd(sold_product_at_end);\n setAttributesToRetrieve(attributes_to_retrieve);\n\n if (!show_out_of_stock)\n setClickedFacets({\n 'variants.inventory_quantity': '> 0'\n });\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n setIsLoadingSetting(false);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n useEffectCallback(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n useEffectCallback(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n useEffectCallback(() => {\n if (isFirstRender || isLoadingSetting) return;\n\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING);\n }, [debouncedKeyword, isFirstRender, isLoadingSetting]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n const alertFirstSyncComponent =\n !isFirstLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__alert-first-sync-product\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {alertFirstSyncComponent}\n\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isFirstLoading,\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState: previousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd,\n attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilter,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n defaultLimit,\n languageSettings,\n hierarchicalProductTypeSettings,\n hierarchicalCollectionsSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets,\n handleChangeKeyword,\n generalDataSettings,\n searchParams,\n setSeparatedFilterItem,\n separatedFilterItem,\n clickedFacets,\n setClickedFacets,\n parentPreviousState,\n clickedOpenFilterHorizontalId,\n setClickedOpenFilterHorizontalId,\n clickedOpenFilterHorizontalMobileId,\n setClickedOpenFilterHorizontalMobileId,\n isFirstLoading,\n defaultFilterItems,\n mobileShowSelectedSort,\n soldProductAtEnd,\n attributesToRetrieve,\n allowedFilterSlider,\n hierarchicalFacetAliases\n } = props || {};\n\n const querySortBy = query?.sortBy ? query.sortBy : DEFAULT_QUERY_PARAM.SORT_BY;\n const queryPage = query?.page ? query.page : DEFAULT_QUERY_PARAM.PAGE;\n const queryLimit = query?.limit ? query.limit : DEFAULT_QUERY_PARAM.LIMIT;\n\n const { collectionId, collectionName } = params || {};\n\n const isLoadMore = ['load_more', 'infinite_scroll'].includes(displaySettings?.search?.pagination_type);\n\n const [isLoadingProduct, setIsLoadingProduct] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(Number(searchParams?.get(queryLimit) || defaultLimit || DEFAULT_LIMIT_VALUE[0]));\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>(\n allowedFilter?.length\n ? allowedFilter\n .map((props: any, index: number) => {\n const { value, settings } = props;\n const { collapse } = settings || {};\n\n return collapse ? null : `${value}-${index}`;\n })\n .filter((item) => item)\n : []\n );\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(Number(searchParams?.get(queryPage)) && !isLoadMore ? Number(searchParams?.get(queryPage)) : 1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [valueFilterOnSaleChange, setValueFilterOnSaleChange] = React.useState<number[]>([]);\n const [valueFilterSliderOthers, setValueFilterSliderOthers] = React.useState<any>({});\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n const [isLoadingButtonLoadMore, setIsLoadingButtonLoadMore] = React.useState(false);\n const [openFilterFlyoutMobile, setOpenFilterFlyoutMobile] = React.useState(false);\n\n const {\n sort_by: language_sort_by,\n result: language_result,\n search_form_placeholder: language_search_form_placeholder,\n limit: language_limit,\n add_to_cart: language_add_to_cart,\n filter: language_filter,\n clear_filter: language_clear_filter,\n pagination_info: language_pagination_info,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const { separator: hierarchical_separator, hiddens: hierarchical_hiddens } = hierarchicalProductTypeSettings || {};\n const {\n separator: hierarchical_collections_separator,\n hiddens: hierarchical_collections_hiddens,\n hidden_ids: hierarchical_collections_hidden_ids,\n structure: hierarchical_collections_structure\n } = hierarchicalCollectionsSettings || {};\n const { money_format } = generalDataSettings || {};\n const { button_load_more, button_loading, mobile_sort_placeholder } = generalDataSettings?.languages || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <>\n {isSummaryTextFromLanguage ? (\n <span className=\"sledge-instant-search__result-data-summary-text\" dangerouslySetInnerHTML={{ __html: getSummaryText }}></span>\n ) : (\n <span className=\"sledge-instant-search__result-data-summary-text\">{defaultSummaryText}</span>\n )}\n </>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ clickedLimitId, clickedSortId, clickedFacets, clickedTabIndexId });\n\n const { color: filter_title_color, font_size: filter_title_font_size, font_weight: filter_title_font_weight, text_transform: filter_title_text_transform } = displaySettings?.filter?.title || {};\n const {\n color: filter_option_color,\n font_size: filter_option_font_size,\n font_weight: filter_option_font_weight,\n text_transform: filter_option_text_transform\n } = displaySettings?.filter?.option || {};\n const {\n text_color: filter_button_text_color,\n border_color: filter_button_border_color,\n border_radius: filter_button_border_radius,\n padding_top: filter_button_padding_top,\n padding_bottom: filter_button_padding_bottom,\n padding_left: filter_button_padding_left,\n padding_right: filter_button_padding_right,\n background_color: filter_button_background_color,\n font_size: filter_button_font_size,\n font_weight: filter_button_font_weight,\n text_transform: filter_button_text_transform\n } = displaySettings?.filter?.button || {};\n\n const filter_title_style = {\n ...(filter_title_color && { color: filter_title_color }),\n ...(filter_title_font_size && { fontSize: filter_title_font_size }),\n ...(filter_title_font_weight && { fontWeight: filter_title_font_weight }),\n ...(filter_title_text_transform && { textTransform: filter_title_text_transform })\n };\n\n const filter_option_style = {\n ...(filter_option_color && { color: filter_option_color }),\n ...(filter_option_font_size && { fontSize: filter_option_font_size }),\n ...(filter_option_font_weight && { fontWeight: filter_option_font_weight }),\n ...(filter_option_text_transform && { textTransform: filter_option_text_transform })\n };\n\n const filter_button_style = {\n ...(filter_button_text_color && { color: filter_button_text_color }),\n ...(filter_button_border_color && { borderColor: filter_button_border_color }),\n ...(filter_button_border_radius && { borderRadius: filter_button_border_radius }),\n ...(filter_button_padding_top && { paddingTop: filter_button_padding_top }),\n ...(filter_button_padding_bottom && { paddingBottom: filter_button_padding_bottom }),\n ...(filter_button_padding_left && { paddingLeft: filter_button_padding_left }),\n ...(filter_button_padding_right && { paddingRight: filter_button_padding_right }),\n ...(filter_button_background_color && { backgroundColor: filter_button_background_color }),\n ...(filter_button_font_size && { fontSize: filter_button_font_size }),\n ...(filter_button_font_weight && { fontWeight: filter_button_font_weight }),\n ...(filter_button_text_transform && { textTransform: filter_button_text_transform })\n };\n\n const isVisibleLoadMore = totalPage === currentPage && !isLoadingButtonLoadMore ? false : totalPage >= currentPage;\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(querySortBy, value);\n\n setClickedSortId(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleChangeLimit = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryLimit, String(value));\n\n setClickedLimitId(Number(value));\n\n localStorage?.setItem(LOCAL_STORAGE_KEY.LIMIT_PRODUCT, value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n setTimeout(() => {\n setSeparatedFilterItem?.((old: any) => {\n const fixState = {\n ...old,\n [id]: null\n };\n\n return fixState;\n });\n }, 100);\n };\n\n const handleFilterReset = () => {\n setClickedFacets?.({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setValueFilterOnSaleChange([]);\n setValueFilterSliderOthers({});\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = allowedFilterSlider?.includes(parentId);\n let isHierarchical = hierarchicalFacetAliases?.includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n\n // Uncheck facet children from parent\n if (isHierarchical) facets = facets.filter((facet: any) => !facet.startsWith(value));\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n if (parentId === 'variants.price') {\n setValueFilterPriceChange([]);\n } else if (parentId === 'variants.sale_percent') {\n setValueFilterOnSaleChange([]);\n } else {\n setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [parentId]: [] }));\n }\n } else {\n facets = value?.length === 1 ? [...value, ...value] : value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n let handleQueryStringFilterProp = valueClickedFacets;\n\n // Hide the additional filter in query param\n if (Object.hasOwn(handleQueryStringFilterProp, 'variants.inventory_quantity')) delete handleQueryStringFilterProp?.['variants.inventory_quantity'];\n\n handleQueryStringFilter(handleQueryStringFilterProp);\n\n setClickedFacets?.(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (props: { isLoadMore?: boolean; isReplaceData?: boolean; result?: any; onSearch?: boolean }) => {\n const { isLoadMore = false, result, onSearch } = props;\n\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsLoading(false);\n setIsLoadingProduct(false);\n setIsLoadingButtonLoadMore(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(!hits?.length ? [] : (prevState: any) => (searchResult?.length && isLoadMore ? [...prevState, ...hits] : hits));\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n setSearchFacetDistribution(facetDistribution);\n };\n\n const handleSearchResult = async (props: { isLoadMore?: boolean; isReplaceData?: boolean; onSearch?: boolean }) => {\n if (!clickedTabIndexId) return;\n\n const { isLoadMore = false, isReplaceData = false } = props;\n\n if (isReplaceData) {\n setCurrentPage(1);\n setSearchResult([]);\n\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(1));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n }\n\n setIsLoading(isReplaceData ? true : !isLoadMore);\n\n let response: any;\n let filter: any = createQueryFilter({\n facets,\n facetsQueryStringObject: clickedFacets,\n callback: (facetsQueryStringObject) => {\n setClickedFacets?.(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n if (facetsQueryStringObject['variants.sale_percent']) setValueFilterOnSaleChange(facetsQueryStringObject['variants.sale_percent']);\n\n // Set value filter slider others\n allowedFilterSlider?.map((filterSlider: any) => {\n if (!filterSlider || (filterSlider && ['variants.price', 'variants.sale_percent'].includes(filterSlider))) return;\n\n if (facetsQueryStringObject[filterSlider]) setValueFilterSliderOthers((prevState: any) => ({ ...prevState, [filterSlider]: facetsQueryStringObject[filterSlider] }));\n });\n },\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n additional: [hiddenTags?.length ? `'tags' NOT IN ${JSON.stringify(hiddenTags)}` : null, collectionId ? `'collections.id' = '${collectionId}'` : null],\n allowedFilterSlider,\n hierarchicalFacetAliases\n });\n\n let sort = soldProductAtEnd ? ['availability:asc'] : [];\n if (clickedSortId) sort.push(clickedSortId);\n\n let body = {\n q: keyword,\n sort,\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n attributesToRetrieve,\n filter\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData({\n result: response,\n ...props\n });\n };\n\n const handlePageChange = (page: number) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryPage, String(page));\n searchParams.set(queryLimit, String(clickedLimitId));\n\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n const handleLoadMore = () => {\n setCurrentPage(currentPage + 1);\n setIsLoadingButtonLoadMore(true);\n setIsReplaceWidgetList?.(true);\n };\n\n React.useEffect(() => {\n let isKeywordChanged = Boolean(parentPreviousState && parentPreviousState.keyword !== keyword);\n let isReplaceData = Boolean(\n (previousState && (previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedSortId !== clickedSortId || previousState?.clickedFacets !== clickedFacets)) ||\n isKeywordChanged\n );\n\n if (isKeywordChanged) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult({\n isReplaceData: true,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult({\n isReplaceData\n });\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\n\n React.useEffect(() => {\n let isReplaceData = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isReplaceData) {\n handleSearchResult({\n isReplaceData: isLoadMore ? false : isReplaceData,\n isLoadMore\n });\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = allowedFilterSlider?.includes(getName);\n let getAllowedFilterOne: any = allowedFilter?.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n let keepCounterFacets: any[] = [];\n allowedFilter?.map((filter) => {\n if (filter?.settings?.keep_counter) keepCounterFacets.push(filter?.value);\n });\n\n const facetBlockSelected = ({ label, name, value: valueProp, index }: any) => {\n let value = valueProp;\n\n // Parse facet object\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) {\n if (String(value)?.includes(hierarchical_collections_separator)) {\n let arrValue = String(value).split(hierarchical_collections_separator);\n value = arrValue?.length ? arrValue.map((item: any) => parseFacetObject({ facet: item })?.collection_title || item).join(hierarchical_collections_separator) : valueProp;\n } else {\n value = parseFacetObject({ facet: valueProp })?.collection_title || valueProp;\n }\n }\n\n let valueText = languageSettings?.[value] || value;\n let isRange = allowedFilterSlider?.includes(name);\n let getLabel = label;\n let getSettings: any = {};\n let isPriceValue = false;\n let isSalePercent = false;\n if (name === 'variants.price') {\n isPriceValue = true;\n } else if (name === 'variants.sale_percent') {\n isSalePercent = true;\n }\n\n if (defaultFilterItems?.length) {\n defaultFilterItems.map((defaultFilterItem) => {\n const { label: defaultFilterItemLabel, items, settings: defaultFilterItemSettings } = defaultFilterItem;\n\n if (items?.includes(value)) {\n getLabel = defaultFilterItemLabel;\n getSettings = defaultFilterItemSettings;\n }\n });\n }\n\n getSettings?.delete_prefix?.map((deletePrefix: any) => {\n if (String(valueText).startsWith(deletePrefix)) valueText = String(valueText).replace(deletePrefix, '');\n });\n\n if (isRange) {\n // Detect same value on array\n const getValueRange = new Set(value).size === 1 ? [value[0]] : value;\n\n valueText = getValueRange?.map((valueItem: any) => (isPriceValue ? shopifyFormatMoney(valueItem * 100, money_format) : isSalePercent ? `${valueItem}%` : valueItem))?.join(' - ');\n } else {\n valueText = String(valueText)?.replaceAll(hierarchical_collections_separator, ' > ');\n }\n\n valueText = String(valueText)?.replaceAll('_', ' ');\n\n let aliases: any = {};\n let aliasValue: string = '';\n let aliasSeparator = '';\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.collections) {\n aliases = settings.collectionAliases || {};\n aliasSeparator = hierarchicalCollectionsSettings.separator;\n }\n if (name === HIERARCHICAL_FACET_OBJECT_ALIASES.product_type) {\n aliases = settings.productTypeAliases || {};\n aliasSeparator = hierarchicalProductTypeSettings.separator;\n }\n if ([HIERARCHICAL_FACET_OBJECT_ALIASES.collections, HIERARCHICAL_FACET_OBJECT_ALIASES.product_type].includes(name) && aliasSeparator) {\n const splitedValues = value.split(aliasSeparator);\n let newSplitedValues = [];\n for (const splitedValue of splitedValues) {\n newSplitedValues.push(aliases[splitedValue.trim()] || splitedValue);\n }\n aliasValue = newSplitedValues.join(' > ');\n }\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\" dangerouslySetInnerHTML={{ __html: `${getLabel}: ${aliasValue || valueText}` }}></span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const filterSettings = ({\n filter,\n scrollElementSelector\n }: {\n filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n };\n scrollElementSelector?: string;\n }): { isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n const isDisplaySlider = ['slider', 'input_range', 'slider_with_input_range'].includes(display.toLowerCase());\n\n let items =\n display.toLowerCase() === 'tree'\n ? createHierarchicalFacet({\n indexValue: value,\n filter,\n searchResultFacets,\n separator: hierarchical_separator,\n separatorCollection: hierarchical_collections_separator,\n clickedFacetsObject: clickedFacets,\n hiddens: hierarchical_hiddens,\n hiddensCollection: hierarchical_collections_hiddens,\n displaySettings,\n searchFacetDistribution,\n hierarchicalFacetAliases,\n hierarchicalCollectionsSettings\n })\n : searchResultFacets[value];\n\n let isRender = Boolean(\n isDisplaySlider\n ? items\n : Number(\n handleFacetValues({\n filter,\n languageSettings,\n clickedFacets,\n searchFacetDistribution,\n displaySettings,\n settings,\n items,\n allowedFilterSlider\n })?.length\n )\n );\n if (isDisplaySlider) {\n let defaultItemSlider = defaultFacetStats?.[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let valueFilterSliderChange: any[] = [];\n if (value === 'variants.price') {\n valueFilterSliderChange = valueFilterPriceChange;\n } else if (value === 'variants.sale_percent') {\n valueFilterSliderChange = valueFilterOnSaleChange;\n } else {\n valueFilterSliderChange = valueFilterSliderOthers?.[value];\n }\n\n let defaultValueMin = valueFilterSliderChange?.[0] || defaultItemSlider?.min;\n let defaultValueMax = valueFilterSliderChange?.[1] || defaultItemSlider?.max;\n\n isRender = !defaultValueMin && !defaultValueMax ? false : true;\n }\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n const getFacetComponent = (props?: { ulClasses?: string }) => {\n const { ulClasses = '' } = props || {};\n\n return (\n <FacetComponent\n filter={{\n ...filter,\n items\n }}\n isFirstLoading={isFirstLoading}\n displaySettings={displaySettings}\n generalDataSettings={generalDataSettings}\n settings={settings}\n searchFacetDistribution={searchFacetDistribution}\n clickedFacets={clickedFacets}\n setClickedFacets={setClickedFacets}\n handleFilterChange={handleFilterChange}\n defaultFacetStats={defaultFacetStats}\n valueFilterPriceChange={valueFilterPriceChange}\n setValueFilterPriceChange={setValueFilterPriceChange}\n valueFilterOnSaleChange={valueFilterOnSaleChange}\n setValueFilterOnSaleChange={setValueFilterOnSaleChange}\n valueFilterSliderOthers={valueFilterSliderOthers}\n setValueFilterSliderOthers={setValueFilterSliderOthers}\n separatedFilterItem={separatedFilterItem}\n setSeparatedFilterItem={setSeparatedFilterItem}\n scrollElementSelector={scrollElementSelector}\n layoutType={layoutType}\n collectionId={collectionId}\n colorSwatches={colorSwatches}\n ulClasses={ulClasses}\n languageSettings={languageSettings}\n triggerClickedFacets={triggerClickedFacets}\n setTriggerClickedFacets={setTriggerClickedFacets}\n handleQueryStringFilter={handleQueryStringFilter}\n previousStateFromOutside={previousState}\n keepCounterFacets={keepCounterFacets}\n allowedFilterSlider={allowedFilterSlider}\n />\n );\n };\n\n if (display.toLowerCase() === 'swatch' && items?.length) classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n if (display.toLowerCase() === 'tree') classesUlElement.push('sledge-instant-search__result-filter-item-tree');\n if (displaySettings?.filter?.layout === 'vertical' && allowedFilter?.length === 1) classesUlElement?.push('sledge-instant-search__result-filter-item-list-just-one');\n\n let isLastIndex = allowedFilter ? allowedFilter?.length - 1 === indexFilter : false;\n\n return { isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalSelected = Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null;\n\n const filterVerticalComponents = ({ filterLayoutType }: { filterLayoutType: 'standard' | 'flyout' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterVerticalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n filterTitleStyle={filter_title_style}\n handleOpenFilterVertical={handleOpenFilterVertical}\n clickedOpenFilters={clickedOpenFilters}\n filterLayoutType={filterLayoutType}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const filterHorizontalComponents = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n allowedFilter?.map((filter: any, indexFilter) => (\n <FilterHorizontalComponent\n filter={filter}\n filterSettings={filterSettings}\n indexFilter={indexFilter}\n deviceType={deviceType}\n clickedOpenFilterHorizontalId={clickedOpenFilterHorizontalId}\n setClickedOpenFilterHorizontalId={setClickedOpenFilterHorizontalId}\n clickedOpenFilterHorizontalMobileId={clickedOpenFilterHorizontalMobileId}\n setClickedOpenFilterHorizontalMobileId={setClickedOpenFilterHorizontalMobileId}\n allowedFilter={allowedFilter}\n layoutType={layoutType}\n collectionId={collectionId}\n />\n ));\n\n const paginationComponent = isLoadMore ? (\n <ButtonLoadMore\n disabled={isLoadingButtonLoadMore}\n onClick={handleLoadMore}\n style={{\n ...(isLoadingButtonLoadMore && {\n cursor: 'wait'\n })\n }}\n text={isLoadingButtonLoadMore ? button_loading || 'Loading...' : button_load_more || 'Load More'}\n isInfiniteScroll={displaySettings?.search?.pagination_type === 'infinite_scroll'}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n pageInfo={language_pagination_info}\n isVisibleLoadMore={isVisibleLoadMore}\n />\n ) : (\n <Pagination\n type={displaySettings?.search?.pagination_type}\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n );\n\n const filterHorizontalBlockComponent = ({ deviceType }: { deviceType: 'mobile' | 'desktop' }) =>\n displaySettings?.filter?.enable_on_search && allowedFilter?.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">\n {filterHorizontalComponents({ deviceType })}\n </div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n const searchInputFieldComponent = (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n );\n\n const renderFilterLayoutOnMobile = () => {\n switch (displaySettings?.filter?.mobile_layout) {\n case 'flyout':\n return (\n <div className=\"sledge-instant-search__result-search-field-flex\">\n <Button type=\"button\" className=\"sledge-instant-search__trigger-filter-flyout\" onClick={() => setOpenFilterFlyoutMobile(true)}>\n <span>{language_filter || 'Filter'}</span>\n <FilterIcon width={18} height={18} color=\"#393d4e\" />\n </Button>\n {searchInputFieldComponent}\n </div>\n );\n break;\n\n case 'standard':\n return (\n <>\n {searchInputFieldComponent}\n {filterHorizontalBlockComponent({ deviceType: 'mobile' })}\n </>\n );\n break;\n\n default:\n return null;\n break;\n }\n };\n\n return (\n <>\n {/* Filter Flyout on Mobile */}\n {displaySettings?.filter?.mobile_layout === 'flyout' && (\n <FlyoutSidebar\n title={language_filter || 'Filter'}\n content={\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'flyout'\n })?.filter((item) => item)?.length\n ? filterVerticalComponents({\n filterLayoutType: 'flyout'\n })\n : null}\n </>\n }\n open={openFilterFlyoutMobile}\n setOpen={setOpenFilterFlyoutMobile}\n />\n )}\n\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter?.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent({ deviceType: 'desktop' })}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n (!allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isFirstLoading) ||\n (allowedFilter?.find(({ display }: any) => display?.toLowerCase() === 'tree') && isLoadingProduct) ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {filterVerticalSelected}\n {filterVerticalComponents({\n filterLayoutType: 'standard'\n })}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile sledge-instant-search__search-field-lg\">{searchInputFieldComponent}</div>\n\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{renderFilterLayoutOnMobile()}</div>\n\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId}\n onChange={({ value }: any) => handleChangeSort(value)}\n {...(!mobileShowSelectedSort\n ? {\n overridePlaceholderOnMobile: mobile_sort_placeholder || 'Sort'\n }\n : {})}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n debouncedKeyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n handleChangeKeyword\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleSearchResultData = (result: any) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages } = result;\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList?.(false);\n setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(summaryTextGenerator(totalHits));\n };\n\n const handleSearchResult = async (isReplaceData = false) => {\n if (!clickedTabIndexId) return;\n\n if (isReplaceData) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: [],\n page: isReplaceData ? 1 : currentPage,\n hitsPerPage: 12\n };\n\n response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response);\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList?.(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n handleSearchResult();\n }, [debouncedKeyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword?.(value)}\n onResetField={() => handleChangeKeyword?.('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\n\nexport function useDebounce(value: any, delay: number) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion, componentRef } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n const { searchIconWidget: searchIconWidgetRef } = componentRef || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget} ref={searchIconWidgetRef}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading, Alert, InfoCircleIcon } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n const [totalHitsProduct, setTotalHitsProduct] = React.useState(0);\n const [instantSearchSettings, setInstantSearchSettings] = React.useState<any>({});\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n setTotalHitsProduct(valueSearchResultProduct[0]?.totalHits || 0);\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n setInstantSearchSettings(response);\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n const alertFirstSyncComponent =\n !isLoading && !totalHitsProduct && instantSearchSettings?.first_sync ? (\n <Alert className=\"sledge-instant-search__icon-widget-popup-alert-first-sync\" type=\"info\" icon={<InfoCircleIcon width={24} height={24} color=\"#003a5a\" />}>\n <div>Products and Collections indexing is in progress. Product Filter and Instant Search widgets may appear empty during this process.</div>\n <p></p>\n <div>The products and collections will become visible in the widgets once indexing is complete.</div>\n </Alert>\n ) : null;\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n {alertFirstSyncComponent}\n\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = isRedirect ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n redirectObjectDirection={redirectObjectDirection}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_QUERY_PRODUCT_MEILISEARCH, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword) || '');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [redirectsSettings, setRedirectsSettings] = React.useState([]);\n const [redirectObject, setRedirectObject] = React.useState<any>({});\n const [isRedirect, setIsRedirect] = React.useState(false);\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const { direction: redirectObjectDirection } = redirectObject || {};\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n const valueRedirectObject: any = redirectsSettings.find(({ keyword: redirectKeyword }) => String(redirectKeyword)?.toLowerCase() === keyword);\n const valueIsRedirect = Boolean(valueRedirectObject?.direction?.length);\n\n setRedirectObject(valueRedirectObject);\n setIsRedirect(valueIsRedirect);\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock, attributes_to_retrieve, default_sort, search_use_default_sort, collections_all_id } = data;\n const suggestion = display?.search?.suggestion || {};\n const instantSearchLimit = Number(display?.search?.instantsearch_limit || 6);\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = DEFAULT_QUERY_PRODUCT_MEILISEARCH;\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n\n let sort: string[] = [];\n if (isProductIndex && search_use_default_sort && default_sort) {\n if (String(default_sort).includes(OBJECT_DATA_STRING_KEY.COLLECTION_ID)) {\n sort = collections_all_id ? [String(default_sort).replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_ID, String(collections_all_id))] : [];\n } else {\n sort = [default_sort];\n }\n } else {\n sort = [];\n }\n\n return {\n indexUid: index,\n q: keyword,\n sort,\n hitsPerPage: isProductIndex ? instantSearchLimit : 4,\n filter: isProductIndex ? [...new Set(additionalFilter)].join(' AND ') : '',\n attributesToRetrieve: attributes_to_retrieve\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING as string);\n\n if (!response) return;\n\n const { display, languages, redirects } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n setRedirectsSettings(redirects);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse((localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null) as string);\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 250);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const urlToSearchResult = isRedirect ? redirectObjectDirection : `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n {showSearchResult ? (\n <div className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n redirectObjectDirection={redirectObjectDirection}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </div>\n ) : null}\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","TRIGGER_BADGE","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","ELEMENT_WIDGET_POPUP","ELEMENT_BADGE_COUNTER","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","CUSTOM_EVENT_NAMES","DEFAULT_LIMIT_VALUE","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","DEFAULT_QUERY_PRODUCT_MEILISEARCH","DEFAULT_FACET_LIMIT","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","shopifyUrl","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","SEPARATOR_HIERARCHICAL_FACET","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","useIsFirstRender","renderRef","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","stringToSlug","text","toLowerCase","shopifyFormatMoney","cents","format","placeholderRegex","formatString","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","_a","dispatchCustomEvent","eventName","detail","customEvent","CustomEvent","bubbles","cancelable","composed","document","dispatchEvent","setElementAttribute","attributeName","hasAttribute","setAttribute","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","arrowElement","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","delay","progress","setProgress","valueProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","inputRangeFormatter","cleanValue","_b","numValue","parseFloat","Number","isInteger","toString","integerPart","decimalPart","slice","padEnd","Slider","props","type","prefixInputRange","descriptionInputRange","valueFilterSliderChange","textValue","min","max","step","setValueCommit","setValueChange","wrapperClassName","minMaxClassName","minMaxTextClassName","inputRangeMin","setInputRangeMin","inputRangeMax","setInputRangeMax","delayInputRangeRef","hasMaxValue","FormWrapper","Form.Root","Fragment","isTypeInputRange","isTypeIncludeSlider","isTypeIncludeInputRange","_c","handleChangeInputRange","event","valueInput","target","valueCommit","lastValueMin","lastValueMax","valueInputRange","valueCommitFiltered","filterValueMinOrMax","isFirstRender","useEffectOnChange","InputField","onChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","innerHTMLContent","wrapTrigger","SliderElement.Thumb","dangerouslySetInnerHTML","__html","paginationTypes","Pagination","currentPage","totalPage","totalResult","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","additionalPreviousPagination","disabled","additionalNextPagination","StandardLayout","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","NumberedButtonLayout","separatorDots","getPageNumbers","pageNumbers","halfVisible","Math","floor","visiblePages","startPage","endPage","push","i","pageNumber","index","isActive","defaultPageInfo","replaceAll","rowRenderer","virtualized","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","RadioGroup","defaultValue","items","useVirtualized","scrollElement","selector","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","VirtualizedList","rowCount","ColorSwatch","rgb","image","styles","backgroundImage","backgroundSize","Select","placeholder","isLoading","setIsLoading","SelectElement.Root","$cc7e05a45900e73f$export$be92b6f5f03c0fe9","selectContentElement","selectRootElement","classList","toggle","handleClassNameRoot","SelectElement.Trigger","$cc7e05a45900e73f$export$41fb9f06171c75f4","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","$cc7e05a45900e73f$export$602eac185826482c","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","FilterIcon","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","strokeLinejoin","InfoCircleIcon","Button","buttonRef","colorType","fullWidth","elementType","link","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","e","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","SelectField","overridePlaceholderOnMobile","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","selectedLabelComponent","motion","div","initial","animate","variants","option","Item","scroll","to","hasOwn","obj","prop","prototype","hasOwnProperty","call","wishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","total_data","totalWishlist","proxyUrl","BadgeCounter","propsData","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","isJsVersion","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","setTotalWishlist","isFirstLoading","setIsFirstLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","handleGetWishlistInfo","setItem","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","launch_point","defaultTotalWishlist","Badge","useProxyUrl","position","positionProp","defaultColorIcon","colorIcon","setColorIcon","setProxyUrl","proxy_url","setData","floating_button_type","alert_login","alert","login_button","languages","widget","defaultPosition","valueData","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeCounterInitSelector","reload","getSelector","Array","from","querySelectorAll","getElementContainerWidgetQuery","remove","elementContainerWidget","createElement","appendChild","createRoot","render","StrictMode","Provider","productReview","instantSearch","BadgeInitSelector","sledgeWishlistSettings","isElementDetected","isBottomFloatingType","getAttribute","Boolean","Trigger","forceActive","hidden","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","triggerBadge","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","mouseEnter","setMouseEnter","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","hasEntry","setHasEntry","rootRef","rootEntry","global","show","show_notification","location_notification","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","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","state","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","isIntersecting","sledgeWishlistTriggerUpdate","wishlistActive","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","init","customInit","MutationObserver","mutations","mutation","addedNodes","matches","elementNode","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","compare_at_price","defaultSelectedVariantId","defaultSelectedVariantStock","inventory_quantity","defaultSelectedVariantInventoryManagement","inventory_management","defaultSelectedVariantInventoryPolicy","inventory_policy","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","selectedVariantInventoryManagement","setSelectedVariantInventoryManagement","selectedVariantInventoryPolicy","setSelectedVariantInventoryPolicy","hasEntryImage","setHasEntryImage","imageRef","imageEntry","isLoadingAddToCart","isOutOfStock","isOnSale","money_format","component","CardsProps","variant","isInventoryQuantity","isInventoryManagement","isInventoryPolicy","is_out_of_stock","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","_i","inventoryQuantity","_k","_j","inventoryManagement","_m","_l","inventoryPolicy","_o","_n","src","entries","images","productClickTrigger$1","loaded","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","colorDataSettings","colors","getColorSwatch","colorSwatch","background","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","setGeneralDataSettings","resShopifyAddToCart","Shopify","routes","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","responseGeneral","Form.Field","Form.Control","Form.Message","$d94698215c4408a7$export$f69c19e57285b83a","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","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","FlyoutSidebar","opacity","visibility","left","getElement","setUsedScrollElement","usedScrollElement","virtualizer","useVirtualizer","getScrollElement","estimateSize","getVirtualItems","getTotalSize","start","virtualRow","measureElement","Alert","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","redirectObjectDirection","ComponentProps","view_more_result","sortFacets","facets","sortingOrder","sortRecursively","objects","orderArray","isCollectionIdSort","parseObject","collection_id","sortKey","objectsMap","Map","sorted","usedKeys","Set","sortItem","lookupKey","matchingObject","get","hasMatchingChildren","objKey","has","parseFacetObject","facet","detectArrFacetHierarchical","clickedFacetsObject","separator","separatorCollection","hierarchicalFacetAliases","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","isCollection","arrItem","createQueryFilter","facetsQueryStringObject","additional","allowedFilterSlider","filters","detectClickedFacets","searchParams","searchParamsObject","fromEntries","searchParamsKey","detectQueryStringFilter","facetEntries","facetEntry","detectClickedFacet","isCustom","isRange","arrItemHierarchicals","itemHierarchical","filterItemHierarchicals","filterHierarchical","join","filterItem","isArray","handleConditionNotUpdateFacetDistribution","clickedFacets","keepCounterFacets","arrFacetSelected","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","filterSlider","isPriorityFacet","handleFacetValues","searchFacetDistribution","displaySettings","settings","filterSettings","aliases","productTypeAliases","collectionAliases","isHideFacetWhenZeroValue","hide_when_zero_value","prefix","filter_list","delete_prefix","selected_filter","structure","facetValues","isManualFilter","isPrefixFilter","find","prefixItem","startsWith","isFacetHierarchical","labelName","collection_title","getValue","level","counter","getLabelName","deletePrefix","FacetComponent","setClickedFacets","handleFilterChange","defaultFacetStats","valueFilterPriceChange","setValueFilterPriceChange","valueFilterOnSaleChange","setValueFilterOnSaleChange","valueFilterSliderOthers","setValueFilterSliderOthers","separatedFilterItem","setSeparatedFilterItem","scrollElementSelector","layoutType","collectionId","colorSwatches","ulClasses","triggerClickedFacets","setTriggerClickedFacets","handleQueryStringFilter","previousStateFromOutside","keywordFacet","setKeywordFacet","showFacet","setShowFacet","searchFacetRef","default_currency_symbol","button_load_more","search_filter_placeholder","search_filter_show_more_result","search_filter_no_result","filter_select_placeholder","highest_price_info","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","item_pagination","is_item_pagination","item_pagination_limit","filter_option_style","indexFilter","show_search","auto_select_search","hide_filter_list","show_filter_list_when_search","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","isDisplaySlider","isDisplayInputRange","handleFacetValuesProps","handleFacetLoadMore","facetItems","arrFacetValues","haveNextPage","currentItems","lastItemLimit","sliced","totalItems","filterSearchShowMoreId","handleSearchShowMore","isKeywordFacetChanged","isPreviousStateFromOutsideChanged","delayDebounceFn","isAutoSelectFacet","autoSelectFacets","itemValue","valueClickedFacets","handleQueryStringFilterProp","loadMoreComponent","old","handleFacetCheckbox","facetValue","isHasChildren","isChecked","blockComponentChildren","parentId","isShowSearch","defaultSearchShowMoreFilter","searchFilterShowMoreResult","getActionText","end","getText","indexOf","substring","getTextBetween","isPriceValue","isSalePercent","defaultValueMin","defaultValueMax","contentDefaultValueMin","contentDefaultValueMax","contentFacetStatsMax","prevState","force","FilterVerticalComponent","filterTitleStyle","handleOpenFilterVertical","clickedOpenFilters","filterLayoutType","filterItemId","isRender","classesUlElement","getFacetComponent","FilterHorizontalComponent","deviceType","clickedOpenFilterHorizontalId","setClickedOpenFilterHorizontalId","clickedOpenFilterHorizontalMobileId","setClickedOpenFilterHorizontalMobileId","allowedFilter","isOpenFilterHorizontal","isLastIndex","ButtonLoadMore","isInfiniteScroll","isVisibleLoadMore","role","SearchResultWidget","querySortBy","sortBy","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","setAllowedFilter","allowedTabs","setAllowedTabs","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","setDisplaySettings","setColorSwatches","defaultSort","setDefaultSort","defaultLimit","setDefaultLimit","setLanguageSettings","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","hierarchical_product_type","hierarchicalCollectionsSettings","setHierarchicalCollectionsSettings","hierarchical_collections","initStatesFirstTime","setInitStatesFirstTime","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","general","instantSearchSettings","setInstantSearchSettings","defaultFilterItems","setDefaultFilterItems","mobileShowSelectedSort","setMobileShowSelectedSort","soldProductAtEnd","setSoldProductAtEnd","attributesToRetrieve","setAttributesToRetrieve","attributes_to_retrieve","totalHitsProduct","setTotalHitsProduct","setAllowedFilterSlider","setHierarchicalFacetAliases","debouncedKeyword","debouncedValue","setDebouncedValue","handler","useDebounce","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","searchResultContainerRef","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","tabs","show_out_of_stock","mobile_show_selected_sort","sold_product_at_end","collections_all_id","limit","valueAllowedSorts","allowed_sort","other_allowed_sort","valueReplaced","INSTANT_SEARCH_SETTING","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","page","results","facetStats","totalHits","facetDistribution","valueHideFilterWhenOneValue","hide_when_one_value","valueSearchResultFacets","allowedFilters","enable_on_search","valueAllowedFilter","valueDefaultFilterItems","valueAllowedFilterSlider","valueHierarchicalFacetAliases","handleInitStates","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","layout","filterVerticalSkeleton","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","alertFirstSyncComponent","first_sync","ResultCategory","handleChangeTabIndex","_w","_x","handleChangeKeyword","searchParams2","set","history","pushState","pathname","parentPreviousState","queryPage","queryLimit","collectionName","isLoadMore","pagination_type","isLoadingProduct","setIsLoadingProduct","clickedLimitId","setClickedLimitId","setClickedOpenFilters","collapse","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","handleSearchResultFirstTime","setHandleSearchResultFirstTime","setSearchFacetDistribution","isLoadingButtonLoadMore","setIsLoadingButtonLoadMore","openFilterFlyoutMobile","setOpenFilterFlyoutMobile","language_result","language_search_form_placeholder","language_limit","add_to_cart","language_add_to_cart","language_filter","clear_filter","language_clear_filter","pagination_info","language_pagination_info","total_result_text","language_total_result_text","hierarchical_separator","hiddens","hierarchical_hiddens","hierarchical_collections_separator","hierarchical_collections_hiddens","hidden_ids","hierarchical_collections_hidden_ids","hierarchical_collections_structure","button_loading","mobile_sort_placeholder","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","otherQueryStringObject","valueClickedFacetsKey","newQueryString","valueClickedOpenFilters","findIndex","splice","handleFilterReset","isHierarchical","facets2","handleSearchResult","isReplaceData","sort","onSearch","processingTimeMs","totalPages","handleSearchResultData","isKeywordChanged","dataClickedFacets","getName","getAllowedFilterOne","getLabel","keep_counter","facetBlockSelected","valueProp","arrValue","valueText","getSettings","defaultFilterItem","defaultFilterItemLabel","defaultFilterItemSettings","getValueRange","valueItem","aliasValue","aliasSeparator","splitedValues","newSplitedValues","splitedValue","trim","indexValue","hiddensCollection","hide_unrelated","hiddensProp","arrSelectedFacetHierarchical","hierarchicalFacets","filteredFacets","parent","names","isFacetObject","selectedFacetHierarchical","isWhenSelectedHideSiblings","isHidden","hierarchical_hidden","foundIndex","createHierarchicalFacet","defaultItemSlider","filterVerticalSelected","show_refine_by_block","itemClickedFacet","filterVerticalComponents","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","searchInputFieldComponent","mobile_layout","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","redirectsSettings","setRedirectsSettings","redirectObject","setRedirectObject","isRedirect","setIsRedirect","setHandleFunctions","direction","handleMultiSearch","withFetchReviewInfo","valueRedirectObject","redirectKeyword","valueIsRedirect","search_use_default_sort","suggestion","instantSearchLimit","instantsearch_limit","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","redirects","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}
|