@anker-in/headless-ui 1.0.19-temp-101703 → 1.0.19-temp-101705

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,2 +1,2 @@
1
- "use strict";var V=Object.create;var b=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,Q=Object.prototype.hasOwnProperty;var Z=(n,r)=>{for(var d in r)b(n,d,{get:r[d],enumerable:!0})},D=(n,r,d,v)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of E(r))!Q.call(n,u)&&u!==d&&b(n,u,{get:()=>r[u],enumerable:!(v=Y(r,u))||v.enumerable});return n};var G=(n,r,d)=>(d=n!=null?V(H(n)):{},D(r||!n||!n.__esModule?b(d,"default",{value:n,enumerable:!0}):d,n)),J=n=>D(b({},"__esModule",{value:!0}),n);var X={};Z(X,{default:()=>U});module.exports=J(X);var o=require("react/jsx-runtime"),C=require("../../helpers/utils.js"),L=require("react-responsive"),R=G(require("./FilterCardWrapItem")),l=require("react"),M=require("es-toolkit");const K=(n,r)=>{const{shopifyData:d={},isSale:v=!1,total:u,result:i,closeFilter:w,page:y,metafields:S,noResultNode:j,refreshStarRating:T,onPrimaryChange:W,onSecondaryChange:z,onNextPage:P,onPrevPage:B}=n,{advertisingSpace:k}=S,{buttonText:q,loadMoreText:A}=d,h=k||d?.advertisingSpace,F=(0,l.useRef)(null),[g,x]=(0,l.useState)([]),c=(0,L.useMediaQuery)({query:"(max-width: 1024px)"}),I=a=>{const e=(0,M.cloneDeep)(a||[]);if(h){const t=e.findIndex(m=>m.mImage);if(t===-1){const m=Math.min(w?h?.maxLocation||7:h?.minLocation||5,e.length);e.splice(m,0,h)}else{e.splice(t,1);const m=Math.min(w?h?.maxLocation||7:h?.minLocation||5,e.length);e.splice(m,0,h)}}return e};(0,l.useImperativeHandle)(r,()=>({clearData(){x([])}}));const N=()=>{const a=F.current;if(!a)return;const e=a.getBoundingClientRect()?.top+window?.pageYOffset-120;window?.scrollTo?.({top:e,behavior:"smooth"})},O=a=>a?.metafields?.seoSetting?.noindex;return(0,l.useEffect)(()=>{(i?.slug||i?.id)&&((y===1||!c)&&x([]),i?.products&&x(a=>{const e=i.products?.filter?.(s=>!a.some(p=>p.id===s.id));let t=[...a,...e];const m=t.filter?.(s=>!(!s?.metafields?.seoSetting?.noindex&&s.availableForSale&&s?.variants?.some(p=>p.availableForSale)));return t=t.filter?.(s=>!s?.metafields?.seoSetting?.noindex&&s.availableForSale&&s?.variants?.some(p=>p.availableForSale)),t.push(...m),v&&(t=t.filter?.(s=>{let p=!1;if(s?.options?.find(f=>f?.displayName==="color"))p=s?.variants?.find(f=>f?.coupons?.length&&f?.coupons?.[0]&&typeof f?.coupons?.[0]=="object");else{const f=s?.variants?.[0]?.coupons;p=f?.length&&f?.[0]&&typeof f?.[0]=="object"}return!!p})),t?.length&&(y===1&&!c||c)&&(t=I(t)),t}))},[i?.products,y,c,k,v]),(0,l.useEffect)(()=>{g?.length&&y===1&&!c&&x(I(g))},[w]),(0,l.useEffect)(()=>{const a=document?.querySelector?.(".yotpo-reviews-star-ratings-widget");g?.length&&(!a||c)&&T?.()},[g]),(0,o.jsxs)("div",{className:"filter-card-wrap-container",ref:F,children:[(0,o.jsx)("div",{className:(0,C.cn)("w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3",{"laptop:grid-cols-4 tablet:grid-cols-3":w&&!c,"laptop:grid-cols-3 tablet:grid-cols-2":!w&&!c},"filter-card-wrap"),children:g?.map?.(a=>O(a)?null:(0,o.jsx)(R.default,{data:a,buttonText:q,metafields:S,onPrimaryChange:(e,t)=>W?.(e,t),onSecondaryChange:(e,t)=>z?.(e,t)},a.id))}),j,c&&i?.pageInfo?.hasNextPage?(0,o.jsxs)("div",{onClick:()=>{P?.(i?.pageInfo?.endCursor)},className:"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more",children:[(0,o.jsx)("span",{children:A||"View More"}),(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"6",viewBox:"0 0 12 6",fill:"none",children:(0,o.jsx)("path",{d:"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z",fill:"#1D1D1F"})})]}):null,!c&&u>18?(0,o.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-4 cursor-pointer",children:[(0,o.jsx)("button",{name:"perv page",disabled:!i?.pageInfo?.hasPreviousPage||!g?.length,className:(0,C.cn)("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!i?.pageInfo?.hasPreviousPage||!g?.length}),onClick:()=>{N?.(),B?.(i?.pageInfo?.startCursor)},children:(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,o.jsx)("path",{d:"M12 5L7 10L12 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})}),(0,o.jsx)("button",{name:"next page",className:(0,C.cn)("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!i?.pageInfo?.hasNextPage||!g?.length}),disabled:!i?.pageInfo?.hasNextPage||!g?.length,onClick:()=>{N?.(),P?.(i?.pageInfo?.endCursor)},children:(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,o.jsx)("path",{d:"M7.5 5L12.5 10L7.5 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})})]}):null]})};var U=(0,l.forwardRef)(K);
1
+ "use strict";var V=Object.create;var b=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,Q=Object.prototype.hasOwnProperty;var Z=(n,r)=>{for(var d in r)b(n,d,{get:r[d],enumerable:!0})},D=(n,r,d,v)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of E(r))!Q.call(n,u)&&u!==d&&b(n,u,{get:()=>r[u],enumerable:!(v=Y(r,u))||v.enumerable});return n};var G=(n,r,d)=>(d=n!=null?V(H(n)):{},D(r||!n||!n.__esModule?b(d,"default",{value:n,enumerable:!0}):d,n)),J=n=>D(b({},"__esModule",{value:!0}),n);var X={};Z(X,{default:()=>U});module.exports=J(X);var o=require("react/jsx-runtime"),C=require("../../helpers/utils.js"),L=require("react-responsive"),R=G(require("./FilterCardWrapItem")),l=require("react"),M=require("es-toolkit");const K=(n,r)=>{const{shopifyData:d={},isSale:v=!1,total:u,result:i,closeFilter:w,page:y,metafields:S,noResultNode:j,refreshStarRating:T,onPrimaryChange:W,onSecondaryChange:z,onNextPage:P,onPrevPage:B}=n,{advertisingSpace:k}=S,{buttonText:q,loadMoreText:A}=d,h=k||d?.advertisingSpace,F=(0,l.useRef)(null),[c,x]=(0,l.useState)([]),g=(0,L.useMediaQuery)({query:"(max-width: 1024px)"}),I=a=>{const e=(0,M.cloneDeep)(a||[]);if(h){const t=e.findIndex(m=>m.mImage);if(t===-1){const m=Math.min(w?h?.maxLocation||7:h?.minLocation||5,e.length);e.splice(m,0,h)}else{e.splice(t,1);const m=Math.min(w?h?.maxLocation||7:h?.minLocation||5,e.length);e.splice(m,0,h)}}return e};(0,l.useImperativeHandle)(r,()=>({clearData(){x([])}}));const N=()=>{const a=F.current;if(!a)return;const e=a.getBoundingClientRect()?.top+window?.pageYOffset-120;window?.scrollTo?.({top:e,behavior:"smooth"})},O=a=>a?.metafields?.seoSetting?.noindex;return(0,l.useEffect)(()=>{(i?.slug||i?.id)&&((y===1||!g)&&x([]),i?.products&&x(a=>{const e=i.products?.filter?.(s=>!a.some(p=>p.id===s.id));let t=[...a,...e];const m=t.filter?.(s=>!(!s?.metafields?.seoSetting?.noindex&&s.availableForSale&&s?.variants?.some(p=>p.availableForSale)));return t=t.filter?.(s=>!s?.metafields?.seoSetting?.noindex&&s.availableForSale&&s?.variants?.some(p=>p.availableForSale)),t.push(...m),v&&(t=t.filter?.(s=>{let p=!1;if(s?.options?.find(f=>f?.displayName==="color"))p=s?.variants?.find(f=>f?.coupons?.length&&f?.coupons?.[0]&&typeof f?.coupons?.[0]=="object");else{const f=s?.variants?.[0]?.coupons;p=f?.length&&f?.[0]&&typeof f?.[0]=="object"}return!!p})),t?.length&&(y===1&&!g||g)&&(t=I(t)),t}))},[i?.products,y,g,k,v]),(0,l.useEffect)(()=>{c?.length&&y===1&&!g&&x(I(c))},[w]),(0,l.useEffect)(()=>{const a=document?.querySelector?.(".yotpo-reviews-star-ratings-widget");c?.length&&(!a||g)&&T?.()},[c]),(0,o.jsxs)("div",{className:"filter-card-wrap-container",ref:F,children:[(0,o.jsx)("div",{className:(0,C.cn)("w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3",{"laptop:grid-cols-4 tablet:grid-cols-3":w&&!g,"laptop:grid-cols-3 tablet:grid-cols-2":!w&&!g},"filter-card-wrap"),children:c?.map?.(a=>O(a)?null:(0,o.jsx)(R.default,{data:a,buttonText:q,metafields:S,onPrimaryChange:(e,t)=>W?.(e,t),onSecondaryChange:(e,t)=>z?.(e,t)},a.id))}),!c?.length&&j,g&&i?.pageInfo?.hasNextPage?(0,o.jsxs)("div",{onClick:()=>{P?.(i?.pageInfo?.endCursor)},className:"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more",children:[(0,o.jsx)("span",{children:A||"View More"}),(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"6",viewBox:"0 0 12 6",fill:"none",children:(0,o.jsx)("path",{d:"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z",fill:"#1D1D1F"})})]}):null,!g&&u>18?(0,o.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-4 cursor-pointer",children:[(0,o.jsx)("button",{name:"perv page",disabled:!i?.pageInfo?.hasPreviousPage||!c?.length,className:(0,C.cn)("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!i?.pageInfo?.hasPreviousPage||!c?.length}),onClick:()=>{N?.(),B?.(i?.pageInfo?.startCursor)},children:(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,o.jsx)("path",{d:"M12 5L7 10L12 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})}),(0,o.jsx)("button",{name:"next page",className:(0,C.cn)("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!i?.pageInfo?.hasNextPage||!c?.length}),disabled:!i?.pageInfo?.hasNextPage||!c?.length,onClick:()=>{N?.(),P?.(i?.pageInfo?.endCursor)},children:(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:(0,o.jsx)("path",{d:"M7.5 5L12.5 10L7.5 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})})]}):null]})};var U=(0,l.forwardRef)(K);
2
2
  //# sourceMappingURL=FilterCardWrap.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionsFilters/FilterCardWrap.tsx"],
4
- "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useMediaQuery } from 'react-responsive'\nimport FilterCardWrapItem from './FilterCardWrapItem'\nimport { useRef, useState, useEffect, forwardRef, useImperativeHandle } from 'react'\nimport type { Ref } from 'react'\nimport { cloneDeep } from 'es-toolkit'\n\ntype FilterCardWrapProps = {\n isSale?: boolean\n result?: any\n total: number\n shopifyData?: any\n currentPage?: number\n closeFilter: boolean\n page: number\n metafields: any\n noResultNode?: React.ReactNode\n refreshStarRating?: () => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n}\n\nconst FilterCardWrap = (props: FilterCardWrapProps, ref: Ref<unknown> | undefined) => {\n const {\n shopifyData = {},\n isSale = false,\n total,\n result,\n closeFilter,\n page,\n metafields,\n noResultNode,\n refreshStarRating,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n const { advertisingSpace } = metafields\n const { buttonText, loadMoreText } = shopifyData\n\n const currentAdvertisingSpace = advertisingSpace || shopifyData?.advertisingSpace\n\n const filterCardWrapRef = useRef<any>(null)\n\n const [data, setData] = useState<any[]>([])\n\n const isMobile = useMediaQuery({ query: '(max-width: 1024px)' })\n\n const handleAdvertisingSpace = (products: any[]) => {\n const updatedProducts = cloneDeep(products || [])\n if (currentAdvertisingSpace) {\n const findIndex = updatedProducts.findIndex(item => item.mImage)\n if (findIndex === -1) {\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n } else {\n updatedProducts.splice(findIndex, 1)\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n }\n }\n return updatedProducts\n }\n\n useImperativeHandle(ref, () => ({\n clearData() {\n setData([])\n },\n }))\n\n const onScrollTop = () => {\n const target = filterCardWrapRef.current\n if (!target) return\n const targetY = target.getBoundingClientRect()?.top + window?.pageYOffset - 120\n window?.scrollTo?.({\n top: targetY,\n behavior: 'smooth',\n })\n }\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return product?.metafields?.seoSetting?.noindex\n }\n\n // \u5904\u7406\u4EA7\u54C1\u6570\u636E\n useEffect(() => {\n if (result?.slug || result?.id) {\n if (page === 1 || !isMobile) {\n setData([])\n }\n if (result?.products) {\n setData(prevProducts => {\n // \u68C0\u67E5\u662F\u5426\u5DF2\u7ECF\u5B58\u5728\u4E8E prevProducts \u4E2D\uFF0C\u907F\u514D\u91CD\u590D\u6DFB\u52A0\n const newProducts = result.products?.filter?.(\n (product: { id: any }) => !prevProducts.some(prev => prev.id === product.id)\n )\n let updatedProducts = [...prevProducts, ...newProducts]\n /** \u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1 */\n const soldOutProducts = updatedProducts.filter?.(\n item =>\n !(\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n )\n // \u8FC7\u6EE4\u6389 availableForSale \u4E3A false \u7684\u4EA7\u54C1\n updatedProducts = updatedProducts.filter?.(\n item =>\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n // \u5C06\u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1\u6DFB\u52A0\u5230\u6700\u540E\n updatedProducts.push(...soldOutProducts)\n // \u5982\u679C\u662F\u6709\u6298\u6263\u7684\u4EA7\u54C1\uFF0C\u5219\u8FC7\u6EE4\u6389\u6CA1\u6709\u6298\u6263\u7684\u4EA7\u54C1\n if (isSale) {\n updatedProducts = updatedProducts.filter?.((item: any) => {\n let isShow = false\n const isColor = item?.options?.find((item: any) => item?.displayName === 'color')\n if (isColor) {\n isShow = item?.variants?.find(\n (params: any) =>\n params?.coupons?.length && params?.coupons?.[0] && typeof params?.coupons?.[0] === 'object'\n )\n } else {\n const isVariants = item?.variants?.[0]?.coupons\n isShow = isVariants?.length && isVariants?.[0] && typeof isVariants?.[0] === 'object'\n }\n return !!isShow\n })\n }\n // \u5982\u679C advertisingSpace \u5B58\u5728\u4E14\u5C1A\u672A\u6DFB\u52A0\u5230\u6570\u7EC4\u4E2D\n if (updatedProducts?.length && ((page === 1 && !isMobile) || isMobile)) {\n updatedProducts = handleAdvertisingSpace(updatedProducts)\n }\n return updatedProducts\n })\n }\n }\n }, [result?.products, page, isMobile, advertisingSpace, isSale])\n\n useEffect(() => {\n if (!data?.length) return\n if (page === 1 && !isMobile) {\n setData(handleAdvertisingSpace(data))\n }\n }, [closeFilter])\n\n useEffect(() => {\n const isClass = document?.querySelector?.('.yotpo-reviews-star-ratings-widget')\n if (data?.length && (!isClass || isMobile)) {\n refreshStarRating?.()\n }\n }, [data])\n return (\n <div className=\"filter-card-wrap-container\" ref={filterCardWrapRef}>\n <div\n className={cn(\n 'w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3',\n {\n 'laptop:grid-cols-4 tablet:grid-cols-3': closeFilter && !isMobile,\n 'laptop:grid-cols-3 tablet:grid-cols-2': !closeFilter && !isMobile,\n },\n 'filter-card-wrap'\n )}\n >\n {data?.map?.(item => {\n if (hasNoIndex(item)) return null\n return (\n <FilterCardWrapItem\n data={item}\n key={item.id}\n buttonText={buttonText}\n metafields={metafields}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n )\n })}\n </div>\n {noResultNode}\n {isMobile && result?.pageInfo?.hasNextPage ? (\n <div\n onClick={() => {\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n className=\"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more\"\n >\n <span>{loadMoreText || 'View More'}</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\">\n <path\n d=\"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </div>\n ) : null}\n {!isMobile && total > 18 ? (\n <div className=\"mt-6 flex items-center justify-end gap-4 cursor-pointer\">\n <button\n name=\"perv page\"\n disabled={!result?.pageInfo?.hasPreviousPage || !data?.length}\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasPreviousPage || !data?.length,\n }\n )}\n onClick={() => {\n onScrollTop?.()\n onPrevPage?.(result?.pageInfo?.startCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 5L7 10L12 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n name=\"next page\"\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasNextPage || !data?.length,\n }\n )}\n disabled={!result?.pageInfo?.hasNextPage || !data?.length}\n onClick={() => {\n onScrollTop?.()\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 5L12.5 10L7.5 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default forwardRef(FilterCardWrap)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useMediaQuery } from 'react-responsive'\nimport FilterCardWrapItem from './FilterCardWrapItem'\nimport { useRef, useState, useEffect, forwardRef, useImperativeHandle } from 'react'\nimport type { Ref } from 'react'\nimport { cloneDeep } from 'es-toolkit'\n\ntype FilterCardWrapProps = {\n isSale?: boolean\n result?: any\n total: number\n shopifyData?: any\n currentPage?: number\n closeFilter: boolean\n page: number\n metafields: any\n noResultNode?: React.ReactNode\n refreshStarRating?: () => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n}\n\nconst FilterCardWrap = (props: FilterCardWrapProps, ref: Ref<unknown> | undefined) => {\n const {\n shopifyData = {},\n isSale = false,\n total,\n result,\n closeFilter,\n page,\n metafields,\n noResultNode,\n refreshStarRating,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n const { advertisingSpace } = metafields\n const { buttonText, loadMoreText } = shopifyData\n\n const currentAdvertisingSpace = advertisingSpace || shopifyData?.advertisingSpace\n\n const filterCardWrapRef = useRef<any>(null)\n\n const [data, setData] = useState<any[]>([])\n\n const isMobile = useMediaQuery({ query: '(max-width: 1024px)' })\n\n const handleAdvertisingSpace = (products: any[]) => {\n const updatedProducts = cloneDeep(products || [])\n if (currentAdvertisingSpace) {\n const findIndex = updatedProducts.findIndex(item => item.mImage)\n if (findIndex === -1) {\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n } else {\n updatedProducts.splice(findIndex, 1)\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n }\n }\n return updatedProducts\n }\n\n useImperativeHandle(ref, () => ({\n clearData() {\n setData([])\n },\n }))\n\n const onScrollTop = () => {\n const target = filterCardWrapRef.current\n if (!target) return\n const targetY = target.getBoundingClientRect()?.top + window?.pageYOffset - 120\n window?.scrollTo?.({\n top: targetY,\n behavior: 'smooth',\n })\n }\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return product?.metafields?.seoSetting?.noindex\n }\n\n // \u5904\u7406\u4EA7\u54C1\u6570\u636E\n useEffect(() => {\n if (result?.slug || result?.id) {\n if (page === 1 || !isMobile) {\n setData([])\n }\n if (result?.products) {\n setData(prevProducts => {\n // \u68C0\u67E5\u662F\u5426\u5DF2\u7ECF\u5B58\u5728\u4E8E prevProducts \u4E2D\uFF0C\u907F\u514D\u91CD\u590D\u6DFB\u52A0\n const newProducts = result.products?.filter?.(\n (product: { id: any }) => !prevProducts.some(prev => prev.id === product.id)\n )\n let updatedProducts = [...prevProducts, ...newProducts]\n /** \u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1 */\n const soldOutProducts = updatedProducts.filter?.(\n item =>\n !(\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n )\n // \u8FC7\u6EE4\u6389 availableForSale \u4E3A false \u7684\u4EA7\u54C1\n updatedProducts = updatedProducts.filter?.(\n item =>\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n // \u5C06\u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1\u6DFB\u52A0\u5230\u6700\u540E\n updatedProducts.push(...soldOutProducts)\n // \u5982\u679C\u662F\u6709\u6298\u6263\u7684\u4EA7\u54C1\uFF0C\u5219\u8FC7\u6EE4\u6389\u6CA1\u6709\u6298\u6263\u7684\u4EA7\u54C1\n if (isSale) {\n updatedProducts = updatedProducts.filter?.((item: any) => {\n let isShow = false\n const isColor = item?.options?.find((item: any) => item?.displayName === 'color')\n if (isColor) {\n isShow = item?.variants?.find(\n (params: any) =>\n params?.coupons?.length && params?.coupons?.[0] && typeof params?.coupons?.[0] === 'object'\n )\n } else {\n const isVariants = item?.variants?.[0]?.coupons\n isShow = isVariants?.length && isVariants?.[0] && typeof isVariants?.[0] === 'object'\n }\n return !!isShow\n })\n }\n // \u5982\u679C advertisingSpace \u5B58\u5728\u4E14\u5C1A\u672A\u6DFB\u52A0\u5230\u6570\u7EC4\u4E2D\n if (updatedProducts?.length && ((page === 1 && !isMobile) || isMobile)) {\n updatedProducts = handleAdvertisingSpace(updatedProducts)\n }\n return updatedProducts\n })\n }\n }\n }, [result?.products, page, isMobile, advertisingSpace, isSale])\n\n useEffect(() => {\n if (!data?.length) return\n if (page === 1 && !isMobile) {\n setData(handleAdvertisingSpace(data))\n }\n }, [closeFilter])\n\n useEffect(() => {\n const isClass = document?.querySelector?.('.yotpo-reviews-star-ratings-widget')\n if (data?.length && (!isClass || isMobile)) {\n refreshStarRating?.()\n }\n }, [data])\n return (\n <div className=\"filter-card-wrap-container\" ref={filterCardWrapRef}>\n <div\n className={cn(\n 'w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3',\n {\n 'laptop:grid-cols-4 tablet:grid-cols-3': closeFilter && !isMobile,\n 'laptop:grid-cols-3 tablet:grid-cols-2': !closeFilter && !isMobile,\n },\n 'filter-card-wrap'\n )}\n >\n {data?.map?.(item => {\n if (hasNoIndex(item)) return null\n return (\n <FilterCardWrapItem\n data={item}\n key={item.id}\n buttonText={buttonText}\n metafields={metafields}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n )\n })}\n </div>\n {!data?.length && noResultNode}\n {isMobile && result?.pageInfo?.hasNextPage ? (\n <div\n onClick={() => {\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n className=\"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more\"\n >\n <span>{loadMoreText || 'View More'}</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\">\n <path\n d=\"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </div>\n ) : null}\n {!isMobile && total > 18 ? (\n <div className=\"mt-6 flex items-center justify-end gap-4 cursor-pointer\">\n <button\n name=\"perv page\"\n disabled={!result?.pageInfo?.hasPreviousPage || !data?.length}\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasPreviousPage || !data?.length,\n }\n )}\n onClick={() => {\n onScrollTop?.()\n onPrevPage?.(result?.pageInfo?.startCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 5L7 10L12 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n name=\"next page\"\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasNextPage || !data?.length,\n }\n )}\n disabled={!result?.pageInfo?.hasNextPage || !data?.length}\n onClick={() => {\n onScrollTop?.()\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 5L12.5 10L7.5 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default forwardRef(FilterCardWrap)\n"],
5
+ "mappings": "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",
6
6
  "names": ["FilterCardWrap_exports", "__export", "FilterCardWrap_default", "__toCommonJS", "import_jsx_runtime", "import_utils", "import_react_responsive", "import_FilterCardWrapItem", "import_react", "import_es_toolkit", "FilterCardWrap", "props", "ref", "shopifyData", "isSale", "total", "result", "closeFilter", "page", "metafields", "noResultNode", "refreshStarRating", "onPrimaryChange", "onSecondaryChange", "onNextPage", "onPrevPage", "advertisingSpace", "buttonText", "loadMoreText", "currentAdvertisingSpace", "filterCardWrapRef", "data", "setData", "isMobile", "handleAdvertisingSpace", "products", "updatedProducts", "findIndex", "item", "insertIndex", "onScrollTop", "target", "targetY", "hasNoIndex", "product", "prevProducts", "newProducts", "prev", "soldOutProducts", "isShow", "params", "isVariants", "isClass", "FilterCardWrapItem"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var oe=Object.create;var m=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var le=(o,r)=>{for(var n in r)m(o,n,{get:r[n],enumerable:!0})},L=(o,r,n,f)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of ne(r))!ae.call(o,i)&&i!==n&&m(o,i,{get:()=>r[i],enumerable:!(f=re(r,i))||f.enumerable});return o};var h=(o,r,n)=>(n=o!=null?oe(se(o)):{},L(r||!o||!o.__esModule?m(n,"default",{value:o,enumerable:!0}):n,o)),ie=o=>L(m({},"__esModule",{value:!0}),o);var ce={};le(ce,{default:()=>fe});module.exports=ie(ce);var a=require("react/jsx-runtime"),K=h(require("./FilterList")),_=h(require("./FilterHeader")),k=h(require("./FilterCardWrap")),M=require("../../shared/Styles.js"),A=h(require("./component/TabFilter")),t=require("react"),l=require("./component/filtersFun");function de(o){const{data:r,result:n={},allResult:f={},loadMore:i=null,noResultNode:V=null,metafields:c={},filterPrice:F={},isLoading:P=!1,refreshStarRating:z,onFilteredChange:x,onSortAndReverseChange:T,onPrimaryChange:W,onSecondaryChange:E,onNextPage:H,onPrevPage:q}=o,{shop_filters_pair:u}=c,{data:R}=(0,l.getComponentData)(c,"FilterProduct"),[p,B]=(0,t.useState)(!1),[G,S]=(0,t.useState)(!1),[J,Q]=(0,t.useState)([]),[d,N]=(0,t.useState)({}),[y,U]=(0,t.useState)(0),[v,g]=(0,t.useState)(1),[X,Y]=(0,t.useState)(!1),[Z,$]=(0,t.useState)(!1),j=(0,t.useRef)(null),b=(0,t.useRef)(!1);(0,t.useMemo)(()=>{const e=u?.filter_txt?.sortList,[s,te]=(0,l.handleSortKeyAndReverse)(e,y);T?.(s,te)},[u?.filter_txt?.sortList,d,y]);const ee=e=>!e?.metafields?.seoSetting?.noindex,D=(0,t.useMemo)(()=>f?.products?.filter(ee)?.length||0,[f?.products]),C=(0,t.useMemo)(()=>(0,l.handleFilterOptions)(n,F,u,R),[F,n?.filters,u?.filter_txt?.offers?.name,u?.filter_txt?.offers?.onsale]),O=(0,t.useMemo)(()=>C?.length?C?.map?.(e=>({...e,options:e?.options?.map?.(s=>({...s,checked:d?.[e?.value]?.indexOf?.(s?.value)>-1}))})):[],[d,C]),w=e=>{N?.({}),e&&g(1),x?.((0,l.handleFilters)({}))},I=e=>{N(e),g(1),x?.((0,l.handleFilters)(e))};return(0,t.useEffect)(()=>{const s=(d?.offers||[])?.includes?.("onsale");Y(s)},[d]),(0,t.useEffect)(()=>{!b.current&&n?.products?.length&&(b.current=!0),b.current&&$(!0)},[n?.products]),(0,a.jsxs)("div",{className:"size-full box-border",children:[(0,a.jsx)("div",{className:"laptop:mb-12 mb-6",children:(0,a.jsx)(A.default,{tabs:r?.tabItems,filtered:d,filtersPair:O,filtersData:R,metafields:c,onTabClick:e=>I(e)})}),(0,a.jsx)(_.default,{total:D||0,metafields:c,closeFilter:p,sortKeyIndx:y,shopifyData:r,onSortChange:U,onCloseFilter:B,onClearFiltered:()=>w(),onMobileOpenDrawer:S}),(0,a.jsxs)("div",{className:"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8",children:[!p&&(0,a.jsx)(K.default,{shopifyData:r,filtered:d,openOptions:J,closeFilter:p,filtersPair:O,mobileDrawerVisible:G,onFilteredChange:I,onClearFiltered:()=>w(!1),onOpenOptions:Q,onCloseDrawer:S}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto relative",children:[(0,a.jsx)(k.default,{page:v,result:n,shopifyData:r,total:D,isSale:X,ref:j,metafields:c,closeFilter:p,noResultNode:Z&&!P&&!n.products?.length?V:null,refreshStarRating:z,onNextPage:e=>{g(v+1),H?.(e)},onPrevPage:e=>{g(v-1),q?.(e)},onPrimaryChange:(e,s)=>W?.(e,s),onSecondaryChange:(e,s)=>E?.(e,s)}),P&&i||null]})]})]})}var fe=(0,M.withLayout)(de);
1
+ "use strict";var oe=Object.create;var g=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var le=(o,r)=>{for(var n in r)g(o,n,{get:r[n],enumerable:!0})},L=(o,r,n,f)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of ne(r))!ae.call(o,i)&&i!==n&&g(o,i,{get:()=>r[i],enumerable:!(f=re(r,i))||f.enumerable});return o};var h=(o,r,n)=>(n=o!=null?oe(se(o)):{},L(r||!o||!o.__esModule?g(n,"default",{value:o,enumerable:!0}):n,o)),ie=o=>L(g({},"__esModule",{value:!0}),o);var ce={};le(ce,{default:()=>fe});module.exports=ie(ce);var a=require("react/jsx-runtime"),K=h(require("./FilterList")),_=h(require("./FilterHeader")),k=h(require("./FilterCardWrap")),M=require("../../shared/Styles.js"),A=h(require("./component/TabFilter")),t=require("react"),l=require("./component/filtersFun");function de(o){const{data:r,result:n={},allResult:f={},loadMore:i=null,noResultNode:V=null,metafields:c={},filterPrice:F={},isLoading:P=!1,refreshStarRating:z,onFilteredChange:x,onSortAndReverseChange:T,onPrimaryChange:W,onSecondaryChange:E,onNextPage:H,onPrevPage:q}=o,{shop_filters_pair:u}=c,{data:R}=(0,l.getComponentData)(c,"FilterProduct"),[p,B]=(0,t.useState)(!1),[G,S]=(0,t.useState)(!1),[J,Q]=(0,t.useState)([]),[d,N]=(0,t.useState)({}),[y,U]=(0,t.useState)(0),[v,m]=(0,t.useState)(1),[X,Y]=(0,t.useState)(!1),[Z,$]=(0,t.useState)(!1),j=(0,t.useRef)(null),b=(0,t.useRef)(!1);(0,t.useMemo)(()=>{const e=u?.filter_txt?.sortList,[s,te]=(0,l.handleSortKeyAndReverse)(e,y);T?.(s,te)},[u?.filter_txt?.sortList,d,y]);const ee=e=>!e?.metafields?.seoSetting?.noindex,D=(0,t.useMemo)(()=>f?.products?.filter(ee)?.length||0,[f?.products]),C=(0,t.useMemo)(()=>(0,l.handleFilterOptions)(n,F,u,R),[F,n?.filters,u?.filter_txt?.offers?.name,u?.filter_txt?.offers?.onsale]),O=(0,t.useMemo)(()=>C?.length?C?.map?.(e=>({...e,options:e?.options?.map?.(s=>({...s,checked:d?.[e?.value]?.indexOf?.(s?.value)>-1}))})):[],[d,C]),w=e=>{N?.({}),e&&m(1),x?.((0,l.handleFilters)({}))},I=e=>{N(e),m(1),x?.((0,l.handleFilters)(e))};return(0,t.useEffect)(()=>{const s=(d?.offers||[])?.includes?.("onsale");Y(s)},[d]),(0,t.useEffect)(()=>{!b.current&&n?.products?.length&&(b.current=!0),b.current&&$(!0)},[n?.products]),(0,a.jsxs)("div",{className:"size-full box-border",children:[(0,a.jsx)("div",{className:"laptop:mb-12 mb-6",children:(0,a.jsx)(A.default,{tabs:r?.tabItems,filtered:d,filtersPair:O,filtersData:R,metafields:c,onTabClick:e=>I(e)})}),(0,a.jsx)(_.default,{total:D||0,metafields:c,closeFilter:p,sortKeyIndx:y,shopifyData:r,onSortChange:U,onCloseFilter:B,onClearFiltered:()=>w(),onMobileOpenDrawer:S}),(0,a.jsxs)("div",{className:"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8",children:[!p&&(0,a.jsx)(K.default,{shopifyData:r,filtered:d,openOptions:J,closeFilter:p,filtersPair:O,mobileDrawerVisible:G,onFilteredChange:I,onClearFiltered:()=>w(!1),onOpenOptions:Q,onCloseDrawer:S}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto relative",children:[(0,a.jsx)(k.default,{page:v,result:n,shopifyData:r,total:D,isSale:X,ref:j,metafields:c,closeFilter:p,noResultNode:Z&&!P?V:null,refreshStarRating:z,onNextPage:e=>{m(v+1),H?.(e)},onPrevPage:e=>{m(v-1),q?.(e)},onPrimaryChange:(e,s)=>W?.(e,s),onSecondaryChange:(e,s)=>E?.(e,s)}),P&&i||null]})]})]})}var fe=(0,M.withLayout)(de);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionsFilters/index.tsx"],
4
- "sourcesContent": ["import FilterList from './FilterList'\nimport FilterHeader from './FilterHeader'\nimport FilterCardWrap from './FilterCardWrap'\nimport { withLayout } from '../../shared/Styles.js'\nimport TabFilter from './component/TabFilter'\nimport { useState, useMemo, useEffect, useRef } from 'react'\nimport { handleSortKeyAndReverse, handleFilters, handleFilterOptions, getComponentData } from './component/filtersFun'\n\ntype CollectionsFiltersProps = {\n metafields: any\n result: any\n allResult: any\n pageSize?: number\n filterPrice: any\n isLoading?: boolean\n refreshStarRating?: () => void\n loadMore?: React.ReactNode\n noResultNode?: React.ReactNode\n data?: any\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n onFilteredChange?: (filtered: any) => void\n onSortAndReverseChange?: (sortKey: string, reverse: boolean) => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\nfunction CollectionsFilters(props: CollectionsFiltersProps) {\n const {\n data,\n result = {},\n allResult = {},\n loadMore = null,\n noResultNode = null,\n metafields = {},\n filterPrice = {},\n isLoading = false,\n refreshStarRating,\n onFilteredChange,\n onSortAndReverseChange,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n\n const { shop_filters_pair } = metafields\n\n const { data: filterProductData } = getComponentData(metafields, 'FilterProduct')\n\n const [closeFilter, setCloseFilter] = useState<boolean>(false)\n const [mobileDrawerVisible, setMobileDrawerVisible] = useState<boolean>(false) // \u79FB\u52A8\u7AEF\u7B5B\u9009\u9009\u9879\u5C55\u793A\u72B6\u6001\n const [openOptions, setOpenOptions] = useState<any[]>([]) // \u5C55\u5F00\u7684\u7B5B\u9009\u9879\n const [filtered, setFiltered] = useState<any>({}) // \u9009\u62E9\u7684\u7B5B\u9009\u9009\u9879\n const [sortKeyIndx, setSortKeyIndx] = useState<number>(0) // \u6392\u5E8F\u65B9\u5F0F\n const [currentPage, setCurrentPage] = useState<number>(1)\n const [isSale, setIsSale] = useState<boolean>(false)\n const [isRefresh, setIsRefresh] = useState<boolean>(false)\n\n const filterCardWrapRef = useRef<any>(null)\n const initRefresh = useRef<boolean>(false)\n\n // \u5904\u7406\u6392\u5E8F\u6570\u636E\n useMemo(() => {\n const sortList = shop_filters_pair?.filter_txt?.sortList\n const [sortKey, reverse] = handleSortKeyAndReverse(sortList, sortKeyIndx)\n onSortAndReverseChange?.(sortKey, reverse)\n }, [shop_filters_pair?.filter_txt?.sortList, filtered, sortKeyIndx])\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return !product?.metafields?.seoSetting?.noindex\n }\n const totalCount = useMemo(() => {\n return allResult?.products?.filter(hasNoIndex)?.length || 0\n }, [allResult?.products])\n\n // \u5904\u7406\u7B5B\u9009\u9879\u6570\u636E\n const filtersOptions = useMemo(() => {\n return handleFilterOptions(result, filterPrice, shop_filters_pair, filterProductData)\n }, [\n filterPrice,\n result?.filters,\n shop_filters_pair?.filter_txt?.offers?.name,\n shop_filters_pair?.filter_txt?.offers?.onsale,\n ])\n\n const filtersPair = useMemo(() => {\n if (!filtersOptions?.length) return []\n return filtersOptions?.map?.((filter: any) => {\n return {\n ...filter,\n options: filter?.options?.map?.((opt: any) => {\n return {\n ...opt,\n checked: filtered?.[filter?.value]?.indexOf?.(opt?.value) > -1,\n }\n }),\n }\n })\n }, [filtered, filtersOptions])\n\n\n const clearFiltered = (flag?: boolean) => {\n setFiltered?.({})\n if (flag) {\n setCurrentPage(1)\n }\n onFilteredChange?.(handleFilters({}))\n }\n\n const filterChange = (v: any) => {\n setFiltered(v)\n setCurrentPage(1)\n onFilteredChange?.(handleFilters(v))\n }\n\n useEffect(() => {\n const offers = filtered?.offers || []\n const isShowSale = offers?.includes?.('onsale')\n setIsSale(isShowSale)\n }, [filtered])\n\n useEffect(() => {\n if (!initRefresh.current && result?.products?.length) {\n initRefresh.current = true\n }\n if (initRefresh.current) {\n setIsRefresh(true)\n }\n }, [result?.products])\n\n return (\n <div className=\"size-full box-border\">\n {/* \u5934\u90E8 */}\n <div className=\"laptop:mb-12 mb-6\">\n <TabFilter\n tabs={data?.tabItems}\n filtered={filtered}\n filtersPair={filtersPair}\n filtersData={filterProductData}\n metafields={metafields}\n onTabClick={v => filterChange(v)}\n />\n </div>\n <FilterHeader\n total={totalCount || 0}\n metafields={metafields}\n closeFilter={closeFilter}\n sortKeyIndx={sortKeyIndx}\n shopifyData={data}\n onSortChange={setSortKeyIndx}\n onCloseFilter={setCloseFilter}\n onClearFiltered={() => clearFiltered()}\n onMobileOpenDrawer={setMobileDrawerVisible}\n />\n {/* PC\u7B5B\u9009\u9009\u9879 */}\n <div className=\"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8\">\n {!closeFilter && (\n <FilterList\n shopifyData={data}\n filtered={filtered}\n openOptions={openOptions}\n closeFilter={closeFilter}\n filtersPair={filtersPair}\n mobileDrawerVisible={mobileDrawerVisible}\n onFilteredChange={filterChange}\n onClearFiltered={() => clearFiltered(false)}\n onOpenOptions={setOpenOptions}\n onCloseDrawer={setMobileDrawerVisible}\n />\n )}\n <div className=\"flex-1 overflow-y-auto relative\">\n <FilterCardWrap\n page={currentPage}\n result={result}\n shopifyData={data}\n total={totalCount}\n isSale={isSale}\n ref={filterCardWrapRef}\n metafields={metafields}\n closeFilter={closeFilter}\n noResultNode={isRefresh && !isLoading && !result.products?.length ? noResultNode : null}\n refreshStarRating={refreshStarRating}\n onNextPage={v => {\n setCurrentPage(currentPage + 1)\n onNextPage?.(v)\n }}\n onPrevPage={v => {\n setCurrentPage(currentPage - 1)\n onPrevPage?.(v)\n }}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n {isLoading ? loadMore || null : null}\n </div>\n </div>\n </div>\n )\n}\n\nexport default withLayout(CollectionsFilters)"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import FilterList from './FilterList'\nimport FilterHeader from './FilterHeader'\nimport FilterCardWrap from './FilterCardWrap'\nimport { withLayout } from '../../shared/Styles.js'\nimport TabFilter from './component/TabFilter'\nimport { useState, useMemo, useEffect, useRef } from 'react'\nimport { handleSortKeyAndReverse, handleFilters, handleFilterOptions, getComponentData } from './component/filtersFun'\n\ntype CollectionsFiltersProps = {\n metafields: any\n result: any\n allResult: any\n pageSize?: number\n filterPrice: any\n isLoading?: boolean\n refreshStarRating?: () => void\n loadMore?: React.ReactNode\n noResultNode?: React.ReactNode\n data?: any\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n onFilteredChange?: (filtered: any) => void\n onSortAndReverseChange?: (sortKey: string, reverse: boolean) => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\nfunction CollectionsFilters(props: CollectionsFiltersProps) {\n const {\n data,\n result = {},\n allResult = {},\n loadMore = null,\n noResultNode = null,\n metafields = {},\n filterPrice = {},\n isLoading = false,\n refreshStarRating,\n onFilteredChange,\n onSortAndReverseChange,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n\n const { shop_filters_pair } = metafields\n\n const { data: filterProductData } = getComponentData(metafields, 'FilterProduct')\n\n const [closeFilter, setCloseFilter] = useState<boolean>(false)\n const [mobileDrawerVisible, setMobileDrawerVisible] = useState<boolean>(false) // \u79FB\u52A8\u7AEF\u7B5B\u9009\u9009\u9879\u5C55\u793A\u72B6\u6001\n const [openOptions, setOpenOptions] = useState<any[]>([]) // \u5C55\u5F00\u7684\u7B5B\u9009\u9879\n const [filtered, setFiltered] = useState<any>({}) // \u9009\u62E9\u7684\u7B5B\u9009\u9009\u9879\n const [sortKeyIndx, setSortKeyIndx] = useState<number>(0) // \u6392\u5E8F\u65B9\u5F0F\n const [currentPage, setCurrentPage] = useState<number>(1)\n const [isSale, setIsSale] = useState<boolean>(false)\n const [isRefresh, setIsRefresh] = useState<boolean>(false)\n\n const filterCardWrapRef = useRef<any>(null)\n const initRefresh = useRef<boolean>(false)\n\n // \u5904\u7406\u6392\u5E8F\u6570\u636E\n useMemo(() => {\n const sortList = shop_filters_pair?.filter_txt?.sortList\n const [sortKey, reverse] = handleSortKeyAndReverse(sortList, sortKeyIndx)\n onSortAndReverseChange?.(sortKey, reverse)\n }, [shop_filters_pair?.filter_txt?.sortList, filtered, sortKeyIndx])\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return !product?.metafields?.seoSetting?.noindex\n }\n const totalCount = useMemo(() => {\n return allResult?.products?.filter(hasNoIndex)?.length || 0\n }, [allResult?.products])\n\n // \u5904\u7406\u7B5B\u9009\u9879\u6570\u636E\n const filtersOptions = useMemo(() => {\n return handleFilterOptions(result, filterPrice, shop_filters_pair, filterProductData)\n }, [\n filterPrice,\n result?.filters,\n shop_filters_pair?.filter_txt?.offers?.name,\n shop_filters_pair?.filter_txt?.offers?.onsale,\n ])\n\n const filtersPair = useMemo(() => {\n if (!filtersOptions?.length) return []\n return filtersOptions?.map?.((filter: any) => {\n return {\n ...filter,\n options: filter?.options?.map?.((opt: any) => {\n return {\n ...opt,\n checked: filtered?.[filter?.value]?.indexOf?.(opt?.value) > -1,\n }\n }),\n }\n })\n }, [filtered, filtersOptions])\n\n\n const clearFiltered = (flag?: boolean) => {\n setFiltered?.({})\n if (flag) {\n setCurrentPage(1)\n }\n onFilteredChange?.(handleFilters({}))\n }\n\n const filterChange = (v: any) => {\n setFiltered(v)\n setCurrentPage(1)\n onFilteredChange?.(handleFilters(v))\n }\n\n useEffect(() => {\n const offers = filtered?.offers || []\n const isShowSale = offers?.includes?.('onsale')\n setIsSale(isShowSale)\n }, [filtered])\n\n useEffect(() => {\n if (!initRefresh.current && result?.products?.length) {\n initRefresh.current = true\n }\n if (initRefresh.current) {\n setIsRefresh(true)\n }\n }, [result?.products])\n\n return (\n <div className=\"size-full box-border\">\n {/* \u5934\u90E8 */}\n <div className=\"laptop:mb-12 mb-6\">\n <TabFilter\n tabs={data?.tabItems}\n filtered={filtered}\n filtersPair={filtersPair}\n filtersData={filterProductData}\n metafields={metafields}\n onTabClick={v => filterChange(v)}\n />\n </div>\n <FilterHeader\n total={totalCount || 0}\n metafields={metafields}\n closeFilter={closeFilter}\n sortKeyIndx={sortKeyIndx}\n shopifyData={data}\n onSortChange={setSortKeyIndx}\n onCloseFilter={setCloseFilter}\n onClearFiltered={() => clearFiltered()}\n onMobileOpenDrawer={setMobileDrawerVisible}\n />\n {/* PC\u7B5B\u9009\u9009\u9879 */}\n <div className=\"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8\">\n {!closeFilter && (\n <FilterList\n shopifyData={data}\n filtered={filtered}\n openOptions={openOptions}\n closeFilter={closeFilter}\n filtersPair={filtersPair}\n mobileDrawerVisible={mobileDrawerVisible}\n onFilteredChange={filterChange}\n onClearFiltered={() => clearFiltered(false)}\n onOpenOptions={setOpenOptions}\n onCloseDrawer={setMobileDrawerVisible}\n />\n )}\n <div className=\"flex-1 overflow-y-auto relative\">\n <FilterCardWrap\n page={currentPage}\n result={result}\n shopifyData={data}\n total={totalCount}\n isSale={isSale}\n ref={filterCardWrapRef}\n metafields={metafields}\n closeFilter={closeFilter}\n noResultNode={isRefresh && !isLoading ? noResultNode : null}\n refreshStarRating={refreshStarRating}\n onNextPage={v => {\n setCurrentPage(currentPage + 1)\n onNextPage?.(v)\n }}\n onPrevPage={v => {\n setCurrentPage(currentPage - 1)\n onPrevPage?.(v)\n }}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n {isLoading ? loadMore || null : null}\n </div>\n </div>\n </div>\n )\n}\n\nexport default withLayout(CollectionsFilters)"],
5
+ "mappings": "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",
6
6
  "names": ["CollectionsFilters_exports", "__export", "CollectionsFilters_default", "__toCommonJS", "import_jsx_runtime", "import_FilterList", "import_FilterHeader", "import_FilterCardWrap", "import_Styles", "import_TabFilter", "import_react", "import_filtersFun", "CollectionsFilters", "props", "data", "result", "allResult", "loadMore", "noResultNode", "metafields", "filterPrice", "isLoading", "refreshStarRating", "onFilteredChange", "onSortAndReverseChange", "onPrimaryChange", "onSecondaryChange", "onNextPage", "onPrevPage", "shop_filters_pair", "filterProductData", "closeFilter", "setCloseFilter", "mobileDrawerVisible", "setMobileDrawerVisible", "openOptions", "setOpenOptions", "filtered", "setFiltered", "sortKeyIndx", "setSortKeyIndx", "currentPage", "setCurrentPage", "isSale", "setIsSale", "isRefresh", "setIsRefresh", "filterCardWrapRef", "initRefresh", "sortList", "sortKey", "reverse", "hasNoIndex", "product", "totalCount", "filtersOptions", "filtersPair", "filter", "opt", "clearFiltered", "flag", "filterChange", "v", "isShowSale", "TabFilter", "FilterHeader", "FilterList", "FilterCardWrap"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as v}from"react/jsx-runtime";import{cn as h}from"../../helpers/utils.js";import{useMediaQuery as B}from"react-responsive";import q from"./FilterCardWrapItem";import{useRef as A,useState as O,useEffect as m,forwardRef as V,useImperativeHandle as Y}from"react";import{cloneDeep as E}from"es-toolkit";const H=(F,I)=>{const{shopifyData:w={},isSale:y=!1,total:N,result:o,closeFilter:p,page:f,metafields:x,noResultNode:D,refreshStarRating:L,onPrimaryChange:R,onSecondaryChange:M,onNextPage:b,onPrevPage:j}=F,{advertisingSpace:C}=x,{buttonText:T,loadMoreText:W}=w,c=C||w?.advertisingSpace,S=A(null),[s,u]=O([]),i=B({query:"(max-width: 1024px)"}),P=n=>{const e=E(n||[]);if(c){const t=e.findIndex(g=>g.mImage);if(t===-1){const g=Math.min(p?c?.maxLocation||7:c?.minLocation||5,e.length);e.splice(g,0,c)}else{e.splice(t,1);const g=Math.min(p?c?.maxLocation||7:c?.minLocation||5,e.length);e.splice(g,0,c)}}return e};Y(I,()=>({clearData(){u([])}}));const k=()=>{const n=S.current;if(!n)return;const e=n.getBoundingClientRect()?.top+window?.pageYOffset-120;window?.scrollTo?.({top:e,behavior:"smooth"})},z=n=>n?.metafields?.seoSetting?.noindex;return m(()=>{(o?.slug||o?.id)&&((f===1||!i)&&u([]),o?.products&&u(n=>{const e=o.products?.filter?.(a=>!n.some(l=>l.id===a.id));let t=[...n,...e];const g=t.filter?.(a=>!(!a?.metafields?.seoSetting?.noindex&&a.availableForSale&&a?.variants?.some(l=>l.availableForSale)));return t=t.filter?.(a=>!a?.metafields?.seoSetting?.noindex&&a.availableForSale&&a?.variants?.some(l=>l.availableForSale)),t.push(...g),y&&(t=t.filter?.(a=>{let l=!1;if(a?.options?.find(d=>d?.displayName==="color"))l=a?.variants?.find(d=>d?.coupons?.length&&d?.coupons?.[0]&&typeof d?.coupons?.[0]=="object");else{const d=a?.variants?.[0]?.coupons;l=d?.length&&d?.[0]&&typeof d?.[0]=="object"}return!!l})),t?.length&&(f===1&&!i||i)&&(t=P(t)),t}))},[o?.products,f,i,C,y]),m(()=>{s?.length&&f===1&&!i&&u(P(s))},[p]),m(()=>{const n=document?.querySelector?.(".yotpo-reviews-star-ratings-widget");s?.length&&(!n||i)&&L?.()},[s]),v("div",{className:"filter-card-wrap-container",ref:S,children:[r("div",{className:h("w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3",{"laptop:grid-cols-4 tablet:grid-cols-3":p&&!i,"laptop:grid-cols-3 tablet:grid-cols-2":!p&&!i},"filter-card-wrap"),children:s?.map?.(n=>z(n)?null:r(q,{data:n,buttonText:T,metafields:x,onPrimaryChange:(e,t)=>R?.(e,t),onSecondaryChange:(e,t)=>M?.(e,t)},n.id))}),D,i&&o?.pageInfo?.hasNextPage?v("div",{onClick:()=>{b?.(o?.pageInfo?.endCursor)},className:"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more",children:[r("span",{children:W||"View More"}),r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"6",viewBox:"0 0 12 6",fill:"none",children:r("path",{d:"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z",fill:"#1D1D1F"})})]}):null,!i&&N>18?v("div",{className:"mt-6 flex items-center justify-end gap-4 cursor-pointer",children:[r("button",{name:"perv page",disabled:!o?.pageInfo?.hasPreviousPage||!s?.length,className:h("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!o?.pageInfo?.hasPreviousPage||!s?.length}),onClick:()=>{k?.(),j?.(o?.pageInfo?.startCursor)},children:r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:r("path",{d:"M12 5L7 10L12 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})}),r("button",{name:"next page",className:h("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!o?.pageInfo?.hasNextPage||!s?.length}),disabled:!o?.pageInfo?.hasNextPage||!s?.length,onClick:()=>{k?.(),b?.(o?.pageInfo?.endCursor)},children:r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:r("path",{d:"M7.5 5L12.5 10L7.5 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})})]}):null]})};var X=V(H);export{X as default};
1
+ import{jsx as r,jsxs as v}from"react/jsx-runtime";import{cn as h}from"../../helpers/utils.js";import{useMediaQuery as B}from"react-responsive";import q from"./FilterCardWrapItem";import{useRef as A,useState as O,useEffect as m,forwardRef as V,useImperativeHandle as Y}from"react";import{cloneDeep as E}from"es-toolkit";const H=(F,I)=>{const{shopifyData:w={},isSale:y=!1,total:N,result:o,closeFilter:p,page:f,metafields:x,noResultNode:D,refreshStarRating:L,onPrimaryChange:R,onSecondaryChange:M,onNextPage:b,onPrevPage:j}=F,{advertisingSpace:C}=x,{buttonText:T,loadMoreText:W}=w,c=C||w?.advertisingSpace,S=A(null),[i,u]=O([]),s=B({query:"(max-width: 1024px)"}),P=n=>{const e=E(n||[]);if(c){const t=e.findIndex(g=>g.mImage);if(t===-1){const g=Math.min(p?c?.maxLocation||7:c?.minLocation||5,e.length);e.splice(g,0,c)}else{e.splice(t,1);const g=Math.min(p?c?.maxLocation||7:c?.minLocation||5,e.length);e.splice(g,0,c)}}return e};Y(I,()=>({clearData(){u([])}}));const k=()=>{const n=S.current;if(!n)return;const e=n.getBoundingClientRect()?.top+window?.pageYOffset-120;window?.scrollTo?.({top:e,behavior:"smooth"})},z=n=>n?.metafields?.seoSetting?.noindex;return m(()=>{(o?.slug||o?.id)&&((f===1||!s)&&u([]),o?.products&&u(n=>{const e=o.products?.filter?.(a=>!n.some(l=>l.id===a.id));let t=[...n,...e];const g=t.filter?.(a=>!(!a?.metafields?.seoSetting?.noindex&&a.availableForSale&&a?.variants?.some(l=>l.availableForSale)));return t=t.filter?.(a=>!a?.metafields?.seoSetting?.noindex&&a.availableForSale&&a?.variants?.some(l=>l.availableForSale)),t.push(...g),y&&(t=t.filter?.(a=>{let l=!1;if(a?.options?.find(d=>d?.displayName==="color"))l=a?.variants?.find(d=>d?.coupons?.length&&d?.coupons?.[0]&&typeof d?.coupons?.[0]=="object");else{const d=a?.variants?.[0]?.coupons;l=d?.length&&d?.[0]&&typeof d?.[0]=="object"}return!!l})),t?.length&&(f===1&&!s||s)&&(t=P(t)),t}))},[o?.products,f,s,C,y]),m(()=>{i?.length&&f===1&&!s&&u(P(i))},[p]),m(()=>{const n=document?.querySelector?.(".yotpo-reviews-star-ratings-widget");i?.length&&(!n||s)&&L?.()},[i]),v("div",{className:"filter-card-wrap-container",ref:S,children:[r("div",{className:h("w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3",{"laptop:grid-cols-4 tablet:grid-cols-3":p&&!s,"laptop:grid-cols-3 tablet:grid-cols-2":!p&&!s},"filter-card-wrap"),children:i?.map?.(n=>z(n)?null:r(q,{data:n,buttonText:T,metafields:x,onPrimaryChange:(e,t)=>R?.(e,t),onSecondaryChange:(e,t)=>M?.(e,t)},n.id))}),!i?.length&&D,s&&o?.pageInfo?.hasNextPage?v("div",{onClick:()=>{b?.(o?.pageInfo?.endCursor)},className:"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more",children:[r("span",{children:W||"View More"}),r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"6",viewBox:"0 0 12 6",fill:"none",children:r("path",{d:"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z",fill:"#1D1D1F"})})]}):null,!s&&N>18?v("div",{className:"mt-6 flex items-center justify-end gap-4 cursor-pointer",children:[r("button",{name:"perv page",disabled:!o?.pageInfo?.hasPreviousPage||!i?.length,className:h("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!o?.pageInfo?.hasPreviousPage||!i?.length}),onClick:()=>{k?.(),j?.(o?.pageInfo?.startCursor)},children:r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:r("path",{d:"M12 5L7 10L12 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})}),r("button",{name:"next page",className:h("flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]",{"opacity-50 cursor-not-allowed":!o?.pageInfo?.hasNextPage||!i?.length}),disabled:!o?.pageInfo?.hasNextPage||!i?.length,onClick:()=>{k?.(),b?.(o?.pageInfo?.endCursor)},children:r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:r("path",{d:"M7.5 5L12.5 10L7.5 15",stroke:"#3D3D3F","stroke-width":"1.66667","stroke-linecap":"round","stroke-linejoin":"round"})})})]}):null]})};var X=V(H);export{X as default};
2
2
  //# sourceMappingURL=FilterCardWrap.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionsFilters/FilterCardWrap.tsx"],
4
- "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useMediaQuery } from 'react-responsive'\nimport FilterCardWrapItem from './FilterCardWrapItem'\nimport { useRef, useState, useEffect, forwardRef, useImperativeHandle } from 'react'\nimport type { Ref } from 'react'\nimport { cloneDeep } from 'es-toolkit'\n\ntype FilterCardWrapProps = {\n isSale?: boolean\n result?: any\n total: number\n shopifyData?: any\n currentPage?: number\n closeFilter: boolean\n page: number\n metafields: any\n noResultNode?: React.ReactNode\n refreshStarRating?: () => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n}\n\nconst FilterCardWrap = (props: FilterCardWrapProps, ref: Ref<unknown> | undefined) => {\n const {\n shopifyData = {},\n isSale = false,\n total,\n result,\n closeFilter,\n page,\n metafields,\n noResultNode,\n refreshStarRating,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n const { advertisingSpace } = metafields\n const { buttonText, loadMoreText } = shopifyData\n\n const currentAdvertisingSpace = advertisingSpace || shopifyData?.advertisingSpace\n\n const filterCardWrapRef = useRef<any>(null)\n\n const [data, setData] = useState<any[]>([])\n\n const isMobile = useMediaQuery({ query: '(max-width: 1024px)' })\n\n const handleAdvertisingSpace = (products: any[]) => {\n const updatedProducts = cloneDeep(products || [])\n if (currentAdvertisingSpace) {\n const findIndex = updatedProducts.findIndex(item => item.mImage)\n if (findIndex === -1) {\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n } else {\n updatedProducts.splice(findIndex, 1)\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n }\n }\n return updatedProducts\n }\n\n useImperativeHandle(ref, () => ({\n clearData() {\n setData([])\n },\n }))\n\n const onScrollTop = () => {\n const target = filterCardWrapRef.current\n if (!target) return\n const targetY = target.getBoundingClientRect()?.top + window?.pageYOffset - 120\n window?.scrollTo?.({\n top: targetY,\n behavior: 'smooth',\n })\n }\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return product?.metafields?.seoSetting?.noindex\n }\n\n // \u5904\u7406\u4EA7\u54C1\u6570\u636E\n useEffect(() => {\n if (result?.slug || result?.id) {\n if (page === 1 || !isMobile) {\n setData([])\n }\n if (result?.products) {\n setData(prevProducts => {\n // \u68C0\u67E5\u662F\u5426\u5DF2\u7ECF\u5B58\u5728\u4E8E prevProducts \u4E2D\uFF0C\u907F\u514D\u91CD\u590D\u6DFB\u52A0\n const newProducts = result.products?.filter?.(\n (product: { id: any }) => !prevProducts.some(prev => prev.id === product.id)\n )\n let updatedProducts = [...prevProducts, ...newProducts]\n /** \u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1 */\n const soldOutProducts = updatedProducts.filter?.(\n item =>\n !(\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n )\n // \u8FC7\u6EE4\u6389 availableForSale \u4E3A false \u7684\u4EA7\u54C1\n updatedProducts = updatedProducts.filter?.(\n item =>\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n // \u5C06\u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1\u6DFB\u52A0\u5230\u6700\u540E\n updatedProducts.push(...soldOutProducts)\n // \u5982\u679C\u662F\u6709\u6298\u6263\u7684\u4EA7\u54C1\uFF0C\u5219\u8FC7\u6EE4\u6389\u6CA1\u6709\u6298\u6263\u7684\u4EA7\u54C1\n if (isSale) {\n updatedProducts = updatedProducts.filter?.((item: any) => {\n let isShow = false\n const isColor = item?.options?.find((item: any) => item?.displayName === 'color')\n if (isColor) {\n isShow = item?.variants?.find(\n (params: any) =>\n params?.coupons?.length && params?.coupons?.[0] && typeof params?.coupons?.[0] === 'object'\n )\n } else {\n const isVariants = item?.variants?.[0]?.coupons\n isShow = isVariants?.length && isVariants?.[0] && typeof isVariants?.[0] === 'object'\n }\n return !!isShow\n })\n }\n // \u5982\u679C advertisingSpace \u5B58\u5728\u4E14\u5C1A\u672A\u6DFB\u52A0\u5230\u6570\u7EC4\u4E2D\n if (updatedProducts?.length && ((page === 1 && !isMobile) || isMobile)) {\n updatedProducts = handleAdvertisingSpace(updatedProducts)\n }\n return updatedProducts\n })\n }\n }\n }, [result?.products, page, isMobile, advertisingSpace, isSale])\n\n useEffect(() => {\n if (!data?.length) return\n if (page === 1 && !isMobile) {\n setData(handleAdvertisingSpace(data))\n }\n }, [closeFilter])\n\n useEffect(() => {\n const isClass = document?.querySelector?.('.yotpo-reviews-star-ratings-widget')\n if (data?.length && (!isClass || isMobile)) {\n refreshStarRating?.()\n }\n }, [data])\n return (\n <div className=\"filter-card-wrap-container\" ref={filterCardWrapRef}>\n <div\n className={cn(\n 'w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3',\n {\n 'laptop:grid-cols-4 tablet:grid-cols-3': closeFilter && !isMobile,\n 'laptop:grid-cols-3 tablet:grid-cols-2': !closeFilter && !isMobile,\n },\n 'filter-card-wrap'\n )}\n >\n {data?.map?.(item => {\n if (hasNoIndex(item)) return null\n return (\n <FilterCardWrapItem\n data={item}\n key={item.id}\n buttonText={buttonText}\n metafields={metafields}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n )\n })}\n </div>\n {noResultNode}\n {isMobile && result?.pageInfo?.hasNextPage ? (\n <div\n onClick={() => {\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n className=\"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more\"\n >\n <span>{loadMoreText || 'View More'}</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\">\n <path\n d=\"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </div>\n ) : null}\n {!isMobile && total > 18 ? (\n <div className=\"mt-6 flex items-center justify-end gap-4 cursor-pointer\">\n <button\n name=\"perv page\"\n disabled={!result?.pageInfo?.hasPreviousPage || !data?.length}\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasPreviousPage || !data?.length,\n }\n )}\n onClick={() => {\n onScrollTop?.()\n onPrevPage?.(result?.pageInfo?.startCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 5L7 10L12 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n name=\"next page\"\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasNextPage || !data?.length,\n }\n )}\n disabled={!result?.pageInfo?.hasNextPage || !data?.length}\n onClick={() => {\n onScrollTop?.()\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 5L12.5 10L7.5 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default forwardRef(FilterCardWrap)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useMediaQuery } from 'react-responsive'\nimport FilterCardWrapItem from './FilterCardWrapItem'\nimport { useRef, useState, useEffect, forwardRef, useImperativeHandle } from 'react'\nimport type { Ref } from 'react'\nimport { cloneDeep } from 'es-toolkit'\n\ntype FilterCardWrapProps = {\n isSale?: boolean\n result?: any\n total: number\n shopifyData?: any\n currentPage?: number\n closeFilter: boolean\n page: number\n metafields: any\n noResultNode?: React.ReactNode\n refreshStarRating?: () => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n}\n\nconst FilterCardWrap = (props: FilterCardWrapProps, ref: Ref<unknown> | undefined) => {\n const {\n shopifyData = {},\n isSale = false,\n total,\n result,\n closeFilter,\n page,\n metafields,\n noResultNode,\n refreshStarRating,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n const { advertisingSpace } = metafields\n const { buttonText, loadMoreText } = shopifyData\n\n const currentAdvertisingSpace = advertisingSpace || shopifyData?.advertisingSpace\n\n const filterCardWrapRef = useRef<any>(null)\n\n const [data, setData] = useState<any[]>([])\n\n const isMobile = useMediaQuery({ query: '(max-width: 1024px)' })\n\n const handleAdvertisingSpace = (products: any[]) => {\n const updatedProducts = cloneDeep(products || [])\n if (currentAdvertisingSpace) {\n const findIndex = updatedProducts.findIndex(item => item.mImage)\n if (findIndex === -1) {\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n } else {\n updatedProducts.splice(findIndex, 1)\n const insertIndex = closeFilter\n ? Math.min(currentAdvertisingSpace?.maxLocation || 7, updatedProducts.length)\n : Math.min(currentAdvertisingSpace?.minLocation || 5, updatedProducts.length)\n updatedProducts.splice(insertIndex, 0, currentAdvertisingSpace)\n }\n }\n return updatedProducts\n }\n\n useImperativeHandle(ref, () => ({\n clearData() {\n setData([])\n },\n }))\n\n const onScrollTop = () => {\n const target = filterCardWrapRef.current\n if (!target) return\n const targetY = target.getBoundingClientRect()?.top + window?.pageYOffset - 120\n window?.scrollTo?.({\n top: targetY,\n behavior: 'smooth',\n })\n }\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return product?.metafields?.seoSetting?.noindex\n }\n\n // \u5904\u7406\u4EA7\u54C1\u6570\u636E\n useEffect(() => {\n if (result?.slug || result?.id) {\n if (page === 1 || !isMobile) {\n setData([])\n }\n if (result?.products) {\n setData(prevProducts => {\n // \u68C0\u67E5\u662F\u5426\u5DF2\u7ECF\u5B58\u5728\u4E8E prevProducts \u4E2D\uFF0C\u907F\u514D\u91CD\u590D\u6DFB\u52A0\n const newProducts = result.products?.filter?.(\n (product: { id: any }) => !prevProducts.some(prev => prev.id === product.id)\n )\n let updatedProducts = [...prevProducts, ...newProducts]\n /** \u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1 */\n const soldOutProducts = updatedProducts.filter?.(\n item =>\n !(\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n )\n // \u8FC7\u6EE4\u6389 availableForSale \u4E3A false \u7684\u4EA7\u54C1\n updatedProducts = updatedProducts.filter?.(\n item =>\n !item?.metafields?.seoSetting?.noindex &&\n item.availableForSale &&\n item?.variants?.some((item: { availableForSale: any }) => item.availableForSale)\n )\n // \u5C06\u5DF2\u552E\u5B8C\u7684\u4EA7\u54C1\u6DFB\u52A0\u5230\u6700\u540E\n updatedProducts.push(...soldOutProducts)\n // \u5982\u679C\u662F\u6709\u6298\u6263\u7684\u4EA7\u54C1\uFF0C\u5219\u8FC7\u6EE4\u6389\u6CA1\u6709\u6298\u6263\u7684\u4EA7\u54C1\n if (isSale) {\n updatedProducts = updatedProducts.filter?.((item: any) => {\n let isShow = false\n const isColor = item?.options?.find((item: any) => item?.displayName === 'color')\n if (isColor) {\n isShow = item?.variants?.find(\n (params: any) =>\n params?.coupons?.length && params?.coupons?.[0] && typeof params?.coupons?.[0] === 'object'\n )\n } else {\n const isVariants = item?.variants?.[0]?.coupons\n isShow = isVariants?.length && isVariants?.[0] && typeof isVariants?.[0] === 'object'\n }\n return !!isShow\n })\n }\n // \u5982\u679C advertisingSpace \u5B58\u5728\u4E14\u5C1A\u672A\u6DFB\u52A0\u5230\u6570\u7EC4\u4E2D\n if (updatedProducts?.length && ((page === 1 && !isMobile) || isMobile)) {\n updatedProducts = handleAdvertisingSpace(updatedProducts)\n }\n return updatedProducts\n })\n }\n }\n }, [result?.products, page, isMobile, advertisingSpace, isSale])\n\n useEffect(() => {\n if (!data?.length) return\n if (page === 1 && !isMobile) {\n setData(handleAdvertisingSpace(data))\n }\n }, [closeFilter])\n\n useEffect(() => {\n const isClass = document?.querySelector?.('.yotpo-reviews-star-ratings-widget')\n if (data?.length && (!isClass || isMobile)) {\n refreshStarRating?.()\n }\n }, [data])\n return (\n <div className=\"filter-card-wrap-container\" ref={filterCardWrapRef}>\n <div\n className={cn(\n 'w-full grid gap-3 md-tablet:grid-cols-2 grid-cols-3',\n {\n 'laptop:grid-cols-4 tablet:grid-cols-3': closeFilter && !isMobile,\n 'laptop:grid-cols-3 tablet:grid-cols-2': !closeFilter && !isMobile,\n },\n 'filter-card-wrap'\n )}\n >\n {data?.map?.(item => {\n if (hasNoIndex(item)) return null\n return (\n <FilterCardWrapItem\n data={item}\n key={item.id}\n buttonText={buttonText}\n metafields={metafields}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n )\n })}\n </div>\n {!data?.length && noResultNode}\n {isMobile && result?.pageInfo?.hasNextPage ? (\n <div\n onClick={() => {\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n className=\"mt-6 text-sm font-bold cursor-pointer flex items-center justify-center gap-1 filter-card-wrap-more\"\n >\n <span>{loadMoreText || 'View More'}</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"6\" viewBox=\"0 0 12 6\" fill=\"none\">\n <path\n d=\"M9.96967 0.21967C10.2626 -0.0732232 10.7373 -0.073223 11.0302 0.21967C11.3231 0.512563 11.3231 0.987324 11.0302 1.28022L6.53022 5.78022C6.23732 6.07311 5.76256 6.07311 5.46967 5.78022L0.96967 1.28022C0.676777 0.987324 0.676777 0.512563 0.96967 0.21967C1.26256 -0.0732233 1.73732 -0.0732233 2.03022 0.21967L5.99994 4.1894L9.96967 0.21967Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </div>\n ) : null}\n {!isMobile && total > 18 ? (\n <div className=\"mt-6 flex items-center justify-end gap-4 cursor-pointer\">\n <button\n name=\"perv page\"\n disabled={!result?.pageInfo?.hasPreviousPage || !data?.length}\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasPreviousPage || !data?.length,\n }\n )}\n onClick={() => {\n onScrollTop?.()\n onPrevPage?.(result?.pageInfo?.startCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M12 5L7 10L12 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <button\n name=\"next page\"\n className={cn(\n 'flex items-center justify-center lg-desktop:size-14 size-10 rounded-full leading-tight overflow-hidden bg-transparent border-[1.5px] border-[#3D3D3F]',\n {\n 'opacity-50 cursor-not-allowed': !result?.pageInfo?.hasNextPage || !data?.length,\n }\n )}\n disabled={!result?.pageInfo?.hasNextPage || !data?.length}\n onClick={() => {\n onScrollTop?.()\n onNextPage?.(result?.pageInfo?.endCursor)\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M7.5 5L12.5 10L7.5 15\"\n stroke=\"#3D3D3F\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default forwardRef(FilterCardWrap)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "cn", "useMediaQuery", "FilterCardWrapItem", "useRef", "useState", "useEffect", "forwardRef", "useImperativeHandle", "cloneDeep", "FilterCardWrap", "props", "ref", "shopifyData", "isSale", "total", "result", "closeFilter", "page", "metafields", "noResultNode", "refreshStarRating", "onPrimaryChange", "onSecondaryChange", "onNextPage", "onPrevPage", "advertisingSpace", "buttonText", "loadMoreText", "currentAdvertisingSpace", "filterCardWrapRef", "data", "setData", "isMobile", "handleAdvertisingSpace", "products", "updatedProducts", "findIndex", "item", "insertIndex", "onScrollTop", "target", "targetY", "hasNoIndex", "product", "prevProducts", "newProducts", "prev", "soldOutProducts", "isShow", "params", "isVariants", "isClass", "FilterCardWrap_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as l,jsxs as h}from"react/jsx-runtime";import $ from"./FilterList";import j from"./FilterHeader";import ee from"./FilterCardWrap";import{withLayout as te}from"../../shared/Styles.js";import oe from"./component/TabFilter";import{useState as o,useMemo as c,useEffect as O,useRef as w}from"react";import{handleSortKeyAndReverse as re,handleFilters as I,handleFilterOptions as ne,getComponentData as se}from"./component/filtersFun";function ae(L){const{data:i,result:n={},allResult:y={},loadMore:K=null,noResultNode:_=null,metafields:s={},filterPrice:v={},isLoading:b=!1,refreshStarRating:k,onFilteredChange:C,onSortAndReverseChange:M,onPrimaryChange:A,onSecondaryChange:V,onNextPage:z,onPrevPage:T}=L,{shop_filters_pair:a}=s,{data:F}=se(s,"FilterProduct"),[d,W]=o(!1),[E,P]=o(!1),[H,q]=o([]),[r,x]=o({}),[u,B]=o(0),[p,f]=o(1),[G,J]=o(!1),[Q,U]=o(!1),X=w(null),g=w(!1);c(()=>{const e=a?.filter_txt?.sortList,[t,Z]=re(e,u);M?.(t,Z)},[a?.filter_txt?.sortList,r,u]);const Y=e=>!e?.metafields?.seoSetting?.noindex,R=c(()=>y?.products?.filter(Y)?.length||0,[y?.products]),m=c(()=>ne(n,v,a,F),[v,n?.filters,a?.filter_txt?.offers?.name,a?.filter_txt?.offers?.onsale]),S=c(()=>m?.length?m?.map?.(e=>({...e,options:e?.options?.map?.(t=>({...t,checked:r?.[e?.value]?.indexOf?.(t?.value)>-1}))})):[],[r,m]),N=e=>{x?.({}),e&&f(1),C?.(I({}))},D=e=>{x(e),f(1),C?.(I(e))};return O(()=>{const t=(r?.offers||[])?.includes?.("onsale");J(t)},[r]),O(()=>{!g.current&&n?.products?.length&&(g.current=!0),g.current&&U(!0)},[n?.products]),h("div",{className:"size-full box-border",children:[l("div",{className:"laptop:mb-12 mb-6",children:l(oe,{tabs:i?.tabItems,filtered:r,filtersPair:S,filtersData:F,metafields:s,onTabClick:e=>D(e)})}),l(j,{total:R||0,metafields:s,closeFilter:d,sortKeyIndx:u,shopifyData:i,onSortChange:B,onCloseFilter:W,onClearFiltered:()=>N(),onMobileOpenDrawer:P}),h("div",{className:"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8",children:[!d&&l($,{shopifyData:i,filtered:r,openOptions:H,closeFilter:d,filtersPair:S,mobileDrawerVisible:E,onFilteredChange:D,onClearFiltered:()=>N(!1),onOpenOptions:q,onCloseDrawer:P}),h("div",{className:"flex-1 overflow-y-auto relative",children:[l(ee,{page:p,result:n,shopifyData:i,total:R,isSale:G,ref:X,metafields:s,closeFilter:d,noResultNode:Q&&!b&&!n.products?.length?_:null,refreshStarRating:k,onNextPage:e=>{f(p+1),z?.(e)},onPrevPage:e=>{f(p-1),T?.(e)},onPrimaryChange:(e,t)=>A?.(e,t),onSecondaryChange:(e,t)=>V?.(e,t)}),b&&K||null]})]})]})}var ge=te(ae);export{ge as default};
1
+ import{jsx as l,jsxs as h}from"react/jsx-runtime";import $ from"./FilterList";import j from"./FilterHeader";import ee from"./FilterCardWrap";import{withLayout as te}from"../../shared/Styles.js";import oe from"./component/TabFilter";import{useState as o,useMemo as c,useEffect as O,useRef as w}from"react";import{handleSortKeyAndReverse as re,handleFilters as I,handleFilterOptions as ne,getComponentData as se}from"./component/filtersFun";function ae(L){const{data:i,result:n={},allResult:y={},loadMore:K=null,noResultNode:_=null,metafields:s={},filterPrice:v={},isLoading:b=!1,refreshStarRating:k,onFilteredChange:C,onSortAndReverseChange:M,onPrimaryChange:A,onSecondaryChange:V,onNextPage:z,onPrevPage:T}=L,{shop_filters_pair:a}=s,{data:F}=se(s,"FilterProduct"),[d,W]=o(!1),[E,P]=o(!1),[H,q]=o([]),[r,x]=o({}),[u,B]=o(0),[p,f]=o(1),[G,J]=o(!1),[Q,U]=o(!1),X=w(null),m=w(!1);c(()=>{const e=a?.filter_txt?.sortList,[t,Z]=re(e,u);M?.(t,Z)},[a?.filter_txt?.sortList,r,u]);const Y=e=>!e?.metafields?.seoSetting?.noindex,R=c(()=>y?.products?.filter(Y)?.length||0,[y?.products]),g=c(()=>ne(n,v,a,F),[v,n?.filters,a?.filter_txt?.offers?.name,a?.filter_txt?.offers?.onsale]),S=c(()=>g?.length?g?.map?.(e=>({...e,options:e?.options?.map?.(t=>({...t,checked:r?.[e?.value]?.indexOf?.(t?.value)>-1}))})):[],[r,g]),N=e=>{x?.({}),e&&f(1),C?.(I({}))},D=e=>{x(e),f(1),C?.(I(e))};return O(()=>{const t=(r?.offers||[])?.includes?.("onsale");J(t)},[r]),O(()=>{!m.current&&n?.products?.length&&(m.current=!0),m.current&&U(!0)},[n?.products]),h("div",{className:"size-full box-border",children:[l("div",{className:"laptop:mb-12 mb-6",children:l(oe,{tabs:i?.tabItems,filtered:r,filtersPair:S,filtersData:F,metafields:s,onTabClick:e=>D(e)})}),l(j,{total:R||0,metafields:s,closeFilter:d,sortKeyIndx:u,shopifyData:i,onSortChange:B,onCloseFilter:W,onClearFiltered:()=>N(),onMobileOpenDrawer:P}),h("div",{className:"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8",children:[!d&&l($,{shopifyData:i,filtered:r,openOptions:H,closeFilter:d,filtersPair:S,mobileDrawerVisible:E,onFilteredChange:D,onClearFiltered:()=>N(!1),onOpenOptions:q,onCloseDrawer:P}),h("div",{className:"flex-1 overflow-y-auto relative",children:[l(ee,{page:p,result:n,shopifyData:i,total:R,isSale:G,ref:X,metafields:s,closeFilter:d,noResultNode:Q&&!b?_:null,refreshStarRating:k,onNextPage:e=>{f(p+1),z?.(e)},onPrevPage:e=>{f(p-1),T?.(e)},onPrimaryChange:(e,t)=>A?.(e,t),onSecondaryChange:(e,t)=>V?.(e,t)}),b&&K||null]})]})]})}var me=te(ae);export{me as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionsFilters/index.tsx"],
4
- "sourcesContent": ["import FilterList from './FilterList'\nimport FilterHeader from './FilterHeader'\nimport FilterCardWrap from './FilterCardWrap'\nimport { withLayout } from '../../shared/Styles.js'\nimport TabFilter from './component/TabFilter'\nimport { useState, useMemo, useEffect, useRef } from 'react'\nimport { handleSortKeyAndReverse, handleFilters, handleFilterOptions, getComponentData } from './component/filtersFun'\n\ntype CollectionsFiltersProps = {\n metafields: any\n result: any\n allResult: any\n pageSize?: number\n filterPrice: any\n isLoading?: boolean\n refreshStarRating?: () => void\n loadMore?: React.ReactNode\n noResultNode?: React.ReactNode\n data?: any\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n onFilteredChange?: (filtered: any) => void\n onSortAndReverseChange?: (sortKey: string, reverse: boolean) => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\nfunction CollectionsFilters(props: CollectionsFiltersProps) {\n const {\n data,\n result = {},\n allResult = {},\n loadMore = null,\n noResultNode = null,\n metafields = {},\n filterPrice = {},\n isLoading = false,\n refreshStarRating,\n onFilteredChange,\n onSortAndReverseChange,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n\n const { shop_filters_pair } = metafields\n\n const { data: filterProductData } = getComponentData(metafields, 'FilterProduct')\n\n const [closeFilter, setCloseFilter] = useState<boolean>(false)\n const [mobileDrawerVisible, setMobileDrawerVisible] = useState<boolean>(false) // \u79FB\u52A8\u7AEF\u7B5B\u9009\u9009\u9879\u5C55\u793A\u72B6\u6001\n const [openOptions, setOpenOptions] = useState<any[]>([]) // \u5C55\u5F00\u7684\u7B5B\u9009\u9879\n const [filtered, setFiltered] = useState<any>({}) // \u9009\u62E9\u7684\u7B5B\u9009\u9009\u9879\n const [sortKeyIndx, setSortKeyIndx] = useState<number>(0) // \u6392\u5E8F\u65B9\u5F0F\n const [currentPage, setCurrentPage] = useState<number>(1)\n const [isSale, setIsSale] = useState<boolean>(false)\n const [isRefresh, setIsRefresh] = useState<boolean>(false)\n\n const filterCardWrapRef = useRef<any>(null)\n const initRefresh = useRef<boolean>(false)\n\n // \u5904\u7406\u6392\u5E8F\u6570\u636E\n useMemo(() => {\n const sortList = shop_filters_pair?.filter_txt?.sortList\n const [sortKey, reverse] = handleSortKeyAndReverse(sortList, sortKeyIndx)\n onSortAndReverseChange?.(sortKey, reverse)\n }, [shop_filters_pair?.filter_txt?.sortList, filtered, sortKeyIndx])\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return !product?.metafields?.seoSetting?.noindex\n }\n const totalCount = useMemo(() => {\n return allResult?.products?.filter(hasNoIndex)?.length || 0\n }, [allResult?.products])\n\n // \u5904\u7406\u7B5B\u9009\u9879\u6570\u636E\n const filtersOptions = useMemo(() => {\n return handleFilterOptions(result, filterPrice, shop_filters_pair, filterProductData)\n }, [\n filterPrice,\n result?.filters,\n shop_filters_pair?.filter_txt?.offers?.name,\n shop_filters_pair?.filter_txt?.offers?.onsale,\n ])\n\n const filtersPair = useMemo(() => {\n if (!filtersOptions?.length) return []\n return filtersOptions?.map?.((filter: any) => {\n return {\n ...filter,\n options: filter?.options?.map?.((opt: any) => {\n return {\n ...opt,\n checked: filtered?.[filter?.value]?.indexOf?.(opt?.value) > -1,\n }\n }),\n }\n })\n }, [filtered, filtersOptions])\n\n\n const clearFiltered = (flag?: boolean) => {\n setFiltered?.({})\n if (flag) {\n setCurrentPage(1)\n }\n onFilteredChange?.(handleFilters({}))\n }\n\n const filterChange = (v: any) => {\n setFiltered(v)\n setCurrentPage(1)\n onFilteredChange?.(handleFilters(v))\n }\n\n useEffect(() => {\n const offers = filtered?.offers || []\n const isShowSale = offers?.includes?.('onsale')\n setIsSale(isShowSale)\n }, [filtered])\n\n useEffect(() => {\n if (!initRefresh.current && result?.products?.length) {\n initRefresh.current = true\n }\n if (initRefresh.current) {\n setIsRefresh(true)\n }\n }, [result?.products])\n\n return (\n <div className=\"size-full box-border\">\n {/* \u5934\u90E8 */}\n <div className=\"laptop:mb-12 mb-6\">\n <TabFilter\n tabs={data?.tabItems}\n filtered={filtered}\n filtersPair={filtersPair}\n filtersData={filterProductData}\n metafields={metafields}\n onTabClick={v => filterChange(v)}\n />\n </div>\n <FilterHeader\n total={totalCount || 0}\n metafields={metafields}\n closeFilter={closeFilter}\n sortKeyIndx={sortKeyIndx}\n shopifyData={data}\n onSortChange={setSortKeyIndx}\n onCloseFilter={setCloseFilter}\n onClearFiltered={() => clearFiltered()}\n onMobileOpenDrawer={setMobileDrawerVisible}\n />\n {/* PC\u7B5B\u9009\u9009\u9879 */}\n <div className=\"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8\">\n {!closeFilter && (\n <FilterList\n shopifyData={data}\n filtered={filtered}\n openOptions={openOptions}\n closeFilter={closeFilter}\n filtersPair={filtersPair}\n mobileDrawerVisible={mobileDrawerVisible}\n onFilteredChange={filterChange}\n onClearFiltered={() => clearFiltered(false)}\n onOpenOptions={setOpenOptions}\n onCloseDrawer={setMobileDrawerVisible}\n />\n )}\n <div className=\"flex-1 overflow-y-auto relative\">\n <FilterCardWrap\n page={currentPage}\n result={result}\n shopifyData={data}\n total={totalCount}\n isSale={isSale}\n ref={filterCardWrapRef}\n metafields={metafields}\n closeFilter={closeFilter}\n noResultNode={isRefresh && !isLoading && !result.products?.length ? noResultNode : null}\n refreshStarRating={refreshStarRating}\n onNextPage={v => {\n setCurrentPage(currentPage + 1)\n onNextPage?.(v)\n }}\n onPrevPage={v => {\n setCurrentPage(currentPage - 1)\n onPrevPage?.(v)\n }}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n {isLoading ? loadMore || null : null}\n </div>\n </div>\n </div>\n )\n}\n\nexport default withLayout(CollectionsFilters)"],
5
- "mappings": "AAsIQ,cAAAA,EAoCA,QAAAC,MApCA,oBAtIR,OAAOC,MAAgB,eACvB,OAAOC,MAAkB,iBACzB,OAAOC,OAAoB,mBAC3B,OAAS,cAAAC,OAAkB,yBAC3B,OAAOC,OAAe,wBACtB,OAAS,YAAAC,EAAU,WAAAC,EAAS,aAAAC,EAAW,UAAAC,MAAc,QACrD,OAAS,2BAAAC,GAAyB,iBAAAC,EAAe,uBAAAC,GAAqB,oBAAAC,OAAwB,yBAoB9F,SAASC,GAAmBC,EAAgC,CAC1D,KAAM,CACJ,KAAAC,EACA,OAAAC,EAAS,CAAC,EACV,UAAAC,EAAY,CAAC,EACb,SAAAC,EAAW,KACX,aAAAC,EAAe,KACf,WAAAC,EAAa,CAAC,EACd,YAAAC,EAAc,CAAC,EACf,UAAAC,EAAY,GACZ,kBAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,WAAAC,EACA,WAAAC,CACF,EAAIf,EAEE,CAAE,kBAAAgB,CAAkB,EAAIV,EAExB,CAAE,KAAMW,CAAkB,EAAInB,GAAiBQ,EAAY,eAAe,EAE1E,CAACY,EAAaC,CAAc,EAAI5B,EAAkB,EAAK,EACvD,CAAC6B,EAAqBC,CAAsB,EAAI9B,EAAkB,EAAK,EACvE,CAAC+B,EAAaC,CAAc,EAAIhC,EAAgB,CAAC,CAAC,EAClD,CAACiC,EAAUC,CAAW,EAAIlC,EAAc,CAAC,CAAC,EAC1C,CAACmC,EAAaC,CAAc,EAAIpC,EAAiB,CAAC,EAClD,CAACqC,EAAaC,CAAc,EAAItC,EAAiB,CAAC,EAClD,CAACuC,EAAQC,CAAS,EAAIxC,EAAkB,EAAK,EAC7C,CAACyC,EAAWC,CAAY,EAAI1C,EAAkB,EAAK,EAEnD2C,EAAoBxC,EAAY,IAAI,EACpCyC,EAAczC,EAAgB,EAAK,EAGzCF,EAAQ,IAAM,CACZ,MAAM4C,EAAWpB,GAAmB,YAAY,SAC1C,CAACqB,EAASC,CAAO,EAAI3C,GAAwByC,EAAUV,CAAW,EACxEf,IAAyB0B,EAASC,CAAO,CAC3C,EAAG,CAACtB,GAAmB,YAAY,SAAUQ,EAAUE,CAAW,CAAC,EAEnE,MAAMa,EAAcC,GACX,CAACA,GAAS,YAAY,YAAY,QAErCC,EAAajD,EAAQ,IAClBW,GAAW,UAAU,OAAOoC,CAAU,GAAG,QAAU,EACzD,CAACpC,GAAW,QAAQ,CAAC,EAGlBuC,EAAiBlD,EAAQ,IACtBK,GAAoBK,EAAQK,EAAaS,EAAmBC,CAAiB,EACnF,CACDV,EACAL,GAAQ,QACRc,GAAmB,YAAY,QAAQ,KACvCA,GAAmB,YAAY,QAAQ,MACzC,CAAC,EAEK2B,EAAcnD,EAAQ,IACrBkD,GAAgB,OACdA,GAAgB,MAAOE,IACrB,CACL,GAAGA,EACH,QAASA,GAAQ,SAAS,MAAOC,IACxB,CACL,GAAGA,EACH,QAASrB,IAAWoB,GAAQ,KAAK,GAAG,UAAUC,GAAK,KAAK,EAAI,EAC9D,EACD,CACH,EACD,EAXmC,CAAC,EAYpC,CAACrB,EAAUkB,CAAc,CAAC,EAGvBI,EAAiBC,GAAmB,CACxCtB,IAAc,CAAC,CAAC,EACZsB,GACFlB,EAAe,CAAC,EAElBnB,IAAmBd,EAAc,CAAC,CAAC,CAAC,CACtC,EAEMoD,EAAgBC,GAAW,CAC/BxB,EAAYwB,CAAC,EACbpB,EAAe,CAAC,EAChBnB,IAAmBd,EAAcqD,CAAC,CAAC,CACrC,EAEA,OAAAxD,EAAU,IAAM,CAEd,MAAMyD,GADS1B,GAAU,QAAU,CAAC,IACT,WAAW,QAAQ,EAC9CO,EAAUmB,CAAU,CACtB,EAAG,CAAC1B,CAAQ,CAAC,EAEb/B,EAAU,IAAM,CACV,CAAC0C,EAAY,SAAWjC,GAAQ,UAAU,SAC5CiC,EAAY,QAAU,IAEpBA,EAAY,SACdF,EAAa,EAAI,CAErB,EAAG,CAAC/B,GAAQ,QAAQ,CAAC,EAGnBjB,EAAC,OAAI,UAAU,uBAEb,UAAAD,EAAC,OAAI,UAAU,oBACb,SAAAA,EAACM,GAAA,CACC,KAAMW,GAAM,SACZ,SAAUuB,EACV,YAAamB,EACb,YAAa1B,EACb,WAAYX,EACZ,WAAY2C,GAAKD,EAAaC,CAAC,EACjC,EACF,EACAjE,EAACG,EAAA,CACC,MAAOsD,GAAc,EACrB,WAAYnC,EACZ,YAAaY,EACb,YAAaQ,EACb,YAAazB,EACb,aAAc0B,EACd,cAAeR,EACf,gBAAiB,IAAM2B,EAAc,EACrC,mBAAoBzB,EACtB,EAEApC,EAAC,OAAI,UAAU,qEACZ,WAACiC,GACAlC,EAACE,EAAA,CACC,YAAae,EACb,SAAUuB,EACV,YAAaF,EACb,YAAaJ,EACb,YAAayB,EACb,oBAAqBvB,EACrB,iBAAkB4B,EAClB,gBAAiB,IAAMF,EAAc,EAAK,EAC1C,cAAevB,EACf,cAAeF,EACjB,EAEFpC,EAAC,OAAI,UAAU,kCACb,UAAAD,EAACI,GAAA,CACC,KAAMwC,EACN,OAAQ1B,EACR,YAAaD,EACb,MAAOwC,EACP,OAAQX,EACR,IAAKI,EACL,WAAY5B,EACZ,YAAaY,EACb,aAAcc,GAAa,CAACxB,GAAa,CAACN,EAAO,UAAU,OAASG,EAAe,KACnF,kBAAmBI,EACnB,WAAYwC,GAAK,CACfpB,EAAeD,EAAc,CAAC,EAC9Bd,IAAamC,CAAC,CAChB,EACA,WAAYA,GAAK,CACfpB,EAAeD,EAAc,CAAC,EAC9Bb,IAAakC,CAAC,CAChB,EACA,gBAAiB,CAAC,EAAGhD,IAASW,IAAkB,EAAGX,CAAI,EACvD,kBAAmB,CAAC,EAAGA,IAASY,IAAoB,EAAGZ,CAAI,EAC7D,EACCO,GAAYJ,GAAY,MAC3B,GACF,GACF,CAEJ,CAEA,IAAO+C,GAAQ9D,GAAWU,EAAkB",
4
+ "sourcesContent": ["import FilterList from './FilterList'\nimport FilterHeader from './FilterHeader'\nimport FilterCardWrap from './FilterCardWrap'\nimport { withLayout } from '../../shared/Styles.js'\nimport TabFilter from './component/TabFilter'\nimport { useState, useMemo, useEffect, useRef } from 'react'\nimport { handleSortKeyAndReverse, handleFilters, handleFilterOptions, getComponentData } from './component/filtersFun'\n\ntype CollectionsFiltersProps = {\n metafields: any\n result: any\n allResult: any\n pageSize?: number\n filterPrice: any\n isLoading?: boolean\n refreshStarRating?: () => void\n loadMore?: React.ReactNode\n noResultNode?: React.ReactNode\n data?: any\n onNextPage?: (v: string) => void\n onPrevPage?: (v: string) => void\n onFilteredChange?: (filtered: any) => void\n onSortAndReverseChange?: (sortKey: string, reverse: boolean) => void\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\nfunction CollectionsFilters(props: CollectionsFiltersProps) {\n const {\n data,\n result = {},\n allResult = {},\n loadMore = null,\n noResultNode = null,\n metafields = {},\n filterPrice = {},\n isLoading = false,\n refreshStarRating,\n onFilteredChange,\n onSortAndReverseChange,\n onPrimaryChange,\n onSecondaryChange,\n onNextPage,\n onPrevPage,\n } = props\n\n const { shop_filters_pair } = metafields\n\n const { data: filterProductData } = getComponentData(metafields, 'FilterProduct')\n\n const [closeFilter, setCloseFilter] = useState<boolean>(false)\n const [mobileDrawerVisible, setMobileDrawerVisible] = useState<boolean>(false) // \u79FB\u52A8\u7AEF\u7B5B\u9009\u9009\u9879\u5C55\u793A\u72B6\u6001\n const [openOptions, setOpenOptions] = useState<any[]>([]) // \u5C55\u5F00\u7684\u7B5B\u9009\u9879\n const [filtered, setFiltered] = useState<any>({}) // \u9009\u62E9\u7684\u7B5B\u9009\u9009\u9879\n const [sortKeyIndx, setSortKeyIndx] = useState<number>(0) // \u6392\u5E8F\u65B9\u5F0F\n const [currentPage, setCurrentPage] = useState<number>(1)\n const [isSale, setIsSale] = useState<boolean>(false)\n const [isRefresh, setIsRefresh] = useState<boolean>(false)\n\n const filterCardWrapRef = useRef<any>(null)\n const initRefresh = useRef<boolean>(false)\n\n // \u5904\u7406\u6392\u5E8F\u6570\u636E\n useMemo(() => {\n const sortList = shop_filters_pair?.filter_txt?.sortList\n const [sortKey, reverse] = handleSortKeyAndReverse(sortList, sortKeyIndx)\n onSortAndReverseChange?.(sortKey, reverse)\n }, [shop_filters_pair?.filter_txt?.sortList, filtered, sortKeyIndx])\n\n const hasNoIndex = (product: { metafields: { seoSetting: { noindex: any } } }) => {\n return !product?.metafields?.seoSetting?.noindex\n }\n const totalCount = useMemo(() => {\n return allResult?.products?.filter(hasNoIndex)?.length || 0\n }, [allResult?.products])\n\n // \u5904\u7406\u7B5B\u9009\u9879\u6570\u636E\n const filtersOptions = useMemo(() => {\n return handleFilterOptions(result, filterPrice, shop_filters_pair, filterProductData)\n }, [\n filterPrice,\n result?.filters,\n shop_filters_pair?.filter_txt?.offers?.name,\n shop_filters_pair?.filter_txt?.offers?.onsale,\n ])\n\n const filtersPair = useMemo(() => {\n if (!filtersOptions?.length) return []\n return filtersOptions?.map?.((filter: any) => {\n return {\n ...filter,\n options: filter?.options?.map?.((opt: any) => {\n return {\n ...opt,\n checked: filtered?.[filter?.value]?.indexOf?.(opt?.value) > -1,\n }\n }),\n }\n })\n }, [filtered, filtersOptions])\n\n\n const clearFiltered = (flag?: boolean) => {\n setFiltered?.({})\n if (flag) {\n setCurrentPage(1)\n }\n onFilteredChange?.(handleFilters({}))\n }\n\n const filterChange = (v: any) => {\n setFiltered(v)\n setCurrentPage(1)\n onFilteredChange?.(handleFilters(v))\n }\n\n useEffect(() => {\n const offers = filtered?.offers || []\n const isShowSale = offers?.includes?.('onsale')\n setIsSale(isShowSale)\n }, [filtered])\n\n useEffect(() => {\n if (!initRefresh.current && result?.products?.length) {\n initRefresh.current = true\n }\n if (initRefresh.current) {\n setIsRefresh(true)\n }\n }, [result?.products])\n\n return (\n <div className=\"size-full box-border\">\n {/* \u5934\u90E8 */}\n <div className=\"laptop:mb-12 mb-6\">\n <TabFilter\n tabs={data?.tabItems}\n filtered={filtered}\n filtersPair={filtersPair}\n filtersData={filterProductData}\n metafields={metafields}\n onTabClick={v => filterChange(v)}\n />\n </div>\n <FilterHeader\n total={totalCount || 0}\n metafields={metafields}\n closeFilter={closeFilter}\n sortKeyIndx={sortKeyIndx}\n shopifyData={data}\n onSortChange={setSortKeyIndx}\n onCloseFilter={setCloseFilter}\n onClearFiltered={() => clearFiltered()}\n onMobileOpenDrawer={setMobileDrawerVisible}\n />\n {/* PC\u7B5B\u9009\u9009\u9879 */}\n <div className=\"flex-1 overflow-hidden tablet:flex desktop:gap-x-16 tablet:gap-x-8\">\n {!closeFilter && (\n <FilterList\n shopifyData={data}\n filtered={filtered}\n openOptions={openOptions}\n closeFilter={closeFilter}\n filtersPair={filtersPair}\n mobileDrawerVisible={mobileDrawerVisible}\n onFilteredChange={filterChange}\n onClearFiltered={() => clearFiltered(false)}\n onOpenOptions={setOpenOptions}\n onCloseDrawer={setMobileDrawerVisible}\n />\n )}\n <div className=\"flex-1 overflow-y-auto relative\">\n <FilterCardWrap\n page={currentPage}\n result={result}\n shopifyData={data}\n total={totalCount}\n isSale={isSale}\n ref={filterCardWrapRef}\n metafields={metafields}\n closeFilter={closeFilter}\n noResultNode={isRefresh && !isLoading ? noResultNode : null}\n refreshStarRating={refreshStarRating}\n onNextPage={v => {\n setCurrentPage(currentPage + 1)\n onNextPage?.(v)\n }}\n onPrevPage={v => {\n setCurrentPage(currentPage - 1)\n onPrevPage?.(v)\n }}\n onPrimaryChange={(e, data) => onPrimaryChange?.(e, data)}\n onSecondaryChange={(e, data) => onSecondaryChange?.(e, data)}\n />\n {isLoading ? loadMore || null : null}\n </div>\n </div>\n </div>\n )\n}\n\nexport default withLayout(CollectionsFilters)"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "FilterList", "FilterHeader", "FilterCardWrap", "withLayout", "TabFilter", "useState", "useMemo", "useEffect", "useRef", "handleSortKeyAndReverse", "handleFilters", "handleFilterOptions", "getComponentData", "CollectionsFilters", "props", "data", "result", "allResult", "loadMore", "noResultNode", "metafields", "filterPrice", "isLoading", "refreshStarRating", "onFilteredChange", "onSortAndReverseChange", "onPrimaryChange", "onSecondaryChange", "onNextPage", "onPrevPage", "shop_filters_pair", "filterProductData", "closeFilter", "setCloseFilter", "mobileDrawerVisible", "setMobileDrawerVisible", "openOptions", "setOpenOptions", "filtered", "setFiltered", "sortKeyIndx", "setSortKeyIndx", "currentPage", "setCurrentPage", "isSale", "setIsSale", "isRefresh", "setIsRefresh", "filterCardWrapRef", "initRefresh", "sortList", "sortKey", "reverse", "hasNoIndex", "product", "totalCount", "filtersOptions", "filtersPair", "filter", "opt", "clearFiltered", "flag", "filterChange", "v", "isShowSale", "CollectionsFilters_default"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.0.19-temp-101703",
3
+ "version": "1.0.19-temp-101705",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",