@sledge-app/react-instant-search 1.0.28 → 1.0.29

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/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","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/lib/helper.ts","../../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/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 }\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 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 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 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 LIMIT_TO_DISPLAY: 'data-limit-to-display',\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_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_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`\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_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed-widget\"]`\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};\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","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 [value, setValue] = React.useState(defaultValue);\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n defaultValue={defaultValue}\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 && setValueCommit(valueCommit);\n setValue(valueCommit);\n }}\n onValueChange={(valueChange: number[]) => {\n setValueChange && setValueChange(valueChange);\n setValue(valueChange);\n }}\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 <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 </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","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","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\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: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\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 } = dataSettings?.languages?.notification || {};\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: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\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: 'Failed',\n message: 'failed add to wishlist',\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, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\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 } = dataSettings?.languages?.popup || {};\n const { button_share } = dataSettings?.languages?.widget || {};\n const { title_added_all_to_wishlist, text_added_all_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 textCancel: 'Cancel'\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: 'Failed',\n message: 'Failed add to wishlist, please try again',\n textCancel: 'Cancel'\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 if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: 'Are you sure want to add this to your wishlist item?',\n message: `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: 'Add to your wishlist',\n textCancel: 'Cancel',\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 textCancel: 'Cancel'\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 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 textCancel: button_cancel_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}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderSortProps) => {\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 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=\"- Select -\"\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const 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 { 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 let ratingValue = Math.floor(parseFloat(averageReview));\n\n let getCommaValue = String(averageReview).includes(',') ? String(averageReview).split(',') : [];\n let getCommaValueDot = String(averageReview).includes('.') ? String(averageReview).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 <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\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=\"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 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';\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 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' | 'product-recommendation' | 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 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 sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\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 src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" className=\"sledge__product-grid-card-image-featured-image\" />\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\">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 sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\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>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 }\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: React.ElementType = useSlider ? Carousel : 'div';\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} 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';\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\" dangerouslySetInnerHTML={{ __html: 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';\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\" dangerouslySetInnerHTML={{ __html: 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 } 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\" dangerouslySetInnerHTML={{ __html: 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 useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\ntype CarouselPropType = {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: string;\n};\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n active,\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\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\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\" ref={carouselRef}>\n <div className=\"sledge__carousel-container sledge__product-grid\" data-grid-type={dataGridType}>\n {children}\n </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>\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","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 items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n name?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, 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\">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}: {\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}) => {\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 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 } 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 }\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 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 defaultFacetDistribution?: 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 }\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}\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 [defaultFacetDistribution, setDefaultFacetDistribution] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\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 setDefaultFacetDistribution(facetDistribution);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\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 isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n defaultFacetDistribution,\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 })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n defaultFacetDistribution,\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 } = props || {};\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isOpenSort, setIsOpenSort] = React.useState(false);\n const [isOpenLimit, setIsOpenLimit] = React.useState(false);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedSortName, setClickedSortName] = React.useState<string>(allowedSorts && Boolean(allowedSorts?.length) ? allowedSorts.find(({ value }: any) => value === defaultSort)?.label : '');\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 [isFilterChanged, setIsFilterChanged] = React.useState(false);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n\n const summaryTextGenerator = () => {\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\">\n {totalSearchResult} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n ) : null}\n </div>\n );\n };\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator() : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedFacets });\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 {\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 } = languageSettings || {};\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 setIsOpenSort(false);\n setClickedSortName(label);\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setIsOpenLimit(false);\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 setIsFilterChanged(true);\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleFilterChange = (parentId: string, value: any, force = false) => {\n setIsFilterChanged(true);\n\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 setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\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 setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\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\">\n {totalHits} {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 </span>\n ) : null}\n </div>\n );\n setSearchResultFacets(\n defaultFacetDistribution\n ? Object.fromEntries(\n Object.entries(defaultFacetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n let inStock = Object.keys(defaultFacetDistribution[value]).map((item) => {\n return Boolean(Number(item)) ? defaultFacetDistribution[value][item] : 0;\n });\n\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(defaultFacetDistribution[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 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\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, currentPage, clickedTabIndexId, collectionId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\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 facetComponent = (filter: any) => {\n const { value, label, display } = filter;\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) => handleFilterChange(value, valueCommit)}\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\">{valueFilterPriceChange[0] || items?.min}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[1] || items?.max}</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\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}${item.total !== undefined && isShowNumberMatchingProduct ? ` (${item.total})` : ''}`}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n checked={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, total } = item;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[value] || languageSettings[name])) labelName = languageSettings[value] || languageSettings[name];\n\n return {\n label: `${labelName} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: 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) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[value] || languageSettings[name])) labelName = languageSettings[value] || languageSettings[name];\n\n return {\n label: `${labelName} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: 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) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={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 let isNotRerender = ['select'].includes(display.toLowerCase()) && 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(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</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 let isNotRerender = ['radio', 'select'].includes(display.toLowerCase()) && 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={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\">\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n }\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 let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const 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 || '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 }}\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 isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n setKeyword,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings\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 });\n\n const { pagination_info: language_pagination_info } = languageSettings || {};\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 setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n </div>\n );\n };\n\n const handleSearchResult = async () => {\n if (!clickedTabIndexId) return;\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: 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\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, currentPage, 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={`Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`}\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 { 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 [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 } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\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 } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\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=\"Search anything...\"\n value={keyword}\n fieldRef={searchFieldRef}\n onChange={({ value }: any) => setKeyword(value)}\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 } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\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 }}\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 }}\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\">Products</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No product were found</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 />\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 { 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\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 } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\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 if (!keyword.length) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n 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=\"Search anything\"\n value={keyword}\n onChange={({ value }: any) => setKeyword(value)}\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 } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists listsComponent={otherIndexListsComponent} name={name} items={hits} isComponentJsVersion={isJsVersion} />\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\">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 }}\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 }}\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\">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 />\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_STICKY_SIDEBAR_WIDGET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED_WIDGET","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","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","open","setOpen","React","useState","useEffect","arrowElement","_a","document","querySelector","parentElement","length","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","value","total","fillColor","outlineColor","progress","setProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","id","name","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","defaultValue","min","max","step","setValueCommit","setValueChange","setValue","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","String","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","map","item","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","ref","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","current","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","options","LinkComponent","selectedLabel","filter","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","replace","async","swr","url","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","f","includes","c","delete","put","clone","getData","usePrevious","useRef","sanitizeDataId","getId","arrId","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","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","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","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","_b","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","textCancel","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","_d","languages","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","widget","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","_e","popup","_f","title_added_all_to_wishlist","text_added_all_to_wishlist","_g","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","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","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","offset","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","fillOther","suffixGradientId","strokeGradientId","fillGradientId","stopColor","stroke","strokeWidth","isFirstLoadingHeader","productReviewSort","default_sort","show_sorting_options","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","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","sourceApp","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","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","instantSearchProductClickTrigger","alt","loading","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","description","Container","Carousel","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","scrollPrev","useCallback","scrollNext","onSelect","canScrollPrev","canScrollNext","on","Navigation","state","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","ListsProps","hit","toLowerCase","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","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","_h","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","languageSettings","setLanguageSettings","_j","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","defaultFacetDistribution","setDefaultFacetDistribution","hideFilterWhenOneValue","setHideFilterWhenOneValue","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","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","isOpenSort","setIsOpenSort","isOpenLimit","setIsOpenLimit","clickedSortName","setClickedSortName","clickedLimitId","setClickedLimitId","limit","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","isFilterChanged","setIsFilterChanged","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchResultFacets","setSearchResultFacets","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","sort_by","language_sort_by","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","filter_title_style","filter_option_style","handleQueryStringFilter","valueClickedFacets","searchParamsObject","fromEntries","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","history","pushState","pathname","handleFilterReset","handleFilterChange","parentId","force","isRange","facet","facets2","handleSearchResult","isRefreshPage","onSearch","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","isArray","sort","page","processingTimeMs","totalPages","handleSearchResultData","handleChangeKeyword","set","isRefreshSearchResult","valueAllowedFilter","facetBlockSelected","valueText","facetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","defaultValueMin","defaultValueMax","labelName","currentTarget","getValue","getColorSwatch","filterVerticalComponents","indexFilter","isRender","isNotRerender","classesUlElement","getFacetComponent","valueClickedOpenFilters","findIndex","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","isLastIndex","dataClickedFacets","getName","getAllowedFilterOne","getLabel","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","_x","_y","_z","_A","_B","wishlists","reviews","ResultEmpty","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","title_no_result","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","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/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","../../../core/lib/swr.ts","../../../core/hooks/usePrevious.ts","../../../core/lib/helper.ts","../../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/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 }\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 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 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 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 LIMIT_TO_DISPLAY: 'data-limit-to-display',\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_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_STICKY_SIDEBAR_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-review-sticky-sidebar-widget\"]`\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_WIDGET: `[${SELECTOR_ATTRIBUTE_KEY}=\"product-recommendation-recently-viewed-widget\"]`\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};\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","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 [value, setValue] = React.useState(defaultValue);\n\n return (\n <form>\n <SliderElement.Root\n className=\"sledge__SliderRoot\"\n defaultValue={defaultValue}\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 && setValueCommit(valueCommit);\n setValue(valueCommit);\n }}\n onValueChange={(valueChange: number[]) => {\n setValueChange && setValueChange(valueChange);\n setValue(valueChange);\n }}\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 <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 </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","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","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\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: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\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\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: 'Login required!',\n message: 'Please login to save your wishlist across devices.',\n textSubmit: 'Login',\n textCancel: 'Cancel',\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',\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, LoadingDots, SkeletonLoading } from '@core/components';\nimport { SledgeContext, ISledgeContext } from '@sledge-app/core';\nimport { BadgeInitSelector } from '@react-wishlist/components';\nimport { watchElement } from '@core/lib/helper';\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 } = dataSettings?.languages?.popup || {};\n const { button_share } = dataSettings?.languages?.widget || {};\n const { title_added_all_to_wishlist, text_added_all_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 textCancel: 'Cancel'\n });\n }\n\n setIsLoadingBulkAdd(false);\n } else {\n if (typeof window !== 'undefined' && window.sledgeInfoPopup)\n window.sledgeInfoPopup({\n title: 'Failed',\n message: 'Failed add to wishlist, please try again',\n textCancel: 'Cancel'\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 if (shareId && wishlistData.length) {\n window.sledgeConfirmationPopup({\n title: 'Are you sure want to add this to your wishlist item?',\n message: `This action cannot be undone. This will adding <strong>${wishlistData.length}</strong> item to your wishlist page.`,\n textSubmit: 'Add to your wishlist',\n textCancel: 'Cancel',\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 textCancel: 'Cancel'\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 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 textCancel: button_cancel_confirm_clear_all_wishlist,\n buttonSubmitType: 'danger',\n onSubmit: window.sledgeWishlistWidgetClearList || {}\n });\n };\n\n return (\n <>\n {!isRequiredLogin && (\n <>\n {!shareId && (\n <>\n {isFirstLoading ? (\n <SkeletonLoading.Item width=\"132px\" height=\"46px\" color=\"lighten\" rounded=\"md\" />\n ) : (\n <div className=\"sledge-wishlist__widget-header-item\">\n <Button type=\"button\" colorType=\"danger\" onClick={handleClick} style={display_button_clear_all_style}>\n {buttonText ? buttonText : button_clear_all || 'Clear Wishlist'}\n </Button>\n </div>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderSortProps {\n wishlistSort?: any;\n selectedSort?: string;\n setSelectedSort?(value: React.SetStateAction<string>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n generalDataSettings?: any;\n}\n\nexport const WidgetHeaderSort = ({ wishlistSort, selectedSort, setSelectedSort, setIsRefreshWidgetList, dataSettings, generalDataSettings }: IWidgetHeaderSortProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const { sort_placeholder } = generalDataSettings?.languages || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeSort = (value: string) => {\n setSelectedSort && setSelectedSort(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {wishlistSort && Boolean(wishlistSort?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={wishlistSort.map((item: any) => {\n const { name, value } = item;\n return {\n label: name,\n value: value\n };\n })}\n value={selectedSort}\n onChange={({ value }: any) => handleChangeSort(value)}\n placeholder={sort_placeholder || '- Select -'}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import React from 'react';\nimport { SelectField } from '@core/components';\nimport { ISledgeContext, SledgeContext } from '@sledge-app/core';\n\nexport interface IWidgetHeaderLimitProps {\n limitOptions?: string[] | number[];\n selectedLimit?: string;\n setSelectedLimit?(value: React.SetStateAction<string | number>): void;\n setIsRefreshWidgetList?(value: React.SetStateAction<boolean>): void;\n dataSettings?: any;\n}\n\nexport const WidgetHeaderLimit = ({ limitOptions, selectedLimit, setSelectedLimit, setIsRefreshWidgetList, dataSettings }: IWidgetHeaderLimitProps) => {\n const { sledgeAnonymId } = React.useContext<ISledgeContext>(SledgeContext);\n\n const { is_required_login } = dataSettings?.display?.global || {};\n\n const [isRequiredLogin, setIsRequiredLogin] = React.useState(false);\n\n const handleChangeLimit = (value: string | number) => {\n setSelectedLimit && setSelectedLimit(value);\n setIsRefreshWidgetList && setIsRefreshWidgetList(true);\n };\n\n React.useEffect(() => {\n setIsRequiredLogin(sledgeAnonymId && is_required_login);\n }, [sledgeAnonymId]);\n\n return (\n <>\n {!isRequiredLogin ? (\n <>\n {limitOptions && Boolean(limitOptions?.length) && (\n <div className=\"sledge-wishlist__widget-header-item\">\n <SelectField\n align=\"end\"\n options={limitOptions.map((item: any) => {\n return {\n label: item,\n value: item\n };\n })}\n value={selectedLimit || limitOptions[0]}\n onChange={({ value }: any) => handleChangeLimit(value)}\n />\n </div>\n )}\n </>\n ) : null}\n </>\n );\n};\n","import { API_URL, LOCAL_STORAGE_KEY, PAYLOAD_API_ALIASES } from '@core/lib/const';\nimport { fetchApi, sanitizeDataId } from '@core/lib/helper';\n\nexport const getReview: any = async ({ productId = null, query = null, token = '', ignoreSWR }: { productId?: any; query?: any; token?: string; ignoreSWR?: boolean }) => {\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = token ? token : typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false,\n ignoreSWR\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const getReviewInfo: any = async (props: { productId?: any; query?: any }) => {\n const { productId = null, query = null } = props || {};\n\n let convertId = productId ? sanitizeDataId(productId) : '';\n let sledgeAuthApp = typeof localStorage !== 'undefined' ? localStorage.getItem(LOCAL_STORAGE_KEY.AUTH_APP) || '' : '';\n\n let queryParams =\n '?' +\n new URLSearchParams({\n [PAYLOAD_API_ALIASES.Authorization]: sledgeAuthApp,\n ...query\n }).toString();\n\n let url = `${API_URL}/review/info/${convertId}${queryParams}`;\n\n return await fetchApi({\n url,\n method: 'GET',\n authorization: sledgeAuthApp,\n isSimpleRequest: false\n })\n .then((result) => {\n return result;\n })\n .catch(() => {\n return;\n });\n};\n\nexport const 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 { 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 let ratingValue = Math.floor(parseFloat(averageReview));\n\n let getCommaValue = String(averageReview).includes(',') ? String(averageReview).split(',') : [];\n let getCommaValueDot = String(averageReview).includes('.') ? String(averageReview).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 <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 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';\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 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' | 'product-recommendation' | 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 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 sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\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 src={image?.src || `${CDN_URL}/images/blank-image.png`} alt=\"sledge-card-image\" loading=\"lazy\" className=\"sledge__product-grid-card-image-featured-image\" />\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\">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 sourceApp === 'instant-search' &&\n instantSearchProductClickTrigger({\n productId: id\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>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 }\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: React.ElementType = useSlider ? Carousel : 'div';\n\n React.useEffect(() => {\n onAfterRenderProduct && onAfterRenderProduct('success');\n }, []);\n\n return (\n <Container className={`sledge__product-grid ${className}`} 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';\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\" dangerouslySetInnerHTML={{ __html: 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';\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\" dangerouslySetInnerHTML={{ __html: 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 } 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\" dangerouslySetInnerHTML={{ __html: 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 useEmblaCarousel, { EmblaOptionsType as CarouselOptionsType, EmblaCarouselType as CarouselType } from 'embla-carousel-react';\nimport './Carousel.css';\n\ntype CarouselPropType = {\n options?: CarouselOptionsType;\n children: React.ReactNode[];\n className?: string;\n 'data-grid-type'?: string;\n};\n\nexport const Carousel = (props: CarouselPropType) => {\n const { children, className = '', 'data-grid-type': dataGridType } = props;\n const [active, setActive] = React.useState<boolean>(true);\n\n const {\n options = {\n active,\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\n const scrollPrev = React.useCallback(() => carouselApi && carouselApi.scrollPrev(), [carouselApi]);\n const scrollNext = React.useCallback(() => carouselApi && carouselApi.scrollNext(), [carouselApi]);\n\n const onSelect = React.useCallback((carouselApi: CarouselType) => {\n setPrevBtnDisabled(!carouselApi.canScrollPrev());\n setNextBtnDisabled(!carouselApi.canScrollNext());\n }, []);\n\n React.useEffect(() => {\n if (!carouselApi) return;\n\n if (prevBtnDisabled && nextBtnDisabled) setActive(false);\n else setActive(true);\n }, [carouselApi, prevBtnDisabled, nextBtnDisabled]);\n\n React.useEffect(() => {\n if (!carouselApi) return;\n\n onSelect(carouselApi);\n\n carouselApi.on('reInit', onSelect);\n carouselApi.on('select', onSelect);\n }, [carouselApi, onSelect]);\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\" ref={carouselRef}>\n <div className=\"sledge__carousel-container sledge__product-grid\" data-grid-type={dataGridType}>\n {children}\n </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>\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","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 items,\n isComponentJsVersion,\n showPopupComponent,\n setShowPopupComponent\n}: {\n listsComponent?: any;\n name?: string;\n items?: any[];\n isComponentJsVersion?: any;\n showPopupComponent?: boolean;\n setShowPopupComponent?(value: boolean): void;\n}) => {\n if (ListsComponent) {\n const ListsProps = { name, 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\">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}: {\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}) => {\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 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 } 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 }\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 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 defaultFacetDistribution?: 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 }\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}\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 [defaultFacetDistribution, setDefaultFacetDistribution] = React.useState({});\n const [hideFilterWhenOneValue, setHideFilterWhenOneValue] = React.useState(false);\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 setDefaultFacetDistribution(facetDistribution);\n setHideFilterWhenOneValue(display?.filter?.hide_when_one_value && totalHits <= 1);\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 isLoading,\n keyword,\n clickedTabIndexId,\n clickedTabIndexName,\n clickedTabIndexType,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n defaultFacetDistribution,\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 })\n )}\n </div>\n );\n};\n\nconst ResultProduct = (props: IResultProps) => {\n const {\n keyword,\n clickedTabIndexId,\n isLoadingSetting,\n allowedSorts,\n allowedFilters,\n facets,\n defaultFacetStats,\n defaultFacetDistribution,\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 } = props || {};\n const queryKeyword = query?.keyword ? query.keyword : DEFAULT_QUERY_PARAM.KEYWORD;\n const { collectionId } = params || {};\n\n const [isFirstLoading, setIsFirstLoading] = React.useState(!propsData);\n const [isLoading, setIsLoading] = React.useState(!propsData);\n const [isOpenSort, setIsOpenSort] = React.useState(false);\n const [isOpenLimit, setIsOpenLimit] = React.useState(false);\n const [clickedSortId, setClickedSortId] = React.useState<string>(defaultSort || '');\n const [clickedSortName, setClickedSortName] = React.useState<string>(allowedSorts && Boolean(allowedSorts?.length) ? allowedSorts.find(({ value }: any) => value === defaultSort)?.label : '');\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 [isFilterChanged, setIsFilterChanged] = React.useState(false);\n const [handleSearchResultFirstTime, setHandleSearchResultFirstTime] = React.useState(true);\n const [searchResultFacets, setSearchResultFacets] = React.useState<any>({});\n\n const summaryTextGenerator = () => {\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\">\n {totalSearchResult} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n ) : null}\n </div>\n );\n };\n const [summaryText, setSummaryText] = React.useState<React.ReactNode>(propsData ? summaryTextGenerator() : null);\n\n const previousState: any = usePrevious({ keyword, clickedLimitId, clickedFacets });\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 {\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 } = languageSettings || {};\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 setIsOpenSort(false);\n setClickedSortName(label);\n setClickedSortId(value);\n };\n\n const handleChangeLimit = (value: string) => {\n setIsOpenLimit(false);\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 setIsFilterChanged(true);\n setClickedFacets({});\n setTriggerClickedFacets(!triggerClickedFacets);\n handleQueryStringFilter({});\n setValueFilterPriceChange([]);\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\n };\n\n const handleFilterChange = (parentId: string, value: any, force = false) => {\n setIsFilterChanged(true);\n\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 setClickedFacets(valueClickedFacets);\n setTriggerClickedFacets(!triggerClickedFacets);\n\n setTimeout(() => {\n setIsFilterChanged(false);\n }, 10);\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 setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\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\">\n {totalHits} {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 </span>\n ) : null}\n </div>\n );\n setSearchResultFacets(\n defaultFacetDistribution\n ? Object.fromEntries(\n Object.entries(defaultFacetDistribution).map((facet) => {\n let value = facet[0];\n let items: any = [];\n\n if (value === 'variants.inventory_quantity') {\n let inStock = Object.keys(defaultFacetDistribution[value]).map((item) => {\n return Boolean(Number(item)) ? defaultFacetDistribution[value][item] : 0;\n });\n\n items = [\n {\n name: 'In Stock',\n value: '> 0'\n }\n ];\n } else {\n items = Object.keys(defaultFacetDistribution[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 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\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, currentPage, clickedTabIndexId, collectionId]);\n\n React.useEffect(() => {\n handleAllowedFilter();\n }, [allowedFilters, searchResultFacets, totalSearchResult]);\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 facetComponent = (filter: any) => {\n const { value, label, display } = filter;\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) => handleFilterChange(value, valueCommit)}\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\">{valueFilterPriceChange[0] || items?.min}</div>\n <div className=\"sledge-instant-search__result-filter-minmax-field\">{valueFilterPriceChange[1] || items?.max}</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\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}${item.total !== undefined && isShowNumberMatchingProduct ? ` (${item.total})` : ''}`}\n onClick={(e) => handleFilterChange(value, e.currentTarget.value)}\n checked={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, total } = item;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[value] || languageSettings[name])) labelName = languageSettings[value] || languageSettings[name];\n\n return {\n label: `${labelName} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: 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) => handleFilterChange(value, getValue, true)}\n items={items?.map((item: any) => {\n const { name, value, total } = item;\n\n let labelName = name;\n\n if (languageSettings && (languageSettings[value] || languageSettings[name])) labelName = languageSettings[value] || languageSettings[name];\n\n return {\n label: `${labelName} ${total !== undefined && isShowNumberMatchingProduct ? ` (${total})` : ''}`,\n value: 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) => handleFilterChange(value, e.currentTarget.value)}\n defaultChecked={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 let isNotRerender = ['select'].includes(display.toLowerCase()) && 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(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</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 let isNotRerender = ['radio', 'select'].includes(display.toLowerCase()) && 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={\n <div className=\"sledge-instant-search__result-filter-horizontal-facet\">\n {isActive && <ul className={classesUlElement.join(' ')}>{isNotRerender ? getFacetComponent : !isFilterChanged ? getFacetComponent : null}</ul>}\n </div>\n }\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 let dataClickedFacets: any[] = [];\n Object.entries(clickedFacets).map((facet: any) => {\n if (facet?.length && facet[1].length) {\n let getName = facet[0];\n let isAdditionalFilter = ['variants.inventory_quantity'].includes(getName);\n\n if (isAdditionalFilter) return;\n\n let isRange = ['variants.price'].includes(getName);\n let getAllowedFilterOne: any = allowedFilter.filter(({ value }: any) => value?.includes(getName));\n let getLabel = getAllowedFilterOne?.length ? getAllowedFilterOne[0].label : getName;\n\n let items =\n Array.isArray(facet[1]) && facet[1]?.length > 1\n ? isRange\n ? dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1]\n })\n : facet[1]?.map((item: any) => {\n dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: item\n });\n })\n : dataClickedFacets.push({\n label: getLabel,\n name: getName,\n value: facet[1][0]\n });\n\n return items;\n }\n });\n\n const 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 || '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 }}\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 isJsVersion,\n collectionCardsComponent,\n pageCardsComponent,\n blogCardsComponent,\n articleCardsComponent,\n setKeyword,\n searchResultContainerRef,\n onAfterRenderCollection,\n onAfterRenderPage,\n onAfterRenderBlog,\n onAfterRenderArticle,\n languageSettings\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 });\n\n const { pagination_info: language_pagination_info } = languageSettings || {};\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 setSearchResult(hits);\n setSearchProcessingTimeMs(processingTimeMs || 0);\n setTotalPage(totalPages);\n setTotalSearchResult(totalHits || 0);\n setSummaryText(\n <div className=\"sledge-instant-search__result-data-summary-item\">\n <span className=\"sledge-instant-search__result-data-summary-text\">\n {totalHits} result{' '}\n {keyword?.length ? (\n <>\n for <span className=\"sledge-instant-search__result-data-summary-text-keyword\">\"{keyword}\"</span>\n </>\n ) : null}\n </span>\n </div>\n );\n };\n\n const handleSearchResult = async () => {\n if (!clickedTabIndexId) return;\n\n setIsLoading(true);\n\n let response: any;\n let body = {\n q: keyword,\n sort: clickedSortId ? [clickedSortId] : [],\n page: 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\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, currentPage, 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={`Search ${clickedTabIndexName ? clickedTabIndexName.toLowerCase() : ''}...`}\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 [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 } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\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 } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\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=\"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 trigger enter key on headless\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 } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists\n listsComponent={handleFunctions.otherIndexListsComponent}\n name={name}\n items={hits}\n isComponentJsVersion={handleFunctions.isJsVersion}\n showPopupComponent={showInfo}\n setShowPopupComponent={setShowInfo}\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 }}\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 }}\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\">Products</div>\n <div className=\"sledge-instant-search__icon-widget-search-form-result-item-disabled\">No product were found</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 />\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\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 } = tabs?.find(({ index }: any) => index.includes(indexUid));\n\n return {\n ...result,\n ...{\n name: name || ''\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 if (!keyword.length) return;\n\n let response: any;\n\n response = JSON.parse(LOCAL_STORAGE_INSTANT_SEARCH_SETTING);\n\n if (!response) return;\n\n const { display } = response;\n\n setDisplaySettings(display);\n setSuggestionSettings(display?.search?.suggestion);\n\n 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=\"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 trigger enter key on headless\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 } = item;\n\n return (\n <React.Fragment key={index}>\n <Global.OtherIndexLists listsComponent={otherIndexListsComponent} name={name} items={hits} isComponentJsVersion={isJsVersion} />\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\">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 }}\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 }}\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\">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 />\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_STICKY_SIDEBAR_WIDGET","INSTANT_SEARCH","ELEMENT_SEARCH_WIDGET","ELEMENT_SEARCH_ICON_WIDGET","ELEMENT_SEARCH_RESULT_WIDGET","ELEMENT_PLP_WIDGET","PRODUCT_RECOMMENDATION","ELEMENT_RECENTLY_VIEWED_WIDGET","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","Popover","trigger","content","isOpen","setIsOpen","hideCloseIcon","align","className","withOpenState","withArrow","customArrow","sideOffset","alignOffset","open","setOpen","React","useState","useEffect","arrowElement","_a","document","querySelector","parentElement","length","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","value","total","fillColor","outlineColor","progress","setProgress","timer","setTimeout","clearTimeout","ProgressElement.Root","$67824d98245208a0$export$be92b6f5f03c0fe9","borderWidth","borderStyle","borderColor","ProgressElement.Indicator","$67824d98245208a0$export$adb584737d712b70","transform","backgroundColor","Checkbox","id","name","required","label","checked","labelStyle","onClick","CheckboxElement.Root","$e698a72e93240346$export$be92b6f5f03c0fe9","CheckboxElement.Indicator","htmlFor","Slider","props","defaultValue","min","max","step","setValueCommit","setValueChange","setValue","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","String","type","disabled","ChevronArrowLeftIcon","color","ChevronArrowRightIcon","RadioGroup","items","RadioGroupElement.Root","$f99a8c78507165f7$export$be92b6f5f03c0fe9","map","item","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","ref","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","current","focus","ROTATE_FILTER_ARROW_ANIMATION","rotate","closed","transition","duration","VISIBLE_ANIMATION","hidden","opacity","scale","visible","custom","SelectField","prefixLabel","prefixSelectedLabel","options","LinkComponent","selectedLabel","filter","optionValue","motion","div","initial","animate","variants","option","Item","scroll","to","replace","async","swr","url","localStorage","caches","method","ignoreSWR","fetch","then","response","json","data","cacheName","cache","match","cachedResponse","fetchedResponse","networkResponse","mainUrl","split","cacheMatches","matchAll","filteredCaches","f","includes","c","delete","put","clone","getData","usePrevious","useRef","sanitizeDataId","getId","arrId","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","fixMethod","requestOptions","redirect","body","JSON","stringify","convertDate","date","timeZone","year","month","day","Date","toLocaleString","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","defaultPosition","handleGetWishlistInfo","valueTotalWishlist","valueProxyUrl","run","token","sledgeAuthApp","getItem","result","catch","getWishlistInfo","status","code","_b","handleRequiredLogin","preventDefault","stopPropagation","sledgeConfirmationPopup","title","message","textSubmit","textCancel","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","languages","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","widget","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","_e","popup","_f","title_added_all_to_wishlist","text_added_all_to_wishlist","_g","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","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","offset","ratingValue","parseFloat","getCommaValue","getCommaValueDot","commaValue","fillOther","suffixGradientId","strokeGradientId","fillGradientId","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","ProductCard","handleAddToCart","clickedAddToCartId","setting","showOptionOutOfStock","triggerPropAdditional","sourceApp","isComponentJsVersion","cards","CardsComponent","showPopupComponent","setShowPopupComponent","dataReviews","dataWishlists","show_vendor","show_sku","show_price","show_add_to_cart","language_button_add_to_cart","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","instantSearchProductClickTrigger","alt","loading","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","description","Container","Carousel","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","scrollPrev","useCallback","scrollNext","onSelect","canScrollPrev","canScrollNext","on","Navigation","state","restProps","LeftIcon","RightIcon","Icon","Global","listsComponent","ListsComponent","ListsProps","hit","toLowerCase","keywords","urlSearchResult","triggerRenderInstantSearchResult","searchResult","setRenderSearchResult","queryKeyword","Component","ComponentProps","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","_h","showOutOfStock","setShowOutOfStock","_i","show_out_of_stock","languageSettings","setLanguageSettings","_j","initStatesFirstTime","setInitStatesFirstTime","defaultFacetStats","setDefaultFacetStats","defaultFacetDistribution","setDefaultFacetDistribution","hideFilterWhenOneValue","setHideFilterWhenOneValue","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","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","isOpenSort","setIsOpenSort","isOpenLimit","setIsOpenLimit","clickedSortName","setClickedSortName","clickedLimitId","setClickedLimitId","limit","clickedOpenFilterId","setClickedOpenFilterId","clickedOpenFilters","setClickedOpenFilters","clickedFacets","setClickedFacets","triggerClickedFacets","setTriggerClickedFacets","setSearchResult","hits","searchProcessingTimeMs","setSearchProcessingTimeMs","setCurrentPage","setTotalPage","totalSearchResult","setTotalSearchResult","valueFilterPriceChange","setValueFilterPriceChange","allowedFilter","setAllowedFilter","isFilterChanged","setIsFilterChanged","handleSearchResultFirstTime","setHandleSearchResultFirstTime","searchResultFacets","setSearchResultFacets","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","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","filter_title_style","filter_option_style","handleQueryStringFilter","valueClickedFacets","searchParamsObject","fromEntries","otherQueryStringObject","searchParamsKey","valueClickedFacetsKey","newQueryString","history","pushState","pathname","handleFilterReset","handleFilterChange","parentId","force","isRange","facet","facets2","handleSearchResult","isRefreshPage","onSearch","detectClickedFacets","facetsQueryStringObject","detectQueryStringFilter","isCustom","isArray","sort","page","processingTimeMs","totalPages","handleSearchResultData","handleChangeKeyword","set","isRefreshSearchResult","valueAllowedFilter","facetBlockSelected","valueText","facetComponent","blockComponent","isShowNumberMatchingProduct","show_number_matching_product","defaultValueMin","defaultValueMax","labelName","currentTarget","getValue","getColorSwatch","filterVerticalComponents","indexFilter","isRender","isNotRerender","classesUlElement","getFacetComponent","valueClickedOpenFilters","findIndex","indexOf","splice","handleOpenFilterVertical","filterHorizontalComponents","isLastIndex","dataClickedFacets","getName","getAllowedFilterOne","getLabel","paginationComponent","handlePageChange","filterHorizontalBlockComponent","show_refine_by_block","itemClickedFacet","allowed_limit","_x","_y","_z","_A","_B","wishlists","reviews","ResultEmpty","searchKeywordComponent","skeletonLoadingComponent","ProvideElementFirstLoading","ProvideElementLoading","ProvideElement","elementProps","title_no_result","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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"}