@sledge-app/react-instant-search 1.0.38 → 1.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sledge-react-instant-search.cjs","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share'\n};\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n // cleaning from different token\n const mainUrl = url.split('?')[0];\n const cacheMatches = await cache.matchAll();\n const filteredCaches = await cacheMatches.filter((f: any) => f.url.includes(mainUrl) && f.url !== url);\n for (const c of filteredCaches) {\n await cache.delete(c.url);\n }\n\n cache.put(url, networkResponse.clone());\n\n return networkResponse;\n });\n\n return cachedResponse || fetchedResponse;\n });\n });\n}\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n","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}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '' }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setProgress((+value / total) * 100), 150);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: string;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\nimport React from 'react';\n\nexport interface ISliderProps {\n defaultValue: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { defaultValue, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n const [valueSlider, setValueSlider] = React.useState(defaultValue);\n const [hoverActiveMin, setHoverActiveMin] = React.useState(false);\n const [hoverActiveMax, setHoverActiveMax] = React.useState(false);\n\n React.useEffect(() => {\n setValueSlider(defaultValue);\n }, [defaultValue]);\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n defaultValue={defaultValue}\n value={valueSlider}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => {\n setValueCommit?.(valueCommit);\n }}\n onValueChange={(valueChange: number[]) => {\n setValueChange?.(valueChange);\n setValueSlider(valueChange);\n }}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={valueSlider[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n forceOpen={hoverActiveMin}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" onMouseEnter={() => setHoverActiveMin(true)} onMouseLeave={() => setHoverActiveMin(false)} />\n </Tooltip>\n {!defaultValue[1] ? null : (\n <Tooltip\n content={valueSlider[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n forceOpen={hoverActiveMax}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" onMouseEnter={() => setHoverActiveMax(true)} onMouseLeave={() => setHoverActiveMax(false)} />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run) {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setIsLoading(false);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '') : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const { id: variant_id = '', admin_graphql_api_id: variant_admin_graphql_api_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${optionName}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${optionName}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n backgroundColor: optionName === 'Color' ? item : null\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return <ProductCard item={item} key={`sledge-product-card_${index}`} handleAddToCart={handleAddToCart} clickedAddToCartId={clickedAddToCartId} {...props} />;\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n forceOpen?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true, forceOpen }: 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\n onOpenChange={setOpen}\n {...(forceOpen\n ? {\n open: forceOpen\n }\n : {})}\n >\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_MAX_WIDTH_COMPONENT, DEFAULT_QUERY_PARAM, LOCAL_STORAGE_KEY, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n showOutOfStock?: boolean;\n languageSettings?: any;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n}\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilters, setAllowedFilters] = React.useState(sledgeSettings?.instantsearch?.filters || []);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(sledgeSettings?.instantsearch?.default_sort || '');\n const [showOutOfStock, setShowOutOfStock] = React.useState(sledgeSettings?.instantsearch?.show_out_of_stock);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\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\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, type?: 'totalDataPerIndex' | 'default') => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return items?.map(({ value }: any) => value);\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: type === 'default' ? '' : keyword,\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n if (type === 'totalDataPerIndex') {\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 } else {\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { allowed_sorts, default_sort, filters, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages } = response;\n\n setAllowedSorts(allowed_sorts?.length ? allowed_sorts : []);\n setAllowedFilters(filters?.length ? filters : []);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(default_sort);\n setShowOutOfStock(show_out_of_stock);\n setLanguageSettings(languages);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n await handleInitStates(response, 'default');\n\n if (layoutType === 'default') await handleInitStates(response, 'totalDataPerIndex');\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword) && layoutType === 'default') {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING, 'totalDataPerIndex');\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n languageSettings,\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 })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n languageSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n setKeyword,\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 } = props || {};\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId, collectionName } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(displaySettings?.search?.limit || 10);\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>([]);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n\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 summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, 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 detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) {\n setClickedFacets(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n }\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (label: string, value: string) => {\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setClickedLimitId(value);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n };\n\n const handleFilterReset = () => {\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n };\n\n const handleFilterChange = (parentId: string, value: any, force = false) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (result: any, onSearch: boolean) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList && setIsReplaceWidgetList(false);\n setSearchResult(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 (isRefreshPage = false, onSearch = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let value = `'${facet[0]}'`;\n\n let isCustom = ['variants.inventory_quantity'].includes(facet[0]);\n let isRange = ['variants.price'].includes(facet[0]);\n let isArray = ['tags'].includes(facet[0]);\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? `${value} >= ${facet[1][0]} AND ${value} <= ${facet[1][1]}`\n : isArray\n ? `${value} IN ${JSON.stringify(facet[1])}`\n : `(${facet[1]\n ?.map((item: any) => {\n return isCustom ? `${value} ${item}` : `${value} = '${item}'`;\n })\n .join(' OR ')})`\n : isCustom\n ? `${value} ${facet[1]}`\n : isArray\n ? `${value} IN ${JSON.stringify(facet[1])}`\n : `${value} = '${facet[1]}'`;\n\n return items;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`'tags' NOT IN ${JSON.stringify(hiddenTags)}`);\n if (collectionId) filters.push(`'collections.id' = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response, onSearch);\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || hideFilterWhenOneValue) return;\n\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = items;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = items;\n }\n }\n });\n\n if (isSetFilter) {\n setAllowedFilter(valueAllowedFilter);\n setClickedOpenFilters(valueAllowedFilter?.length ? valueAllowedFilter.map(({ value }: any) => value) : []);\n }\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList && setIsReplaceWidgetList(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword && setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(\n previousState && (previousState?.keyword !== keyword || previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult(true, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\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 React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n let dataClickedFacets: any[] = [];\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span className=\"sledge-instant-search__result-filter-item-refine-title-clear\" onClick={() => handleFilterChange(name, value)}>\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 handleConditionUpdateFacetDistribution = (value: any) => {\n let isHasFacetSelected = arrFacetSelected?.length;\n let isOnFacetSelectedOne = arrFacetSelected.includes(value) && arrFacetSelected?.length === 1;\n let isPriorityFacetClicked = ['vendor'].includes(value);\n\n return !arrFacetSelected?.length || (isHasFacetSelected && (isPriorityFacetClicked || isOnFacetSelectedOne));\n };\n\n const facetComponent = (filter: any) => {\n const { value, label, display } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n let items = searchResultFacets[value];\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n\n if (display.toLowerCase() === 'slider') {\n items = defaultFacetStats[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n defaultValue={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) => {\n setValueFilterPriceChange(valueCommit);\n\n handleFilterChange(value, valueCommit);\n }}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if (display.toLowerCase() === 'checkbox' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let labelName = item.name;\n let labelTotal = handleConditionUpdateFacetDistribution(value)\n ? item?.total || 0\n : searchFacetDistribution[value] && searchFacetDistribution[value][item.value]\n ? searchFacetDistribution[value][item.value]\n : 0;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n return (\n <li key={index}>\n <Checkbox\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n label={`${labelName}${labelTotal !== undefined && isShowNumberMatchingProduct ? ` (${labelTotal})` : ''}`}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n checked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n labelStyle={filter_option_style}\n />\n </li>\n );\n })}\n </>\n );\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value: itemValue, total } = item;\n\n let labelTotal = handleConditionUpdateFacetDistribution(value)\n ? total || 0\n : searchFacetDistribution[value] && searchFacetDistribution[value][itemValue]\n ? searchFacetDistribution[value][itemValue]\n : 0;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[itemValue] || languageSettings[name])) labelName = languageSettings[itemValue] || languageSettings[name];\n\n return {\n label: `${labelName} ${labelTotal !== undefined && isShowNumberMatchingProduct ? ` (${labelTotal})` : ''}`,\n value: itemValue\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value: itemValue, total } = item;\n\n let labelTotal = handleConditionUpdateFacetDistribution(value)\n ? total || 0\n : searchFacetDistribution[value] && searchFacetDistribution[value][itemValue]\n ? searchFacetDistribution[value][itemValue]\n : 0;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[itemValue] || languageSettings[name])) labelName = languageSettings[itemValue] || languageSettings[name];\n\n return {\n label: `${labelName} ${labelTotal !== undefined && isShowNumberMatchingProduct ? ` (${labelTotal})` : ''}`,\n value: itemValue\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label, display } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n\n let getFacetComponent = facetComponent(filter);\n\n if (display.toLowerCase() === 'swatch' && items?.length) {\n classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n }\n\n let isLastIndex = allowedFilter.length - 1 === indexFilter;\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId(value)}\n className={`${isLastIndex ? (allowedFilter.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && allowedFilter.length ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword(value)}\n onResetField={() => handleChangeKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{filterHorizontalBlockComponent}</div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId || settings?.default_sort}\n onChange={({ label, value }: any) => handleChangeSort(label, value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n setKeyword,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [clickedSortId, setClickedSortId] = React.useState<string>('');\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword, clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\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 && 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 (isRefreshPage = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 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 && setIsReplaceWidgetList(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [clickedSortId, keyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => setKeyword && setKeyword(value)}\n onResetField={() => setKeyword && setKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","getData","usePrevious","value","ref","React","useRef","useEffect","current","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","useState","arrowElement","_a","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","progress","setProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","defaultValue","min","max","step","setValueCommit","setValueChange","valueSlider","setValueSlider","hoverActiveMin","setHoverActiveMin","hoverActiveMax","setHoverActiveMax","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","forceOpen","SliderElement.Thumb","onMouseEnter","onMouseLeave","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","isVisibleClearField","setIsVisibleClearField","Boolean","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","Badge","useProxyUrl","propsData","position","positionProp","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","defaultColorIcon","colorIcon","setColorIcon","totalWishlist","setTotalWishlist","total_data","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","proxyUrl","setProxyUrl","proxy_url","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","floating_button_type","launch_point","alert_login","alert","login_button","_b","languages","widget","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","HeaderMenu","FloatingFull","FloatingIcon","BadgeInitSelector","sledgeWishlistSettings","Array","from","querySelectorAll","isElementDetected","isBottomFloatingType","remove","elementContainerWidget","createElement","setAttribute","appendChild","getAttribute","createRoot","render","StrictMode","Provider","productReview","instantSearch","isJsVersion","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","global","show","show_notification","location_notification","_c","notification","title_added_to_wishlist","text_added_to_wishlist","title_removed_to_wishlist","text_removed_to_wishlist","title_fail_add_to_wishlist","text_fail_add_to_wishlist","_d","_e","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","sledgeWishlistTriggerUpdate","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","text","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","node","nodeType","matches","elementNode","observe","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","resShopifyAddToCart","push","Shopify","routes","root","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","$a093c7e1ec25a057$export$be92b6f5f03c0fe9","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","colors","main_color","background","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","useCallback","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","toLowerCase","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","SearchResultWidget","layoutType","collectionId","searchParams","settings","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilters","setAllowedFilters","filters","allowedTabs","setAllowedTabs","facets","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","displaySettings","setDisplaySettings","colorSwatches","setColorSwatches","defaultSort","setDefaultSort","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","setLanguageSettings","_j","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_k","searchResultContainerRef","handleInitStates","tabs","queries","tab","isSetFilter","getFacets","collections","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","join","results","totalHits","find","facetStats","facetDistribution","hide_when_one_value","fromEntries","facet","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","INSTANT_SEARCH_SETTING","delayDebounceFn","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_l","enable_on_search","_m","layout","filterVerticalSkeleton","_n","_o","flexWrap","alignItems","maxWidth","productGridSkeleton","_p","show_total_products","_q","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_r","_s","mobileFilterWithSearchAndSelectOptionSkeleton","_t","_u","containerStyle","ResultCategory","handleChangeTabIndex","_v","_w","collectionName","clickedLimitId","setClickedLimitId","limit","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchFacetDistribution","setSearchFacetDistribution","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","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","filter_option_style","handleQueryStringFilter","valueClickedFacets","searchParamsObject","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","history","pushState","pathname","handleFilterReset","handleFilterChange","parentId","force","isRange","facets2","handleSearchResult","isRefreshPage","onSearch","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","isArray","sort","page","processingTimeMs","totalPages","handleSearchResultData","handleChangeKeyword","set","isRefreshSearchResult","valueAllowedFilter","dataClickedFacets","arrFacetSelected","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","handleConditionUpdateFacetDistribution","isHasFacetSelected","isOnFacetSelectedOne","isPriorityFacetClicked","facetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","defaultValueMin","defaultValueMax","labelName","labelTotal","getValue","itemValue","getColorSwatch","filterVerticalComponents","indexFilter","isRender","classesUlElement","getFacetComponent","valueClickedOpenFilters","findIndex","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","isLastIndex","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","_x","_y","_z","_A","wishlists","reviews","ResultEmpty","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}
1
+ {"version":3,"file":"sledge-react-instant-search.cjs","sources":["../src/components/ProductFilterWidget/ProductFilterWidget.tsx","../../../core/lib/const.ts","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/lib/helper.ts","../../../core/components/Popover/Popover.tsx","../../../core/components/Progress/Progress.tsx","../../../core/components/Checkbox/Checkbox.tsx","../../../core/components/Slider/Slider.tsx","../../../core/components/Pagination/Pagination.tsx","../../../core/components/RadioGroup/RadioGroup.tsx","../../../core/components/ColorSwatch/ColorSwatch.tsx","../../../core/components/Select/Select.tsx","../../../core/components/Icons/HeartIcon/HeartIcon.tsx","../../../core/components/Icons/ChevronArrowDownIcon/ChevronArrowDownIcon.tsx","../../../core/components/Icons/ChevronArrowLeftIcon/ChevronArrowLeftIcon.tsx","../../../core/components/Icons/ChevronArrowRightIcon/ChevronArrowRightIcon.tsx","../../../core/components/Icons/BagIcon/BagIcon.tsx","../../../core/components/Icons/CloseIcon/CloseIcon.tsx","../../../core/components/Icons/SearchIcon/SearchIcon.tsx","../../../core/components/Icons/MessageAddIcon/MessageAddIcon.tsx","../../../core/components/Icons/SwapIcon/SwapIcon.tsx","../../../core/components/Icons/NoteIcon/NoteIcon.tsx","../../../core/components/Button/Button.tsx","../../../core/components/SearchInputField/SearchInputField.tsx","../../../core/lib/animation.ts","../../../core/components/SelectField/SelectField.tsx","../../wishlist/src/components/Badge/Badge.tsx","../../../core/api/wishlist.ts","../../wishlist/src/components/Badge/BadgeInitSelector.tsx","../../wishlist/src/components/Trigger/Trigger.tsx","../../wishlist/src/components/Widget/WidgetHeader.tsx","../../wishlist/src/components/Widget/WidgetHeaderTitle.tsx","../../wishlist/src/components/Widget/WidgetHeaderSearchForm.tsx","../../wishlist/src/components/Widget/WidgetHeaderShareTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderClearTrigger.tsx","../../wishlist/src/components/Widget/WidgetHeaderSort.tsx","../../wishlist/src/components/Widget/WidgetHeaderLimit.tsx","../../../core/api/product-review.ts","../../product-review/src/components/Rating/Rating.tsx","../../product-review/src/components/Widget/WidgetHeader.tsx","../../product-review/src/components/Widget/WidgetHeaderSort.tsx","../../product-review/src/components/Widget/WidgetHeaderAddTrigger.tsx","../../product-review/src/components/Widget/WidgetHeaderSummary.tsx","../../../core/api/instant-search.ts","../../../core/api/product-recommendation.ts","../../../core/components/ProductGrid/ProductGrid.tsx","../../../core/api/shopify.ts","../../../core/components/CollectionGrid/CollectionGrid.tsx","../../../core/components/PageGrid/PageGrid.tsx","../../../core/components/BlogGrid/BlogGrid.tsx","../../../core/components/ArticleGrid/ArticleGrid.tsx","../../../core/components/Tooltip/Tooltip.tsx","../../../core/components/ScrollArea/ScrollArea.tsx","../../../core/components/SkeletonLoading/SkeletonItem.tsx","../../../core/components/SkeletonLoading/SkeletonLoading.tsx","../../../core/components/SkeletonLoading/SkeletonReviewGrid.tsx","../../../core/components/SkeletonLoading/SkeletonProductGrid.tsx","../../../core/components/SkeletonLoading/SkeletonCollectionGrid.tsx","../../../core/components/SkeletonLoading/SkeletonPageGrid.tsx","../../../core/components/SkeletonLoading/SkeletonBlogGrid.tsx","../../../core/components/SkeletonLoading/SkeletonArticleGrid.tsx","../../../core/components/LoadingDots/LoadingDots.tsx","../../../core/components/Carousel/Carousel.tsx","../src/components/Global/index.ts","../src/components/Global/OtherIndexLists.tsx","../src/components/Global/SuggestionKeywordLists.tsx","../src/components/Global/SearchViewMoreResult.tsx","../src/components/SearchResultWidget/SearchResultWidget.tsx","../src/components/SearchIconWidget/SearchIconWidget.tsx","../src/components/SearchIconWidget/SearchIconWidgetPopup.tsx","../src/components/SearchWidget/SearchWidget.tsx"],"sourcesContent":["import { SearchResultWidget } from '@react-instant-search/components';\n\nexport interface IProductFilterWidgetProps {\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\nexport const ProductFilterWidget = (props: IProductFilterWidgetProps) => {\n return <SearchResultWidget layoutType=\"product-filter\" {...props} />;\n};\n","export const API_URL = 'https://api.sledge-app.com';\nexport const INSTANT_SEARCH_ENGINE_URL = 'https://instant-search-engine.sledge-app.com';\nexport const CDN_URL = 'https://sledgeassets.nyc3.cdn.digitaloceanspaces.com';\nexport const SCRIPT_EMBED_ID = 'sledge-embed-script';\nexport const SELECTOR_ATTRIBUTE_KEY = 'data-component';\nexport const DATASET_ATTRIBUTE_KEY = {\n GLOBAL: {\n ON_AFTER_ADD_WISHLIST: 'data-on-after-add-wishlist',\n ON_AFTER_REMOVE_WISHLIST: 'data-on-after-remove-wishlist',\n ON_AFTER_ADD_TO_CART: 'data-on-after-add-to-cart',\n ON_AFTER_ADD_REVIEW: 'data-on-after-add-review',\n ON_AFTER_RENDER_PRODUCT: 'data-on-after-render-product',\n PRODUCT_ID: 'data-product-id',\n PRODUCT_VARIANT_ID: 'data-product-variant-id',\n PRODUCT_NAME: 'data-product-name',\n PRODUCT_VENDOR: 'data-product-vendor',\n PRODUCT_SKU: 'data-product-sku',\n PRODUCT_VARIANT_NAME: 'data-product-variant-name',\n PRODUCT_LINK: 'data-product-link',\n PRODUCT_IMAGE: 'data-product-image',\n PRODUCT_CURRENCY: 'data-product-currency',\n PRODUCT_PRICE: 'data-product-price',\n USER_ID: 'data-user-id',\n USER_EMAIL: 'data-user-email',\n USER_FULLNAME: 'data-user-fullname',\n COLLECTION_ID: 'data-collection-id',\n COLLECTION_NAME: 'data-collection-name',\n WIDTH_ELEMENT: 'data-width-element',\n ICON_SIZE: 'data-icon-size',\n API_KEY: 'data-api-key',\n INSTANT_SEARCH_API_KEY: 'data-instant-search-api-key',\n RENDER_PRODUCT_CARD: 'data-render-product-card',\n WITH_SKELETON_LOADING: 'data-with-skeleton-loading',\n SECTION_TITLE: 'data-section-title',\n SECTION_DESCRIPTION: 'data-section-description',\n USE_SLIDER: 'data-use-slider',\n FILL_COLOR: 'data-fill-color',\n OUTLINE_COLOR: 'data-outline-color',\n POSITION_WIDGET: 'data-position-widget'\n },\n WISHLIST: {\n SHARE_ID: 'data-share-id',\n QUERY_SHARE_ID: 'data-query-share-id',\n RENDER_WISHLIST_WIDGET_ALERT: 'data-render-wishlist-widget-alert',\n USE_PROXY_URL: 'data-use-proxy-url',\n LIMIT_OPTIONS: 'data-limit-options'\n },\n PRODUCT_REVIEW: {\n RATING_SIZE: 'data-rating-size',\n RATING_TOTAL: 'data-rating-total',\n RATING_AVERAGE: 'data-rating-average',\n RENDER_REVIEW_PRODUCT_INFO: 'data-render-review-product-info',\n TRUST_BADGE_VARIANT: 'data-trust-badge-variant',\n SHOW_RATING_AVERAGE: 'data-show-rating-average'\n },\n INSTANT_SEARCH: {\n ON_AFTER_RENDER_COLLECTION: 'data-on-after-render-collection',\n ON_AFTER_RENDER_PAGE: 'data-on-after-render-page',\n ON_AFTER_RENDER_BLOG: 'data-on-after-render-blog',\n ON_AFTER_RENDER_ARTICLE: 'data-on-after-render-article',\n QUERY_KEYWORD: 'data-query-keyword',\n URL_SEARCH_RESULT: 'data-url-search-result',\n RENDER_SUGGESTION_KEYWORD_LIST: 'data-render-suggestion-keyword-list',\n RENDER_OTHER_INDEX_LIST: 'data-render-other-index-list',\n RENDER_SEARCH_VIEW_MORE_RESULT: 'data-render-search-view-more-result',\n RENDER_COLLECTION_CARD: 'data-render-collection-card',\n RENDER_PAGE_CARD: 'data-render-page-card',\n RENDER_BLOG_CARD: 'data-render-blog-card',\n RENDER_ARTICLE_CARD: 'data-render-article-card'\n },\n PRODUCT_RECOMMENDATION: {\n DISPLAY_LIMIT: 'data-display-limit',\n HIDDEN_PRODUCT_IDS: 'data-hidden-product-ids'\n }\n};\nexport const LOCAL_STORAGE_KEY = {\n ANONYM_ID: 'sledge-anonym-id',\n AUTH_APP: 'sledge-auth-app',\n AUTH_APP_VERIFY: 'sledge-auth-app-verify',\n INSTANT_SEARCH_AUTH_APP: 'sledge-instant-search-auth-app',\n GENERAL_SETTING: 'sledge-general-setting',\n WISHLIST_SETTING: 'sledge-wishlist-setting',\n PRODUCT_REVIEW_SETTING: 'sledge-product-review-setting',\n INSTANT_SEARCH_SETTING: 'sledge-instant-search-setting',\n PRODUCT_RECOMMENDATION_SETTING: 'sledge-product-recommendation-setting',\n ISSUED_AUTH_APP: 'sledge-issued-auth-app',\n EXPIRED_AUTH_APP: 'sledge-expired-auth-app',\n RECENTLY_VIEWED_APP: 'sledge-recently-viewed'\n};\nexport const INTERNAL_SELECTOR_VALUE = {\n ELEMENT_TOAST_NOTIFICATION: 'toast-notification',\n ELEMENT_CONFIRMATION_POPUP: 'confirmation-popup',\n ELEMENT_INFO_POPUP: 'info-popup',\n ELEMENT_CONTAINER_WIDGET: 'container-widget',\n ELEMENT_FLOATING_LEFT_WIDGET: 'floating-left-widget',\n ELEMENT_FLOATING_RIGHT_WIDGET: 'floating-right-widget',\n WISHLIST: {\n ELEMENT_WIDGET_POPUP: 'wishlist-widget-popup'\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET_POPUP_DETAIL: 'product-review-widget-popup-detail',\n ELEMENT_WIDGET_FORM_ADD: 'product-review-widget-form-add',\n ELEMENT_STICKY_BADGE: 'product-review-sticky-badge',\n ELEMENT_HAPPY_CUSTOMERS_PAGE_POPUP: 'product-review-happy-customers-page-popup'\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_ICON_WIDGET_POPUP: 'instant-search-icon-widget-popup'\n }\n};\nexport const SELECTOR = {\n GLOBAL: {\n ELEMENT_CUSTOM_COMPONENTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"custom-components\"]`\n },\n WISHLIST: {\n ELEMENT_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-badge\"]`,\n ELEMENT_BADGE_MENU_ITEM: `[href=\"#sledge-wishlist-badge-menu-item\"]`,\n ELEMENT_TRIGGER: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-trigger\"]`,\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-widget\"]`,\n ELEMENT_BUTTON_DETAIL: `[${SELECTOR_ATTRIBUTE_KEY}=\"wishlist-button-detail\"]`\n },\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-widget\"]`,\n ELEMENT_HAPPY_CUSTOMERS_PAGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-happy-customers-page\"]`,\n ELEMENT_RATING: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-rating\"]`,\n ELEMENT_TRUST_BADGE: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-trust-badge\"]`,\n ELEMENT_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`,\n ELEMENT_SNIPPET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-snippet\"]`\n },\n INSTANT_SEARCH: {\n ELEMENT_SEARCH_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-widget\"]`,\n ELEMENT_SEARCH_ICON_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-icon-widget\"]`,\n ELEMENT_SEARCH_RESULT_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-result-widget\"]`,\n ELEMENT_PLP_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"instant-search-product-filter-widget\"]`\n },\n PRODUCT_RECOMMENDATION: {\n ELEMENT_RECENTLY_VIEWED: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed\"]`,\n ELEMENT_RELATED_PRODUCTS: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-related-prodcuts\"]`\n }\n};\nexport const DEFAULT_LIMIT_VALUE = [12, 24, 36, 48, 120];\nexport const DEFAULT_MAX_WIDTH_COMPONENT = '1180px';\nexport const DEFAULT_SEARCH_RESULT_URL = '/apps/sledge/search';\nexport const DEFAULT_WISHLIST_URL = '/apps/sledge/wishlist';\nexport const DEFAULT_QUERY_PARAM = {\n KEYWORD: 'q',\n SHARE_ID: 'share'\n};\nexport const OBJECT_DATA_STRING_KEY = {\n STORE: {\n NAME: '{{ shop.name }}'\n },\n CURRENT_PAGE: '{{ current_page }}',\n TOTAL_PAGE: '{{ total_page }}',\n TOTAL_RESULT: '{{ total_result }}',\n COLLECTION_NAME: '{{ collection_name }}',\n TOTAL_WISHLIST: '{{ total_wishlist }}',\n ACCEPTED_FILETYPE_MEDIA: '{{ accepted_filetype_media }}',\n MAX_SIZE_MEDIA: '{{ max_size_media }}'\n};\nexport const ELEMENT_ID = {\n PRODUCT_REVIEW: {\n ELEMENT_WIDGET: 'product-review-widget'\n }\n};\nexport const SHOPIFY_GID = 'gid://shopify/';\nexport const SHOPIFY_GID_PRODUCT_ID = `${SHOPIFY_GID}Product/`;\nexport const SHOPIFY_GID_PRODUCT_VARIANT_ID = `${SHOPIFY_GID}ProductVariant/`;\nexport const PAYLOAD_API_ALIASES = {\n Authorization: 'zbNTHXQpW7OmI',\n Method: 'Gba2Tb9Ys7JGu',\n GET: 'JniUtw5dNfeKW',\n POST: 'a9Dmw0qP9hvQE',\n PUT: 'dEnOjbvTzULLK',\n DELETE: 'pLC93Tvsu6g7H'\n};\nexport const HIERARCHICAL_FACET_OBJECT_ALIASES: any = {\n collections: 'hierarchicalCollections',\n product_type: 'hierarchicalProductType'\n};\nexport const MAX_LIMIT_HIERARCHICAL = 7;\nexport const AES_SECRET_KEY = '5l3ge1nt36124ti0n';\n","export default async function swr(url: string, options: any) {\n if (typeof localStorage !== 'undefined' && typeof caches !== 'undefined' && options.method === 'GET' && !options?.ignoreSWR) {\n const data = await getData(url);\n return await data.json();\n } else return fetch(url, options).then((response) => response.json());\n}\n\nasync function getData(url: string) {\n const cacheVersion = 1;\n const cacheName = `sledge-${cacheVersion}`;\n\n return caches.open(cacheName).then((cache: any) => {\n return cache.match(url).then((cachedResponse: any) => {\n const fetchedResponse = fetch(url).then(async (networkResponse) => {\n // cleaning from different token\n const mainUrl = url.split('?')[0];\n const cacheMatches = await cache.matchAll();\n const filteredCaches = await cacheMatches.filter((f: any) => f.url.includes(mainUrl) && f.url !== url);\n for (const c of filteredCaches) {\n await cache.delete(c.url);\n }\n\n cache.put(url, networkResponse.clone());\n\n return networkResponse;\n });\n\n return cachedResponse || fetchedResponse;\n });\n });\n}\n","import React from 'react';\n\nexport const usePrevious = (value: any) => {\n const ref = React.useRef();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n","import { AES_SECRET_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport swr from './swr';\nimport { useMediaQuery } from '@core/hooks';\nimport CryptoES from 'crypto-es';\n\nexport const sanitizeDataId = (id: any) => {\n if (!id) return '';\n\n let getId = String(id);\n\n if (getId.includes('shopify') && getId.includes('/')) {\n // Shopify Data\n let arrId = getId.split('/');\n return arrId[arrId.length - 1] || getId;\n } else {\n return getId;\n }\n};\n\nexport const setCookie = (params: { cname: string; cvalue: any; expired?: number; expiredBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { cname, cvalue, expired = 0, expiredBy = 'day' } = params;\n\n let setExpired;\n\n if (expiredBy === 'day') setExpired = expired * 1000 * 60 * 60 * 24;\n if (expiredBy === 'hour') setExpired = expired * 1000 * 60 * 60;\n if (expiredBy === 'minute') setExpired = expired * 1000 * 60;\n if (expiredBy === 'second') setExpired = expired * 1000;\n\n if (!expiredBy || !setExpired) return;\n\n const d = new Date();\n d.setTime(d.getTime() + setExpired);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n\nexport const getCookie = (cname: string) => {\n let name = cname + '=';\n let ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n};\n\nexport const documentReady = (init: any) => {\n document.addEventListener('DOMContentLoaded', init);\n};\n\nexport const getTextBetween = (params: { start: string; end: string; text: string }) => {\n const { start, end, text } = params;\n\n if (start && text.includes(start) && end && text.includes(end)) {\n let getText = text.indexOf(start) + start.length;\n\n return text.substring(getText, text.indexOf(end, getText));\n } else {\n return text;\n }\n};\n\nexport const replaceString = (params: { string: string; find: any[]; replace: any[] }) => {\n let { string, find, replace } = params;\n\n for (var i = 0; i < find.length; i++) {\n string = string.replace(new RegExp(find[i], 'gi'), replace[i]);\n }\n\n return string;\n};\n\nexport const isFunction = (data: any): data is (...args: any[]) => any => typeof data === 'function';\n\nexport const scrollToElement = (params: { element: any; headerOffset: number }) => {\n const { element, headerOffset } = params;\n\n if (!element) return;\n\n var elementPosition = element?.getBoundingClientRect().top;\n var offsetPosition = elementPosition + window.scrollY - headerOffset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n};\n\nexport const getUnixTimestamp = (params?: { addMoreTime?: number; addMoreTimeBy?: 'day' | 'hour' | 'minute' | 'second' }) => {\n const { addMoreTime = 0, addMoreTimeBy = 'day' } = params || {};\n\n let moreTime = 0;\n\n if (addMoreTime) {\n if (addMoreTimeBy === 'day') moreTime = addMoreTime * 60 * 60 * 24;\n if (addMoreTimeBy === 'hour') moreTime = addMoreTime * 60 * 60;\n if (addMoreTimeBy === 'minute') moreTime = addMoreTime * 60;\n if (addMoreTimeBy === 'second') moreTime = addMoreTime;\n }\n\n return Math.floor(Date.now() / 1000) + moreTime;\n};\n\nexport const fetchApi = async (params: {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n authorization?: string | null | '';\n payload?: any;\n headers?: any;\n isSimpleRequest?: boolean;\n isUploadFile?: boolean;\n ignoreSWR?: boolean;\n}) => {\n const { url, method, authorization = '', payload = {}, headers = {}, isSimpleRequest = true, isUploadFile = false, ignoreSWR = false } = params;\n\n var myHeaders = new Headers();\n if (!isSimpleRequest) {\n if (authorization) myHeaders.append('Authorization', `Bearer ${authorization}`);\n\n if (Object.keys(headers).length)\n Object.keys(headers).forEach(function (key) {\n myHeaders.append(key, headers[key]);\n });\n }\n\n var formdata = new FormData();\n if (isSimpleRequest || isUploadFile) {\n if (authorization && isSimpleRequest) formdata.append(PAYLOAD_API_ALIASES.Authorization, authorization);\n\n formdata.append(PAYLOAD_API_ALIASES.Method, PAYLOAD_API_ALIASES[method]);\n\n if (Object.keys(payload).length)\n Object.keys(payload).forEach(function (key) {\n if (isUploadFile && payload?.files)\n [...payload.files].map((item: File) => {\n formdata.append('files', item, item.name);\n });\n\n formdata.append(key, payload[key]);\n });\n }\n\n const fixMethod = isSimpleRequest ? 'POST' : method;\n var requestOptions: any = {\n method: fixMethod,\n redirect: 'follow',\n headers: myHeaders,\n body: fixMethod === 'GET' ? null : isSimpleRequest || isUploadFile ? formdata : JSON.stringify(payload),\n ignoreSWR\n };\n\n return await swr(`${url}`, requestOptions);\n};\n\nexport const convertDate = (\n date: any,\n options: any = {\n timeZone: 'Asia/Jakarta',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n }\n) => new Date(date).toLocaleString('en-US', options);\n\nexport const currentMediaQuery = (): string | 'xs' | 'sm' | 'md' | 'lg' | 'xs' => {\n const isSmallDevice = useMediaQuery('(min-width: 425px)');\n const isMediumDevice = useMediaQuery('(min-width: 768px)');\n const isLargeDevice = useMediaQuery('(min-width: 1024px)');\n const isExtraLargeDevice = useMediaQuery('(min-width: 1280px)');\n\n let currentMedia = 'xs';\n\n if (isSmallDevice) currentMedia = 'sm';\n if (isMediumDevice) currentMedia = 'md';\n if (isLargeDevice) currentMedia = 'lg';\n if (isExtraLargeDevice) currentMedia = 'xs';\n\n return currentMedia;\n};\n\nexport const encryptText = (text: string) => {\n return CryptoES.AES.encrypt(text, AES_SECRET_KEY).toString();\n};\n\nexport const decryptText = (encryptText: string) => {\n let bytes = CryptoES.AES.decrypt(encryptText, AES_SECRET_KEY);\n\n return bytes.toString(CryptoES.enc.Utf8);\n};\n\nexport const watchElement = ({ selector = null, init = null, customInit = false }: { selector?: any; init?: any; customInit?: boolean }) => {\n if (!selector || !init) return;\n\n // Watch Element\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var nodes = Array.prototype.slice.call(mutation.addedNodes);\n nodes.forEach(function (node) {\n if (node.nodeType === 1 && (node.matches(selector) || node.querySelector(selector))) {\n if (!customInit) {\n let elementNode = Array.from(node.querySelectorAll(selector));\n\n if (elementNode.length) {\n elementNode.map((item: any) => {\n init(item);\n });\n }\n } else {\n init();\n }\n }\n });\n });\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n // End Watch Element\n};\n\nexport const getFillRating = ({\n average,\n item,\n index,\n productId,\n customComponentId,\n unixTimestamp\n}: {\n average: any;\n item: any;\n index: number;\n productId?: any;\n customComponentId?: any;\n unixTimestamp?: any;\n}) => {\n let ratingValue = Math.floor(parseFloat(average));\n\n let getCommaValue = String(average).includes(',') ? String(average).split(',') : [];\n let getCommaValueDot = String(average).includes('.') ? String(average).split('.') : [];\n let isHaveCommaValue = getCommaValue.length || getCommaValueDot.length;\n let commaValue = isHaveCommaValue ? getCommaValue[1] || getCommaValueDot[1] : 0;\n let fillOther = 'fill-0';\n\n if (item > ratingValue && ratingValue + 1 === item) {\n fillOther = `fill-${commaValue}`;\n }\n\n fillOther = item <= ratingValue ? 'full' : fillOther;\n\n let offset;\n\n if (fillOther === 'fill-0') {\n offset = '0%';\n }\n\n if (fillOther === 'fill-1') {\n offset = '25%';\n }\n\n if (fillOther === 'fill-2') {\n offset = '35%';\n }\n\n if (fillOther === 'fill-3') {\n offset = '40%';\n }\n\n if (fillOther === 'fill-4') {\n offset = '45%';\n }\n\n if (fillOther === 'fill-5') {\n offset = '50%';\n }\n\n if (fillOther === 'fill-6') {\n offset = '60%';\n }\n\n if (fillOther === 'fill-7') {\n offset = '70%';\n }\n\n if (fillOther === 'fill-8') {\n offset = '80%';\n }\n\n if (fillOther === 'fill-9') {\n offset = '90%';\n }\n\n if (fillOther === 'full') {\n offset = '100%';\n }\n\n let suffixGradientId = `-${fillOther}-${index}-${productId ? productId : unixTimestamp}${customComponentId ? `-${customComponentId}` : ''}`;\n let strokeGradientId = `rating-stroke${suffixGradientId}`;\n let fillGradientId = `rating-gradient${suffixGradientId}`;\n\n return {\n suffixGradientId,\n strokeGradientId,\n fillGradientId,\n offset,\n fillOther\n };\n};\n\nexport const stripTags = (html: string) => {\n return html.replace(/(<([^>]+)>)/gi, '');\n};\n\nexport const stringToFunction = (functionName: string) => {\n if (!functionName) return null;\n\n try {\n return eval(functionName);\n } catch (error) {\n return null;\n }\n};\n\nexport const sumArray = (array: any[]) => array.reduce((a, b) => a + b, 0);\n\nexport const stringToSlug = (text: string) =>\n text\n .toLowerCase()\n .replace(/[^\\w ]+/g, '')\n .replace(/ +/g, '-');\n","import React from 'react';\nimport * as PopoverElement from '@radix-ui/react-popover';\n\nimport './Popover.css';\n\nexport interface IPopoverProps {\n trigger: JSX.Element;\n content: JSX.Element | null;\n isOpen?: boolean | false;\n setIsOpen?(value: React.SetStateAction<boolean>): void;\n hideCloseIcon?: boolean | false;\n align?: 'start' | 'center' | 'end' | undefined;\n className?: string;\n withOpenState?: boolean;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n}\n\nexport const Popover = ({\n trigger,\n content,\n isOpen,\n setIsOpen,\n hideCloseIcon,\n align,\n className,\n withOpenState = true,\n withArrow = true,\n customArrow = '',\n sideOffset = 5,\n alignOffset = 0\n}: IPopoverProps) => {\n const [open, setOpen] = React.useState(withOpenState ? isOpen : false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.PopoverArrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.style.display = 'inline-flex';\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <PopoverElement.Root\n {...(withOpenState && {\n open: isOpen\n })}\n {...(setIsOpen && {\n onOpenChange: (open: boolean) => {\n setOpen(open);\n setIsOpen(open);\n }\n })}\n >\n <PopoverElement.Trigger asChild>{trigger}</PopoverElement.Trigger>\n <PopoverElement.Portal>\n <PopoverElement.Content\n className={`sledge__popover-content ${className ? className : ''}`}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n {...(setIsOpen && {\n onOpenAutoFocus: () => setIsOpen(true),\n onCloseAutoFocus: () => setIsOpen(false)\n })}\n >\n {content}\n {!hideCloseIcon && (\n <PopoverElement.Close className=\"PopoverClose\" aria-label=\"Close\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </PopoverElement.Close>\n )}\n {withArrow ? <PopoverElement.Arrow className=\"PopoverArrow\" /> : null}\n </PopoverElement.Content>\n </PopoverElement.Portal>\n </PopoverElement.Root>\n );\n};\n","import React from 'react';\nimport './Progress.css';\n\nimport * as ProgressElement from '@radix-ui/react-progress';\n\nexport interface IProgressProps {\n value: string;\n total: number;\n fillColor?: any;\n outlineColor?: any;\n}\n\nexport const Progress = ({ value, total, fillColor = '', outlineColor = '' }: IProgressProps) => {\n const [progress, setProgress] = React.useState(0);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setProgress((+value / total) * 100), 150);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <ProgressElement.Root\n className=\"sledge__progress\"\n value={progress}\n style={\n outlineColor\n ? {\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: outlineColor\n }\n : {}\n }\n >\n <ProgressElement.Indicator\n className=\"ProgressIndicator\"\n style={{\n ...{ transform: `translateX(-${100 - progress}%)` },\n ...(fillColor && {\n backgroundColor: fillColor\n })\n }}\n />\n </ProgressElement.Root>\n );\n};\n","import './Checkbox.css';\n\nimport * as CheckboxElement from '@radix-ui/react-checkbox';\n\nexport interface ICheckboxProps {\n id: string;\n name: string;\n value: string;\n required?: boolean;\n label?: string;\n checked?: boolean;\n labelStyle?: any;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {}, onClick }: ICheckboxProps) => {\n return (\n <div className=\"sledge__checkbox-wrapper\">\n <CheckboxElement.Root className=\"sledge__checkbox-root\" checked={checked} id={id} name={name} value={value} required={required} onClick={onClick}>\n <CheckboxElement.Indicator className=\"sledge__checkbox-indicator\">\n <svg width={10} height={8} viewBox=\"0 0 10 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.72318 0.237414C10.0707 0.574491 10.0942 1.14584 9.77561 1.51356L4.40976 7.70711C4.25243 7.88871 4.03181 7.99443 3.79903 7.99979C3.56625 8.00514 3.3415 7.90965 3.17686 7.73545L0.250031 4.63868C-0.0833435 4.28595 -0.0833435 3.71406 0.250031 3.36133C0.583405 3.00859 1.12391 3.00859 1.45729 3.36133L3.75367 5.79105L8.51706 0.292899C8.83564 -0.0748211 9.37564 -0.0996624 9.72318 0.237414Z\"\n fill=\"white\"\n />\n </svg>\n </CheckboxElement.Indicator>\n </CheckboxElement.Root>\n {label && (\n <label className=\"sledge__checkbox-label\" htmlFor={id} style={labelStyle}>\n {label}\n </label>\n )}\n </div>\n );\n};\n","import { Tooltip } from '@core/components';\nimport './Slider.css';\n\nimport * as SliderElement from '@radix-ui/react-slider';\n\nexport interface ISliderProps {\n value: number[];\n min?: number;\n max: number;\n step?: number;\n setValueCommit?(value: number[]): void;\n setValueChange?(value: number[]): void;\n}\n\nexport const Slider = (props: ISliderProps) => {\n const { value, min, max, step = 1, setValueCommit, setValueChange } = props;\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n value={value}\n {...(typeof min !== 'undefined'\n ? {\n min\n }\n : {})}\n max={max}\n step={step}\n aria-label=\"Volume\"\n onValueCommit={(valueCommit: number[]) => setValueCommit?.(valueCommit)}\n onValueChange={(valueChange: number[]) => setValueChange?.(valueChange)}\n >\n <SliderElement.Track className=\"sledge__SliderTrack\">\n <SliderElement.Range className=\"sledge__SliderRange\" />\n </SliderElement.Track>\n <Tooltip\n content={value[0]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n {!value[1] ? null : (\n <Tooltip\n content={value[1]}\n customArrow={`<svg width=\"19\" height=\"5\" viewBox=\"0 0 19 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 4.99998C9 9.48298e-05 16.4996 1.99678e-05 18.4999 0L9 2.2985e-06L0.5 2.04891e-06C9 2.2985e-06 9 4.99998 9 4.99998Z\" fill=\"#43c6ac\"/></svg>`}\n wrapTrigger={false}\n >\n <SliderElement.Thumb className=\"sledge__SliderThumb\" />\n </Tooltip>\n )}\n </SliderElement.Root>\n </form>\n );\n};\n","import React from 'react';\n\nimport { ChevronArrowLeftIcon, ChevronArrowRightIcon } from '@core/components';\nimport './Pagination.css';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IPaginationProps {\n currentPage: number;\n totalPage: number;\n totalResult: number;\n onChange(page: number): void;\n pageInfo?: string;\n}\n\nexport const Pagination = (props: IPaginationProps) => {\n let { currentPage, totalPage, totalResult, onChange, pageInfo: pageInfoProp } = props;\n\n const isDisabledPreviousPage = currentPage === 1;\n const isDisabledNextPage = currentPage === totalPage;\n\n const [pageInfo, setPageInfo] = React.useState<any>(null);\n\n const handlePageInfo = () => {\n const defaultPageInfo = (\n <>\n Page {currentPage} of {totalPage} - total {totalResult} result\n </>\n );\n\n if (pageInfoProp) {\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.CURRENT_PAGE, String(currentPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_PAGE, String(totalPage));\n pageInfoProp = pageInfoProp.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, String(totalResult));\n }\n\n setPageInfo(pageInfoProp ? pageInfoProp : defaultPageInfo);\n };\n\n React.useEffect(() => {\n handlePageInfo();\n }, []);\n\n return (\n <div className=\"sledge__pagination\">\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledPreviousPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage - 1)\n })}\n >\n <ChevronArrowLeftIcon width={16} height={16} color=\"black\" />\n </button>\n <span>{pageInfo}</span>\n <button\n type=\"button\"\n className=\"sledge__pagination-navigation\"\n {...(isDisabledNextPage\n ? {\n disabled: true\n }\n : {\n onClick: () => onChange(currentPage + 1)\n })}\n >\n <ChevronArrowRightIcon width={16} height={16} color=\"black\" />\n </button>\n </div>\n );\n};\n","import * as RadioGroupElement from '@radix-ui/react-radio-group';\nimport './RadioGroup.css';\n\nexport interface IRadioGroupProps {\n id: string;\n name: string;\n required?: boolean;\n defaultValue?: string | undefined;\n items: Array<{\n label: string;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const RadioGroup = ({ id, name, required, defaultValue, items, labelStyle = {}, onValueChange }: IRadioGroupProps) => {\n return (\n <div className=\"sledge__radio-group-wrapper\">\n <form>\n <RadioGroupElement.Root\n className=\"sledge__radio-group-root\"\n aria-label=\"View density\"\n defaultValue={defaultValue}\n id={id}\n name={name}\n required={required}\n onValueChange={onValueChange}\n >\n {items.map((item: { label: string; value: string }, index: number) => {\n const { label, value } = item;\n\n return (\n <div className=\"sledge__radio-group-item-flex\" key={index}>\n <RadioGroupElement.Item className=\"sledge__radio-group-item\" value={value} id={`${id}${index}`}>\n <RadioGroupElement.Indicator className=\"sledge__radio-group-indicator\" />\n </RadioGroupElement.Item>\n <label className=\"sledge__radio-group-label\" htmlFor={`${id}${index}`} style={labelStyle}>\n {label}\n </label>\n </div>\n );\n })}\n </RadioGroupElement.Root>\n </form>\n </div>\n );\n};\n","import * as CheckboxElement from '@radix-ui/react-checkbox';\nimport './ColorSwatch.css';\n\nexport interface IColorSwatchProps {\n id: string;\n name: string;\n value: string;\n rgb: string;\n image: string;\n required?: boolean;\n defaultChecked?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\n}\n\nexport const ColorSwatch = ({ id, name, value, rgb, image, required, defaultChecked, onClick }: IColorSwatchProps) => {\n const styles = {\n ...(image?.length\n ? {\n backgroundImage: `url(\"${image}\")`,\n backgroundSize: 'contain'\n }\n : {\n backgroundColor: rgb\n })\n };\n\n return (\n <div className=\"sledge__color-swatch-wrapper\">\n <CheckboxElement.Root\n className=\"sledge__color-swatch-root\"\n defaultChecked={defaultChecked}\n id={id}\n name={name}\n value={value}\n required={required}\n onClick={onClick}\n style={styles}\n ></CheckboxElement.Root>\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport * as SelectElement from '@radix-ui/react-select';\nimport './Select.css';\n\nexport interface ISelectProps {\n name: string;\n placeholder: string;\n required?: boolean;\n defaultValue?: any;\n items: Array<{\n label: ReactNode;\n value: string;\n }>;\n labelStyle?: any;\n onValueChange?: ((value: string) => void) | undefined;\n}\n\nexport const Select = ({ name, placeholder, required, defaultValue, items, labelStyle = {}, onValueChange }: ISelectProps) => {\n return (\n <div className=\"sledge__select-wrapper\">\n <SelectElement.Root name={name} required={required} onValueChange={onValueChange}>\n <SelectElement.Trigger className=\"sledge__select-trigger\">\n <SelectElement.Value placeholder={placeholder} />\n <SelectElement.Icon className=\"sledge__select-icon\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.Icon>\n </SelectElement.Trigger>\n <SelectElement.Portal>\n <SelectElement.Content className=\"sledge__select-content\">\n <SelectElement.ScrollUpButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollUpButton>\n <SelectElement.Viewport className=\"sledge__select-viewport\">\n {items.map(\n (\n item: {\n label: ReactNode;\n value: string;\n },\n index: number\n ) => {\n const { label, value } = item;\n\n return (\n <SelectItemComponent key={index} value={value}>\n {label}\n </SelectItemComponent>\n );\n }\n )}\n </SelectElement.Viewport>\n <SelectElement.ScrollDownButton className=\"sledge__select-scroll-button\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ScrollDownButton>\n </SelectElement.Content>\n </SelectElement.Portal>\n </SelectElement.Root>\n </div>\n );\n};\n\nconst SelectItemComponent = React.forwardRef(({ children, className = '', ...props }: any, forwardedRef) => {\n return (\n <SelectElement.Item className={`sledge__select-item ${className}`} {...props} ref={forwardedRef}>\n <SelectElement.ItemText>{children}</SelectElement.ItemText>\n <SelectElement.ItemIndicator className=\"sledge__select-item-indicator\">\n <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </SelectElement.ItemIndicator>\n </SelectElement.Item>\n );\n});\n","export interface IHeartIcon {\n width: number;\n height: number;\n type: 'fill' | 'outline';\n color: string;\n}\n\nexport const HeartIcon = ({ width, height, type, color }: IHeartIcon) => {\n return (\n <span className=\"sledge-icon__heart\">\n {type === 'outline' ? (\n <svg width={width} height={height} id=\"sledge-icon-heart-line\" viewBox=\"0 0 18 17\" fill={color}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.19515 0.86581C10.5501 0.00914308 12.3501 -0.227524 13.9051 0.27081C17.2876 1.36164 18.3376 5.04914 17.3985 7.98331C15.9493 12.5916 9.76015 16.0291 9.49765 16.1733C9.40431 16.225 9.30098 16.2508 9.19765 16.2508C9.09431 16.2508 8.99181 16.2258 8.89848 16.175C8.63765 16.0325 2.49348 12.6458 0.995979 7.98414L0.995146 7.98331C0.0551462 5.04831 1.10181 1.35998 4.48098 0.27081C6.06765 -0.242524 7.79681 -0.0166903 9.19515 0.86581ZM4.86431 1.46081C2.13015 2.34248 1.44348 5.28331 2.18598 7.60248C3.35431 11.2375 7.97015 14.1766 9.19681 14.9041C10.4276 14.1691 15.0768 11.1975 16.2076 7.60581C16.9501 5.28414 16.261 2.34331 13.5226 1.46081C12.196 1.03498 10.6485 1.29414 9.58015 2.12081C9.35681 2.29248 9.04681 2.29581 8.82181 2.12581C7.69015 1.27498 6.21181 1.02581 4.86431 1.46081ZM12.7226 3.11573C13.8585 3.48323 14.6543 4.48906 14.7518 5.67823C14.7793 6.02239 14.5235 6.32406 14.1793 6.35156C14.1618 6.35323 14.1451 6.35406 14.1276 6.35406C13.8051 6.35406 13.5318 6.10656 13.5051 5.77989C13.4501 5.09489 12.9918 4.51656 12.3393 4.30573C12.0101 4.19906 11.8301 3.84656 11.936 3.51906C12.0435 3.19073 12.3926 3.01239 12.7226 3.11573Z\"\n />\n </svg>\n ) : (\n <svg width={width} height={height} id=\"sledge-icon-heart-fill\" viewBox=\"0 0 18 17\" fill={color}>\n <path d=\"M5.89936 0.0838691C6.42436 0.0998355 6.9327 0.191502 7.4252 0.359002H7.47436C7.5077 0.374836 7.5327 0.392336 7.54936 0.408169C7.73353 0.467336 7.9077 0.534002 8.07436 0.625669L8.39103 0.767336C8.51603 0.834002 8.66603 0.958169 8.74936 1.009C8.8327 1.05817 8.92436 1.109 8.99936 1.1665C9.9252 0.459002 11.0494 0.0756688 12.2077 0.0838691C12.7335 0.0838691 13.2585 0.158169 13.7577 0.325669C16.8335 1.32567 17.9419 4.70067 17.016 7.65067C16.491 9.15817 15.6327 10.534 14.5085 11.6582C12.8994 13.2165 11.1335 14.5998 9.2327 15.7915L9.02436 15.9173L8.8077 15.7832C6.9002 14.5998 5.12436 13.2165 3.5002 11.6498C2.38353 10.5257 1.52436 9.15817 0.991029 7.65067C0.0493627 4.70067 1.1577 1.32567 4.26686 0.308169C4.50853 0.224836 4.7577 0.166502 5.0077 0.134002H5.1077C5.34186 0.0998355 5.57436 0.0838691 5.8077 0.0838691H5.89936ZM13.3244 2.71734C12.9827 2.59984 12.6077 2.784 12.4827 3.134C12.366 3.484 12.5494 3.86734 12.8994 3.9915C13.4335 4.1915 13.791 4.71734 13.791 5.29984V5.32567C13.7752 5.5165 13.8327 5.70067 13.9494 5.84234C14.066 5.984 14.241 6.0665 14.4244 6.084C14.766 6.07484 15.0577 5.80067 15.0827 5.44984V5.35067C15.1077 4.18317 14.4002 3.12567 13.3244 2.71734Z\" />\n </svg>\n )}\n </span>\n );\n};\n","export interface IChevronArrowDownIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowDownIcon = ({ width, height, color }: IChevronArrowDownIcon) => {\n return (\n <span className=\"sledge-icon__arrow-down\">\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Arrow - Down 2\">\n <g id=\"Iconly/Light-Outline/Arrow---Down-2\">\n <g id=\"Arrow---Down-2\">\n <path\n id=\"Stroke-1\"\n d=\"M3.72407 6.6414C3.94596 6.41951 4.29318 6.39934 4.53786 6.58089L4.60796 6.6414L9.99935 12.0325L15.3907 6.6414C15.6126 6.41951 15.9598 6.39934 16.2045 6.58089L16.2746 6.6414C16.4965 6.86329 16.5167 7.21051 16.3351 7.45519L16.2746 7.52529L10.4413 13.3586C10.2194 13.5805 9.87218 13.6007 9.62751 13.4191L9.55741 13.3586L3.72407 7.52529C3.48 7.28121 3.48 6.88548 3.72407 6.6414Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowLeftIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowLeftIcon = ({ width, height, color }: IChevronArrowLeftIcon) => {\n return (\n <span className=\"sledge-icon__arrow-left\">\n <svg width={width} height={height} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IChevronArrowRightIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const ChevronArrowRightIcon = ({ width, height, color }: IChevronArrowRightIcon) => {\n return (\n <span className=\"sledge-icon__arrow-right\">\n <svg width={width} height={height} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1302C5.42987 12.9527 5.41374 12.675 5.55897 12.4792L5.60738 12.4231L9.92027 8.11002L5.60738 3.79691C5.42987 3.6194 5.41374 3.34162 5.55897 3.14588L5.60738 3.0898C5.7849 2.91229 6.06267 2.89615 6.25841 3.04139L6.31449 3.0898L10.9812 7.75647C11.1587 7.93398 11.1748 8.21175 11.0296 8.4075L10.9812 8.46357L6.31449 13.1302C6.11923 13.3255 5.80265 13.3255 5.60738 13.1302Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IBagIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const BagIcon = ({ width, height, color }: IBagIcon) => {\n return (\n <span className=\"sledge-icon__bag\">\n <svg width={width} height={height} viewBox=\"0 0 18 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/bag-2\">\n <g id=\"bag-2\">\n <path\n id=\"Vector\"\n d=\"M14.3711 6.04627C13.919 5.54693 13.2374 5.25677 12.2927 5.15555V4.64271C12.2927 3.71824 11.9013 2.82752 11.2131 2.20671C10.518 1.57241 9.6138 1.2755 8.67584 1.36322C7.06309 1.51842 5.70676 3.07719 5.70676 4.76417V5.15555C4.76205 5.25677 4.08051 5.54693 3.6284 6.04627C2.97385 6.77505 2.9941 7.74674 3.06833 8.42154L3.54068 12.1801C3.68238 13.496 4.21547 14.8455 7.11707 14.8455H10.8824C13.784 14.8455 14.3171 13.496 14.4588 12.1869L14.9312 8.41479C15.0054 7.74674 15.0189 6.77505 14.3711 6.04627ZM8.77031 2.30118C9.4451 2.24045 10.0862 2.44963 10.5855 2.90174C11.0781 3.34711 11.3548 3.98141 11.3548 4.64271V5.11506H6.64472V4.76417C6.64472 3.56304 7.63666 2.40915 8.77031 2.30118ZM6.58399 8.87365H6.57724C6.2061 8.87365 5.90245 8.56999 5.90245 8.19885C5.90245 7.82772 6.2061 7.52406 6.57724 7.52406C6.95512 7.52406 7.25878 7.82772 7.25878 8.19885C7.25878 8.56999 6.95512 8.87365 6.58399 8.87365ZM11.3075 8.87365H11.3008C10.9296 8.87365 10.626 8.56999 10.626 8.19885C10.626 7.82772 10.9296 7.52406 11.3008 7.52406C11.6787 7.52406 11.9823 7.82772 11.9823 8.19885C11.9823 8.56999 11.6787 8.87365 11.3075 8.87365Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ICloseIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const CloseIcon = ({ width, height, color }: ICloseIcon) => {\n return (\n <span className=\"sledge-icon__close\">\n <svg viewBox=\"0 0 20 20\" focusable=\"false\" aria-hidden=\"true\" width={width} height={height}>\n <path\n d=\"m11.414 10 6.293-6.293a1 1 0 1 0-1.414-1.414l-6.293 6.293-6.293-6.293a1 1 0 0 0-1.414 1.414l6.293 6.293-6.293 6.293a1 1 0 1 0 1.414 1.414l6.293-6.293 6.293 6.293a.998.998 0 0 0 1.707-.707.999.999 0 0 0-.293-.707l-6.293-6.293z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface ISearchIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SearchIcon = ({ width, height, color }: ISearchIcon) => {\n return (\n <span className=\"sledge-icon__search\">\n <svg width={width} height={height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.78283 2.16669C14.2578 2.16669 17.8978 5.80669 17.8978 10.2817C17.8978 12.393 17.0876 14.3186 15.7617 15.7638L18.3707 18.3673C18.6148 18.6114 18.6157 19.0064 18.3715 19.2506C18.2498 19.3739 18.089 19.4348 17.929 19.4348C17.7698 19.4348 17.6098 19.3739 17.4873 19.2523L14.8469 16.6192C13.4579 17.7316 11.6967 18.3975 9.78283 18.3975C5.30783 18.3975 1.66699 14.7567 1.66699 10.2817C1.66699 5.80669 5.30783 2.16669 9.78283 2.16669ZM9.78283 3.41669C5.99699 3.41669 2.91699 6.49585 2.91699 10.2817C2.91699 14.0675 5.99699 17.1475 9.78283 17.1475C13.5678 17.1475 16.6478 14.0675 16.6478 10.2817C16.6478 6.49585 13.5678 3.41669 9.78283 3.41669Z\"\n fill={color}\n />\n </svg>\n </span>\n );\n};\n","export interface IMessageAddIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const MessageAddIcon = ({ width, height, color }: IMessageAddIcon) => {\n return (\n <span className=\"sledge-icon__message-add\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/message-add\">\n <g id=\"message-add\">\n <path\n id=\"Vector\"\n d=\"M11.1666 1.33301H5.83325C3.16659 1.33301 1.83325 2.66634 1.83325 5.33301V13.9997C1.83325 14.3663 2.13325 14.6663 2.49992 14.6663H11.1666C13.8333 14.6663 15.1666 13.333 15.1666 10.6663V5.33301C15.1666 2.66634 13.8333 1.33301 11.1666 1.33301ZM10.8333 8.49967H8.99992V10.333C8.99992 10.6063 8.77325 10.833 8.49992 10.833C8.22658 10.833 7.99992 10.6063 7.99992 10.333V8.49967H6.16658C5.89325 8.49967 5.66658 8.27301 5.66658 7.99967C5.66658 7.72634 5.89325 7.49967 6.16658 7.49967H7.99992V5.66634C7.99992 5.39301 8.22658 5.16634 8.49992 5.16634C8.77325 5.16634 8.99992 5.39301 8.99992 5.66634V7.49967H10.8333C11.1066 7.49967 11.3333 7.72634 11.3333 7.99967C11.3333 8.27301 11.1066 8.49967 10.8333 8.49967Z\"\n fill={color}\n />\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface ISwapIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const SwapIcon = ({ width, height, color }: ISwapIcon) => {\n return (\n <span className=\"sledge-icon__swap\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Swap\">\n <g id=\"Iconly/Light-Outline/Swap\">\n <g id=\"Swap_2\">\n <path\n id=\"Combined-Shape\"\n d=\"M11.7263 3.864C11.9795 3.864 12.1887 4.0521 12.2218 4.29616L12.2263 4.364L12.2262 12.2307L14.0904 10.359C14.2852 10.1633 14.6018 10.1626 14.7975 10.3574C14.9754 10.5345 14.9922 10.8122 14.8474 11.0083L14.7991 11.0645L12.0806 13.7956C12.0642 13.8117 12.0476 13.8263 12.03 13.8398L12.0806 13.7956C12.0561 13.8203 12.0296 13.8418 12.0017 13.8603C11.992 13.8663 11.9819 13.8725 11.9715 13.8784C11.9619 13.8842 11.9522 13.8892 11.9423 13.894C11.9325 13.8983 11.9226 13.9027 11.9125 13.9067C11.8998 13.9122 11.8866 13.9168 11.8734 13.9209C11.8656 13.9229 11.8576 13.9252 11.8495 13.9272C11.8351 13.9312 11.8206 13.9342 11.8061 13.9365C11.7993 13.9373 11.7921 13.9383 11.7849 13.9391C11.7685 13.9414 11.7522 13.9425 11.7359 13.9428C11.7327 13.9425 11.7295 13.9425 11.7263 13.9425L11.7166 13.9428C11.7003 13.9425 11.684 13.9414 11.6678 13.9395L11.7263 13.9425C11.6991 13.9425 11.6724 13.9403 11.6463 13.9362C11.6319 13.9342 11.6174 13.9312 11.6031 13.9276C11.5955 13.9253 11.5879 13.9232 11.5804 13.9209C11.566 13.9169 11.5518 13.9118 11.5378 13.9061C11.5301 13.9026 11.5227 13.8994 11.5154 13.896C11.5038 13.891 11.4923 13.8851 11.4809 13.8787C11.4707 13.8725 11.4606 13.8663 11.4508 13.8598C11.4431 13.8552 11.4355 13.8499 11.428 13.8443L11.4227 13.8398C11.4051 13.8263 11.3884 13.8117 11.3728 13.7961L11.3719 13.7956L8.65336 11.0645C8.45855 10.8688 8.45928 10.5522 8.65499 10.3574C8.83292 10.1803 9.11073 10.1648 9.30613 10.3105L9.3621 10.359L11.2262 12.232L11.2263 4.364C11.2263 4.08786 11.4502 3.864 11.7263 3.864ZM5.10736 2.05497L5.1171 2.05469C5.13339 2.055 5.14967 2.05611 5.16588 2.058L5.10736 2.05497C5.1346 2.05497 5.16133 2.05714 5.18739 2.06133C5.20164 2.06328 5.21594 2.06623 5.23012 2.0698C5.23846 2.07225 5.24696 2.07463 5.25536 2.07723C5.26849 2.08093 5.2812 2.08543 5.29374 2.09046C5.30281 2.0945 5.31199 2.09851 5.32103 2.10279C5.33176 2.10743 5.34234 2.11289 5.35274 2.11876C5.36166 2.12425 5.37048 2.12959 5.37912 2.1352C5.38801 2.14048 5.39691 2.14667 5.40565 2.15318L5.4618 2.20186L8.18032 4.93297C8.37513 5.12868 8.3744 5.44527 8.17869 5.64008C8.00077 5.81718 7.72295 5.83267 7.52755 5.68698L7.47158 5.63844L5.60692 3.76469L5.60736 11.6335C5.60736 11.9096 5.3835 12.1335 5.10736 12.1335C4.85423 12.1335 4.64503 11.9454 4.61192 11.7013L4.60736 11.6335L4.60692 3.76535L2.74329 5.63844C2.56618 5.81636 2.28845 5.83314 2.09237 5.68836L2.03618 5.64008C1.85826 5.46298 1.84148 5.18524 1.98626 4.98916L2.03455 4.93297L4.75306 2.20186L4.78251 2.17486C4.78942 2.16895 4.7965 2.16322 4.80373 2.15768L4.75306 2.20186C4.77759 2.17722 4.80405 2.15567 4.83195 2.13721C4.84168 2.13115 4.8518 2.12496 4.86214 2.11912C4.87175 2.11333 4.88152 2.10825 4.8914 2.10352C4.90117 2.0992 4.91107 2.09484 4.92114 2.09079C4.93393 2.08533 4.94704 2.0807 4.9603 2.07663C4.96836 2.07446 4.97662 2.07215 4.98496 2.07006C4.99839 2.06637 5.01197 2.06355 5.02562 2.06129C5.03383 2.06027 5.04188 2.05915 5.04999 2.05822C5.06542 2.0561 5.08126 2.05503 5.0971 2.0547C5.1006 2.055 5.10398 2.05497 5.10736 2.05497Z\"\n fill={color}\n />\n </g>\n </g>\n </g>\n </svg>\n </span>\n );\n};\n","export interface INoteIcon {\n width: number;\n height: number;\n color: string;\n}\n\nexport const NoteIcon = ({ width, height, color }: INoteIcon) => {\n return (\n <span className=\"sledge-icon__note\">\n <svg width={width} height={height} viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/bold/note-2\">\n <path\n id=\"Vector\"\n d=\"M8.95178 13.3046C9.13494 13.3473 9.15172 13.5871 8.97332 13.6466L7.91998 13.9933C5.27332 14.8466 3.87998 14.1333 3.01998 11.4866L2.16665 8.85328C1.31332 6.20661 2.01998 4.80661 4.66665 3.95328L4.67731 3.94975C5.08018 3.81633 5.48102 4.22359 5.37901 4.63553C5.37264 4.66126 5.3663 4.68718 5.35998 4.71328L4.70665 7.50661C3.97332 10.6466 5.04665 12.3799 8.18665 13.1266L8.95178 13.3046Z\"\n fill={color}\n />\n <path\n id=\"Vector_2\"\n d=\"M11.9467 2.14033L10.8334 1.88033C8.6067 1.35366 7.28004 1.787 6.50004 3.40033C6.30004 3.807 6.14004 4.30033 6.00671 4.867L5.35337 7.66033C4.70004 10.447 5.56004 11.8203 8.34004 12.4803L9.46004 12.747C9.8467 12.8403 10.2067 12.9003 10.54 12.927C12.62 13.127 13.7267 12.1537 14.2867 9.747L14.94 6.96033C15.5934 4.17366 14.74 2.79366 11.9467 2.14033ZM10.6934 8.887C10.6334 9.11366 10.4334 9.26033 10.2067 9.26033C10.1667 9.26033 10.1267 9.25366 10.08 9.247L8.14004 8.75366C7.87337 8.687 7.71337 8.41366 7.78004 8.147C7.84671 7.88033 8.12004 7.72033 8.38671 7.787L10.3267 8.28033C10.6 8.347 10.76 8.62033 10.6934 8.887ZM12.6467 6.63366C12.5867 6.86033 12.3867 7.007 12.16 7.007C12.12 7.007 12.08 7.00033 12.0334 6.99366L8.80004 6.17366C8.53337 6.107 8.37337 5.83366 8.44004 5.567C8.50671 5.30033 8.78004 5.14033 9.04671 5.207L12.28 6.027C12.5534 6.087 12.7134 6.36033 12.6467 6.63366Z\"\n fill={color}\n />\n </g>\n </svg>\n </span>\n );\n};\n","import React from 'react';\n\nimport './Button.css';\n\nexport const Button = React.forwardRef((props: any, buttonRef) => {\n const { className = '', children, colorType = 'light', fullWidth = false, elementType = 'button', link = '', isActive, ...otherProps } = props;\n\n return elementType === 'hyperlink' && link?.length ? (\n <a href={link} className={`sledge__button ${className || ''}`} data-button-color-type={colorType} data-button-full-width={fullWidth} ref={buttonRef} {...otherProps}>\n {children}\n </a>\n ) : (\n <button\n className={`sledge__button ${className || ''} ${isActive ? 'sledge__button-active' : ''}`}\n data-button-color-type={colorType}\n data-button-full-width={fullWidth}\n ref={buttonRef}\n {...otherProps}\n >\n {children}\n </button>\n );\n});\n","import React from 'react';\n\nimport './SearchInputField.css';\nimport { CloseIcon } from '@core/components';\n\nexport const SearchInputField = (props: any) => {\n const { className = '', icon, value = '', withClearField, onChange, onResetField, fieldRef, ...otherProps } = props;\n\n const [isVisibleClearField, setIsVisibleClearField] = React.useState(false);\n\n const handleResetField = () => {\n fieldRef?.current && fieldRef.current.focus();\n onChange && onChange({ value: '' });\n onResetField && onResetField();\n };\n\n const handleChangeField = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange && onChange({ value: e.target.value });\n };\n\n React.useEffect(() => {\n setIsVisibleClearField(Boolean(value));\n }, [value]);\n\n return (\n <div className={`sledge__search-input-field-wrapper ${className || ''}`}>\n {!icon ? null : <div className=\"sledge__search-input-field-icon\">{icon}</div>}\n <input className=\"sledge__search-input-field\" value={value} onChange={(e) => handleChangeField(e)} ref={fieldRef} {...otherProps} />\n {isVisibleClearField && withClearField ? (\n <div className=\"sledge__clear-field-wrapper\">\n <button className=\"sledge__clear-field\" type=\"button\" onClick={handleResetField}>\n <CloseIcon width={14} height={14} color=\"#393d4e\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n};\n","export const ROTATE_FILTER_ARROW_ANIMATION = {\n open: { rotate: 180 },\n closed: { rotate: 0 },\n transition: {\n type: 'spring',\n duration: 0.2\n }\n};\n\nexport const VISIBLE_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => {\n const { duration } = custom || {};\n\n return {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: duration || 0.7\n }\n };\n }\n};\n\nexport const VISIBLE_CUSTOM_ANIMATION = {\n hidden: { opacity: 0, scale: 0 },\n visible: (custom: any) => ({\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n duration: 0.7,\n delay: custom * 0.13\n }\n })\n};\n","import React from 'react';\n\nimport './SelectField.css';\n\nimport { ChevronArrowDownIcon, Popover } from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\n\nexport const SelectField = (props: any) => {\n const { className = '', placeholder = null, prefixLabel = null, prefixSelectedLabel = '', align = 'end', onChange, value = '', options = [], LinkComponent, link } = props;\n\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleChangeField = (label: string, value: string) => {\n onChange && onChange({ label: label, value: value });\n setIsOpen(false);\n };\n\n const selectedLabel = placeholder && !value ? placeholder : options?.filter(({ value: optionValue }: any) => optionValue === value)[0]?.label;\n\n return (\n <div className={`sledge__select-field-wrapper ${className || ''}`}>\n <Popover\n trigger={\n <button type=\"button\" className=\"sledge__button sledge__select-field\" data-button-color-type=\"light\" data-button-full-width=\"true\">\n {!prefixLabel ? null : <span className=\"sledge__select-field-icon\">{prefixLabel}</span>}\n <span>{prefixSelectedLabel?.length ? `${prefixSelectedLabel} ${selectedLabel}` : selectedLabel}</span>\n\n <motion.div initial=\"closed\" animate={isOpen ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={18} height={18} color=\"#000000\" />\n </motion.div>\n </button>\n }\n content={\n <ul className=\"sledge__select-field-option\">\n {options?.map((option: any, index: number) => {\n const { label, value: optionValue } = option;\n\n const Item = () => (\n <li\n key={index}\n onClick={() => handleChangeField(label, optionValue)}\n {...(optionValue === value && {\n ['data-selected']: true\n })}\n >\n {label}\n </li>\n );\n\n return LinkComponent ? (\n <LinkComponent scroll={false} to={link?.replace('value', optionValue)} href={link?.replace('value', optionValue)} key={index}>\n <Item />\n </LinkComponent>\n ) : (\n <Item key={index} />\n );\n })}\n </ul>\n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hideCloseIcon\n align={align}\n className=\"sledge__select-field-option-content\"\n withArrow={false}\n />\n </div>\n );\n};\n","import React from 'react';\nimport { getWishlistInfo } from '@core/api/wishlist';\nimport { DEFAULT_WISHLIST_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { HeartIcon } from '@core/components';\n\nexport interface IBadgeProps {\n useProxyUrl?: boolean;\n data?: any;\n position?: 'none' | 'left' | 'right' | 'bottom-left' | 'bottom-right';\n}\n\nexport const Badge = (props: IBadgeProps) => {\n const { useProxyUrl = false, data: propsData, position: positionProp } = props;\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { value: valueRenderWishlistBadge, trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = 'currentColor';\n\n const [colorIcon, setColorIcon] = React.useState(defaultColorIcon);\n const [totalWishlist, setTotalWishlist] = React.useState(propsData?.total_data || 0);\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isMaximizeTotalWishlist, setIsMaximizeTotalWishlist] = React.useState(false);\n const [proxyUrl, setProxyUrl] = React.useState(propsData?.proxy_url || '');\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const { floating_button_type } = dataSettings?.launch_point || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const defaultPosition = positionProp || floating_button_type;\n const position = defaultPosition ? defaultPosition : 'none';\n\n const handleGetWishlistInfo = async () => {\n let response: any;\n let run: boolean = false;\n let valueTotalWishlist: number;\n let valueProxyUrl: string;\n\n response = await getWishlistInfo();\n run = response?.status?.code === 200 || false;\n\n valueTotalWishlist = !response?.data?.total_data ? 0 : response.data.total_data;\n valueProxyUrl = DEFAULT_WISHLIST_URL;\n\n if (run) {\n setTotalWishlist(valueTotalWishlist);\n setIsMaximizeTotalWishlist(valueTotalWishlist > 99);\n setProxyUrl(valueProxyUrl);\n setIsFirstLoading(false);\n setIsLoading(false);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n const { is_required_login } = response || {};\n\n setDataSettings(response);\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n };\n\n const handleRequiredLogin = (e: any) => {\n if (isRequiredLogin) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n } else {\n if (useProxyUrl) window.location.href = proxyUrl || '/';\n }\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n if (!dataSettings?.launch_point) return;\n\n handleGetWishlistInfo();\n }, [dataSettings]);\n\n React.useEffect(() => {\n if (!valueRenderWishlistBadge) return;\n\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(false);\n\n handleGetWishlistInfo();\n }, [valueRenderWishlistBadge]);\n\n const HeaderMenu = () => {\n return (\n <span className=\"sledge-wishlist__badge\" onClick={handleRequiredLogin} onMouseEnter={() => setColorIcon('#F85538')} onMouseLeave={() => setColorIcon(defaultColorIcon)}>\n <HeartIcon width={20} height={20} type=\"outline\" color={colorIcon} />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-header-menu ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n );\n };\n\n const FloatingFull = () => {\n return (\n <div className={`sledge-wishlist__badge-floating sledge__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-floating-text\">My Wishlist</span>\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={18} height={18} type=\"fill\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n const FloatingIcon = () => {\n return (\n <div className={`sledge-wishlist__badge-floating-icon sledge-wishlist__badge-floating-${position}`}>\n <span onClick={handleRequiredLogin} className=\"sledge-wishlist__badge-floating-icon-link\">\n <span className=\"sledge-wishlist__badge-icon\">\n <HeartIcon width={27.01} height={25.73} type=\"outline\" color=\"#000000\" />\n {!isFirstLoading && (\n <span className={`sledge-wishlist__badge-counter sledge-wishlist__badge-counter-bottom-right ${isMaximizeTotalWishlist ? 'sledge-wishlist__badge-fit-content' : ''}`}>\n {isLoading || isRequiredLogin ? 0 : `${isMaximizeTotalWishlist ? '99+' : totalWishlist}` || 0}\n </span>\n )}\n </span>\n </span>\n </div>\n );\n };\n\n return isFirstLoading ? null : <>{position === 'none' ? <HeaderMenu /> : String(position).includes('bottom') ? <FloatingIcon /> : <FloatingFull />}</>;\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getWishlist: any = async (query?: any, token?: string) => {\n const { page, limit, sort, keyword, shareId } = query || {};\n\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n page: page || '',\n limit: limit || '',\n sort: sort || '',\n keyword: keyword || '',\n share_id: shareId || ''\n }).toString();\n\n let url = `${API_URL}/wishlist${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addWishlist: any = async (data: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n}) => {\n const { productId, productVariantId, productName, productVendor, productSku, productVariantName, productLink, productImage, productCurrency, productPrice } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n vendor: productVendor,\n sku: productSku,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const bulkAddWishlist: any = async (\n data: Array<{\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n }>\n) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let products = data.map((item: any) => {\n const { productId, productVariantId, productName, productVariantName, productLink, productImage, productCurrency, productPrice } = item;\n\n return {\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId),\n name: productName,\n variant_name: productVariantName,\n url: productLink,\n image_url: productImage,\n currency: productCurrency,\n price: productPrice\n };\n });\n\n let url = `${API_URL}/wishlist/bulk`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n products: products\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getWishlistInfo: any = async (token?: string) => {\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/info`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const checkWishlist: any = async (id: any, variantId?: any) => {\n let convertId = sanitizeDataId(id);\n let convertVariantId = variantId ? sanitizeDataId(variantId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n variant_id: convertVariantId\n }).toString();\n\n let url = `${API_URL}/wishlist/check/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return Boolean(result.data);\n })\n .catch(() => {\n return;\n });\n};\n\nexport const clearWishlist: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/clear`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string | number }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/wishlist/cart`;\n let payload = {\n product: JSON.stringify({\n id: sanitizeDataId(productId)\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { Badge } from './Badge';\nimport { DATASET_ATTRIBUTE_KEY, LOCAL_STORAGE_KEY, SELECTOR } from '@core/lib/const';\nimport { SELECTOR_ATTRIBUTE_KEY } from '@core/lib/const';\nimport { INTERNAL_SELECTOR_VALUE } from '@core/lib/const';\nimport { SledgeContext } from '@sledge-app/core';\n\nexport const BadgeInitSelector = () => {\n const sledgeWishlistSettings = localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || '') : null;\n\n let element: Array<HTMLElement> = Array.from(document.querySelectorAll(SELECTOR.WISHLIST.ELEMENT_BADGE));\n\n let isElementDetected = !element || (element && !element.length);\n\n if (!sledgeWishlistSettings || isElementDetected) return;\n\n const { floating_button_type } = sledgeWishlistSettings?.launch_point || {};\n\n const isBottomFloatingType = String(floating_button_type).includes('bottom');\n\n if (floating_button_type !== 'none') {\n if (isBottomFloatingType) {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n } else {\n element.map((item: any, index: number) => {\n if (item && !index) {\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} position={floating_button_type} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n } else {\n element.map((item: any) => {\n if (item) {\n const USE_PROXY_URL = item.getAttribute(DATASET_ATTRIBUTE_KEY.WISHLIST.USE_PROXY_URL);\n\n // Re-render with remove element logic\n if (item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`))\n item.querySelector(`[${SELECTOR_ATTRIBUTE_KEY}=\"${INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET}\"]`).remove();\n\n // For container react root element\n let elementContainerWidget = document.createElement('div');\n elementContainerWidget.setAttribute(SELECTOR_ATTRIBUTE_KEY, INTERNAL_SELECTOR_VALUE.ELEMENT_CONTAINER_WIDGET);\n item.appendChild(elementContainerWidget);\n\n ReactDOM.createRoot(elementContainerWidget).render(\n <React.StrictMode>\n <SledgeContext.Provider\n value={{\n isRenderApp: {\n wishlist: true,\n productReview: true,\n instantSearch: true\n },\n sledgeAnonymId: localStorage.getItem(LOCAL_STORAGE_KEY.ANONYM_ID) || '',\n isJsVersion: true\n }}\n >\n <Badge useProxyUrl={Boolean(USE_PROXY_URL && USE_PROXY_URL === 'true')} />\n </SledgeContext.Provider>\n </React.StrictMode>\n );\n }\n });\n }\n};\n","import React from 'react';\nimport { addWishlist, checkWishlist } from '@core/api/wishlist';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { HeartIcon } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\n\ndeclare global {\n interface Window {\n sledgeWishlistTriggerUpdate(): void;\n }\n}\n\nexport interface ITriggerProps {\n params: {\n productId?: string;\n productVariantId?: string;\n productName?: string;\n productVendor?: string;\n productSku?: string;\n productVariantName?: string;\n productLink?: string;\n productImage?: string;\n productCurrency?: string;\n productPrice?: any;\n };\n forceActive?: boolean;\n hidden?: boolean;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n wishlistChecked?: boolean;\n}\n\nexport const Trigger: React.FunctionComponent<ITriggerProps> = (props) => {\n const { params, forceActive = false, hidden = false, onAfterAddWishlist, onAfterRemoveWishlist, wishlistChecked } = props;\n const { productId, productVariantId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { wishlist: isRenderAppWishlist } = isRenderApp || {};\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const defaultColorIcon = '#767676';\n const defaultTypeIcon = 'outline';\n const activeColorIcon = '#F85538';\n const activeTypeIcon = 'fill';\n\n const wishlistCheckedFilled = typeof wishlistChecked === 'boolean';\n const isWishlisted = wishlistCheckedFilled ? wishlistChecked : false;\n\n const [colorIcon, setColorIcon] = React.useState(isWishlisted ? activeColorIcon : defaultColorIcon);\n const [typeIcon, setTypeIcon] = React.useState<'fill' | 'outline'>(isWishlisted ? activeTypeIcon : defaultTypeIcon);\n\n const [isWishlist, setIsWishlist] = React.useState(!!wishlistChecked);\n const [isLoading, setIsLoading] = React.useState(!wishlistCheckedFilled);\n const [dataSettings, setDataSettings] = React.useState<any>({});\n const [handleFunctions, _setHandleFunctions] = React.useState({\n onAfterAddWishlist: onAfterAddWishlist,\n onAfterRemoveWishlist: onAfterRemoveWishlist\n });\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_to_wishlist, text_added_to_wishlist, title_removed_to_wishlist, text_removed_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } =\n dataSettings?.languages?.notification || {};\n const { alert_login, alert, login_button } = dataSettings?.languages?.widget || {};\n\n const handleCheckWishlist = async () => {\n let response: any;\n\n if (typeof wishlistChecked === 'boolean' && isFirstTime) {\n response = wishlistChecked;\n setIsFirstTime(false);\n } else {\n response = await checkWishlist(productId, productVariantId);\n }\n\n setIsWishlist(forceActive ? forceActive : response);\n };\n\n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isRequiredLogin) {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: alert_login || 'Login required!',\n message: alert || 'Please login to save your wishlist across devices.',\n textSubmit: login_button || 'Login',\n buttonSubmitType: 'info',\n onSubmit: () => (window.location.href = '/account/login')\n });\n return;\n }\n\n let resAddWishlist = await addWishlist(params);\n\n const { status, data: response_data } = resAddWishlist || {};\n const { code } = status || {};\n\n if (code === 200) {\n setIsWishlist(!isWishlist);\n\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (typeof window !== 'undefined') {\n if (window.sledgeWishlistWidgetListUpdate) window.sledgeWishlistWidgetListUpdate();\n if (window.sledgeWishlistButtonDetailUpdate) window.sledgeWishlistButtonDetailUpdate();\n }\n\n handleCheckWishlist();\n\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('success');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('success');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: !isWishlist ? title_added_to_wishlist : title_removed_to_wishlist,\n message: !isWishlist ? text_added_to_wishlist : text_removed_to_wishlist,\n location: location_notification,\n type: 'success',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n } else {\n if (!isWishlist) {\n handleFunctions.onAfterAddWishlist && handleFunctions.onAfterAddWishlist('failed');\n } else {\n handleFunctions.onAfterRemoveWishlist && handleFunctions.onAfterRemoveWishlist('failed');\n }\n\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_WISHLIST_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_WISHLIST_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n setIsLoading(false);\n };\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeWishlistTriggerUpdate = () => {\n handleCheckWishlist();\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.WISHLIST_SETTING) || null);\n }, [isRenderAppWishlist]);\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n React.useEffect(() => {\n if (!isRenderAppWishlist) return;\n\n handleCheckWishlist();\n }, [isRenderAppWishlist, productVariantId]);\n\n const isActive = (isWishlist || forceActive) && !isRequiredLogin;\n\n React.useEffect(() => {\n if (isActive) {\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n } else {\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }\n }, [isWishlist]);\n\n return (\n <>\n {!isLoading && !hidden && (\n <div className=\"sledge-wishlist__trigger-block\">\n <span\n className=\"sledge-wishlist__trigger\"\n onClick={(e) => handleClick(e)}\n onMouseEnter={() => {\n if (isActive) return;\n\n setColorIcon(activeColorIcon);\n setTypeIcon(activeTypeIcon);\n }}\n onMouseLeave={() => {\n if (isActive) return;\n\n setColorIcon(defaultColorIcon);\n setTypeIcon(defaultTypeIcon);\n }}\n >\n <HeartIcon width={16.67} height={15.83} type={typeIcon} color={colorIcon} />\n </span>\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { IWidgetHeaderClearTriggerProps, WidgetHeaderClearTrigger } from './WidgetHeaderClearTrigger';\nimport { IWidgetHeaderShareTriggerProps, WidgetHeaderShareTrigger } from './WidgetHeaderShareTrigger';\nimport { IWidgetHeaderSearchFormProps, WidgetHeaderSearchForm } from './WidgetHeaderSearchForm';\nimport { IWidgetHeaderTitleProps, WidgetHeaderTitle } from './WidgetHeaderTitle';\nimport { IWidgetHeaderLimitProps, WidgetHeaderLimit } from './WidgetHeaderLimit';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderProps {\n isLoading?: boolean;\n isFirstLoading?: boolean;\n wishlistData?: any;\n wishlistSort?: any;\n selectedSort?: string;\n selectedLimit?: string;\n keyword?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n text?: string;\n limitOptions?: string[] | number[];\n children?: JSX.Element | JSX.Element[];\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Title: React.FC<IWidgetHeaderTitleProps>;\n SearchForm: React.FC<IWidgetHeaderSearchFormProps>;\n ClearTrigger: React.FC<IWidgetHeaderClearTriggerProps>;\n ShareTrigger: React.FC<IWidgetHeaderShareTriggerProps>;\n Sort: React.FC<IWidgetHeaderSortProps>;\n Limit: React.FC<IWidgetHeaderLimitProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = ({ isFirstLoading, ...props }: IWidgetHeaderProps) => {\n return (\n <div className=\"sledge-wishlist__widget-header\">\n {isFirstLoading ? (\n <div\n style={{\n display: 'flex',\n gap: '8px',\n width: '100%',\n justifyContent: 'space-between'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n\n <div\n style={{\n display: 'flex',\n gap: '8px'\n }}\n >\n <SkeletonLoading.Item width=\"440px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n\n <div\n style={{\n display: 'flex',\n gap: '26px'\n }}\n >\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"190px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n ) : (\n React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )\n )}\n </div>\n );\n};\n\nWidgetHeader.Title = WidgetHeaderTitle;\nWidgetHeader.SearchForm = WidgetHeaderSearchForm;\nWidgetHeader.ShareTrigger = WidgetHeaderShareTrigger;\nWidgetHeader.ClearTrigger = WidgetHeaderClearTrigger;\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.Limit = WidgetHeaderLimit;\n","export interface IWidgetHeaderTitleProps {\n text?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderTitle = ({ text, dataSettings }: IWidgetHeaderTitleProps) => {\n const {\n color: display_header_title_color,\n font_size: display_header_title_font_size,\n font_weight: display_header_title_font_weight,\n text_transform: display_header_title_text_transform\n } = dataSettings?.display?.widget?.header_title || {};\n const { header_title: language_header_title } = dataSettings?.languages?.widget || {};\n\n const display_header_title_style = {\n ...(display_header_title_color && { color: display_header_title_color }),\n ...(display_header_title_font_size && { fontSize: display_header_title_font_size }),\n ...(display_header_title_font_weight && { fontWeight: display_header_title_font_weight }),\n ...(display_header_title_text_transform && { textTransform: display_header_title_text_transform })\n };\n\n return (\n <div className=\"sledge-wishlist__widget-header-item\">\n <h1 style={display_header_title_style}>{text ? text : language_header_title || 'My Wishlist'}</h1>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon, SearchInputField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSearchFormProps {\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n keyword?: string;\n placeholder?: string;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderSearchForm = ({ setIsLoading, setKeyword, keyword, placeholder, dataSettings }: IWidgetHeaderSearchFormProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const { search_form_placeholder } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const handleResetField = () => {\n setIsLoading && setIsLoading(true);\n setKeyword && setKeyword('');\n\n searchFieldRef?.current?.focus();\n };\n\n const handleChangeField = (value: string) => {\n setKeyword && setKeyword(value);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin && (\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={placeholder ? placeholder : search_form_placeholder || 'Search product...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => handleChangeField(value)}\n onResetField={handleResetField}\n className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-search-form\"\n withClearField\n />\n )}\n </>\n );\n};\n","import React from 'react';\nimport { bulkAddWishlist } from '@core/api/wishlist';\nimport { Button, HeartIcon, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\nimport { OBJECT_DATA_STRING_KEY } from '@core/lib/const';\n\nexport interface IWidgetHeaderShareTriggerProps {\n wishlistData?: any;\n buttonText?: string;\n showShareTrigger?: boolean;\n shareLink?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderShareTrigger = ({ wishlistData, buttonText, showShareTrigger, shareLink, shareId, dataSettings, isFirstLoading }: IWidgetHeaderShareTriggerProps) => {\n const { triggerRenderMultipleComponent, sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderWishlistBadge } = triggerRenderMultipleComponent?.wishlist?.badge || {};\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_share_text_color,\n border_color: display_button_share_border_color,\n border_radius: display_button_share_border_radius,\n padding_top: display_button_share_padding_top,\n padding_bottom: display_button_share_padding_bottom,\n padding_left: display_button_share_padding_left,\n padding_right: display_button_share_padding_right,\n background_color: display_button_share_background_color,\n font_size: display_button_share_font_size,\n font_weight: display_button_share_font_weight,\n text_transform: display_button_share_text_transform\n } = dataSettings?.display?.widget?.button_share || {};\n const { title_share_wishlist, title_confirm_add_to_your_wishlist, text_confirm_add_to_your_wishlist, button_confirm_add_to_your_wishlist } = dataSettings?.languages?.popup || {};\n const { button_share, button_add_to_your_wishlist } = dataSettings?.languages?.widget || {};\n const { show: show_notification, location: location_notification } = dataSettings?.display?.notification || {};\n const { title_added_all_to_wishlist, text_added_all_to_wishlist, title_fail_add_to_wishlist, text_fail_add_to_wishlist } = dataSettings?.languages?.notification || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_share_style = {\n ...(display_button_share_text_color && { color: display_button_share_text_color }),\n ...(display_button_share_border_color && { borderColor: display_button_share_border_color }),\n ...(display_button_share_border_radius && { borderRadius: display_button_share_border_radius }),\n ...(display_button_share_padding_top && { paddingTop: display_button_share_padding_top }),\n ...(display_button_share_padding_bottom && { paddingBottom: display_button_share_padding_bottom }),\n ...(display_button_share_padding_left && { paddingLeft: display_button_share_padding_left }),\n ...(display_button_share_padding_right && { paddingRight: display_button_share_padding_right }),\n ...(display_button_share_background_color && { backgroundColor: display_button_share_background_color }),\n ...(display_button_share_font_size && { fontSize: display_button_share_font_size }),\n ...(display_button_share_font_weight && { fontWeight: display_button_share_font_weight }),\n ...(display_button_share_text_transform && { textTransform: display_button_share_text_transform })\n };\n\n const [isLoadingBulkAdd, setIsLoadingBulkAdd] = React.useState(false);\n\n let clipboardIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"vuesax/linear/copy\">\n <g id=\"copy\">\n <path id=\"Vector\" d=\"M16 12.9V17.1C16 20.6 14.6 22 11.1 22H6.9C3.4 22 2 20.6 2 17.1V12.9C2 9.4 3.4 8 6.9 8H11.1C14.6 8 16 9.4 16 12.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path id=\"Vector_2\" d=\"M22 6.9V11.1C22 14.6 20.6 16 17.1 16H16V12.9C16 9.4 14.6 8 11.1 8H8V6.9C8 3.4 9.4 2 12.9 2H17.1C20.6 2 22 3.4 22 6.9Z\" stroke=\"#767676\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </g>\n </g>\n </svg>\n `;\n let checkIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path></svg>`;\n\n const handleBulkAddWishlist = async () => {\n setIsLoadingBulkAdd(true);\n let data = wishlistData.map((item: any) => {\n const { id, variant_id, name, variant_name, url, image_url, currency, price } = item.product;\n\n return {\n productId: id,\n productVariantId: variant_id,\n productName: name,\n productVariantName: variant_name,\n productLink: url,\n productImage: image_url,\n productCurrency: currency,\n productPrice: price\n };\n });\n\n let resBulkAddWishlist = await bulkAddWishlist(data);\n if (resBulkAddWishlist?.status?.code === 200) {\n if (typeof window !== 'undefined') {\n // Trigger update for react module\n if (triggerRenderWishlistBadge) triggerRenderWishlistBadge(true);\n\n // Trigger update for javascript\n BadgeInitSelector();\n\n if (window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: title_added_all_to_wishlist,\n message: text_added_all_to_wishlist\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeToastNotification && show_notification)\n window.sledgeToastNotification({\n title: title_fail_add_to_wishlist || 'Failed',\n message: text_fail_add_to_wishlist || 'Failed add to wishlist, please try again',\n location: location_notification,\n type: 'failed',\n icon: <HeartIcon width={40} height={40} color=\"black\" type=\"outline\" />\n });\n }\n };\n\n const handleCopyShareLink = () => {\n let running = true;\n\n let boxCopyElement = document.querySelector('.sledge-wishlist__widget-box-copy');\n\n if (boxCopyElement && running) {\n running = false;\n let copyTriggerElement = document.querySelector('.sledge-wishlist__widget-box-copy-icon');\n\n copyTriggerElement?.addEventListener('click', () => {\n let shareLink = document.querySelector('.sledge-wishlist__widget-box-copy-content')?.textContent;\n\n if (shareLink) {\n navigator.clipboard.writeText(shareLink);\n\n if (copyTriggerElement) {\n copyTriggerElement.classList.add('active');\n copyTriggerElement.innerHTML = checkIcon;\n setTimeout(() => {\n if (copyTriggerElement) {\n copyTriggerElement.classList.remove('active');\n copyTriggerElement.innerHTML = clipboardIcon;\n }\n }, 2500);\n }\n }\n });\n }\n };\n\n const handleClick = async () => {\n let getMessage = text_confirm_add_to_your_wishlist;\n if (getMessage) getMessage = getMessage.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_WISHLIST, wishlistData.length);\n\n if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: title_confirm_add_to_your_wishlist || 'Are you sure want to add this to your wishlist item?',\n message: getMessage || `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: button_confirm_add_to_your_wishlist || 'Add to your wishlist',\n buttonSubmitType: 'info',\n onSubmit: handleBulkAddWishlist || {}\n });\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup) {\n window.sledgeInfoPopup({\n title: title_share_wishlist,\n message: shareLink\n ? `<div class=\"sledge-wishlist__widget-box-copy\">\n <div class=\"sledge-wishlist__widget-box-copy-icon\" title=\"Copy to clipboard\">\n ${clipboardIcon}\n </div>\n <div class=\"sledge-wishlist__widget-box-copy-content\">${shareLink}</div>\n </div>`\n : ''\n });\n }\n }\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n watchElement({\n selector: '.sledge-wishlist__widget-box-copy',\n init: handleCopyShareLink\n });\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {showShareTrigger && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"136px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item sledge-wishlist__widget-header-share-trigger\">\n <Button\n type=\"button\"\n style={display_button_share_style}\n {...((shareId && !wishlistData.length) || isLoadingBulkAdd\n ? {\n disabled: true\n }\n : {\n onClick: handleClick\n })}\n >\n {shareId ? (\n <>\n <span className=\"sledge-wishlist__badge-counter sledge-wishlist__badge-counter-top-right\">{wishlistData.length}</span>\n {isLoadingBulkAdd ? <LoadingDots /> : null}\n {button_add_to_your_wishlist || 'Add to your wishlist'}\n </>\n ) : buttonText ? (\n buttonText\n ) : (\n button_share || 'Share Wishlist'\n )}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Button, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderClearTriggerProps {\n buttonText?: string;\n shareId?: string;\n dataSettings?: any;\n isFirstLoading?: boolean;\n}\n\nexport const WidgetHeaderClearTrigger = ({ buttonText, shareId, dataSettings, isFirstLoading }: IWidgetHeaderClearTriggerProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n const {\n text_color: display_button_clear_all_text_color,\n border_color: display_button_clear_all_border_color,\n border_radius: display_button_clear_all_border_radius,\n padding_top: display_button_clear_all_padding_top,\n padding_bottom: display_button_clear_all_padding_bottom,\n padding_left: display_button_clear_all_padding_left,\n padding_right: display_button_clear_all_padding_right,\n background_color: display_button_clear_all_background_color,\n font_size: display_button_clear_all_font_size,\n font_weight: display_button_clear_all_font_weight,\n text_transform: display_button_clear_all_text_transform\n } = dataSettings?.display?.widget?.button_clear_all || {};\n const { title_confirm_clear_all_wishlist, text_confirm_clear_all_wishlist, button_submit_confirm_clear_all_wishlist, button_cancel_confirm_clear_all_wishlist } =\n dataSettings?.languages?.popup || {};\n const { button_clear_all } = dataSettings?.languages?.widget || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const display_button_clear_all_style = {\n ...(display_button_clear_all_text_color && { color: display_button_clear_all_text_color }),\n ...(display_button_clear_all_border_color && { borderColor: display_button_clear_all_border_color }),\n ...(display_button_clear_all_border_radius && { borderRadius: display_button_clear_all_border_radius }),\n ...(display_button_clear_all_padding_top && { paddingTop: display_button_clear_all_padding_top }),\n ...(display_button_clear_all_padding_bottom && { paddingBottom: display_button_clear_all_padding_bottom }),\n ...(display_button_clear_all_padding_left && { paddingLeft: display_button_clear_all_padding_left }),\n ...(display_button_clear_all_padding_right && { paddingRight: display_button_clear_all_padding_right }),\n ...(display_button_clear_all_background_color && { backgroundColor: display_button_clear_all_background_color }),\n ...(display_button_clear_all_font_size && { fontSize: display_button_clear_all_font_size }),\n ...(display_button_clear_all_font_weight && { fontWeight: display_button_clear_all_font_weight }),\n ...(display_button_clear_all_text_transform && { textTransform: display_button_clear_all_text_transform })\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n const handleClick = () => {\n if (typeof window !== 'undefined' && window.sledgeConfirmationPopup)\n window.sledgeConfirmationPopup({\n title: title_confirm_clear_all_wishlist,\n message: text_confirm_clear_all_wishlist,\n textSubmit: button_submit_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\nexport const getReviewSnippet: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/snippet/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getProductsReviewInfo: any = async (ids: any, token?: string) => {\n let convertIds = ids.map((v: string) => sanitizeDataId(v));\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage?.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/info/ids/${convertIds.join(',')}?${PAYLOAD_API_ALIASES.Authorization}=${sledgeAuthApp}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewMedia: any = async () => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReviewMedia: any = async (files: FileList) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/media`;\n let headers = {};\n let payload = {\n files\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false,\n isUploadFile: true\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const deleteReviewMedia: any = async (id: any) => {\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review/usermedia/${id}`;\n\n return await fetchApi({\n url,\n method: 'DELETE',\n authorization: sledgeAuthApp\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addReview: any = async (data: {\n userFirstName: string;\n userLastName: string;\n userEmail: string;\n productId: string;\n productVariantId: string;\n rating: number;\n title: string;\n review: string;\n mediaIds: [];\n}) => {\n const { userFirstName, userLastName, userEmail, productId, productVariantId, rating, title, review, mediaIds } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/review`;\n let payload = {\n user: JSON.stringify({\n name: `${userFirstName}${userLastName ? ` ${userLastName}` : ''}`,\n email: userEmail\n }),\n review: JSON.stringify({\n rating: rating,\n title: title,\n review: review,\n media_ids: mediaIds\n }),\n ...(productId && {\n product: JSON.stringify({\n id: sanitizeDataId(productId),\n variant_id: sanitizeDataId(productVariantId)\n })\n })\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { ELEMENT_ID, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { usePrevious } from '@core/hooks';\nimport { getFillRating, getUnixTimestamp, scrollToElement } from '@core/lib/helper';\n\nexport interface IRatingProps {\n total?: any | undefined;\n average?: any | undefined;\n size?:\n | 'xs'\n | 'sm'\n | 'md'\n | {\n width?: number;\n height?: number;\n };\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n withSkeletonLoading?: boolean;\n withTotal?: boolean;\n isScrollToElementWidget?: boolean;\n data?: any;\n sledgeSettings?: any;\n fillColor?: string;\n outlineColor?: string;\n withOutlineColor?: boolean;\n customComponentId?: string;\n numberOfIcons?: number;\n}\n\nexport const Rating = (props: IRatingProps) => {\n const {\n total,\n average,\n size = 'sm',\n params,\n withSkeletonLoading = true,\n withTotal = true,\n isScrollToElementWidget = true,\n data: propsData,\n sledgeSettings,\n fillColor = '',\n outlineColor = '',\n withOutlineColor = true,\n customComponentId = '',\n numberOfIcons = 5\n } = props;\n const { productId } = params || {};\n\n const { isRenderApp, triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { productReview: isRenderAppProductReview } = isRenderApp || {};\n const { value: valueRenderProductReviewRating, trigger: triggerRenderProductReviewRating } = triggerRenderMultipleComponent?.productReview?.rating || {};\n\n const initLoading = propsData || typeof total !== 'undefined' || typeof average !== 'undefined' ? false : true;\n const [isFirstLoading, setIsFirstLoading] = React.useState(initLoading);\n const [isLoading, setIsLoading] = React.useState(initLoading);\n const [sizing, setSizing] = React.useState(\n propsData || typeof total !== 'undefined' || typeof average !== 'undefined'\n ? size && typeof size === 'string'\n ? getSizing(size)\n : {\n width: size?.width,\n height: size?.height\n }\n : {\n width: 0,\n height: 0\n }\n );\n const [totalReview, setTotalReview] = React.useState(propsData?.review_count || total || 0);\n const [averageReview, setAverageReview] = React.useState(propsData?.rating?.average || average || '0');\n const [dataSettings, setDataSettings] = React.useState<any>(sledgeSettings?.review || {});\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const { fill_color = '#23BC45', outline_color = '#8D9196' } = dataSettings?.display?.rating || {};\n\n const unixTimestamp = getUnixTimestamp();\n\n const handleProductRatingInfo = async (paramsProductId: any, isTriggerMultiComponent = false) => {\n if (paramsProductId !== productId) return;\n\n let response: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueAverageReview: any;\n\n let data;\n if (propsData && isFirstTime) {\n data = propsData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId: paramsProductId\n });\n\n if (!response) return;\n\n const { status } = response;\n data = response.data;\n const { code } = status;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueAverageReview = data?.rating?.average ? data.rating.average : 0;\n\n if (run) {\n setTotalReview(valueTotalReview);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsFirstLoading(false);\n\n if (isTriggerMultiComponent && valueRenderProductReviewRating && triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n }\n };\n\n const handleRefreshProductRating = async () => {\n if (typeof total !== 'undefined' || typeof average !== 'undefined') {\n setIsLoading(false);\n } else {\n handleProductRatingInfo(productId);\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_PRODUCT_REVIEW_SETTING: any) => {\n setIsLoading(true);\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_PRODUCT_REVIEW_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n\n await handleRefreshProductRating();\n };\n\n const handleOnClick = () => {\n if (!isScrollToElementWidget) return;\n\n setTimeout(() => {\n scrollToElement({\n element: document.getElementById(ELEMENT_ID.PRODUCT_REVIEW.ELEMENT_WIDGET),\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (!isRenderAppProductReview) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else if (size === 'md') {\n setSizing({\n width: 32,\n height: 32\n });\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.PRODUCT_REVIEW_SETTING) || null);\n }, [isRenderAppProductReview, productId]);\n\n React.useEffect(() => {\n if (!productId || (productId && valueRenderProductReviewRating !== productId)) return;\n\n if (triggerRenderProductReviewRating) triggerRenderProductReviewRating('');\n\n setIsFirstLoading(true);\n\n handleProductRatingInfo(valueRenderProductReviewRating, true);\n }, [productId, valueRenderProductReviewRating]);\n\n return (\n <div\n className=\"sledge-product-review__rating\"\n onClick={handleOnClick}\n {...(typeof size === 'string'\n ? {\n ['data-rating-size']: size\n }\n : {})}\n >\n {isFirstLoading && withSkeletonLoading ? (\n <SkeletonLoading.Item width=\"230px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <>\n {!isLoading && (\n <>\n {[1, 2, 3, 4, 5].map((item, index) => {\n if (!(item <= numberOfIcons)) return;\n\n const { strokeGradientId, suffixGradientId, offset, fillGradientId, fillOther } = getFillRating({\n average: averageReview,\n item,\n index,\n productId,\n unixTimestamp,\n customComponentId\n });\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...sizing} viewBox=\"0 0 32 32\" key={suffixGradientId}>\n <defs>\n <linearGradient id={strokeGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor={fillOther === 'full' ? fillColor || fill_color : outlineColor || outline_color} />\n </linearGradient>\n <linearGradient id={fillGradientId}>\n <stop offset={offset} stopColor={fillColor || fill_color} />\n <stop offset={offset} stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n <path\n fill={`url(#${fillGradientId})`}\n d=\"M9.18817 19.8162L9.25542 19.4179L8.94431 19.1604L3.14591 14.3604L3.14598 14.3603L3.13673 14.3529C2.5294 13.8672 2.784 12.8955 3.54372 12.7636L11.7291 12.3989L12.1807 12.3788L12.3481 11.959L15.8472 3.18648C15.977 2.94796 16.2257 2.79961 16.4979 2.79961C16.769 2.79961 17.0185 2.94848 17.1489 3.18698L20.6478 11.959L20.8152 12.3788L21.2668 12.3989L29.4522 12.7636C30.2119 12.8955 30.4665 13.8672 29.8592 14.3529L29.8591 14.3528L29.85 14.3604L24.0516 19.1604L23.7405 19.4179L23.8077 19.8162L25.3884 29.1774C25.4834 29.8833 24.7613 30.4104 24.1224 30.1159L16.8734 25.5088L16.498 25.2702L16.1226 25.5088L8.87373 30.1141C8.23317 30.409 7.51248 29.8817 7.60746 29.1758L9.18817 19.8162Z\"\n {...(withOutlineColor\n ? {\n stroke: `url(#${strokeGradientId})`,\n strokeWidth: '1.4'\n }\n : {})}\n ></path>\n </svg>\n );\n })}\n {withTotal ? <div className=\"sledge-product-review__rating-summary-total\">({totalReview})</div> : <></>}\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst getSizing = (size: ('xs' | 'sm' | 'md') | string) => {\n if (size === 'xs') {\n return {\n width: 14,\n height: 14\n };\n } else if (size === 'sm') {\n return {\n width: 20,\n height: 20\n };\n } else {\n return {\n width: 32,\n height: 32\n };\n }\n};\n","import React from 'react';\nimport { IWidgetHeaderAddTriggerProps, WidgetHeaderAddTrigger } from './WidgetHeaderAddTrigger';\nimport { IWidgetHeaderSortProps, WidgetHeaderSort } from './WidgetHeaderSort';\nimport { IWidgetHeaderSummaryProps, WidgetHeaderSummary } from './WidgetHeaderSummary';\n\nexport interface IWidgetHeaderProps {\n children?: JSX.Element | JSX.Element[];\n data?: any;\n}\n\ntype WidgetHeaderComponent = React.FunctionComponent<IWidgetHeaderProps> & {\n Sort: React.FC<IWidgetHeaderSortProps>;\n AddTrigger: React.FC<IWidgetHeaderAddTriggerProps>;\n Summary: React.FC<IWidgetHeaderSummaryProps>;\n};\n\nexport const WidgetHeader: WidgetHeaderComponent = (props: IWidgetHeaderProps) => {\n const [isLoading, setIsLoading] = React.useState(!props.data);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, []);\n\n return (\n <>\n {!isLoading && (\n <div className=\"sledge-product-review__widget-header\">\n {React.Children.count(props.children) &&\n React.Children.map(props.children, (child: any) =>\n React.cloneElement(child, {\n ...props\n })\n )}\n </div>\n )}\n </>\n );\n};\n\nWidgetHeader.Sort = WidgetHeaderSort;\nWidgetHeader.AddTrigger = WidgetHeaderAddTrigger;\nWidgetHeader.Summary = WidgetHeaderSummary;\n","import React from 'react';\nimport { SelectField, SkeletonLoading, SwapIcon } from '@core/components';\n\nexport interface IWidgetHeaderSortProps {\n isFirstLoadingHeader?: boolean;\n productReviewSort?: any;\n dataSettings?: any;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n data?: any;\n}\n\nexport const WidgetHeaderSort = ({ isFirstLoadingHeader, productReviewSort, dataSettings, setSelectedSort, setIsRefreshWidgetList }: IWidgetHeaderSortProps) => {\n const { default_sort, show_sorting_options } = dataSettings?.display?.widget || {};\n const { sort_by: language_sort_by } = dataSettings?.languages?.widget || {};\n\n const [clickedSortId, setClickedSortId] = React.useState<string | number | null>(default_sort || null);\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n setSelectedSort && setSelectedSort(value);\n };\n\n const getSelectedSort = clickedSortId || productReviewSort[0]?.value;\n\n return (\n <>\n {!show_sorting_options ? null : (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <SelectField\n align=\"end\"\n prefixLabel={<SwapIcon width={16} height={16} color=\"currentColor\" />}\n prefixSelectedLabel={language_sort_by || 'Sort by'}\n options={productReviewSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={getSelectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n link=\"?page=1&sort=value\"\n />\n )}\n </div>\n )}\n </>\n );\n};\n","import { Button, MessageAddIcon, SkeletonLoading } from '@core/components';\n\nexport interface IWidgetHeaderAddTriggerProps {\n isFirstLoadingHeader?: boolean;\n text?: string;\n dataSettings?: any;\n params?:\n | {\n productId?: string | '';\n productVariantId?: string | '';\n }\n | undefined;\n onAfterAddReview?(state: 'success' | 'failed'): void;\n tabIndex?: string;\n}\n\nexport const WidgetHeaderAddTrigger = ({ isFirstLoadingHeader, text, dataSettings, params, onAfterAddReview, tabIndex }: IWidgetHeaderAddTriggerProps) => {\n const {\n text_color: display_button_write_review_text_color,\n border_color: display_button_write_review_border_color,\n border_radius: display_button_write_review_border_radius,\n padding_top: display_button_write_review_padding_top,\n padding_bottom: display_button_write_review_padding_bottom,\n padding_left: display_button_write_review_padding_left,\n padding_right: display_button_write_review_padding_right,\n background_color: display_button_write_review_background_color,\n font_size: display_button_write_review_font_size,\n font_weight: display_button_write_review_font_weight,\n text_transform: display_button_write_review_text_transform\n } = dataSettings?.display?.widget?.button_write_review || {};\n const { button_write_review } = dataSettings?.languages?.widget || {};\n\n const display_button_write_review_style = {\n ...(display_button_write_review_text_color && { color: display_button_write_review_text_color }),\n ...(display_button_write_review_border_color && { borderColor: display_button_write_review_border_color }),\n ...(display_button_write_review_border_radius && { borderRadius: display_button_write_review_border_radius }),\n ...(display_button_write_review_padding_top && { paddingTop: display_button_write_review_padding_top }),\n ...(display_button_write_review_padding_bottom && { paddingBottom: display_button_write_review_padding_bottom }),\n ...(display_button_write_review_padding_left && { paddingLeft: display_button_write_review_padding_left }),\n ...(display_button_write_review_padding_right && { paddingRight: display_button_write_review_padding_right }),\n ...(display_button_write_review_background_color && { backgroundColor: display_button_write_review_background_color }),\n ...(display_button_write_review_font_size && { fontSize: display_button_write_review_font_size }),\n ...(display_button_write_review_font_weight && { fontWeight: display_button_write_review_font_weight }),\n ...(display_button_write_review_text_transform && { textTransform: display_button_write_review_text_transform })\n };\n\n return (\n <div className=\"sledge-product-review__widget-header-item\">\n {isFirstLoadingHeader ? (\n <SkeletonLoading.Item width=\"134px\" height=\"42px\" rounded=\"lg\" color=\"lighten\" />\n ) : (\n <Button\n type=\"button\"\n colorType=\"success\"\n className=\"sledge-product-review__widget-header-add-trigger\"\n onClick={() => typeof window !== 'undefined' && window.sledgeProductReviewWidgetFormAdd && window.sledgeProductReviewWidgetFormAdd(params, onAfterAddReview, tabIndex)}\n style={display_button_write_review_style}\n >\n <MessageAddIcon width={16} height={16} color=\"currentColor\" />\n {text ? text : button_write_review || 'Add review'}\n </Button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { Popover, Progress, SkeletonLoading } from '@core/components';\nimport { Rating } from '@react-product-review/components/Rating';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { getReviewInfo } from '@core/api/product-review';\nimport { usePrevious } from '@core/hooks';\n\ndeclare global {\n interface Window {\n sledgeProductReviewWidgetSummaryUpdate(): void;\n }\n}\n\nexport interface IWidgetHeaderSummaryProps {\n params?:\n | {\n productId?: string | '';\n }\n | undefined;\n dataSettings?: any;\n summaryData?: any;\n sledgeSettings?: any;\n}\n\nexport const WidgetHeaderSummary = (props: IWidgetHeaderSummaryProps) => {\n const { params, dataSettings, summaryData, sledgeSettings } = props;\n const { productId } = params || {};\n const { fill_color: display_summary_bar_fill_color, outline_color: display_summary_bar_outline_color } = dataSettings?.display?.widget?.summary_bar || {};\n const { review_singular, review_plural } = dataSettings?.languages?.widget || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isFirstLoadingSummary, setIsFirstLoadingSummary] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isRefreshRating, setIsRefreshRating] = React.useState(summaryData ? false : true);\n const [isOpen, setIsOpen] = React.useState(false);\n const [totalReview, setTotalReview] = React.useState(summaryData?.review_count || 0);\n const [ratingList, setRatingList] = React.useState<{ [key: number]: number }>(\n summaryData?.rating || {\n 5: 0,\n 4: 0,\n 3: 0,\n 2: 0,\n 1: 0\n }\n );\n const [averageReview, setAverageReview] = React.useState(summaryData?.rating?.average || '0');\n const [isFirstTime, setIsFirstTime] = React.useState(true);\n\n const previousState: any = usePrevious({ productId });\n\n const handleProductReviewInfo = async () => {\n let response: any;\n let data: any;\n let run: boolean = false;\n let valueTotalReview: number = 0;\n let valueRatingList: { [key: number]: number };\n let valueAverageReview: any;\n\n if (summaryData && isFirstTime) {\n data = summaryData;\n run = true;\n setIsFirstTime(false);\n } else {\n response = await getReviewInfo({\n productId\n });\n\n if (!response) return;\n\n const { status } = response;\n const { code } = status;\n data = response.data;\n\n run = code === 200 || false;\n }\n\n valueTotalReview = data?.review_count ? data.review_count : 0;\n valueRatingList = data?.rating\n ? {\n 5: data.rating['5'] || 0,\n 4: data.rating['4'] || 0,\n 3: data.rating['3'] || 0,\n 2: data.rating['2'] || 0,\n 1: data.rating['1'] || 0\n }\n : ratingList;\n valueAverageReview = data?.rating?.average ? data.rating.average : '0';\n\n if (run) {\n setTotalReview(valueTotalReview);\n setRatingList(valueRatingList);\n setAverageReview(valueAverageReview);\n setIsLoading(false);\n setIsRefreshRating(false);\n setIsFirstLoading(false);\n isOpen && setIsFirstLoadingSummary(false);\n }\n };\n\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n window.sledgeProductReviewWidgetSummaryUpdate = () => {\n setIsRefreshRating(true);\n handleProductReviewInfo();\n };\n }\n\n let isProductIdChanged = Boolean(previousState && previousState?.productId !== productId);\n\n if (isProductIdChanged) setIsFirstLoading(true);\n\n handleProductReviewInfo();\n }, [isOpen, productId]);\n\n return (\n <div className=\"sledge-product-review__widget-summary\">\n {isFirstLoading && !summaryData ? (\n <SkeletonLoading.Item width=\"630px\" height=\"42px\" color=\"lighten\" rounded=\"md\" />\n ) : isLoading && !summaryData ? null : (\n <Popover\n trigger={\n <motion.div initial={false} animate={isOpen ? 'open' : 'closed'} className=\"sledge-product-review__widget-summary-trigger\">\n <div className=\"sledge-product-review__widget-summary-average\">{averageReview}</div>\n <div className=\"sledge-product-review__widget-summary-rating\">\n {!isRefreshRating && (\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={String(averageReview)}\n size=\"md\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n )}\n </div>\n <div className=\"sledge-product-review__widget-summary-total\">\n {totalReview}\n <span className=\"sledge-product-review__widget-summary-total-desc\">{totalReview > 1 ? review_plural || 'Reviews' : review_singular || 'Review'}</span>\n </div>\n <motion.div variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"summary-trigger-icon\">\n <svg width={20} height={20} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n </motion.div>\n }\n content={\n isFirstLoadingSummary ? (\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((index: number) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <SkeletonLoading.Item width=\"108px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item\n width=\"128px\"\n height=\"22px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginLeft: '13px',\n marginRight: '12px'\n }}\n />\n <SkeletonLoading.Item width=\"38px\" height=\"22px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"sledge-product-review__widget-summary-dist\">\n <div className=\"sledge-product-review__widget-summary-dist-progress\">\n {[5, 4, 3, 2, 1].map((item, index) => {\n return (\n <div className=\"sledge-product-review__widget-summary-dist-progress-item\" key={index}>\n <Rating\n data={summaryData}\n sledgeSettings={sledgeSettings}\n average={item}\n size=\"sm\"\n withSkeletonLoading={false}\n withTotal={false}\n isScrollToElementWidget={false}\n />\n <Progress\n value={String(ratingList[item])}\n total={totalReview}\n fillColor={display_summary_bar_fill_color}\n outlineColor={display_summary_bar_outline_color}\n />\n <small>({ratingList[item]})</small>\n </div>\n );\n })}\n </div>\n </div>\n )\n }\n setIsOpen={setIsOpen}\n hideCloseIcon\n align=\"end\"\n alignOffset={-170}\n className=\"sledge-product-review__widget-summary-content\"\n withArrow={false}\n />\n )}\n </div>\n );\n};\n","import { API_URL, INSTANT_SEARCH_ENGINE_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { sanitizeDataId, fetchApi } from '@core/lib/helper';\n\nexport const search = async (index: any, payload: any) => {\n let sledgeInstantSearchAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const multiSearch = async (payload: any, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/multi-search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const getFacets = async (index: string, token?: string) => {\n let sledgeInstantSearchAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_AUTH_APP) || '' : '';\n\n let url = `${INSTANT_SEARCH_ENGINE_URL}/indexes/${index}/settings/filterable-attributes`;\n let payload = {};\n let headers = {};\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeInstantSearchAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => result)\n .catch(() => {\n return;\n });\n};\n\nexport const searchTrigger: any = async (data: { keyword?: string; resultCount?: any }) => {\n const { keyword, resultCount } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/search`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n keyword: keyword,\n result_count: resultCount\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const productClickTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: { productId?: string }) => {\n const { productId } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/instantsearch/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n product: {\n id: sanitizeDataId(productId)\n }\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import { API_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const productRecommendationSourceApps = ['recently-viewed', 'related-product', 'hand-picked', 'new-arrival', 'personalized-curated'] as const;\n\ntype PRSourceAppsType = (typeof productRecommendationSourceApps)[number];\n\nexport interface IProductRecommendationSourceApp {\n productId?: string;\n sourceApp?: PRSourceAppsType;\n}\n\nexport const productClickTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/click`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const addToCartTrigger: any = async (data: IProductRecommendationSourceApp) => {\n const { productId, sourceApp } = data;\n\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let url = `${API_URL}/product-recommendation/statistics/cart`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n\n let payload = {\n product_id: sanitizeDataId(productId),\n widget: sourceApp\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n authorization: sledgeAuthApp,\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './ProductGrid.css';\n\nimport { CDN_URL } from '@core/lib/const';\nimport { addToCart as shopifyAddToCart } from '@core/api/shopify';\nimport { BagIcon, Button, LoadingDots, Carousel } from '@core/components';\nimport { Trigger } from '@react-wishlist/components';\nimport { Rating } from '@react-product-review/components';\nimport { addToCartTrigger as wishlistAddToCartTrigger } from '@core/api/wishlist';\nimport { addToCartTrigger as instantSearchAddToCartTrigger, productClickTrigger as instantSearchProductClickTrigger } from '@core/api/instant-search';\nimport {\n addToCartTrigger as productRecommendationAddToCartTrigger,\n productClickTrigger as productRecommendationProductClickTrigger,\n productRecommendationSourceApps,\n IProductRecommendationSourceApp\n} from '@core/api/product-recommendation';\n\nexport interface IProductGrid {\n className?: string;\n type?: 'small' | 'medium' | 'large';\n data?: any;\n setting?: {\n show_vendor?: boolean;\n show_sku?: boolean;\n show_price?: boolean;\n show_add_to_cart?: boolean;\n redirect_add_to_cart?: boolean;\n language_button_add_to_cart?: any;\n language_button_out_of_stock?: any;\n display_product_name_style?: any;\n display_price_style?: any;\n display_button_add_to_cart_style?: any;\n };\n showOptionOutOfStock?: boolean;\n triggerPropAdditional?: any;\n sourceApp?: 'wishlist' | 'product-review' | 'instant-search' | IProductRecommendationSourceApp['sourceApp'] | null;\n isComponentJsVersion?: any;\n cards?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n dataReviews?: any;\n dataWishlists?: any;\n useSlider?: boolean;\n}\n\ninterface IProductCard extends IProductGrid {\n item?: any;\n handleAddToCart?(data: { id: string | number; quantity: number }): Promise<void>;\n clickedAddToCartId?: string | number | null;\n}\n\nconst ProductCard = (props: IProductCard) => {\n const {\n item,\n handleAddToCart,\n clickedAddToCartId,\n setting,\n showOptionOutOfStock = false,\n triggerPropAdditional,\n sourceApp = null,\n isComponentJsVersion = false,\n cards: CardsComponent,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n showPopupComponent,\n setShowPopupComponent,\n dataReviews,\n dataWishlists\n } = props;\n\n const {\n show_vendor = true,\n show_sku = true,\n show_price = true,\n show_add_to_cart = true,\n language_button_add_to_cart,\n language_button_out_of_stock,\n display_product_name_style = {},\n display_price_style = {},\n display_button_add_to_cart_style = {}\n } = setting || {};\n\n const { product, variants } = item || {};\n const { id, title, image, url, vendor = '', currency, handle } = product || {};\n const { id: variant_id = '', admin_graphql_api_id: variant_admin_graphql_api_id = '', title: variant_title = '', price = '', sku = '' } = variants?.length ? variants[0] : {};\n\n const defaultSelectedVariantId = variant_admin_graphql_api_id ? variant_admin_graphql_api_id : '';\n const defaultSelectedVariantStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? variants[0].inventory_quantity : 0;\n\n const [selectedVariantId, setSelectedVariantId] = React.useState(defaultSelectedVariantId);\n const [selectedVariantStock, setSelectedVariantStock] = React.useState(defaultSelectedVariantStock);\n\n let isLoadingAddToCart = clickedAddToCartId == selectedVariantId;\n let isOutOfStock = variants?.length && Object.hasOwn(variants[0], 'inventory_quantity') ? !Number(selectedVariantStock) && showOptionOutOfStock : false;\n\n let component = null;\n\n if (CardsComponent) {\n const CardsProps = {\n product: {\n ...product,\n ...{\n variants: variants.map((variant: any, index: number) => {\n const { inventory_quantity } = variant || {};\n\n return {\n ...variant,\n is_out_of_stock: Object.hasOwn(variants[index], 'inventory_quantity') ? !inventory_quantity : false\n };\n })\n },\n ...(dataReviews && Object.keys(dataReviews).length\n ? {\n review: {\n total: dataReviews?.[id]?.review_count ? dataReviews?.[id].review_count : 0,\n average: dataReviews?.[id]?.rating?.average ? dataReviews?.[id].rating.average : 0\n }\n }\n : {})\n },\n showPopupComponent,\n setShowPopupComponent,\n sourceApp\n };\n\n component = <>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}</>;\n } else {\n const options = product?.options ? Object.entries(product.options) : [];\n const images = product?.images ?? [];\n const defaultSelected: any = {};\n\n function setDefaultFunction() {\n if (!variants?.length) return;\n\n defaultSelected['data-product-id'] = id;\n defaultSelected['data-product-handle'] = handle;\n defaultSelected['data-selected-option1'] = variants[0].option1;\n if (variants[0].option2) {\n defaultSelected['data-selected-option2'] = variants[0].option2;\n }\n defaultSelected['data-variant-id'] = variants[0].admin_graphql_api_id;\n defaultSelected['data-inventory-quantity'] = variants[0].inventory_quantity;\n }\n\n setDefaultFunction();\n\n function setSelectedOption(element: any, optionName: any) {\n const optionsButton = element.target.offsetParent.querySelector(`.options-button-${optionName}`).querySelectorAll(`button`);\n\n const defaultSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-size-swatch-active');\n element.target.className += ' sledge__product-variant-size-swatch-active';\n });\n };\n\n const colorSelectedClassChanger = () => {\n optionsButton.forEach((button: any, index: any) => {\n button.classList.remove('sledge__product-variant-color-swatch-active');\n element.target.className += ' sledge__product-variant-color-swatch-active';\n });\n };\n\n switch (optionName) {\n case 'Color':\n colorSelectedClassChanger();\n break;\n case 'Size':\n defaultSelectedClassChanger();\n break;\n default:\n defaultSelectedClassChanger();\n }\n }\n\n function setSelectedVariant(element: any, value: any, optionIndex: number) {\n const parentCard = element.target.offsetParent;\n const selectedInput = parentCard.querySelector(`.sledge__product-grid-card-selected-option[data-product-id='${id}']`);\n\n const setOptionAttribute = () => {\n //set option attribute\n selectedInput.attributes[`data-selected-option${optionIndex}`].value = value;\n };\n setOptionAttribute();\n\n // define option1 and option 2\n const option1 = `[data-option-1=\"${selectedInput.attributes['data-selected-option1'].value}\"]`;\n const option2 = `${selectedInput.attributes['data-selected-option2'] ? `[data-option-2=\"${selectedInput.attributes['data-selected-option2'].value}\"]` : ''}`;\n\n // define selected option\n const selectOption = parentCard.querySelector(`select option${option1}${option2}`);\n const variantId = selectOption.attributes['data-graphql-id'].value;\n const imageId = selectOption.attributes['data-image-id']?.value;\n const inventoryQuantity = selectOption.attributes['data-inventory-quantity']?.value;\n\n const setOther = () => {\n //set data-variant-id attribute\n selectedInput.attributes[`data-variant-id`].value = selectOption.attributes['data-graphql-id'].value;\n selectedInput.attributes[`data-inventory-quantity`].value = inventoryQuantity;\n\n if (variantId) setSelectedVariantId(variantId);\n if (inventoryQuantity) setSelectedVariantStock(inventoryQuantity);\n\n //change product image by variant\n if (imageId)\n parentCard.querySelector(`img.sledge__product-grid-card-image-featured-image`).src = parentCard.querySelector(\n `div.sledge__product-grid-card-variant-images img[id=\"${imageId}\"]`\n ).src;\n };\n\n setOther();\n\n const result = {\n variantId,\n imageId\n };\n\n return result;\n }\n\n component = (\n <div className=\"sledge__product-grid-card\">\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image\">\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n className=\"sledge__product-grid-card-image-link\"\n >\n <Trigger\n params={{\n productId: id,\n productVariantId: variant_id,\n productName: title,\n productVendor: vendor,\n productSku: sku,\n productVariantName: variant_title,\n productLink: url,\n productImage: image?.src || `${CDN_URL}/images/blank-image.png`,\n productCurrency: currency,\n productPrice: price\n }}\n {...triggerPropAdditional}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n wishlistChecked={dataWishlists?.[id]}\n />\n <img\n src={image?.src || `${CDN_URL}/images/blank-image.png`}\n alt=\"sledge-card-image\"\n loading=\"lazy\"\n className=\"sledge__product-grid-card-image-featured-image\"\n onError={({ currentTarget }) => {\n if (!currentTarget) return;\n\n currentTarget.onerror = null;\n currentTarget.src = `${CDN_URL}/images/blank-image.png`;\n }}\n />\n <div className=\"sledge__product-grid-card-variant-images\">\n {images?.map((image: any) => (\n <img\n key={image?.id}\n decoding=\"async\"\n id={image?.id}\n height=\"270\"\n loading=\"lazy\"\n src={image?.src}\n alt={product?.title}\n width={269.92}\n style={{ aspectRatio: 269.92 / 270 }}\n />\n ))}\n </div>\n </a>\n {isOutOfStock ? <div className=\"sledge__product-grid-card-out-of-stock\">{language_button_out_of_stock || 'Sold out'}</div> : null}\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n {show_price ? (\n <div className=\"sledge__product-grid-card-price\">\n <p style={display_price_style}>\n {currency}\n {price}\n </p>\n </div>\n ) : null}\n\n {show_vendor && vendor ? (\n <div className=\"sledge__product-grid-badge-vendor\" title={vendor}>\n Vendor: {vendor}\n </div>\n ) : null}\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <Rating\n params={{\n productId: id\n }}\n size=\"xs\"\n withSkeletonLoading={false}\n isScrollToElementWidget={false}\n data={dataReviews?.[id]}\n />\n </div>\n {title ? (\n <a\n href={url}\n onClick={() => {\n if (sourceApp === 'instant-search') {\n instantSearchProductClickTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n productRecommendationProductClickTrigger({\n productId: id,\n sourceApp\n });\n }\n }}\n >\n <h3 className=\"sledge__product-grid-card-product-name\" style={display_product_name_style}>\n {title}\n </h3>\n </a>\n ) : null}\n <div className=\"sledge__product-grid-card-text\">{show_sku && sku ? <div>SKU: {sku}</div> : null}</div>\n <div className=\"sledge__product-grid-card-variant-swatch\">\n {/* variant trigger */}\n <input type=\"hidden\" {...defaultSelected} className=\"sledge__product-grid-card-selected-option\" />\n <select className=\"variant-picker sledge__product-grid-card-variant-picker\">\n {variants?.map((variant: any) => {\n const { title, option1, option2, position, id, admin_graphql_api_id, image_id, inventory_quantity }: any = variant;\n\n let optionAttributes = {\n 'data-option-1': option1,\n 'data-option-2': option2,\n 'data-inventory-quantity': inventory_quantity,\n 'data-position': position,\n 'data-id': id,\n 'data-graphql-id': admin_graphql_api_id,\n 'data-image-id': image_id\n };\n\n return (\n <option key={id} {...optionAttributes}>\n {title}\n </option>\n );\n })}\n </select>\n\n {/* variant picker */}\n {options?.map((option: any, optionParentIndex: number) => {\n const optionName = option[0];\n const optionValues = option[1];\n\n let selectedOption = optionValues[0];\n\n return (\n <>\n {optionValues[0] !== 'Default Title' && (\n <div className={`sledge__product-variant-size-swatch-flex options-button-${optionName}`} key={optionParentIndex}>\n {optionValues.map((item: any, index: number) => {\n const defaultOptionClass = `\n${selectedOption === item ? 'sledge__product-variant-size-swatch-active' : ''} sledge__product-variant-size-swatch`;\n\n const colorOptionClass = `${selectedOption === item ? 'sledge__product-variant-color-swatch-active' : ''} sledge__product-variant-color-swatch`;\n\n return (\n <button\n type=\"button\"\n key={index}\n className={optionName === 'Color' ? colorOptionClass : defaultOptionClass}\n style={{\n backgroundColor: optionName === 'Color' ? item : null\n }}\n onClick={(el) => {\n setSelectedVariant(el, item, optionParentIndex + 1);\n setSelectedOption(el, optionName);\n }}\n title={optionName === 'Color' ? null : item}\n >\n {optionName === 'Color' ? null : item}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n })}\n </div>\n </div>\n </div>\n {show_add_to_cart ? (\n <div className=\"sledge__product-grid-button-wrapper\">\n <Button\n type=\"button\"\n colorType=\"light\"\n className=\"sledge__product-grid-button-add-to-cart\"\n style={{\n ...display_button_add_to_cart_style,\n ...(isLoadingAddToCart && {\n cursor: 'wait'\n })\n }}\n {...(isLoadingAddToCart || isOutOfStock\n ? {\n disabled: true\n }\n : {\n onClick: () => {\n handleAddToCart &&\n handleAddToCart({\n id: selectedVariantId,\n quantity: 1\n });\n }\n })}\n >\n {isOutOfStock ? (\n <>\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_out_of_stock || 'Sold out'}</span>\n </>\n ) : (\n <>\n {isLoadingAddToCart ? <LoadingDots /> : null}\n <BagIcon width={15} height={15} color=\"currentColor\" />\n <span>{language_button_add_to_cart || 'Add To Cart'}</span>\n </>\n )}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n return <React.Fragment key={id}>{component}</React.Fragment>;\n};\n\nexport const ProductGrid = (props: IProductGrid) => {\n const { type, className = '', data, setting, sourceApp = null, useSlider = false, onAfterAddToCart, onAfterRenderProduct } = props;\n const { redirect_add_to_cart = true } = setting || {};\n\n const [clickedAddToCartId, setClickedAddToCartId] = React.useState<string | number | null>(null);\n\n const handleAddToCart = async (data: { id: string | number; quantity: number }) => {\n const { id, quantity } = data;\n\n setClickedAddToCartId(id);\n let resShopifyAddToCart = await shopifyAddToCart([\n {\n id: id,\n quantity: quantity\n }\n ]);\n\n if (resShopifyAddToCart?.items?.length) {\n if (sourceApp === 'wishlist') {\n await wishlistAddToCartTrigger({\n productId: id\n });\n } else if (sourceApp === 'instant-search') {\n await instantSearchAddToCartTrigger({\n productId: id\n });\n } else if (productRecommendationSourceApps.includes(sourceApp as any)) {\n await productRecommendationAddToCartTrigger({\n productId: id,\n sourceApp\n });\n }\n\n setClickedAddToCartId(null);\n onAfterAddToCart && onAfterAddToCart('success');\n\n if (redirect_add_to_cart) {\n window.location.href = '/cart';\n } else {\n window.sledgeToastNotification({\n title: 'Cart added',\n message: 'Successfully added to wishlist',\n type: 'success',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }\n } else {\n onAfterAddToCart && onAfterAddToCart('failed');\n\n setTimeout(() => {\n setClickedAddToCartId(null);\n if (typeof window !== 'undefined' && window.sledgeToastNotification)\n window.sledgeToastNotification({\n title: 'Failed',\n message: resShopifyAddToCart?.description?.length ? resShopifyAddToCart.description : 'failed add to cart, please try again',\n type: 'failed',\n icon: <BagIcon width={40} height={40} color=\"black\" />\n });\n }, 1000);\n }\n };\n\n const Container = useSlider ? Carousel : 'div';\n\n const carouselSourceProp: any =\n (useSlider && {\n carouselSourceWidget: 'productGrid'\n }) ||\n null;\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} {...carouselSourceProp} data-grid-type={type}>\n {data?.map((item: any, index: number) => {\n return <ProductCard item={item} key={`sledge-product-card_${index}`} handleAddToCart={handleAddToCart} clickedAddToCartId={clickedAddToCartId} {...props} />;\n })}\n </Container>\n );\n};\n","import { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\ndeclare global {\n interface Window {\n Shopify: any;\n }\n}\n\ninterface IAddToCartShopifyData {\n id: string | number;\n quantity: number;\n}\n\nexport const addToCart: any = async (data: Array<IAddToCartShopifyData>) => {\n let items: Array<IAddToCartShopifyData> = [];\n data.map((item) => {\n const { id, quantity } = item;\n\n items.push({\n id: sanitizeDataId(id),\n quantity: quantity\n });\n });\n\n if (typeof window === 'undefined' || !window?.Shopify?.routes?.root) return;\n\n let url = `${window.Shopify.routes.root}cart/add.js`;\n let headers = {\n 'Content-Type': 'application/json'\n };\n let payload = {\n items: items\n };\n\n return await fetchApi({\n url,\n method: 'POST',\n payload,\n headers,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n","import React from 'react';\nimport './CollectionGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface ICollectionGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n}\n\nexport const CollectionGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderCollection }: ICollectionGrid) => {\n React.useEffect(() => {\n onAfterRenderCollection && onAfterRenderCollection('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__collection-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__collection-grid-card\">\n <div className=\"sledge__collection-grid-card-image-wrapper\">\n <div className=\"sledge__collection-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__collection-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './PageGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { stripTags } from '@core/lib/helper';\n\nexport interface IPageGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n}\n\nexport const PageGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderPage }: IPageGrid) => {\n React.useEffect(() => {\n onAfterRenderPage && onAfterRenderPage('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__page-grid ${className}`}>\n {data.map((item: any, index: number) => {\n const { id, title, body_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <a href={url} key={index}>\n <div className=\"sledge__page-grid-card\">\n <div className=\"sledge__page-grid-card-image-wrapper\">\n <div className=\"sledge__page-grid-card-image\">\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </div>\n </div>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">{title}</div>\n {body_html ? <div className=\"sledge__page-grid-card-content-description\">{stripTags(body_html)}</div> : null}\n </div>\n </div>\n </a>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './BlogGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate } from '@core/lib/helper';\n\nexport interface IBlogGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n}\n\nexport const BlogGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderBlog }: IBlogGrid) => {\n React.useEffect(() => {\n onAfterRenderBlog && onAfterRenderBlog('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__blog-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__blog-grid-card\" key={index}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__blog-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__blog-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Blog</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport './ArticleGrid.css';\n\nimport { API_URL, CDN_URL } from '@core/lib/const';\nimport { Button, NoteIcon } from '@core/components';\nimport { convertDate, stripTags } from '@core/lib/helper';\n\nexport interface IArticleGrid {\n className?: string;\n data: any;\n cards?: any;\n isComponentJsVersion?: any;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n}\n\nexport const ArticleGrid = ({ className = '', data, cards: CardsComponent, isComponentJsVersion, onAfterRenderArticle }: IArticleGrid) => {\n React.useEffect(() => {\n onAfterRenderArticle && onAfterRenderArticle('success');\n }, []);\n\n return (\n <>\n {!data?.length ? null : (\n <div className={`sledge__article-grid ${className}`}>\n {data?.map((item: any, index: number) => {\n const { id, title, created_at, summary_html, url, image } = item;\n\n if (CardsComponent) {\n const CardsProps = { data: item };\n\n return (\n <React.Fragment key={index}>\n {isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: CardsComponent({ ...CardsProps }) }}></div> : <CardsComponent {...CardsProps} />}\n </React.Fragment>\n );\n } else {\n return (\n <div className=\"sledge__article-grid-card\" key={index}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image\">\n <a href={url}>\n <img src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" />\n </a>\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <a href={url}>\n <div className=\"sledge__article-grid-card-title\">{title}</div>\n </a>\n {created_at ? <div className=\"sledge__article-grid-badge-vendor\">{convertDate(created_at)}</div> : null}\n {summary_html ? <div className=\"sledge__article-grid-card-text\">{stripTags(summary_html)}</div> : null}\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <a href={url}>\n <Button type=\"button\" colorType=\"light\">\n <NoteIcon width={16} height={16} color=\"#000000\" />\n <span>View Article</span>\n </Button>\n </a>\n </div>\n </div>\n );\n }\n })}\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport * as TooltipElement from '@radix-ui/react-tooltip';\n\nimport './Tooltip.css';\n\nexport interface ITooltipProps {\n children: React.ReactNode;\n content: React.ReactNode;\n withArrow?: boolean;\n customArrow?: string;\n sideOffset?: number;\n alignOffset?: number;\n wrapTrigger?: boolean;\n}\n\nexport const Tooltip = ({ children, content, withArrow = true, customArrow = '', sideOffset = 5, alignOffset = 0, wrapTrigger = true }: ITooltipProps) => {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n let arrowElement = document?.querySelector('.sledge__tooltip-arrow')?.parentElement;\n\n if (arrowElement && customArrow?.length) {\n arrowElement.classList.add('sledge__tooltip-arrow-parent');\n arrowElement.innerHTML = customArrow;\n }\n }, [open]);\n\n return (\n <TooltipElement.Provider delayDuration={0}>\n <TooltipElement.Root onOpenChange={setOpen}>\n <TooltipElement.Trigger asChild>{wrapTrigger ? <span>{children}</span> : children}</TooltipElement.Trigger>\n <TooltipElement.Portal>\n <TooltipElement.Content className=\"sledge__tooltip-content\" sideOffset={sideOffset} alignOffset={alignOffset}>\n {content}\n\n {withArrow ? <TooltipElement.Arrow className=\"sledge__tooltip-arrow\" /> : null}\n </TooltipElement.Content>\n </TooltipElement.Portal>\n </TooltipElement.Root>\n </TooltipElement.Provider>\n );\n};\n","import React from 'react';\nimport * as ScrollAreaElement from '@radix-ui/react-scroll-area';\n\nimport './ScrollArea.css';\n\nexport interface IScrollAreaProps {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n}\n\nexport const ScrollArea = ({ children, isLoading = false, className = '' }: IScrollAreaProps) => {\n return (\n <ScrollAreaElement.Root className={`sledge__scroll-area-root ${className}`}>\n <ScrollAreaElement.Viewport className={`sledge__scroll-area-viewport ${isLoading ? 'sledge__scroll-area-viewport-loading' : ''}`}>{children}</ScrollAreaElement.Viewport>\n {!isLoading && (\n <>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"vertical\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n <ScrollAreaElement.Scrollbar className=\"sledge__scroll-area-scrollbar\" orientation=\"horizontal\">\n <ScrollAreaElement.Thumb className=\"sledge__scroll-area-thumb\" />\n </ScrollAreaElement.Scrollbar>\n </>\n )}\n </ScrollAreaElement.Root>\n );\n};\n","import React from 'react';\nimport { LOCAL_STORAGE_KEY } from '@core/lib/const';\n\nexport interface ISkeletonItemProps {\n width: string;\n height: string;\n rounded: 'none' | 'sm' | 'md' | 'lg' | 'full';\n color: 'lighten' | 'darken';\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport const SkeletonItem = ({ width, height, rounded, color, style = {}, className = '', ...otherProps }: ISkeletonItemProps) => {\n const [dataSettings, setDataSettings] = React.useState<any>({});\n\n const handleSettings = async (LOCAL_STORAGE_GENERAL_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_GENERAL_SETTING);\n\n if (!response) return;\n\n setDataSettings(response);\n };\n\n React.useEffect(() => {\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.GENERAL_SETTING) || null);\n }, []);\n\n return (\n <>\n {dataSettings?.skeleton?.enable ? (\n <div\n className={`sledge__skeleton-item sledge__skeleton-item-animation ${className}`}\n style={{\n ...{\n width: width,\n height: height\n },\n ...(dataSettings?.skeleton?.colors?.main_color && {\n background: dataSettings?.skeleton?.colors?.main_color\n }),\n ...style\n }}\n data-skeleton-rounded={rounded}\n data-skeleton-color={color}\n {...otherProps}\n ></div>\n ) : null}\n </>\n );\n};\n","import './SkeletonLoading.css';\n\nimport { SkeletonItem } from './SkeletonItem';\nimport { SkeletonProductGrid } from './SkeletonProductGrid';\nimport { SkeletonReviewGrid } from './SkeletonReviewGrid';\nimport { SkeletonCollectionGrid } from './SkeletonCollectionGrid';\nimport { SkeletonPageGrid } from './SkeletonPageGrid';\nimport { SkeletonBlogGrid } from './SkeletonBlogGrid';\nimport { SkeletonArticleGrid } from './SkeletonArticleGrid';\n\nexport const SkeletonLoading = {\n Item: SkeletonItem,\n ReviewGrid: SkeletonReviewGrid,\n ProductGrid: SkeletonProductGrid,\n CollectionGrid: SkeletonCollectionGrid,\n PageGrid: SkeletonPageGrid,\n BlogGrid: SkeletonBlogGrid,\n ArticleGrid: SkeletonArticleGrid\n};\n","import Masonry, { ResponsiveMasonry } from 'react-responsive-masonry';\nimport { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonReviewGridProps {\n count: number;\n type: 'grid' | 'list' | 'image_grid';\n gridItemHeights?: string[];\n}\n\nexport const SkeletonReviewGrid = ({ count, type, gridItemHeights = [] }: ISkeletonReviewGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge-product-review__widget-review-card\" key={i}>\n <SkeletonItem\n width=\"100%\"\n height={type === 'list' || ((type === 'grid' || type === 'image_grid') && !gridItemHeights?.length) ? '111px' : gridItemHeights[i]}\n color=\"lighten\"\n rounded=\"md\"\n />\n </div>\n );\n }\n\n return (\n <ResponsiveMasonry\n columnsCountBreakPoints={type === 'list' ? { 350: 1 } : { 350: 1, 750: 3, 1024: 4 }}\n className=\"sledge-product-review__widget-review-grid sledge__skeleton-review-grid sledge__skeleton-pointer-events-none\"\n >\n <Masonry gutter=\"30px\">{components}</Masonry>\n </ResponsiveMasonry>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonProductGridProps {\n count: number;\n type: 'small' | 'medium' | 'large';\n}\n\nexport const SkeletonProductGrid = ({ count, type }: ISkeletonProductGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__product-grid-card\" key={i}>\n <div className=\"sledge__product-grid-content\">\n <div className=\"sledge__product-grid-card-image sledge__skeleton-product-grid-card-image\">\n <div className=\"sledge-wishlist__trigger-block\">\n <SkeletonItem width=\"32px\" height=\"32px\" color=\"darken\" rounded=\"sm\" />\n </div>\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__product-grid-card-desc\">\n <div className=\"sledge__product-grid-card-title\">\n <SkeletonItem width=\"79px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-rating\">\n <SkeletonItem width=\"134px\" height=\"25px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <div className=\"sledge__product-grid-card-text\">\n <SkeletonItem\n width=\"100%\"\n height=\"35px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '16px'\n }}\n />\n </div>\n </div>\n </div>\n <div className=\"sledge__product-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"sledge__product-grid sledge__skeleton-product-grid sledge__skeleton-pointer-events-none\" data-grid-type={type}>\n {components}\n </div>\n );\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonCollectionGridProps {\n count: number;\n}\n\nexport const SkeletonCollectionGrid = ({ count }: ISkeletonCollectionGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__collection-grid-card\" key={i}>\n <div className=\"sledge__collection-grid-card-content\">\n <div className=\"sledge__collection-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__collection-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__collection-grid sledge__skeleton-collection-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonPageGridProps {\n count: number;\n}\n\nexport const SkeletonPageGrid = ({ count }: ISkeletonPageGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__page-grid-card\" key={i}>\n <div className=\"sledge__page-grid-card-content\">\n <div className=\"sledge__page-grid-card-content-title\">\n <SkeletonItem width=\"139px\" height=\"32px\" color=\"darken\" rounded=\"md\" />\n </div>\n <div className=\"sledge__page-grid-card-content-description\">\n <SkeletonItem width=\"238px\" height=\"48px\" color=\"darken\" rounded=\"md\" />\n </div>\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__page-grid sledge__skeleton-page-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonBlogGridProps {\n count: number;\n}\n\nexport const SkeletonBlogGrid = ({ count }: ISkeletonBlogGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__blog-grid-card\" key={i}>\n <div className=\"sledge__blog-grid-content\">\n <div className=\"sledge__blog-grid-card-image sledge__skeleton-blog-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__blog-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__blog-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__blog-grid sledge__skeleton-blog-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import { SkeletonItem } from './SkeletonItem';\n\nexport interface ISkeletonArticleGridProps {\n count: number;\n}\n\nexport const SkeletonArticleGrid = ({ count }: ISkeletonArticleGridProps) => {\n let components = [];\n\n for (let i = 0; i < count; i++) {\n components.push(\n <div className=\"sledge__article-grid-card\" key={i}>\n <div className=\"sledge__article-grid-content\">\n <div className=\"sledge__article-grid-card-image sledge__skeleton-article-grid-card-image\">\n <SkeletonItem\n width=\"100%\"\n height=\"100%\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }}\n />\n </div>\n <div className=\"sledge__article-grid-card-desc\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonItem\n width=\"79px\"\n height=\"26px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginTop: '12px',\n marginBottom: '16px'\n }}\n />\n <SkeletonItem width=\"100%\" height=\"72px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n <div className=\"sledge__article-grid-button-wrapper\">\n <SkeletonItem width=\"100%\" height=\"40px\" color=\"lighten\" rounded=\"md\" />\n </div>\n </div>\n );\n }\n\n return <div className=\"sledge__article-grid sledge__skeleton-article-grid sledge__skeleton-pointer-events-none\">{components}</div>;\n};\n","import './LoadingDots.css';\n\nexport const LoadingDots = () => {\n return (\n <div className=\"sledge__loading-dots\">\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n <div className=\"sledge__loading-icon-dot\"></div>\n </div>\n );\n};\n","import React from 'react';\nimport { IProductGrid } from '@core/components';\nimport useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\nexport interface CarouselPropType {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: IProductGrid['type'];\n carouselSourceWidget?: 'productGrid' | 'blogGrid' | 'articleGrid' | 'collectionGrid' | 'pageGrid';\n}\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType, carouselSourceWidget } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n slidesToScroll: 'auto',\n align: 'start',\n dragFree: true,\n duration: 35\n }\n } = props;\n\n const [carouselRef, carouselApi] = useEmblaCarousel(options);\n const [prevBtnDisabled, setPrevBtnDisabled] = React.useState(true);\n const [nextBtnDisabled, setNextBtnDisabled] = React.useState(true);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n const scrollTo = React.useCallback((index: number) => carouselApi && carouselApi.scrollTo(index), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setSelectedIndex(carouselApi.selectedScrollSnap());\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n const onInit = React.useCallback((carouselApi: CarouselType) => {\n setScrollSnaps(carouselApi.scrollSnapList());\n }, []);\n\n //init carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onInit(carouselApi);\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onInit);\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\n\n //trigger active carousel\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n //trigger when children added\n React.useEffect(() => {\n if (!carouselApi) return;\n\n carouselApi.reInit(options);\n }, [carouselApi, React.Children.count(children)]);\n\n //trigger draggable\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (!active) carouselApi?.internalEngine().dragHandler.destroy();\n else carouselApi?.internalEngine().dragHandler.init(carouselApi);\n }, [active]);\n\n let carouselAttributes: React.HTMLAttributes<HTMLDivElement> | CarouselPropType | { active?: boolean } = {};\n\n //attributes for different widget\n switch (carouselSourceWidget) {\n case 'productGrid':\n carouselAttributes = {\n className: 'sledge__carousel-container sledge__product-grid',\n 'data-grid-type': dataGridType\n };\n break;\n default:\n carouselAttributes = {\n className: 'sledge__carousel-container'\n };\n break;\n }\n\n return (\n <div className={`sledge__carousel ${className}`}>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"left\"\n disabled={prevBtnDisabled}\n onClick={scrollPrev}\n className=\"sledge__carousel-button-prev\"\n />\n <div className={`sledge__carousel-viewport ${(active && 'is-active') || ''}`} ref={carouselRef}>\n <div {...carouselAttributes}>{children}</div>\n </div>\n <Navigation\n state={{\n prevBtnDisabled,\n nextBtnDisabled\n }}\n position=\"right\"\n disabled={nextBtnDisabled}\n onClick={scrollNext}\n className=\"sledge__carousel-button-next\"\n />\n <div className=\"sledge__carousel-dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton key={index} onClick={() => scrollTo(index)} className={'sledge__carousel-dot'.concat(index === selectedIndex ? ' sledge__carousel-dot--selected' : '')} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const Navigation: React.FC<any> = (props) => {\n const { children, state, className, position, ...restProps } = props;\n const { prevBtnDisabled, nextBtnDisabled } = state;\n\n if (prevBtnDisabled && nextBtnDisabled) return null;\n\n const LeftIcon = (\n <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.6875 2.97945C10.865 3.15697 10.8812 3.43474 10.7359 3.63048L10.6875 3.68656L6.37465 7.99967L10.6875 12.3128C10.865 12.4903 10.8812 12.7681 10.7359 12.9638L10.6875 13.0199C10.51 13.1974 10.2323 13.2135 10.0365 13.0683L9.98043 13.0199L5.31377 8.35323C5.13625 8.17572 5.12012 7.89794 5.26535 7.7022L5.31377 7.64612L9.98043 2.97945C10.1757 2.78419 10.4923 2.78419 10.6875 2.97945Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const RightIcon = (\n <svg width={17} height={17} viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.60738 13.1299C5.42987 12.9524 5.41374 12.6746 5.55897 12.4789L5.60738 12.4228L9.92027 8.1097L5.60738 3.79659C5.42987 3.61908 5.41374 3.3413 5.55897 3.14556L5.60738 3.08948C5.7849 2.91197 6.06267 2.89583 6.25841 3.04107L6.31449 3.08948L10.9812 7.75615C11.1587 7.93366 11.1748 8.21143 11.0296 8.40718L10.9812 8.46325L6.31449 13.1299C6.11923 13.3252 5.80265 13.3252 5.60738 13.1299Z\"\n fill=\"#767676\"\n />\n </svg>\n );\n\n const Icon = () => (position === 'left' ? LeftIcon : RightIcon);\n\n return (\n <button className={`sledge__carousel-button ${className}`} type=\"button\" {...restProps}>\n <Icon />\n </button>\n );\n};\n\nexport const DotButton: React.FC<any> = (props) => {\n const { children, ...restProps } = props;\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n );\n};\n","import { OtherIndexLists } from './OtherIndexLists';\nimport { SuggestionKeywordLists } from './SuggestionKeywordLists';\nimport { SearchViewMoreResult } from './SearchViewMoreResult';\n\nexport const Global = {\n OtherIndexLists,\n SuggestionKeywordLists,\n SearchViewMoreResult\n};\n","import React from 'react';\n\nexport const OtherIndexLists = ({\n listsComponent: ListsComponent,\n name,\n type,\n items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent,\n languageSettings\n}: {\n listsComponent?: any;\n name?: string;\n type?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n languageSettings?: any;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, type, items, showPopupComponent, setShowPopupComponent };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{name}</div>\n {items?.length ? (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {items.map((hit: any, index: number) => {\n const { title, url } = hit;\n\n return (\n <li key={index}>\n <a href={url} className=\"sledge-instant-search__icon-widget-search-form-result-list-link\">\n {title}\n </a>\n </li>\n );\n })}\n </ul>\n ) : (\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n <li className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">{languageSettings?.title_no_result || `No ${name?.toLowerCase()} were found`}</li>\n </ul>\n )}\n </>\n );\n }\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport const SuggestionKeywordLists = ({\n listsComponent: ListsComponent,\n keywords,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query\n}: {\n listsComponent?: any;\n keywords?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n}) => {\n if (ListsComponent) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ListsProps = { keywords, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: ListsComponent({ ...ListsProps }) }}></div> : <ListsComponent {...ListsProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">Suggestions</div>\n <ul className=\"sledge-instant-search__icon-widget-search-form-result-list\">\n {keywords?.map((keyword: string, index: number) => {\n return (\n <li key={index}>\n <a\n href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`}\n className=\"sledge-instant-search__icon-widget-search-form-result-list-link sledge-instant-search__icon-widget-search-form-result-list-link-suggestion\"\n >\n <SearchIcon width={12} height={12} color=\"#677487\" /> {keyword}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n );\n }\n};\n","import React from 'react';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL } from '@core/lib/const';\n\nexport const SearchViewMoreResult = ({\n component: Component,\n keyword,\n isComponentJsVersion = false,\n showPopupComponent,\n setShowPopupComponent,\n urlSearchResult = '',\n query,\n languageSettings\n}: {\n component?: any;\n keyword?: string;\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n languageSettings?: any;\n}) => {\n if (Component) {\n const { triggerRenderMultipleComponent } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { trigger: triggerRenderInstantSearchResult } = triggerRenderMultipleComponent?.instantSearch?.searchResult || {};\n\n const setRenderSearchResult = (value: any) => {\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult(value);\n };\n\n const ComponentProps = { keyword, showPopupComponent, setShowPopupComponent, setRenderSearchResult };\n\n return <React.Fragment>{isComponentJsVersion ? <div dangerouslySetInnerHTML={{ __html: Component({ ...ComponentProps }) }}></div> : <Component {...ComponentProps} />}</React.Fragment>;\n } else {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n\n return (\n <a href={`${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`} className=\"sledge-instant-search__icon-widget-button-more\">\n {languageSettings?.view_more_result || 'View More Result'}\n </a>\n );\n }\n};\n","import React from 'react';\nimport {\n Popover,\n Checkbox,\n Slider,\n Pagination,\n RadioGroup,\n ColorSwatch,\n Select,\n ProductGrid,\n Button,\n CollectionGrid,\n PageGrid,\n BlogGrid,\n SearchInputField,\n SelectField,\n SearchIcon,\n SkeletonLoading,\n ChevronArrowDownIcon,\n ArticleGrid\n} from '@core/components';\nimport { motion } from 'framer-motion';\nimport { ROTATE_FILTER_ARROW_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, search, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_MAX_WIDTH_COMPONENT, DEFAULT_QUERY_PARAM, HIERARCHICAL_FACET_OBJECT_ALIASES, LOCAL_STORAGE_KEY, MAX_LIMIT_HIERARCHICAL, OBJECT_DATA_STRING_KEY } from '@core/lib/const';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction, scrollToElement, stringToSlug } from '@core/lib/helper';\n\nexport interface ISearchResultWidgetProps {\n layoutType?: 'product-filter' | 'default';\n width?: string;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n data?: any;\n sledgeSettings?: any;\n}\n\ninterface IResultProps {\n layoutType?: 'product-filter' | 'default';\n isLoading?: boolean;\n keyword?: string;\n clickedTabIndexId?: string | number | null;\n clickedTabIndexName?: string | null;\n clickedTabIndexType?: string | null;\n isLoadingSetting?: boolean;\n allowedSorts?: any[];\n allowedFilters?: [];\n facets?: any[];\n defaultFacetStats?: any;\n hideFilterWhenOneValue?: boolean;\n hiddenTags?: [];\n displaySettings?: any;\n colorSwatches?: any[];\n defaultSort?: string;\n showOutOfStock?: boolean;\n languageSettings?: any;\n hierarchicalProductTypeSettings?: any;\n query?: {\n keyword: string;\n };\n params?:\n | {\n collectionId?: string | number | '';\n collectionName?: string | '';\n }\n | undefined;\n isJsVersion?: any;\n productCardsComponent?: any;\n collectionCardsComponent?: any;\n pageCardsComponent?: any;\n blogCardsComponent?: any;\n articleCardsComponent?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n onAfterRenderCollection?(state: 'success' | 'failed'): void;\n onAfterRenderPage?(state: 'success' | 'failed'): void;\n onAfterRenderBlog?(state: 'success' | 'failed'): void;\n onAfterRenderArticle?(state: 'success' | 'failed'): void;\n setIsLoading?(value: React.SetStateAction<boolean>): void;\n setKeyword?(value: React.SetStateAction<string>): void;\n filterHorizontalSkeleton?: React.ReactNode;\n filterHorizontalSkeletonComponent?: React.ReactNode;\n filterVerticalSkeleton?: React.ReactNode;\n productGridSkeleton?: React.ReactNode;\n searchAndSelectOptionSkeleton?: React.ReactNode;\n summaryTextSkeleton?: React.ReactNode;\n searchFieldSkeletonComponent?: React.ReactNode;\n selectOptionSkeletonComponent?: React.ReactNode;\n searchResultContainerRef?: any;\n data?: any;\n settings?: any;\n isReplaceWidgetList?: boolean;\n setIsReplaceWidgetList?(value: React.SetStateAction<boolean>): void;\n searchResultFacets?: any;\n}\n\nexport const SearchResultWidget = (props: ISearchResultWidgetProps) => {\n const {\n layoutType = 'default',\n width = DEFAULT_MAX_WIDTH_COMPONENT,\n query,\n params,\n children,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n data: propsData,\n sledgeSettings\n } = props;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const searchParams = typeof document !== 'undefined' ? new URLSearchParams(document?.location?.search) : null;\n const [settings] = React.useState(typeof localStorage !== 'undefined' ? JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '{}') : {});\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [keyword, setKeyword] = React.useState(searchParams?.get(queryKeyword));\n const [clickedTabIndexId, setClickedTabIndexId] = React.useState<string | number | null>(null);\n const [clickedTabIndexName, setClickedTabIndexName] = React.useState<string | null>();\n const [clickedTabIndexType, setClickedTabIndexType] = React.useState<string | null>();\n const [resultComponent, setResultComponent] = React.useState(<ResultProduct />);\n const [isLoadingSetting, setIsLoadingSetting] = React.useState(!propsData);\n const [allowedSorts, setAllowedSorts] = React.useState(sledgeSettings?.instantsearch?.allowed_sorts || []);\n const [allowedFilters, setAllowedFilters] = React.useState(sledgeSettings?.instantsearch?.filters || []);\n const [allowedTabs, setAllowedTabs] = React.useState<any[]>([]);\n const [facets, setFacets] = React.useState<any[]>([]);\n const [indexProduct, setIndexProduct] = React.useState(sledgeSettings?.instantsearch?.index_product || '');\n const [hiddenTags, setHiddenTags] = React.useState(sledgeSettings?.instantsearch?.hidden_tags || []);\n const [displaySettings, setDisplaySettings] = React.useState<any>(sledgeSettings?.instantsearch?.display || {});\n const [colorSwatches, setColorSwatches] = React.useState<any[]>(sledgeSettings?.instantsearch?.colors || []);\n const [defaultSort, setDefaultSort] = React.useState(sledgeSettings?.instantsearch?.default_sort || '');\n const [showOutOfStock, setShowOutOfStock] = React.useState(sledgeSettings?.instantsearch?.show_out_of_stock);\n const [languageSettings, setLanguageSettings] = React.useState(sledgeSettings?.instantsearch?.languages || {});\n const [hierarchicalProductTypeSettings, setHierarchicalProductTypeSettings] = React.useState(sledgeSettings?.instantsearch?.hierarchical_product_type || {});\n const [initStatesFirstTime, setInitStatesFirstTime] = React.useState(true);\n const [defaultFacetStats, setDefaultFacetStats] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\n const [isReplaceWidgetList, setIsReplaceWidgetList] = React.useState(false);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n\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, type?: 'totalDataPerIndex' | 'default') => {\n const { filters, index_product, tabs, hidden_tags, show_out_of_stock, display } = data;\n\n let getTabs = layoutType === 'product-filter' ? tabs.filter(({ index }: any) => index?.includes(index_product)) : tabs;\n let response: any;\n let body = {\n queries: getTabs.map((tab: any) => {\n const { index } = tab;\n\n let isSetFilter = false;\n let getFacets = !isSetFilter\n ? filters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => (otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value));\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n return newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n return newItems;\n }\n }\n })\n : [];\n let isProductIndex = index.includes(index_product);\n let isHasProductFacets = isProductIndex && getFacets.length;\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`'tags' NOT IN ${JSON.stringify(hidden_tags)}`);\n if (!show_out_of_stock) additionalFilter.push(`'variants.inventory_quantity' > 0`);\n if (collectionId) additionalFilter.push(`'collections.id' = '${collectionId}'`);\n\n if (isHasProductFacets) setFacets(getFacets[0]);\n\n return {\n indexUid: index,\n q: type === 'default' ? '' : keyword,\n hitsPerPage: 1,\n facets: isHasProductFacets ? getFacets[0] : [],\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n if (propsData && initStatesFirstTime) {\n response = propsData.result;\n setInitStatesFirstTime(false);\n } else response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n setIsFirstLoading(false);\n setIsLoadingSetting(false);\n setIsLoading(false);\n\n if (type === 'totalDataPerIndex') {\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 } else {\n const { facetStats, totalHits, facetDistribution } = results?.find(({ indexUid }: any) => indexUid.includes(index_product)) || {};\n\n setDefaultFacetStats(facetStats);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\n setSearchResultFacets(\n facetDistribution\n ? Object.fromEntries(\n Object.entries(facetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(facetDistribution[value]).map((item) => {\n return {\n name: item,\n value: item,\n total: facetDistribution[value][item] || 0\n };\n });\n }\n\n return [value, items];\n })\n )\n : {}\n );\n }\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n setIsLoadingSetting(true);\n\n let response: any;\n let getFirstIndex: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { allowed_sorts, default_sort, filters, index_product, tabs, hidden_tags, display, colors, show_out_of_stock, languages, hierarchical_product_type } = response;\n\n setAllowedSorts(allowed_sorts?.length ? allowed_sorts : []);\n setAllowedFilters(filters?.length ? filters : []);\n setIndexProduct(index_product);\n setHiddenTags(hidden_tags);\n setDisplaySettings(display);\n setColorSwatches(colors);\n setDefaultSort(default_sort);\n setShowOutOfStock(show_out_of_stock);\n setLanguageSettings(languages);\n setHierarchicalProductTypeSettings(hierarchical_product_type);\n\n getFirstIndex = tabs.find(({ index }: any) => index.includes(index_product));\n\n if (Object.keys(getFirstIndex).length) {\n setClickedTabIndexId(getFirstIndex.index);\n setClickedTabIndexName(getFirstIndex.name);\n setClickedTabIndexType(getFirstIndex.type);\n }\n\n await handleInitStates(response, 'default');\n\n if (layoutType === 'default') await handleInitStates(response, 'totalDataPerIndex');\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n const searchParams = new URLSearchParams(document.location.search);\n\n setKeyword(searchParams?.get(queryKeyword) || '');\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (!valueRenderInstantSearchResult) return;\n\n if (triggerRenderInstantSearchResult) triggerRenderInstantSearchResult('');\n\n setKeyword(valueRenderInstantSearchResult);\n }, [valueRenderInstantSearchResult]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword) && layoutType === 'default') {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING) handleInitStates(INSTANT_SEARCH_SETTING, 'totalDataPerIndex');\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n // Skeleton Components\n const filterHorizontalSkeletonComponent = (\n <div className=\"sledge-instant-search__result-filter-horizontal-skeleton\">\n {[1, 2, 3, 4, 5, 6, 7].map((index: number) => (\n <SkeletonLoading.Item width=\"106px\" height=\"42px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n );\n\n const tabSkeleton =\n layoutType === 'default' ? (\n <div className=\"sledge-instant-search__result-tab-list sledge-instant-search__result-tab-list-skeleton\">\n {[1, 2, 3, 4, 5].map((index: number) => (\n <SkeletonLoading.Item width=\"122px\" height=\"28px\" rounded=\"md\" color=\"lighten\" key={index} />\n ))}\n </div>\n ) : null;\n\n const filterHorizontalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && !hideFilterWhenOneValue ? filterHorizontalSkeletonComponent : null;\n\n const filterVerticalSkeleton =\n displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <>\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '8px',\n justifyContent: 'space-between',\n marginBottom: '23px'\n }}\n >\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n <SkeletonLoading.Item width=\"80px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '18px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '18px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '14px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '17px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '38px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '35px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '163px',\n marginBottom: '20px'\n }}\n />\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '12px'\n }}\n />\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '163px',\n marginBottom: '9px'\n }}\n />\n ))}\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n maxWidth: '270px',\n marginBottom: '11px'\n }}\n />\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: '12px'\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9].map((index: number) => (\n <SkeletonLoading.Item width=\"34px\" height=\"34px\" color=\"lighten\" rounded=\"full\" key={index} />\n ))}\n </div>\n </>\n ) : null;\n\n const productGridSkeleton = (\n <>\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'vertical' ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <SkeletonLoading.Item\n width=\"117px\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n style={{\n marginBottom: '21px'\n }}\n />\n </div>\n ) : null}\n <SkeletonLoading.ProductGrid count={12} type=\"large\" />\n </>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const searchFieldSkeletonComponent = <SkeletonLoading.Item width=\"100%\" height=\"42px\" color=\"lighten\" rounded=\"lg\" className=\"sledge-instant-search__result-data-keyword-form\" />;\n\n const selectOptionSkeletonComponent = (\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <SkeletonLoading.Item width=\"150px\" height=\"42px\" color=\"lighten\" rounded=\"lg\" />\n </div>\n </div>\n );\n\n const searchAndSelectOptionSkeleton = (\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n );\n\n const mobileFilterWithSearchAndSelectOptionSkeleton = (\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__mobile-filter-search-skeleton\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products && displaySettings?.filter?.layout === 'horizontal' ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n );\n\n const containerStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__result-container\" ref={searchResultContainerRef} style={containerStyle}>\n {isFirstLoading ? (\n tabSkeleton\n ) : layoutType === 'default' && allowedTabs?.length ? (\n <div className={`${layoutType === 'default' && allowedTabs?.length ? 'sledge-instant-search__result-tab' : 'sledge-instant-search__result-tab-no-index'}`}>\n <ul className=\"sledge-instant-search__result-tab-list\">\n {allowedTabs.map((item: any) => {\n const { name, index, type, total } = item;\n\n let isActive = clickedTabIndexId === index;\n\n return (\n <li\n onClick={(e) =>\n handleChangeTabIndex({\n id: index,\n name,\n type\n })\n }\n className={`${isActive ? 'sledge-instant-search__result-tab-list-item-active' : ''}`}\n key={index}\n >\n {name}\n <span className=\"sledge-instant-search__result-tab-total\">{total || 0}</span>\n </li>\n );\n })}\n </ul>\n </div>\n ) : (\n tabSkeleton\n )}\n\n {isFirstLoading && layoutType?.length && !propsData ? (\n <>\n {mobileFilterWithSearchAndSelectOptionSkeleton}\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalSkeleton}</div>\n <div className=\"sledge-instant-search__result-wrapper sledge-instant-search__result-wrapper-skeleton\">\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && !hideFilterWhenOneValue ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-data\">\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n\n {productGridSkeleton}\n </div>\n </div>\n </>\n ) : (\n React.cloneElement(resultComponent, {\n layoutType,\n isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n setIsLoading,\n setKeyword,\n filterHorizontalSkeleton,\n filterHorizontalSkeletonComponent,\n filterVerticalSkeleton,\n productGridSkeleton,\n searchAndSelectOptionSkeleton,\n summaryTextSkeleton,\n searchFieldSkeletonComponent,\n selectOptionSkeletonComponent,\n searchResultContainerRef,\n data: propsData,\n settings,\n isReplaceWidgetList,\n setIsReplaceWidgetList,\n searchResultFacets\n })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n layoutType,\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n hideFilterWhenOneValue,\n hiddenTags,\n displaySettings,\n colorSwatches,\n defaultSort,\n showOutOfStock,\n languageSettings,\n hierarchicalProductTypeSettings,\n query,\n params,\n isJsVersion,\n productCardsComponent,\n setKeyword,\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 } = props || {};\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId, collectionName } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedLimitId, setClickedLimitId] = React.useState(displaySettings?.search?.limit || 10);\n const [clickedOpenFilterId, setClickedOpenFilterId] = React.useState<string | number | null | ''>(null);\n const [clickedOpenFilters, setClickedOpenFilters] = React.useState<any>([]);\n const [clickedFacets, setClickedFacets] = React.useState<any>({\n ...(!showOutOfStock\n ? {\n 'variants.inventory_quantity': '> 0'\n }\n : {})\n });\n const [triggerClickedFacets, setTriggerClickedFacets] = React.useState(false);\n const [searchResult, setSearchResult] = React.useState<any[]>(propsData?.result?.results?.[0]?.hits || []);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(propsData?.result?.results?.[0]?.totalHits || 0);\n const [valueFilterPriceChange, setValueFilterPriceChange] = React.useState<number[]>([]);\n const [allowedFilter, setAllowedFilter] = React.useState([]);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchFacetDistribution, setSearchFacetDistribution] = React.useState<any>({});\n\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 } = hierarchicalProductTypeSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = language_total_result_text[layoutType === 'product-filter' && !keyword?.length ? 'product_filter' : 'product'];\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) {\n getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n if (layoutType === 'product-filter') getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.COLLECTION_NAME, collectionName || 'Products');\n }\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator(totalSearchResult) : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, 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 detectQueryStringFilter = (facetsQueryStringObject: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n for (const searchParamsKey in searchParamsObject) {\n let ifFacetsQueryStringObject = facets?.length && facets.includes(searchParamsKey);\n\n if (ifFacetsQueryStringObject) facetsQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey].split(',');\n }\n\n if (Object.keys(facetsQueryStringObject).length) {\n setClickedFacets(facetsQueryStringObject);\n\n if (facetsQueryStringObject['variants.price']) setValueFilterPriceChange(facetsQueryStringObject['variants.price']);\n }\n\n return facetsQueryStringObject;\n };\n\n const handleQueryStringFilter = (valueClickedFacets: any) => {\n const searchParams = new URLSearchParams(document.location.search);\n const searchParamsObject = Object.fromEntries(searchParams);\n\n let otherQueryStringObject: any = {};\n for (const searchParamsKey in searchParamsObject) {\n let ifOtherQueryStringObject = facets?.length && !facets.includes(searchParamsKey);\n\n if (ifOtherQueryStringObject) otherQueryStringObject[searchParamsKey] = searchParamsObject[searchParamsKey];\n }\n\n let facetQueryStringObject: any = {};\n for (const valueClickedFacetsKey in valueClickedFacets) {\n if (valueClickedFacets[valueClickedFacetsKey]?.length) otherQueryStringObject[valueClickedFacetsKey] = valueClickedFacets[valueClickedFacetsKey];\n }\n\n const newQueryString = new URLSearchParams({\n ...otherQueryStringObject,\n ...facetQueryStringObject\n }).toString();\n\n window.history.pushState(null, '', `${document.location.pathname}${newQueryString?.length ? `?${newQueryString}` : ''}`);\n };\n\n const handleChangeSort = (label: string, value: string) => {\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setClickedLimitId(value);\n };\n\n const handleOpenFilterVertical = (id: string | number) => {\n setClickedOpenFilterId(id === clickedOpenFilterId ? '' : id);\n\n let valueClickedOpenFilters: any[] = clickedOpenFilters;\n if (valueClickedOpenFilters.includes(id)) {\n const findIndex = valueClickedOpenFilters.indexOf(id);\n if (findIndex > -1) valueClickedOpenFilters.splice(findIndex, 1);\n } else {\n valueClickedOpenFilters.push(id);\n }\n\n setClickedOpenFilters(valueClickedOpenFilters);\n };\n\n const handleFilterReset = () => {\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n };\n\n const handleFilterChange = ({ parentId, value, force = false }: { parentId: string; value: any; force?: boolean }) => {\n let facets: any = [value];\n let isRange = ['variants.price'].includes(parentId);\n\n if (clickedFacets) {\n if (force) {\n facets = [value];\n } else {\n if (clickedFacets[parentId]?.includes(value)) {\n facets = clickedFacets[parentId].filter((facet: any) => facet !== value);\n } else {\n if (isRange) {\n if ((clickedFacets[parentId], clickedFacets[parentId] === value)) {\n facets = [];\n\n setValueFilterPriceChange([]);\n } else {\n facets = value;\n }\n } else {\n facets = clickedFacets[parentId] ? [...clickedFacets[parentId], value] : [value];\n }\n }\n }\n }\n\n let valueClickedFacets = {\n ...clickedFacets,\n ...{\n [parentId]: facets\n }\n };\n\n handleQueryStringFilter(valueClickedFacets);\n\n setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n };\n\n const handleSearchResultData = (result: any, onSearch: boolean) => {\n if (!result) return;\n\n const { hits, processingTimeMs, totalHits, totalPages, facetDistribution } = result;\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: totalHits || 0\n });\n }\n\n setIsFirstLoading(false);\n setIsLoading(false);\n setIsReplaceWidgetList && setIsReplaceWidgetList(false);\n setSearchResult(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 (isRefreshPage = false, onSearch = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let hierarchicalFacetAliases = Object.entries(HIERARCHICAL_FACET_OBJECT_ALIASES).map((hierarchicalFacetAlias: any) => hierarchicalFacetAlias[1]);\n let facetHierarchical = hierarchicalFacetAliases.reduce((item, key) => {\n let defaultLevelHierarchical: any = {};\n\n for (let iLevel = 0; iLevel < MAX_LIMIT_HIERARCHICAL; iLevel++) {\n defaultLevelHierarchical[`lvl${iLevel}`] = [];\n }\n\n return { ...item, [key]: defaultLevelHierarchical };\n }, {});\n let detectClickedFacets = detectQueryStringFilter(clickedFacets);\n\n let response: any;\n let filters: any = Object.entries(detectClickedFacets)\n .map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let isCustom = ['variants.inventory_quantity'].includes(facet[0]);\n let isRange = ['variants.price'].includes(facet[0]);\n let isArray = ['tags'].includes(facet[0]);\n let isHierarchical = hierarchicalFacetAliases.includes(facet[0]);\n\n if (isHierarchical) {\n facet[1]?.map((item: any) => {\n const arrItem = String(item).split(hierarchical_separator);\n\n if (arrItem?.length) {\n if (Object.hasOwn(facetHierarchical[facet[0]], `lvl${arrItem.length - 1}`)) facetHierarchical[facet[0]][`lvl${arrItem.length - 1}`].push(item);\n }\n });\n\n let arrItemHierarchicals: any = [];\n Object.entries(facetHierarchical[facet[0]]).map((itemHierarchical: any) => {\n if (itemHierarchical[1]?.length) arrItemHierarchicals.push([`${facet[0]}.${itemHierarchical[0]}`, itemHierarchical[1]]);\n });\n\n let itemHierarchicals = arrItemHierarchicals\n ?.map((filterHierarchical: any) => {\n return Array.isArray(filterHierarchical[1]) && filterHierarchical[1]?.length > 1\n ? `(${filterHierarchical[1]\n ?.map((item: any) => {\n return `'${filterHierarchical[0]}' = '${item}'`;\n })\n .join(' OR ')})`\n : `'${filterHierarchical[0]}' = '${filterHierarchical[1]}'`;\n })\n .join(' AND ');\n\n return itemHierarchicals;\n }\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? `'${facet[0]}' >= ${facet[1][0]} AND '${facet[0]}' <= ${facet[1][1]}`\n : isArray\n ? `'${facet[0]}' IN ${JSON.stringify(facet[1])}`\n : `(${facet[1]\n ?.map((item: any) => {\n return isCustom ? `'${facet[0]}' ${item}` : `'${facet[0]}' = '${item}'`;\n })\n .join(' OR ')})`\n : isCustom\n ? `'${facet[0]}' ${facet[1]}`\n : isArray\n ? `'${facet[0]}' IN ${JSON.stringify(facet[1])}`\n : `'${facet[0]}' = '${facet[1]}'`;\n\n return items;\n } else return null;\n })\n .filter((item) => item);\n\n if (hiddenTags?.length) filters.push(`'tags' NOT IN ${JSON.stringify(hiddenTags)}`);\n if (collectionId) filters.push(`'collections.id' = '${collectionId}'`);\n\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 1 : currentPage,\n hitsPerPage: clickedLimitId,\n facets: facets,\n filter: filters.join(' AND ')\n };\n\n if (propsData && handleSearchResultFirstTime) {\n response = propsData?.result?.results?.[0];\n setHandleSearchResultFirstTime(false);\n } else response = await search(clickedTabIndexId, body);\n\n handleSearchResultData(response, onSearch);\n };\n\n const handleAllowedFilter = () => {\n if (!displaySettings?.filter?.enable_on_search || hideFilterWhenOneValue) return;\n\n let isSetFilter = false;\n let valueAllowedFilter: any = [];\n\n if (!isSetFilter)\n allowedFilters?.map((filter: any) => {\n const { collections, items } = filter;\n\n const newItems = items?.map(({ value, ...otherItem }: any) => {\n return {\n ...otherItem,\n value: otherItem?.display === 'tree' ? HIERARCHICAL_FACET_OBJECT_ALIASES[value] : value\n };\n });\n\n if (collectionId && collections?.includes(Number(collectionId))) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n } else {\n if (collections?.includes('all')) {\n isSetFilter = true;\n valueAllowedFilter = newItems;\n }\n }\n });\n\n if (isSetFilter) {\n setAllowedFilter(valueAllowedFilter);\n setClickedOpenFilters(valueAllowedFilter?.length ? valueAllowedFilter.map(({ value }: any) => value) : []);\n }\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n setIsReplaceWidgetList && setIsReplaceWidgetList(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n const handleChangeKeyword = (value: string) => {\n const searchParams = new URLSearchParams(document.location.search);\n\n searchParams.set(queryKeyword, value);\n\n setKeyword && setKeyword(value);\n\n window.history.pushState(null, '', `${document.location.pathname}?${searchParams.toString()}`);\n };\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(\n previousState && (previousState?.keyword !== keyword || previousState?.clickedLimitId !== clickedLimitId || previousState?.clickedFacets !== clickedFacets)\n );\n\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult(true, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [clickedSortId, clickedLimitId, triggerClickedFacets, keyword, collectionId]);\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 React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\n\n let dataClickedFacets: any[] = [];\n let arrFacetSelected: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n arrFacetSelected.push(facet[0]);\n\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const facetBlockSelected = ({ label, name, value, index }: any) => {\n let valueText = value;\n let isRange = ['variants.price'].includes(name);\n\n if (isRange) valueText = value?.join(' - ');\n\n return (\n <div key={index} className=\"sledge-instant-search__result-filter-item-refine-selected\" style={filter_option_style}>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-list\">\n {label}: {String(valueText)?.replaceAll('_', ' ')}\n </span>\n <span\n className=\"sledge-instant-search__result-filter-item-refine-title-clear\"\n onClick={() =>\n handleFilterChange({\n parentId: name,\n value\n })\n }\n >\n <svg width={12} height={12} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n );\n };\n\n const handleConditionNotUpdateFacetDistribution = (value: any) => {\n let arrPriorityFacet = ['vendor'];\n\n let isHasFacetSelected = arrFacetSelected?.length;\n let isNoneFacetSelected = !isHasFacetSelected;\n let isOnFacetSelectedOne = isHasFacetSelected && arrFacetSelected.includes(value) && isHasFacetSelected === 1;\n let isSelectedFacetWithPrice = arrFacetSelected.includes('variants.price');\n let isPriorityFacet = isHasFacetSelected && !isOnFacetSelectedOne && arrPriorityFacet.includes(value) && !isSelectedFacetWithPrice;\n\n return isNoneFacetSelected || isOnFacetSelectedOne || isPriorityFacet;\n };\n\n const facetComponent = (filter: { value: any; label: string; display: string; items: any }) => {\n let { value, label, display, items } = filter;\n\n if (isFirstLoading) return null;\n\n let blockComponent = null;\n let isShowNumberMatchingProduct = displaySettings?.filter?.show_number_matching_product;\n\n // Update array facets with counter\n const handleFacetValues = (items: any) => {\n return items?.map((item: any) => {\n const isFacetHierarchical = Object.hasOwn(item, 'children');\n\n let labelName = item.name;\n let getValue = isFacetHierarchical ? `${value}.lvl${item.level}` : value;\n\n if (languageSettings && (languageSettings[item.value] || languageSettings[item.name])) labelName = languageSettings[item.value] || languageSettings[item.name];\n\n let counter = handleConditionNotUpdateFacetDistribution(getValue)\n ? item?.total || 0\n : searchFacetDistribution[getValue] && searchFacetDistribution[getValue][item.value]\n ? searchFacetDistribution[getValue][item.value]\n : 0;\n\n return {\n ...item,\n labelName,\n counter\n };\n });\n };\n\n const handleFacetCheckbox = (facetValues: any) => {\n return handleFacetValues(facetValues)?.map((facetValue: any, index: number) => {\n const { labelName, value: itemValue, counter, children, level } = facetValue;\n\n const isFacetHierarchical = Object.hasOwn(facetValue, 'children');\n const isHasChildren = isFacetHierarchical && children?.length;\n const isChecked = Boolean(clickedFacets && clickedFacets[value]?.includes(itemValue));\n\n return (\n <>\n <li\n key={index}\n className={`sledge-instant-search__result-filter-checkbox-item ${\n isFacetHierarchical ? `sledge-instant-search__result-filter-checkbox-item-level sledge-instant-search__result-filter-checkbox-item-level-${level}` : ''\n }`}\n >\n <Checkbox\n id={`${value}_${index}${isFacetHierarchical ? `_${stringToSlug(itemValue)}` : ''}`}\n name={value}\n value={itemValue}\n label={`${labelName}${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n checked={isChecked}\n labelStyle={filter_option_style}\n />\n {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 </li>\n {isHasChildren && isChecked ? handleFacetCheckbox(children) : null}\n </>\n );\n });\n };\n\n if (display.toLowerCase() === 'slider') {\n items = defaultFacetStats[value] && Object.keys(defaultFacetStats[value]).length ? defaultFacetStats[value] : {};\n\n let defaultValueMin = valueFilterPriceChange[0] || items?.min;\n let defaultValueMax = valueFilterPriceChange[1] || items?.max;\n\n blockComponent = (\n <div className=\"sledge-instant-search__result-filter-item-list-slider\">\n <Slider\n value={defaultValueMin === defaultValueMax ? [defaultValueMax] : [defaultValueMin, defaultValueMax]}\n {...(items?.min === items?.max\n ? {}\n : {\n min: items?.min\n })}\n max={items?.max}\n step={1}\n setValueCommit={(valueCommit) =>\n handleFilterChange({\n parentId: value,\n value: valueCommit\n })\n }\n setValueChange={(valueChange) => setValueFilterPriceChange(valueChange)}\n />\n <div className=\"sledge-instant-search__result-filter-item-list-slider-minmax\">\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMin}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{defaultValueMax}</div>\n </div>\n </div>\n );\n } else if ((display.toLowerCase() === 'checkbox' || display.toLowerCase() === 'tree') && items?.length) {\n blockComponent = <>{handleFacetCheckbox(items)}</>;\n } else if (display.toLowerCase() === 'radio' && items?.length) {\n blockComponent = (\n <li>\n <RadioGroup\n id={value}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n defaultValue={clickedFacets && clickedFacets[value]?.length ? clickedFacets[value][0] : ''}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'select' && items?.length) {\n blockComponent = (\n <li>\n <Select\n placeholder={`Select ${label}`}\n name={value}\n onValueChange={(getValue) =>\n handleFilterChange({\n parentId: value,\n value: getValue,\n force: true\n })\n }\n items={handleFacetValues(items)?.map((item: any) => {\n const { labelName, value, counter } = item;\n\n return {\n label: `${labelName} ${counter !== undefined && isShowNumberMatchingProduct ? ` (${counter})` : ''}`,\n value\n };\n })}\n labelStyle={filter_option_style}\n />\n </li>\n );\n } else if (display.toLowerCase() === 'swatch' && items?.length) {\n blockComponent = (\n <>\n {items?.map((item: any, index: number) => {\n let getColorSwatch = colorSwatches?.filter(({ name }: any) => name?.includes(item.value))[0] || {};\n\n return (\n <li key={index}>\n <ColorSwatch\n id={`${value}_${index}`}\n name={value}\n value={item.value}\n rgb={getColorSwatch?.rgb}\n image={getColorSwatch?.image}\n onClick={(e) =>\n handleFilterChange({\n parentId: value,\n value: e.currentTarget.value\n })\n }\n defaultChecked={Boolean(clickedFacets && clickedFacets[value]?.includes(item.value))}\n />\n </li>\n );\n })}\n </>\n );\n }\n\n return blockComponent;\n };\n\n const handleHierarchicalFacet = (indexValue: any) => {\n let parentFacets: any[] = searchResultFacets[indexValue + '.lvl0'];\n\n if (!parentFacets?.length) return [];\n\n const prepareFacetValues = ({ facetValues, indexHierarchical }: { facetValues: any; indexHierarchical: number }) => {\n const getLevel = indexHierarchical;\n\n if (facetValues?.length && getLevel < MAX_LIMIT_HIERARCHICAL) {\n return facetValues.map((facetValue: any) => {\n const { name, ...otherFacetValue } = facetValue;\n\n const getName = String(name).includes(hierarchical_separator) ? String(name).split(hierarchical_separator)?.[getLevel]?.trim() || name : name;\n\n const additionalObject = {\n ...otherFacetValue,\n name: getName,\n level: getLevel\n };\n\n indexHierarchical++;\n\n let children: any = [];\n prepareFacetValues({ facetValues: searchResultFacets[indexValue + '.lvl' + indexHierarchical], indexHierarchical })?.map((prepareFacetValue: any) => {\n const { name, ...otherPrepareFacetValue } = prepareFacetValue;\n\n const getName = String(name).includes(hierarchical_separator) ? String(name).split(hierarchical_separator)?.[indexHierarchical]?.trim() || name : name;\n\n if (String(prepareFacetValue.value).trim().toLowerCase().includes(String(additionalObject.value).toLowerCase()))\n children.push({\n ...otherPrepareFacetValue,\n name: getName\n });\n });\n\n return {\n ...additionalObject,\n children\n };\n });\n }\n\n return [];\n };\n\n let facets: any[] = parentFacets.map((parentFacet: any) => {\n const { value: parentFacetValue } = parentFacet;\n\n let setIndexHierarchical = 1;\n let children: any = [];\n prepareFacetValues({\n facetValues: searchResultFacets[indexValue + '.lvl' + setIndexHierarchical],\n indexHierarchical: setIndexHierarchical\n })?.map((prepareFacetValue: any) => {\n const { value } = prepareFacetValue;\n const arrValue = String(value).split(hierarchical_separator);\n\n if (String(arrValue[0]).trim().toLowerCase() === String(parentFacetValue).toLowerCase()) children.push(prepareFacetValue);\n });\n\n return {\n ...parentFacet,\n level: 0,\n children\n };\n });\n\n return facets;\n };\n\n const filterSettings = (filter: {\n value: any;\n label: string;\n display: string;\n indexFilter: number;\n }): { isActive: boolean; isRender: boolean; classesUlElement: string[]; getFacetComponent: any; isLastIndex: boolean } => {\n const { value, display, indexFilter } = filter;\n\n let isActive = clickedOpenFilterId === value;\n let items = display.toLowerCase() === 'tree' ? handleHierarchicalFacet(value) : searchResultFacets[value];\n let isRender = Boolean(display.toLowerCase() === 'slider' ? items : items?.length);\n let classesUlElement = ['sledge-instant-search__result-filter-item-list'];\n let getFacetComponent = facetComponent({\n ...filter,\n items\n });\n\n if (display.toLowerCase() === 'swatch' && items?.length) classesUlElement.push('sledge-instant-search__result-filter-item-color-swatches');\n if (display.toLowerCase() === 'tree') classesUlElement.push('sledge-instant-search__result-filter-item-tree');\n\n let isLastIndex = allowedFilter.length - 1 === indexFilter;\n\n return { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex };\n };\n\n const filterVerticalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isRender, classesUlElement, getFacetComponent } = filterSettings(filter);\n\n return isRender ? (\n <div className=\"sledge-instant-search__result-filter-item\" key={indexFilter}>\n <div className=\"sledge-instant-search__result-filter-item-title\" onClick={() => handleOpenFilterVertical(value)}>\n <span className=\"sledge-instant-search__result-filter-title\" style={filter_title_style}>\n {label}\n </span>\n <motion.div initial={false} animate={clickedOpenFilters.includes(value) ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION}>\n <ChevronArrowDownIcon width={15} height={15} color=\"#000000\" />\n </motion.div>\n </div>\n {clickedOpenFilters.includes(value) && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}\n </div>\n ) : null;\n });\n\n const filterHorizontalComponents = allowedFilter.map((filter: any, indexFilter) => {\n const { value, label } = filter;\n\n const { isActive, isRender, classesUlElement, getFacetComponent, isLastIndex } = filterSettings(filter);\n\n return isRender ? (\n <React.Fragment key={indexFilter}>\n <Popover\n trigger={\n <Button\n type=\"button\"\n onClick={() => setClickedOpenFilterId(value)}\n className={`${isLastIndex ? (allowedFilter.length % 2 ? 'sledge-instant-search__result-filter-trigger-odd' : 'sledge-instant-search__result-filter-trigger-even') : ''}`}\n >\n {label}\n <motion.div initial=\"closed\" animate={isActive ? 'open' : 'closed'} variants={ROTATE_FILTER_ARROW_ANIMATION} className=\"sort-trigger-icon\">\n <ChevronArrowDownIcon width={20} height={20} color=\"#000000\" />\n </motion.div>\n </Button>\n }\n content={<div className=\"sledge-instant-search__result-filter-horizontal-facet\">{isActive && <ul className={classesUlElement.join(' ')}>{getFacetComponent}</ul>}</div>}\n withOpenState={false}\n setIsOpen={(open) => setClickedOpenFilterId(!open ? '' : value)}\n hideCloseIcon\n align=\"center\"\n className=\"sledge-instant-search__filter-horizontal-facet-content\"\n customArrow={`<svg style=\"transform: rotate(180deg); margin-bottom: 3px; stroke-dasharray: 0,0,36;\" width=\"44\" height=\"12\" viewBox=\"0 0 44 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.2222 1.99825e-06C23.2222 11.9998 4.88979 11.9999 0.000354767 12L23.2222 12L44 12C23.2222 12 23.2222 1.99825e-06 23.2222 1.99825e-06Z\" fill=\"white\" stroke=\"#393d4e\" stroke-width=\"1px\" /></svg>`}\n />\n </React.Fragment>\n ) : null;\n });\n\n const paginationComponent = (\n <Pagination currentPage={currentPage} totalPage={totalPage} totalResult={totalSearchResult} onChange={(page: number) => handlePageChange(page)} pageInfo={language_pagination_info} />\n );\n\n const filterHorizontalBlockComponent =\n displaySettings?.filter?.enable_on_search && allowedFilter.length ? (\n <>\n {isFirstLoading && !propsData ? (\n filterHorizontalSkeleton\n ) : (\n <>\n {isLoadingSetting && !propsData ? (\n <div className=\"sledge-instant-search__result-filter-horizontal-loading\">{filterHorizontalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter-horizontal-wrapper\">\n <div className=\"sledge-instant-search__result-filter-horizontal sledge-instant-search__result-filter-horizontal-component\">{filterHorizontalComponents}</div>\n\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-horizontal\">\n <div\n className=\"sledge-instant-search__result-filter-horizontal-refine-item sledge-instant-search__result-filter-horizontal-refine-item-clear-all\"\n onClick={handleFilterReset}\n >\n Clear All\n </div>\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n ) : null}\n </div>\n )}\n </>\n )}\n </>\n ) : null;\n\n return (\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'horizontal' && allowedFilter.length ? (\n <div className=\"sledge__hide-element-lg-on-mobile\">{filterHorizontalBlockComponent}</div>\n ) : null}\n <div className=\"sledge-instant-search__result-wrapper\" data-filter-layout={displaySettings?.filter?.layout}>\n <>\n <>\n {displaySettings?.filter?.enable_on_search && displaySettings?.filter?.layout === 'vertical' && allowedFilter.length ? (\n isFirstLoading ? (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">{filterVerticalSkeleton}</div>\n ) : (\n <div className=\"sledge-instant-search__result-filter sledge__hide-element-lg-on-mobile\">\n {isLoadingSetting ? (\n filterVerticalSkeleton\n ) : (\n <>\n {Boolean(dataClickedFacets?.length && displaySettings?.filter?.show_refine_by_block) ? (\n <div className=\"sledge-instant-search__result-filter-item\">\n <div className=\"sledge-instant-search__result-filter-item-title-refine\">\n <strong className=\"sledge-instant-search__result-filter-item-title-refine-heading\">{language_filter || 'Filter'}</strong>\n <span className=\"sledge-instant-search__result-filter-item-title-refine-clear\" onClick={handleFilterReset}>\n {language_clear_filter || 'Clear All'}\n </span>\n </div>\n <div className=\"sledge-instant-search__result-filter-item-refine-selected-flex\">\n {dataClickedFacets.map((itemClickedFacet: any, index: number) => {\n const { label, name, value } = itemClickedFacet;\n\n return facetBlockSelected({\n label: label,\n name: name,\n value: value,\n index: index\n });\n })}\n </div>\n </div>\n ) : null}\n {filterVerticalComponents}\n </>\n )}\n </div>\n )\n ) : null}\n </>\n\n <div className=\"sledge-instant-search__result-data\">\n {isFirstLoading ? (\n <>\n <div className=\"sledge__hide-element-mobile-on-lg\">\n <div className=\"sledge-instant-search__result-data-keyword\">\n {displaySettings?.filter?.show_total_products ? summaryTextSkeleton : null}\n {searchFieldSkeletonComponent}\n {filterHorizontalSkeletonComponent}\n {selectOptionSkeletonComponent}\n </div>\n </div>\n\n <div className=\"sledge__hide-element-lg-on-mobile\">{searchAndSelectOptionSkeleton}</div>\n </>\n ) : (\n <div className=\"sledge-instant-search__result-data-keyword\">\n <div\n className={`sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-horizontal ${\n displaySettings?.filter?.layout === 'horizontal' ? '' : 'sledge__hide-element-mobile-on-lg'\n }`}\n >\n {summaryText}\n </div>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={language_search_form_placeholder?.product || 'Search products...'}\n value={keyword}\n onChange={({ value }: any) => handleChangeKeyword(value)}\n onResetField={() => handleChangeKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n <div className=\"sledge__hide-element-mobile-on-lg sledge-instant-search__filter-horizontal-block-mobile\">{filterHorizontalBlockComponent}</div>\n <div className=\"sledge-instant-search__result-data-summary-item sledge-instant-search__result-data-summary-select-field\">\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span className=\"sledge-instant-search__result-data-summary-select-field-sort\">{language_sort_by || 'Sort by'}:</span>\n {allowedSorts && Boolean(allowedSorts?.length) && (\n <SelectField\n align=\"end\"\n prefixLabel={\n <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6296 4.34737C12.9144 4.34737 13.1497 4.55898 13.1869 4.83354L13.1921 4.90987L13.192 13.7599L15.2892 11.6543C15.5083 11.4341 15.8645 11.4333 16.0847 11.6525C16.2848 11.8517 16.3037 12.1641 16.1408 12.3847L16.0865 12.4479L13.0282 15.5204C13.0097 15.5386 12.991 15.555 12.9712 15.5701L13.0282 15.5204C13.0006 15.5482 12.9708 15.5724 12.9394 15.5932C12.9285 15.6 12.9171 15.607 12.9055 15.6135C12.8946 15.62 12.8837 15.6258 12.8725 15.6311C12.8615 15.6359 12.8504 15.6408 12.8391 15.6454C12.8247 15.6515 12.8099 15.6568 12.795 15.6613C12.7862 15.6637 12.7772 15.6662 12.7681 15.6685C12.7519 15.673 12.7357 15.6763 12.7193 15.6789C12.7116 15.6798 12.7036 15.6809 12.6955 15.6819C12.677 15.6844 12.6587 15.6857 12.6404 15.686C12.6368 15.6857 12.6332 15.6857 12.6296 15.6857L12.6186 15.686C12.6003 15.6857 12.582 15.6844 12.5637 15.6823L12.6296 15.6857C12.5989 15.6857 12.5689 15.6833 12.5396 15.6785C12.5233 15.6763 12.5071 15.673 12.4909 15.6689C12.4824 15.6663 12.4738 15.6639 12.4654 15.6614C12.4493 15.6569 12.4332 15.6512 12.4174 15.6448C12.4088 15.6408 12.4005 15.6372 12.3922 15.6333C12.3793 15.6278 12.3663 15.6211 12.3535 15.6139C12.342 15.6069 12.3307 15.6 12.3196 15.5926C12.3109 15.5875 12.3024 15.5815 12.294 15.5752L12.288 15.5701C12.2682 15.555 12.2494 15.5386 12.2318 15.5209L12.2308 15.5204L9.1725 12.4479C8.95334 12.2278 8.95416 11.8716 9.17434 11.6525C9.3745 11.4532 9.68704 11.4358 9.90687 11.5997L9.96983 11.6543L12.067 13.7614L12.0671 4.90987C12.0671 4.59921 12.3189 4.34737 12.6296 4.34737ZM5.18325 2.3122L5.19421 2.31189C5.21254 2.31224 5.23085 2.31348 5.24908 2.31562L5.18325 2.3122C5.21389 2.3122 5.24396 2.31465 5.27328 2.31937C5.28931 2.32156 5.3054 2.32487 5.32136 2.32889C5.33074 2.33164 5.3403 2.33433 5.34975 2.33725C5.36452 2.34142 5.37882 2.34648 5.39293 2.35213C5.40313 2.35668 5.41346 2.36119 5.42362 2.366C5.4357 2.37123 5.4476 2.37737 5.45931 2.38397C5.46933 2.39014 5.47926 2.39616 5.48898 2.40246C5.49898 2.40841 5.50899 2.41537 5.51882 2.42269L5.582 2.47746L8.64033 5.54996C8.85949 5.77013 8.85867 6.12629 8.63849 6.34545C8.43833 6.54469 8.12579 6.56212 7.90596 6.39822L7.843 6.34361L5.74525 4.23564L5.74575 13.088C5.74575 13.3987 5.49391 13.6505 5.18325 13.6505C4.89848 13.6505 4.66313 13.4389 4.62588 13.1644L4.62075 13.088L4.62025 4.23639L2.52367 6.34361C2.32443 6.54377 2.01197 6.56265 1.79139 6.39977L1.72817 6.34545C1.52801 6.14621 1.50914 5.83376 1.67202 5.61317L1.72633 5.54996L4.78467 2.47746L4.81779 2.44709C4.82557 2.44043 4.83353 2.43399 4.84167 2.42776L4.78467 2.47746C4.81226 2.44974 4.84202 2.42549 4.87341 2.40473C4.88436 2.39791 4.89574 2.39094 4.90738 2.38438C4.91819 2.37787 4.92917 2.37215 4.9403 2.36682C4.95128 2.36196 4.96242 2.35706 4.97375 2.35251C4.98814 2.34636 5.00289 2.34115 5.0178 2.33657C5.02687 2.33414 5.03616 2.33154 5.04555 2.32918C5.06066 2.32503 5.07593 2.32186 5.09129 2.31932C5.10053 2.31817 5.10959 2.31691 5.11871 2.31586C5.13607 2.31348 5.15388 2.31227 5.17171 2.3119C5.17564 2.31224 5.17944 2.3122 5.18325 2.3122Z\"\n fill=\"black\"\n />\n </svg>\n }\n options={allowedSorts.map((item: any) => {\n const { label, value } = item;\n return {\n label: label,\n value: value\n };\n })}\n value={clickedSortId || settings?.default_sort}\n onChange={({ label, value }: any) => handleChangeSort(label, value)}\n />\n )}\n </div>\n <div className=\"sledge-instant-search__result-data-summary-select-field-item\">\n <span>{language_limit || 'Limit'}:</span>\n {displaySettings?.search?.allowed_limit && Boolean(displaySettings?.search?.allowed_limit?.length) && (\n <SelectField\n align=\"end\"\n options={displaySettings.search.allowed_limit.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={clickedLimitId}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n )}\n </div>\n </div>\n </div>\n )}\n {isLoading ? (\n <>\n {productGridSkeleton}\n {searchResult?.length ? paginationComponent : null}\n </>\n ) : (\n <>\n {displaySettings?.filter?.layout === 'vertical' && (\n <div className=\"sledge__hide-element-lg-on-mobile\">\n <div className=\"sledge-instant-search__result-data-summary sledge-instant-search__result-data-summary-filter-vertical\">{summaryText}</div>\n </div>\n )}\n {searchResult?.length ? (\n <>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"large\"\n data={searchResult.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: language_add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n showOptionOutOfStock={true}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n dataWishlists={propsData?.wishlists}\n dataReviews={propsData?.reviews}\n />\n {paginationComponent}\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n </>\n </div>\n </>\n );\n};\n\nconst ResultCategory = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n displaySettings,\n isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n setKeyword,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings,\n isReplaceWidgetList,\n setIsReplaceWidgetList\n } = props || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(true);\n const [isLoading, setIsLoading] = React.useState(true);\n const [clickedSortId, setClickedSortId] = React.useState<string>('');\n const [searchResult, setSearchResult] = React.useState([]);\n const [searchProcessingTimeMs, setSearchProcessingTimeMs] = React.useState<string | number>(0);\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPage, setTotalPage] = React.useState(0);\n const [totalSearchResult, setTotalSearchResult] = React.useState(0);\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(null);\n\n const previousState: any = usePrevious({ keyword, clickedTabIndexId });\n\n const {\n pagination_info: language_pagination_info,\n search_form_placeholder: language_search_form_placeholder,\n result: language_result,\n total_result_text: language_total_result_text\n } = languageSettings || {};\n\n const summaryTextGenerator = (totalResult: number) => {\n const defaultSummaryText: any = (\n <>\n {totalResult} {language_result || 'result'}{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </>\n );\n\n let getSummaryText = clickedTabIndexType ? language_total_result_text[clickedTabIndexType] : null;\n let isSummaryTextFromLanguage = language_total_result_text && getSummaryText;\n\n if (isSummaryTextFromLanguage) getSummaryText = getSummaryText.replaceAll(OBJECT_DATA_STRING_KEY.TOTAL_RESULT, totalResult);\n\n return (\n <div className=\"sledge-instant-search__result-data-summary-item\">\n {displaySettings?.filter?.show_total_products ? (\n <span className=\"sledge-instant-search__result-data-summary-text\">{isSummaryTextFromLanguage ? getSummaryText : defaultSummaryText}</span>\n ) : null}\n </div>\n );\n };\n\n const handleChangeSort = (value: string) => {\n setClickedSortId(value);\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 && 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 (isRefreshPage = false) => {\n if (!clickedTabIndexId) return;\n\n if (isRefreshPage) setCurrentPage(1);\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: isRefreshPage ? 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 && setIsReplaceWidgetList(true);\n\n setTimeout(() => {\n scrollToElement({\n element: searchResultContainerRef.current,\n headerOffset: 50\n });\n }, 200);\n };\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const delayDebounceFn = setTimeout(() => {\n handleSearchResult();\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n } else {\n handleSearchResult();\n }\n }, [clickedSortId, keyword]);\n\n React.useEffect(() => {\n let isRefreshSearchResult = Boolean(previousState && previousState?.clickedTabIndexId !== clickedTabIndexId);\n\n if (isReplaceWidgetList || isRefreshSearchResult) {\n handleSearchResult(isRefreshSearchResult);\n }\n }, [isReplaceWidgetList, clickedTabIndexId]);\n\n const searchKeywordComponent = (\n <div className=\"sledge-instant-search__result-data-keyword sledge-instant-search__result-data-keyword-category\">\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={\n clickedTabIndexType && language_search_form_placeholder[clickedTabIndexType]\n ? language_search_form_placeholder[clickedTabIndexType]\n : `Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`\n }\n value={keyword}\n onChange={({ value }: any) => setKeyword && setKeyword(value)}\n onResetField={() => setKeyword && setKeyword('')}\n className=\"sledge-instant-search__result-data-keyword-form\"\n withClearField\n />\n </div>\n );\n\n const summaryTextSkeleton = (\n <div className=\"sledge-instant-search__result-data-summary\">\n <SkeletonLoading.Item width=\"117px\" height=\"28px\" color=\"lighten\" rounded=\"md\" />\n </div>\n );\n\n const skeletonLoadingComponent =\n clickedTabIndexType === 'collection' ? (\n <SkeletonLoading.CollectionGrid count={6} />\n ) : clickedTabIndexType === 'page' ? (\n <SkeletonLoading.PageGrid count={6} />\n ) : clickedTabIndexType === 'blog' ? (\n <SkeletonLoading.BlogGrid count={12} />\n ) : clickedTabIndexType === 'article' ? (\n <SkeletonLoading.ArticleGrid count={12} />\n ) : null;\n\n const ProvideElementFirstLoading = () => (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </div>\n );\n\n const ProvideElementLoading = () => (\n <>\n {searchKeywordComponent}\n {summaryTextSkeleton}\n {skeletonLoadingComponent}\n </>\n );\n\n const ProvideElement = (elementProps: any) =>\n clickedTabIndexType === 'collection' ? (\n <CollectionGrid cards={collectionCardsComponent} onAfterRenderCollection={onAfterRenderCollection} {...elementProps} />\n ) : clickedTabIndexType === 'page' ? (\n <PageGrid cards={pageCardsComponent} onAfterRenderPage={onAfterRenderPage} {...elementProps} />\n ) : clickedTabIndexType === 'blog' ? (\n <BlogGrid cards={blogCardsComponent} onAfterRenderBlog={onAfterRenderBlog} {...elementProps} />\n ) : clickedTabIndexType === 'article' ? (\n <ArticleGrid cards={articleCardsComponent} onAfterRenderArticle={onAfterRenderArticle} {...elementProps} />\n ) : null;\n\n return (\n <div className=\"sledge-instant-search__result-wrapper\">\n {isFirstLoading ? (\n <ProvideElementFirstLoading />\n ) : (\n <div className=\"sledge-instant-search__result-data-category-wrapper\">\n {isLoading ? (\n <ProvideElementLoading />\n ) : (\n <>\n {searchKeywordComponent}\n <div className=\"sledge-instant-search__result-data-summary\">{summaryText}</div>\n {searchResult?.length ? (\n <>\n <ProvideElement data={searchResult} isComponentJsVersion={isJsVersion} />\n\n <Pagination\n currentPage={currentPage}\n totalPage={totalPage}\n totalResult={totalSearchResult}\n onChange={(page: number) => handlePageChange(page)}\n pageInfo={language_pagination_info}\n />\n </>\n ) : (\n <ResultEmpty {...props} />\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nconst ResultEmpty = (props: IResultProps) => {\n const { languageSettings } = props || {};\n\n const { title_no_result: language_title_no_result, text_no_result: language_text_no_result } = languageSettings || {};\n\n return (\n <div className=\"sledge-instant-search__result-empty\">\n <div className=\"sledge-instant-search__result-empty-title\" dangerouslySetInnerHTML={{ __html: language_title_no_result || 'No results found' }}></div>\n <div\n className=\"sledge-instant-search__result-empty-description\"\n dangerouslySetInnerHTML={{ __html: language_text_no_result || 'Your search did not match any results. Please try again' }}\n ></div>\n </div>\n );\n};\n","import React from 'react';\nimport { SearchIcon } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\n\nexport interface ISearchIconWidgetProps {\n query?: {\n keyword: string;\n };\n size?: 'xs' | 'sm' | 'md' | string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchIconWidget = (props: ISearchIconWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { size = 'sm', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props || {};\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [sizing, setSizing] = React.useState({\n width: 0,\n height: 0\n });\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (size === 'xs') {\n setSizing({\n width: 14,\n height: 14\n });\n } else if (size === 'sm') {\n setSizing({\n width: 20,\n height: 20\n });\n } else {\n setSizing({\n width: 25,\n height: 25\n });\n }\n }, [isRenderAppInstantSearch]);\n\n const handleShowWidget = () => {\n if (typeof window !== 'undefined' && window.sledgeInstantSearchIconWidgetPopup)\n window.sledgeInstantSearchIconWidgetPopup({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n urlSearchResult,\n query\n });\n };\n\n return (\n <span className=\"sledge-instant-search__icon-widget\" onClick={handleShowWidget}>\n <SearchIcon {...sizing} color=\"currentColor\" />\n </span>\n );\n};\n","import React from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { usePrevious } from '@core/hooks';\nimport { ProductGrid, SearchInputField, SearchIcon, ScrollArea, SkeletonLoading } from '@core/components';\nimport { Global } from '@react-instant-search/components/Global';\nimport { getProductsReviewInfo } from '@core/api/product-review';\n\ndeclare global {\n interface Window {\n sledgeInstantSearchIconWidgetPopup(props: {\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n isJsVersion?: any;\n productCardsComponent?: any;\n suggestionKeywordListsComponent?: any;\n otherIndexListsComponent?: any;\n searchViewMoreResultComponent?: any;\n urlSearchResult?: string;\n query?: {\n keyword?: string;\n };\n }): void;\n }\n}\n\nexport const SearchIconWidgetPopup = () => {\n const { isRenderApp } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [showInfo, setShowInfo] = React.useState(false);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [dataReviews, setDataReviews] = React.useState({});\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [urlSearchResult, setUrlSearchResult] = React.useState('');\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n const [handleFunctions, setHandleFunctions] = React.useState({\n onAfterAddToCart: (state: 'success' | 'failed') => {},\n onAfterAddWishlist: (state: 'success' | 'failed') => {},\n onAfterRemoveWishlist: (state: 'success' | 'failed') => {},\n onAfterRenderProduct: (state: 'success' | 'failed') => {},\n isJsVersion: null,\n productCardsComponent: null,\n suggestionKeywordListsComponent: null,\n otherIndexListsComponent: null,\n searchViewMoreResultComponent: null,\n query: {}\n });\n\n const searchFieldRef = React.useRef<HTMLInputElement>(null);\n\n const previousState: any = usePrevious({ keyword });\n\n const handleMultiSearch = async (params: { data: any; onSearch?: boolean; withFetchReviewInfo?: boolean }) => {\n const { data, onSearch = false, withFetchReviewInfo = false } = params;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n let dataSearchResultProduct = isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct;\n\n if (withFetchReviewInfo) {\n let searchResultProductIds = dataSearchResultProduct.map(({ id }: any) => id);\n let valueDataReviews = await getProductsReviewInfo(searchResultProductIds);\n\n if (valueDataReviews?.status?.code === 200) setDataReviews(valueDataReviews?.data);\n } else {\n setDataReviews({});\n }\n\n setSearchResultProduct(dataSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n await handleMultiSearch({\n data: response,\n withFetchReviewInfo: true\n });\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n if (typeof window !== 'undefined') {\n window.sledgeInstantSearchIconWidgetPopup = ({\n onAfterAddToCart = () => {},\n onAfterAddWishlist = () => {},\n onAfterRemoveWishlist = () => {},\n onAfterRenderProduct = () => {},\n isJsVersion = null,\n productCardsComponent = () => {},\n suggestionKeywordListsComponent = () => {},\n otherIndexListsComponent = () => {},\n searchViewMoreResultComponent = () => {},\n urlSearchResult = '',\n query = {}\n }) => {\n setShowInfo(true);\n setHandleFunctions({\n onAfterAddToCart,\n onAfterAddWishlist,\n onAfterRemoveWishlist,\n onAfterRenderProduct,\n isJsVersion,\n productCardsComponent,\n suggestionKeywordListsComponent,\n otherIndexListsComponent,\n searchViewMoreResultComponent,\n query\n });\n setUrlSearchResult(urlSearchResult);\n };\n }\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n // Firefox\n showInfo ? document.body.classList.add('sledge__open-popup-state') : document.body.classList.remove('sledge__open-popup-state');\n }, [showInfo]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n const delayDebounceFn = setTimeout(() => {\n if (INSTANT_SEARCH_SETTING)\n handleMultiSearch({\n data: INSTANT_SEARCH_SETTING,\n onSearch: true\n });\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n return (\n <Dialog.Root open={showInfo} onOpenChange={setShowInfo}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"sledge__popup-overlay\" />\n <Dialog.Overlay className=\"sledge__popup-overlay-blur\" />\n <Dialog.Content className=\"sledge-instant-search__icon-widget-popup-detail-content\" data-layout-type={displaySettings?.search?.layout || ''}>\n <SearchInputField\n type=\"text\"\n icon={<SearchIcon width={20} height={20} color=\"#000000\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const query: any = handleFunctions.query;\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n className=\"sledge-instant-search__icon-widget-search-form-field\"\n withClearField\n />\n\n <div className=\"sledge-instant-search__icon-widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other sledge-instant-search__icon-widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"medium\" />\n </div>\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-wrapper\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.keywords?.active &&\n suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={handleFunctions.suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n />\n ) : null}\n\n {searchResultOther &&\n searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-flex-item-product\">\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n dataReviews={dataReviews}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry</span>, nothing found for <span>{keyword}</span>. Did you mean:\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"medium\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={handleFunctions.isJsVersion}\n cards={handleFunctions.productCardsComponent}\n onAfterAddToCart={handleFunctions.onAfterAddToCart}\n onAfterAddWishlist={handleFunctions.onAfterAddWishlist}\n onAfterRemoveWishlist={handleFunctions.onAfterRemoveWishlist}\n onAfterRenderProduct={handleFunctions.onAfterRenderProduct}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n />\n </>\n ) : (\n <>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-title\">{languageSettings?.product || 'Products'}</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">\n {languageSettings?.text_no_result || 'No product were found'}\n </div>\n </>\n )}\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__icon-widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={handleFunctions.searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\n urlSearchResult={urlSearchResult}\n query={handleFunctions.query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </ScrollArea>\n )}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport { VISIBLE_ANIMATION } from '@core/lib/animation';\nimport { multiSearch, searchTrigger } from '@core/api/instant-search';\nimport { usePrevious } from '@core/hooks';\nimport { DEFAULT_QUERY_PARAM, DEFAULT_SEARCH_RESULT_URL, LOCAL_STORAGE_KEY } from '@core/lib/const';\nimport { ProductGrid, ScrollArea, SearchIcon, SearchInputField, SkeletonLoading } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\nimport { isFunction } from '@core/lib/helper';\nimport { Global } from '@react-instant-search/components/Global';\n\nexport interface ISearchWidgetProps {\n query?: {\n keyword: string;\n };\n width?: string;\n children?: any;\n onAfterAddToCart?(state: 'success' | 'failed'): void;\n onAfterAddWishlist?(state: 'success' | 'failed'): void;\n onAfterRemoveWishlist?(state: 'success' | 'failed'): void;\n onAfterRenderProduct?(state: 'success' | 'failed'): void;\n urlSearchResult?: string;\n}\n\nexport const SearchWidget = (props: ISearchWidgetProps) => {\n const { isRenderApp, isJsVersion } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { instantSearch: isRenderAppInstantSearch } = isRenderApp || {};\n\n const { width = '400px', children, onAfterAddToCart, onAfterAddWishlist, onAfterRemoveWishlist, onAfterRenderProduct, urlSearchResult, query } = props;\n\n // Separate Components\n let productCardsComponent: any = null;\n let suggestionKeywordListsComponent: any = null;\n let otherIndexListsComponent: any = null;\n let searchViewMoreResultComponent: any = null;\n React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isFunction(child.type)) {\n const { productCard, suggestionKeywordList, otherIndexList, searchViewMoreResult }: any = child?.props || {};\n\n if (productCard && isFunction(productCard)) productCardsComponent = productCard;\n if (suggestionKeywordList && isFunction(suggestionKeywordList)) suggestionKeywordListsComponent = suggestionKeywordList;\n if (otherIndexList && isFunction(otherIndexList)) otherIndexListsComponent = otherIndexList;\n if (searchViewMoreResult && isFunction(searchViewMoreResult)) searchViewMoreResultComponent = searchViewMoreResult;\n }\n });\n\n const [isLoading, setIsLoading] = React.useState(true);\n const [keyword, setKeyword] = React.useState('');\n const [searchResultProduct, setSearchResultProduct] = React.useState([]);\n const [searchResultOther, setSearchResultOther] = React.useState([]);\n const [displaySettings, setDisplaySettings] = React.useState<any>({});\n const [suggestionSettings, setSuggestionSettings] = React.useState<any>({});\n const [suggestionIndex, setSuggestionIndex] = React.useState('');\n const [showSearchResult, setShowSearchResult] = React.useState(false);\n const [languageSettings, setLanguageSettings] = React.useState<any>({});\n\n const previousState: any = usePrevious({ keyword });\n\n const searchFieldRef = React.useRef(null);\n\n const handleMultiSearch = async (data: any, onSearch = false) => {\n if (!keyword.length) return;\n\n setIsLoading(true);\n\n const { index_product, tabs, hidden_tags, display, show_out_of_stock } = data;\n const suggestion = display?.search?.suggestion || {};\n\n let response: any;\n let body = {\n queries: tabs.map((tab: any) => {\n const { index } = tab;\n\n let isProductIndex = index.includes(index_product);\n let additionalFilter = [];\n\n if (hidden_tags?.length) additionalFilter.push(`tags NOT IN [${hidden_tags}]`);\n if (!show_out_of_stock) additionalFilter.push('variants.inventory_quantity > 0');\n\n return {\n indexUid: index,\n q: keyword,\n hitsPerPage: isProductIndex ? 6 : 4,\n filter: isProductIndex ? additionalFilter.join(' AND ') : ''\n };\n })\n };\n\n response = await multiSearch(body);\n\n if (!response) return;\n\n const { results } = response;\n\n let valueSearchResultProduct = results?.filter(({ indexUid }: any) => indexUid?.includes(index_product));\n\n if (onSearch && keyword?.length) {\n searchTrigger({\n keyword: keyword,\n resultCount: valueSearchResultProduct[0]?.totalHits || 0\n });\n }\n\n let valueSearchResultOther =\n results\n ?.filter(({ indexUid }: any) => !indexUid?.includes(index_product))\n ?.map((result: any) => {\n const { indexUid } = result;\n\n const { name, type } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || '',\n type: type || ''\n }\n };\n }) || [];\n\n let getValueSearchResultProduct = valueSearchResultProduct?.length ? valueSearchResultProduct[0]?.hits : [];\n let valueSuggestionIndex = !keyword.length ? 'zero_character' : !getValueSearchResultProduct?.length ? 'no_result' : '';\n\n let isPriorityZeroCharacter = Boolean(\n !keyword.length && Object.keys(suggestion).length && suggestion[valueSuggestionIndex]?.products?.active && suggestion[valueSuggestionIndex]?.products?.list?.length\n );\n\n setSearchResultProduct(isPriorityZeroCharacter ? suggestion[valueSuggestionIndex]?.products?.list : getValueSearchResultProduct);\n setSearchResultOther(valueSearchResultOther);\n setSuggestionIndex(valueSuggestionIndex);\n setIsLoading(false);\n };\n\n const handleSettings = async (LOCAL_STORAGE_INSTANT_SEARCH_SETTING: any) => {\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display, languages } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n setLanguageSettings(languages);\n\n if (keyword.length) await handleMultiSearch(response);\n };\n\n React.useEffect(() => {\n if (!isRenderAppInstantSearch) return;\n\n handleSettings(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || null);\n }, [isRenderAppInstantSearch]);\n\n React.useEffect(() => {\n if (Boolean(previousState && previousState?.keyword !== keyword)) {\n const INSTANT_SEARCH_SETTING = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY.INSTANT_SEARCH_SETTING) || '');\n\n if (!keyword) setShowSearchResult(false);\n\n const delayDebounceFn = setTimeout(() => {\n if (keyword) setShowSearchResult(true);\n\n if (INSTANT_SEARCH_SETTING) handleMultiSearch(INSTANT_SEARCH_SETTING, true);\n }, 500);\n return () => clearTimeout(delayDebounceFn);\n }\n }, [keyword]);\n\n React.useEffect(() => {\n showSearchResult ? document.body.classList.add('sledge__open-element-inset') : document.body.classList.remove('sledge__open-element-inset');\n }, [showSearchResult]);\n\n const wrapperStyle = {\n maxWidth: width\n };\n\n return (\n <div className=\"sledge-instant-search__widget-search-form-wrapper\" style={wrapperStyle}>\n {showSearchResult ? <div className=\"sledge__inset-full\" onClick={() => setShowSearchResult(false)}></div> : null}\n\n <SearchInputField\n type=\"text\"\n fieldRef={searchFieldRef}\n icon={<SearchIcon width={18} height={18} color=\"#868686\" />}\n placeholder={languageSettings?.search_form_placeholder?.widget || 'Search anything...'}\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\n onKeyDown={(event: KeyboardEvent) => {\n // TODO: This method just for js version, find a way to add additional function after enter key on headless (maybe we can expose onEnterKey)\n if (event.key === 'Enter') {\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const urlToSearchResult = `${urlSearchResult || DEFAULT_SEARCH_RESULT_URL}?${queryKeyword}=${keyword}`;\n\n window.location.href = urlToSearchResult;\n }\n }}\n onResetField={() => setKeyword('')}\n onFocus={() => {\n if (keyword) setShowSearchResult(true);\n }}\n withClearField\n />\n\n <motion.div initial=\"hidden\" animate={showSearchResult ? 'visible' : 'hidden'} variants={VISIBLE_ANIMATION} className=\"sledge-instant-search__widget-search-form-result\">\n {isLoading ? (\n <ScrollArea>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other sledge-instant-search__widget-search-form-result-flex-item-other-skeleton\">\n {[0, 1, 2].map((index: number) => (\n <React.Fragment key={index}>\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"42px\"\n color=\"lighten\"\n rounded=\"md\"\n {...(Boolean(index) && {\n style: { marginTop: '12px' }\n })}\n />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n gap: '12px',\n marginTop: '12px'\n }}\n >\n {[1, 2, 3].map((index: number) => (\n <SkeletonLoading.Item\n width=\"100%\"\n height=\"28px\"\n color=\"lighten\"\n rounded=\"md\"\n key={index}\n style={{\n maxWidth: '140px'\n }}\n />\n ))}\n </div>\n </React.Fragment>\n ))}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <SkeletonLoading.ProductGrid count={6} type=\"small\" />\n </div>\n </div>\n </ScrollArea>\n ) : (\n <ScrollArea isLoading={isLoading}>\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-flex\">\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-other\">\n {Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.keywords?.active && suggestionSettings[suggestionIndex]?.keywords?.list?.length ? (\n <Global.SuggestionKeywordLists\n listsComponent={suggestionKeywordListsComponent}\n keywords={suggestionSettings[suggestionIndex].keywords.list}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n />\n ) : null}\n\n {searchResultOther.map((item: any, index: number) => {\n const { hits, name, type } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={otherIndexListsComponent}\n name={name}\n type={type}\n items={hits}\n isComponentJsVersion={isJsVersion}\n languageSettings={languageSettings}\n />\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"sledge-instant-search__widget-search-form-result-flex-item-product\">\n <div className=\"sledge-instant-search__widget-search-form-result-title-product\">{languageSettings?.product || 'Products'}</div>\n {searchResultProduct?.length ? (\n <div className=\"sledge-instant-search__widget-search-form-result-product\">\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={searchResultProduct.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </div>\n ) : Object.keys(suggestionSettings).length &&\n suggestionSettings[suggestionIndex]?.products?.active &&\n suggestionSettings[suggestionIndex]?.products?.list?.length ? (\n <>\n <div className=\"sledge-instant-search__widget-search-form-result-product-suggestion-no-result-text\">\n <span>Sorry, nothing found for</span> <strong>{keyword}</strong>. <span>Did you mean:</span>\n </div>\n <ProductGrid\n sourceApp=\"instant-search\"\n type=\"small\"\n data={suggestionSettings[suggestionIndex].products.list.map((item: any) => {\n const { variants, ...product } = item || {};\n\n return {\n product,\n variants\n };\n })}\n setting={{\n show_vendor: displaySettings?.search?.show_vendor,\n show_sku: displaySettings?.search?.show_sku,\n show_price: displaySettings?.search?.show_price,\n language_button_add_to_cart: languageSettings?.add_to_cart,\n language_button_out_of_stock: languageSettings && languageSettings['out of stock'] ? languageSettings['out of stock'] : ''\n }}\n showOptionOutOfStock={true}\n isComponentJsVersion={isJsVersion}\n cards={productCardsComponent}\n onAfterAddToCart={onAfterAddToCart}\n onAfterAddWishlist={onAfterAddWishlist}\n onAfterRemoveWishlist={onAfterRemoveWishlist}\n onAfterRenderProduct={onAfterRenderProduct}\n />\n </>\n ) : (\n <div className=\"sledge-instant-search__widget-search-form-result-product-disabled\">{languageSettings?.text_no_result || 'No product were found'}</div>\n )}\n </div>\n </div>\n {searchResultProduct?.length ||\n (Object.keys(suggestionSettings).length && suggestionSettings[suggestionIndex]?.products?.active && suggestionSettings[suggestionIndex]?.products?.list?.length) ? (\n <div className=\"sledge-instant-search__widget-button-more-wrapper\">\n <Global.SearchViewMoreResult\n component={searchViewMoreResultComponent}\n keyword={keyword}\n isComponentJsVersion={isJsVersion}\n urlSearchResult={urlSearchResult}\n query={query}\n languageSettings={languageSettings}\n />\n </div>\n ) : null}\n </>\n </ScrollArea>\n )}\n </motion.div>\n </div>\n );\n};\n"],"names":["API_URL","INSTANT_SEARCH_ENGINE_URL","CDN_URL","SELECTOR_ATTRIBUTE_KEY","DATASET_ATTRIBUTE_KEY","SHARE_ID","QUERY_SHARE_ID","RENDER_WISHLIST_WIDGET_ALERT","USE_PROXY_URL","LIMIT_OPTIONS","LOCAL_STORAGE_KEY","INTERNAL_SELECTOR_VALUE","SELECTOR","GLOBAL","ELEMENT_CUSTOM_COMPONENTS","WISHLIST","ELEMENT_BADGE","ELEMENT_BADGE_MENU_ITEM","ELEMENT_TRIGGER","ELEMENT_WIDGET","ELEMENT_BUTTON_DETAIL","PRODUCT_REVIEW","ELEMENT_HAPPY_CUSTOMERS_PAGE","ELEMENT_RATING","ELEMENT_TRUST_BADGE","ELEMENT_STICKY_SIDEBAR_WIDGET","ELEMENT_SNIPPET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED","ELEMENT_RELATED_PRODUCTS","DEFAULT_MAX_WIDTH_COMPONENT","DEFAULT_SEARCH_RESULT_URL","DEFAULT_QUERY_PARAM","OBJECT_DATA_STRING_KEY","ELEMENT_ID","PAYLOAD_API_ALIASES","Authorization","Method","GET","POST","PUT","DELETE","HIERARCHICAL_FACET_OBJECT_ALIASES","collections","product_type","async","swr","url","options","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","open","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","filter","f","includes","c","delete","put","clone","getData","usePrevious","value","ref","React","useRef","useEffect","current","sanitizeDataId","id","getId","String","arrId","length","isFunction","scrollToElement","params","element","headerOffset","offsetPosition","getBoundingClientRect","top","window","scrollY","scrollTo","behavior","fetchApi","authorization","payload","headers","isSimpleRequest","isUploadFile","myHeaders","Headers","append","Object","keys","forEach","key","formdata","FormData","files","map","item","name","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","stripTags","html","replace","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","setOpen","useState","arrowElement","_a","document","querySelector","parentElement","style","display","innerHTML","jsxRuntimeExports","jsxs","PopoverElement.Root","$cb5cc270b50c6fcd$export$be92b6f5f03c0fe9","onOpenChange","children","jsx","PopoverElement.Trigger","$cb5cc270b50c6fcd$export$41fb9f06171c75f4","asChild","PopoverElement.Portal","PopoverElement.Content","$cb5cc270b50c6fcd$export$7c6e2c02157bb7d2","onOpenAutoFocus","onCloseAutoFocus","PopoverElement.Close","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","vendor","PopoverElement.Arrow","Progress","total","fillColor","outlineColor","progress","setProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","min","max","step","setValueCommit","setValueChange","SliderElement.Root","$faa2e61a3361514f$export$be92b6f5f03c0fe9","onValueCommit","valueCommit","onValueChange","valueChange","SliderElement.Track","$faa2e61a3361514f$export$13921ac0cc260818","SliderElement.Range","Tooltip","wrapTrigger","SliderElement.Thumb","Pagination","currentPage","totalPage","totalResult","onChange","pageInfo","pageInfoProp","isDisabledPreviousPage","isDisabledNextPage","setPageInfo","defaultPageInfo","Fragment","replaceAll","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","defaultValue","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","index","RadioGroupElement.Item","$f99a8c78507165f7$export$6d08773d2e66f8f2","RadioGroupElement.Indicator","ColorSwatch","rgb","image","defaultChecked","styles","backgroundImage","backgroundSize","Select","placeholder","SelectElement.Root","SelectElement.Trigger","SelectElement.Value","SelectElement.Icon","SelectElement.Portal","SelectElement.Content","SelectElement.ScrollUpButton","SelectElement.Viewport","$cc7e05a45900e73f$export$d5c6c08dc2d3ca7","SelectItemComponent","SelectElement.ScrollDownButton","forwardRef","forwardedRef","SelectElement.Item","SelectElement.ItemText","SelectElement.ItemIndicator","HeartIcon","ChevronArrowDownIcon","BagIcon","CloseIcon","focusable","SearchIcon","MessageAddIcon","SwapIcon","NoteIcon","Button","buttonRef","colorType","fullWidth","elementType","link","isActive","otherProps","href","SearchInputField","icon","withClearField","onResetField","fieldRef","isVisibleClearField","setIsVisibleClearField","Boolean","e","target","handleChangeField","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","LinkComponent","selectedLabel","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","Badge","useProxyUrl","propsData","position","positionProp","isRenderApp","triggerRenderMultipleComponent","sledgeAnonymId","useContext","SledgeContext","wishlist","isRenderAppWishlist","valueRenderWishlistBadge","triggerRenderWishlistBadge","badge","defaultColorIcon","colorIcon","setColorIcon","totalWishlist","setTotalWishlist","total_data","isFirstLoading","setIsFirstLoading","isLoading","setIsLoading","isMaximizeTotalWishlist","setIsMaximizeTotalWishlist","proxyUrl","setProxyUrl","proxy_url","dataSettings","setDataSettings","isRequiredLogin","setIsRequiredLogin","floating_button_type","launch_point","alert_login","alert","login_button","_b","languages","widget","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","buttonSubmitType","onSubmit","location","LOCAL_STORAGE_WISHLIST_SETTING","parse","is_required_login","handleSettings","HeaderMenu","onMouseEnter","onMouseLeave","FloatingFull","FloatingIcon","BadgeInitSelector","sledgeWishlistSettings","Array","from","querySelectorAll","isElementDetected","isBottomFloatingType","remove","elementContainerWidget","createElement","setAttribute","appendChild","getAttribute","createRoot","render","StrictMode","Provider","productReview","instantSearch","isJsVersion","Trigger","forceActive","onAfterAddWishlist","onAfterRemoveWishlist","wishlistChecked","productId","productVariantId","defaultTypeIcon","activeColorIcon","activeTypeIcon","wishlistCheckedFilled","isWishlisted","typeIcon","setTypeIcon","isWishlist","setIsWishlist","handleFunctions","_setHandleFunctions","isFirstTime","setIsFirstTime","global","show","show_notification","location_notification","_c","notification","title_added_to_wishlist","text_added_to_wishlist","title_removed_to_wishlist","text_removed_to_wishlist","title_fail_add_to_wishlist","text_fail_add_to_wishlist","_d","_e","handleCheckWishlist","variantId","convertId","convertVariantId","queryParams","URLSearchParams","variant_id","toString","checkWishlist","handleClick","resAddWishlist","productName","productVendor","productSku","productVariantName","productLink","productImage","productCurrency","productPrice","product","sku","variant_name","image_url","currency","price","addWishlist","response_data","sledgeWishlistWidgetListUpdate","sledgeWishlistButtonDetailUpdate","sledgeToastNotification","sledgeWishlistTriggerUpdate","WidgetHeader","gap","justifyContent","SkeletonLoading","rounded","Children","count","child","cloneElement","Title","text","display_header_title_color","font_size","display_header_title_font_size","font_weight","display_header_title_font_weight","text_transform","display_header_title_text_transform","header_title","language_header_title","display_header_title_style","fontSize","fontWeight","textTransform","SearchForm","setKeyword","keyword","search_form_placeholder","searchFieldRef","ShareTrigger","wishlistData","buttonText","showShareTrigger","shareLink","shareId","text_color","display_button_share_text_color","border_color","display_button_share_border_color","border_radius","display_button_share_border_radius","padding_top","display_button_share_padding_top","padding_bottom","display_button_share_padding_bottom","padding_left","display_button_share_padding_left","padding_right","display_button_share_padding_right","background_color","display_button_share_background_color","display_button_share_font_size","display_button_share_font_weight","display_button_share_text_transform","button_share","title_share_wishlist","title_confirm_add_to_your_wishlist","text_confirm_add_to_your_wishlist","button_confirm_add_to_your_wishlist","popup","button_add_to_your_wishlist","_f","_g","title_added_all_to_wishlist","text_added_all_to_wishlist","_h","display_button_share_style","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","isLoadingBulkAdd","setIsLoadingBulkAdd","clipboardIcon","handleBulkAddWishlist","resBulkAddWishlist","products","bulkAddWishlist","sledgeInfoPopup","selector","init","customInit","MutationObserver","mutations","mutation","prototype","slice","call","addedNodes","node","nodeType","matches","elementNode","observe","childList","subtree","attributes","characterData","watchElement","running","copyTriggerElement","addEventListener","textContent","navigator","clipboard","writeText","classList","add","getMessage","LoadingDots","ClearTrigger","display_button_clear_all_text_color","display_button_clear_all_border_color","display_button_clear_all_border_radius","display_button_clear_all_padding_top","display_button_clear_all_padding_bottom","display_button_clear_all_padding_left","display_button_clear_all_padding_right","display_button_clear_all_background_color","display_button_clear_all_font_size","display_button_clear_all_font_weight","display_button_clear_all_text_transform","button_clear_all","title_confirm_clear_all_wishlist","text_confirm_clear_all_wishlist","button_submit_confirm_clear_all_wishlist","button_cancel_confirm_clear_all_wishlist","display_button_clear_all_style","sledgeWishlistWidgetClearList","Sort","wishlistSort","selectedSort","setSelectedSort","setIsRefreshWidgetList","generalDataSettings","sort_placeholder","handleChangeSort","Limit","limitOptions","selectedLimit","setSelectedLimit","handleChangeLimit","getReviewInfo","query","Rating","average","size","withSkeletonLoading","withTotal","isScrollToElementWidget","sledgeSettings","withOutlineColor","customComponentId","numberOfIcons","isRenderAppProductReview","valueRenderProductReviewRating","triggerRenderProductReviewRating","rating","initLoading","sizing","setSizing","getSizing","totalReview","setTotalReview","review_count","averageReview","setAverageReview","review","previousState","fill_color","outline_color","unixTimestamp","addMoreTime","addMoreTimeBy","moreTime","Math","floor","now","getUnixTimestamp","handleProductRatingInfo","paramsProductId","isTriggerMultiComponent","valueAverageReview","valueTotalReview","LOCAL_STORAGE_PRODUCT_REVIEW_SETTING","handleRefreshProductRating","getElementById","strokeGradientId","suffixGradientId","offset","fillGradientId","fillOther","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","getFillRating","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","sort_by","language_sort_by","clickedSortId","setClickedSortId","getSelectedSort","AddTrigger","onAfterAddReview","tabIndex","display_button_write_review_text_color","display_button_write_review_border_color","display_button_write_review_border_radius","display_button_write_review_padding_top","display_button_write_review_padding_bottom","display_button_write_review_padding_left","display_button_write_review_padding_right","display_button_write_review_background_color","display_button_write_review_font_size","display_button_write_review_font_weight","display_button_write_review_text_transform","button_write_review","display_button_write_review_style","sledgeProductReviewWidgetFormAdd","Summary","summaryData","display_summary_bar_fill_color","display_summary_bar_outline_color","summary_bar","review_singular","review_plural","isFirstLoadingSummary","setIsFirstLoadingSummary","isRefreshRating","setIsRefreshRating","ratingList","setRatingList","handleProductReviewInfo","valueRatingList","sledgeProductReviewWidgetSummaryUpdate","marginLeft","marginRight","search","sledgeInstantSearchAuthApp","multiSearch","searchTrigger","resultCount","result_count","productClickTrigger","productRecommendationSourceApps","sourceApp","product_id","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","language_button_out_of_stock","display_product_name_style","display_price_style","display_button_add_to_cart_style","handle","admin_graphql_api_id","variant_admin_graphql_api_id","variant_title","defaultSelectedVariantId","defaultSelectedVariantStock","hasOwn","inventory_quantity","selectedVariantId","setSelectedVariantId","selectedVariantStock","setSelectedVariantStock","isLoadingAddToCart","isOutOfStock","Number","component","CardsProps","variant","is_out_of_stock","dangerouslySetInnerHTML","__html","setDefaultFunction","defaultSelected","option1","option2","setSelectedOption","optionName","optionsButton","offsetParent","defaultSelectedClassChanger","button","setSelectedVariant","optionIndex","parentCard","selectedInput","selectOption","imageId","inventoryQuantity","src","entries","images","productClickTrigger$1","alt","loading","onError","currentTarget","onerror","decoding","image2","aspectRatio","image_id","optionAttributes","optionParentIndex","optionValues","selectedOption","defaultOptionClass","colorOptionClass","el","cursor","quantity","ProductGrid","useSlider","onAfterAddToCart","onAfterRenderProduct","redirect_add_to_cart","setClickedAddToCartId","resShopifyAddToCart","push","Shopify","routes","root","shopifyAddToCart","wishlistAddToCartTrigger","instantSearchAddToCartTrigger","productRecommendationAddToCartTrigger","description","Container","Carousel","carouselSourceProp","carouselSourceWidget","CollectionGrid","onAfterRenderCollection","body_html","PageGrid","onAfterRenderPage","BlogGrid","onAfterRenderBlog","created_at","ArticleGrid","onAfterRenderArticle","summary_html","TooltipElement.Provider","delayDuration","TooltipElement.Root","TooltipElement.Trigger","TooltipElement.Portal","$a093c7e1ec25a057$export$602eac185826482c","TooltipElement.Content","TooltipElement.Arrow","ScrollArea","ScrollAreaElement.Root","$57acba87d6e25586$export$be92b6f5f03c0fe9","ScrollAreaElement.Viewport","ScrollAreaElement.Scrollbar","orientation","ScrollAreaElement.Thumb","SkeletonItem","LOCAL_STORAGE_GENERAL_SETTING","skeleton","enable","colors","main_color","background","ReviewGrid","gridItemHeights","components","i","ResponsiveMasonry","MasonryResponsive","columnsCountBreakPoints","Masonry","gutter","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","marginTop","dataGridType","active","setActive","slidesToScroll","dragFree","carouselRef","carouselApi","useEmblaCarousel","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","scrollPrev","useCallback","scrollNext","onSelect","selectedScrollSnap","canScrollPrev","canScrollNext","onInit","scrollSnapList","on","reInit","internalEngine","dragHandler","destroy","carouselAttributes","Navigation","state","_","DotButton","concat","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","languageSettings","ListsProps","hit","title_no_result","toLowerCase","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","view_more_result","SearchResultWidget","layoutType","collectionId","searchParams","settings","get","clickedTabIndexId","setClickedTabIndexId","clickedTabIndexName","setClickedTabIndexName","clickedTabIndexType","setClickedTabIndexType","resultComponent","setResultComponent","ResultProduct","isLoadingSetting","setIsLoadingSetting","allowedSorts","setAllowedSorts","instantsearch","allowed_sorts","allowedFilters","setAllowedFilters","filters","allowedTabs","setAllowedTabs","facets","setFacets","indexProduct","setIndexProduct","index_product","hiddenTags","setHiddenTags","hidden_tags","displaySettings","setDisplaySettings","colorSwatches","setColorSwatches","defaultSort","setDefaultSort","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","setLanguageSettings","_j","hierarchicalProductTypeSettings","setHierarchicalProductTypeSettings","_k","hierarchical_product_type","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","hideFilterWhenOneValue","setHideFilterWhenOneValue","isReplaceWidgetList","setIsReplaceWidgetList","searchResultFacets","setSearchResultFacets","productCardsComponent","collectionCardsComponent","pageCardsComponent","blogCardsComponent","articleCardsComponent","isValidElement","productCard","collectionCard","pageCard","blogCard","articleCard","isRenderAppInstantSearch","valueRenderInstantSearchResult","_l","searchResultContainerRef","handleInitStates","tabs","queries","tab","isSetFilter","getFacets","newItems","otherItem","isProductIndex","isHasProductFacets","additionalFilter","indexUid","q","hitsPerPage","join","results","totalHits","find","facetStats","facetDistribution","hide_when_one_value","fromEntries","facet","LOCAL_STORAGE_INSTANT_SEARCH_SETTING","getFirstIndex","INSTANT_SEARCH_SETTING","delayDebounceFn","filterHorizontalSkeletonComponent","tabSkeleton","filterHorizontalSkeleton","_m","enable_on_search","_n","layout","filterVerticalSkeleton","_o","_p","flexWrap","alignItems","maxWidth","productGridSkeleton","_q","show_total_products","_r","summaryTextSkeleton","searchFieldSkeletonComponent","selectOptionSkeletonComponent","searchAndSelectOptionSkeleton","_s","_t","mobileFilterWithSearchAndSelectOptionSkeleton","_u","_v","containerStyle","ResultCategory","handleChangeTabIndex","_w","_x","collectionName","clickedLimitId","setClickedLimitId","limit","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchFacetDistribution","setSearchFacetDistribution","language_result","language_search_form_placeholder","language_limit","add_to_cart","language_add_to_cart","language_filter","clear_filter","language_clear_filter","pagination_info","language_pagination_info","total_result_text","language_total_result_text","separator","hierarchical_separator","summaryTextGenerator","defaultSummaryText","getSummaryText","isSummaryTextFromLanguage","summaryText","setSummaryText","filter_title_color","filter_title_font_size","filter_title_font_weight","filter_title_text_transform","filter_option_color","filter_option_font_size","filter_option_font_weight","filter_option_text_transform","filter_button_text_color","filter_button_border_color","filter_button_border_radius","filter_button_padding_top","filter_button_padding_bottom","filter_button_padding_left","filter_button_padding_right","filter_button_background_color","filter_button_font_size","filter_button_font_weight","filter_button_text_transform","filter_title_style","filter_option_style","handleQueryStringFilter","valueClickedFacets","searchParamsObject","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","history","pushState","pathname","handleFilterReset","handleFilterChange","parentId","force","isRange","facets2","handleSearchResult","isRefreshPage","onSearch","hierarchicalFacetAliases","hierarchicalFacetAlias","facetHierarchical","reduce","defaultLevelHierarchical","iLevel","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","isArray","arrItem","arrItemHierarchicals","itemHierarchical","filterHierarchical","sort","page","processingTimeMs","totalPages","handleSearchResultData","handleChangeKeyword","set","isRefreshSearchResult","valueAllowedFilter","dataClickedFacets","arrFacetSelected","getName","getAllowedFilterOne","getLabel","facetBlockSelected","valueText","facetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","handleFacetValues","isFacetHierarchical","labelName","getValue","level","counter","isHasFacetSelected","isNoneFacetSelected","isOnFacetSelectedOne","isSelectedFacetWithPrice","isPriorityFacet","handleConditionNotUpdateFacetDistribution","handleFacetCheckbox","facetValues","facetValue","itemValue","isHasChildren","isChecked","defaultValueMin","defaultValueMax","getColorSwatch","filterSettings","indexFilter","indexValue","parentFacets","prepareFacetValues","indexHierarchical","getLevel","otherFacetValue","additionalObject","trim","prepareFacetValue","otherPrepareFacetValue","parentFacet","parentFacetValue","arrValue","handleHierarchicalFacet","isRender","classesUlElement","getFacetComponent","isLastIndex","filterVerticalComponents","valueClickedOpenFilters","findIndex","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","_y","_z","_A","wishlists","reviews","ResultEmpty","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","language_title_no_result","text_no_result","language_text_no_result","suggestionKeywordListsComponent","otherIndexListsComponent","searchViewMoreResultComponent","suggestionKeywordList","otherIndexList","searchViewMoreResult","sledgeInstantSearchIconWidgetPopup","showInfo","setShowInfo","searchResultProduct","setSearchResultProduct","searchResultOther","setSearchResultOther","setDataReviews","suggestionSettings","setSuggestionSettings","suggestionIndex","setSuggestionIndex","setUrlSearchResult","setHandleFunctions","handleMultiSearch","withFetchReviewInfo","suggestion","valueSearchResultProduct","valueSearchResultOther","getValueSearchResultProduct","valueSuggestionIndex","dataSearchResultProduct","list","searchResultProductIds","valueDataReviews","ids","convertIds","v","getProductsReviewInfo","Dialog.Root","Dialog.Portal","$5d3850c4d0b4e6c7$export$602eac185826482c","Dialog.Overlay","$5d3850c4d0b4e6c7$export$c6fdb837b070b4ff","Dialog.Content","$5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2","onKeyDown","event","urlToSearchResult","flexDirection","showSearchResult","setShowSearchResult","isPriorityZeroCharacter","wrapperStyle","onFocus"],"mappings":"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"}