@gem-sdk/core 12.0.0-dev.52 → 12.0.0-dev.53
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.
- package/dist/cjs/components/InteractionSuffix.js +1 -1
- package/dist/cjs/components/Render.liquid.js +1 -1
- package/dist/cjs/components/RenderCustomCode.js +1 -1
- package/dist/cjs/components/ai-generator/AIContentGenerator.js +1 -1
- package/dist/cjs/components/ai-generator/components/PickProduct.js +1 -1
- package/dist/cjs/components/resize/Spacing.js +1 -1
- package/dist/cjs/components/theme-section/ThemeSectionTooltip.js +1 -2
- package/dist/cjs/contexts/ProductContext.js +1 -1
- package/dist/cjs/graphql/fragments/media.generated.js +1 -0
- package/dist/cjs/graphql/fragments/preview-theme-page.generated.js +0 -4
- package/dist/cjs/graphql/fragments/product-little.generated.js +1 -1
- package/dist/cjs/graphql/fragments/published-theme-page.generated.js +11 -2
- package/dist/cjs/graphql/queries/product-value-label.generated.js +4 -6
- package/dist/cjs/graphql/queries/published-theme-pages.generated.js +5 -2
- package/dist/cjs/helpers/interaction/index.js +1 -1
- package/dist/cjs/helpers/queries/get-products.js +1 -1
- package/dist/cjs/hooks/animation/animations.js +0 -1
- package/dist/cjs/hooks/shop/use-products-query.js +0 -1
- package/dist/cjs/hooks/useAnimations.js +1 -1
- package/dist/cjs/hooks/useInitialSwatchesOptions.js +1 -2
- package/dist/cjs/hooks/useProduct.js +1 -1
- package/dist/esm/components/InteractionSuffix.js +1 -1
- package/dist/esm/components/Render.liquid.js +1 -1
- package/dist/esm/components/RenderCustomCode.js +2 -2
- package/dist/esm/components/ai-generator/AIContentGenerator.js +1 -1
- package/dist/esm/components/ai-generator/components/PickProduct.js +1 -1
- package/dist/esm/components/resize/Spacing.js +1 -1
- package/dist/esm/components/theme-section/ThemeSectionTooltip.js +1 -2
- package/dist/esm/contexts/ProductContext.js +1 -1
- package/dist/esm/graphql/fragments/media.generated.js +1 -0
- package/dist/esm/graphql/fragments/preview-theme-page.generated.js +0 -4
- package/dist/esm/graphql/fragments/product-little.generated.js +1 -1
- package/dist/esm/graphql/fragments/published-theme-page.generated.js +11 -2
- package/dist/esm/graphql/queries/product-value-label.generated.js +4 -6
- package/dist/esm/graphql/queries/published-theme-pages.generated.js +5 -2
- package/dist/esm/helpers/interaction/index.js +1 -1
- package/dist/esm/helpers/queries/get-products.js +1 -1
- package/dist/esm/hooks/animation/animations.js +0 -1
- package/dist/esm/hooks/shop/use-products-query.js +0 -1
- package/dist/esm/hooks/useAnimations.js +1 -1
- package/dist/esm/hooks/useInitialSwatchesOptions.js +1 -2
- package/dist/esm/hooks/useProduct.js +1 -1
- package/dist/types/index.d.ts +9811 -2212
- package/package.json +3 -3
|
@@ -5,15 +5,24 @@ let PublishedThemePageSelect=`
|
|
|
5
5
|
handle
|
|
6
6
|
isMobile
|
|
7
7
|
sectionPosition
|
|
8
|
+
pageSections {
|
|
9
|
+
...PublishedPageSectionSelect
|
|
10
|
+
}
|
|
8
11
|
themePageCustomSections {
|
|
9
12
|
...PublishedCustomSectionSelect
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
...
|
|
14
|
+
themePageDataSEO {
|
|
15
|
+
...DataSEOSelect
|
|
13
16
|
}
|
|
14
17
|
pageStyle {
|
|
15
18
|
...PublishedThemeStyleSelect
|
|
16
19
|
}
|
|
20
|
+
themePageAnalytic {
|
|
21
|
+
...AnalyticSelect
|
|
22
|
+
}
|
|
23
|
+
themePageCustomCode {
|
|
24
|
+
...CustomCodeSelect
|
|
25
|
+
}
|
|
17
26
|
themePageCustomFonts {
|
|
18
27
|
...CustomFontSelect
|
|
19
28
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
let ProductOptionNameDocument=`
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
)
|
|
7
|
-
}`;export{ProductOptionNameDocument};
|
|
2
|
+
query productOptionName($limit: Int, $offset: Int) {
|
|
3
|
+
productOptionName(limit: $limit, offset: $offset)
|
|
4
|
+
}
|
|
5
|
+
`;export{ProductOptionNameDocument};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{PublishedThemePageSelect as e}from"../fragments/published-theme-page.generated.js";import{
|
|
1
|
+
import{PublishedThemePageSelect as e}from"../fragments/published-theme-page.generated.js";import{PublishedPageSectionSelect as s}from"../fragments/published-page-section.generated.js";import{PublishedCustomSectionSelect as t}from"../fragments/published-custom-section.generated.js";import{DataSeoSelect as m}from"../fragments/data-seo.generated.js";import{PublishedThemeStyleSelect as r}from"../fragments/published-theme-style.generated.js";import{AnalyticSelect as g}from"../fragments/analytic.generated.js";import{CustomCodeSelect as a}from"../fragments/custom-code.generated.js";import{CustomFontSelect as o}from"../fragments/custom-font.generated.js";let PublishedThemePagesDocument=`
|
|
2
2
|
query publishedThemePages($slug: String, $slugType: PublishedThemePageType!) {
|
|
3
3
|
publishedThemePages(slug: $slug, slugType: $slugType) {
|
|
4
4
|
...PublishedThemePageSelect
|
|
@@ -8,4 +8,7 @@ import{PublishedThemePageSelect as e}from"../fragments/published-theme-page.gene
|
|
|
8
8
|
${s}
|
|
9
9
|
${t}
|
|
10
10
|
${m}
|
|
11
|
-
${
|
|
11
|
+
${r}
|
|
12
|
+
${g}
|
|
13
|
+
${a}
|
|
14
|
+
${o}`;export{PublishedThemePagesDocument};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{useRef as t,useMemo as e,useCallback as
|
|
2
|
+
import{useRef as t,useMemo as e,useCallback as n}from"react";import"react/jsx-runtime";import"zustand";import{usePageStore as i}from"../../contexts/PageContext.js";import"react-transition-group";import"swr";import"swr/infinite";import"classnames";import"dayjs";import"../convert.js";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"vanilla-lazyload";import"../../hooks/useCartUI.js";import"../../hooks/useStickyStore.js";import"../../types/builder.js";import"../../types/custom.js";import"../../types/animations.js";let useInteraction=()=>{let r=t(),o=i(t=>t.setInteractionIsSelectOnPage),a=i(t=>t.sidebarMode),s=i(t=>t.interactionData?.selectType),c=i(t=>t.interactionData);function l(t,e){return!(t instanceof Document)&&t?.matches(e)?t:t?.querySelector(e)}let d=(t,e,n)=>{let i=t=>{let e=t.detail;n&&n(e)};return t.addEventListener(e,i),()=>t.removeEventListener(e,i)},m=({event:t,selector:e,elementRef:n},i)=>{let o=l(n?.current||r.current||document,e);if(o)return d(o,t,i)},p=({event:t,data:e,selector:n,element:i})=>{let r=i||document.body?.querySelector(n);if(!r)return;let o=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:{data:e}});r.dispatchEvent(o)},u=(t,e,n)=>{if(!t)return;let i=t.getAttribute("gp-data-interaction"),r=JSON.parse(i||"{}");t.setAttribute("gp-data-interaction",JSON.stringify({...r,[e]:n}))},b=(t,e)=>{let n=t.getAttribute("gp-data-interaction"),i=JSON.parse(n||"{}");return{previousData:i[e],interactionDataJson:i}},g=()=>{o(!1);let t=new CustomEvent("editor:interaction:change-select-on-page",{bubbles:!0,detail:!1});window.dispatchEvent(t)},w=t=>{let e=new CustomEvent("editor:interaction:change-select-mode",{bubbles:!0,detail:t});window.dispatchEvent(e)},v=({componentUid:t,settingType:e,$target:n})=>{let i=new CustomEvent("editor:interaction:select-element",{bubbles:!0,detail:{componentUid:t,settingType:e,$target:n}});window.dispatchEvent(i)},f=e(()=>"interaction"===a&&(!c?.isSelectOnPage||"PAGE"===s),[a,c?.isSelectOnPage,s]),y=e(()=>c?.isSelectOnPage,[c?.isSelectOnPage]),E=n(t=>{if(window.interactionLoaded){t();return}window.addEventListener("gp:flow-actions-loaded",()=>{t()})},[]);return{onListener:m,trigger:p,saveToElementInteractionData:u,closeSelectOnPage:g,ref:r,findElementIncludingSelf:l,getInteractionPreviousData:b,changeSelectMode:w,selectInteractionElement:v,isInteractionMode:f,isSelectOnPage:y,interactionListenerLoaded:E}};export{useInteraction};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ProductsDocument as e}from"../../graphql/queries/products.generated.js";import{calculateFirstProduct as t}from"./get-collection.js";import{fetchVariants as r,fetchMedias as d}from"./get-product.js";let getProducts=async(e,{ids:t,isSample:r,isStorefront:d,defaultSelectedProductCount:s,allStatus:o})=>{let a=await loopFetchProducts(e,{ids:t,isSample:r,isStorefront:d,defaultSelectedProductCount:s,allStatus:o});if(!a)throw Error("Product not found");let[i,c]=await Promise.all([mergeVariantsToProducts({fetcher:e,products:a,isSample:r,isStorefront:d}),mergeMediasToProducts({fetcher:e,products:a,isSample:r,isStorefront:d})]);return{...a,products:{...a.products,edges:a.products?.edges.map(e=>{let t=c.find(t=>t.productId===e.node?.baseID),r=i.find(t=>t.productId===e.node?.baseID);return e.node?{...e,node:{...e.node,variants:{...e.node?.variants,edges:r?.items??[]},medias:{...e.node?.medias,edges:t?.items??[]}}}:e})??[]}}},getProductQueryAll=async(e,t)=>{let r=t
|
|
1
|
+
import{ProductsDocument as e}from"../../graphql/queries/products.generated.js";import{calculateFirstProduct as t}from"./get-collection.js";import{fetchVariants as r,fetchMedias as d}from"./get-product.js";let getProducts=async(e,{ids:t,isSample:r,isStorefront:d,defaultSelectedProductCount:s,allStatus:o})=>{let a=await loopFetchProducts(e,{ids:t,isSample:r,isStorefront:d,defaultSelectedProductCount:s,allStatus:o});if(!a)throw Error("Product not found");let[i,c]=await Promise.all([mergeVariantsToProducts({fetcher:e,products:a,isSample:r,isStorefront:d}),mergeMediasToProducts({fetcher:e,products:a,isSample:r,isStorefront:d})]);return{...a,products:{...a.products,edges:a.products?.edges.map(e=>{let t=c.find(t=>t.productId===e.node?.baseID),r=i.find(t=>t.productId===e.node?.baseID);return e.node?{...e,node:{...e.node,variants:{...e.node?.variants,edges:r?.items??[]},medias:{...e.node?.medias,edges:t?.items??[]}}}:e})??[]}}},getProductQueryAll=async(e,t)=>{let r={first:t.first||4,firstMedia:1,firstVariant:1,orderBy:{field:"PLATFORM_CREATED_AT",direction:"DESC"},orderByMedia:{field:"POSITION",direction:"ASC"},where:{status:"ACTIVE",...t}},d=await fetchProducts(e,r);return d},getListProductByVariables=async(e,t)=>{let r={first:t.first||8,firstMedia:1,firstVariant:1,orderBy:{field:"PLATFORM_CREATED_AT",direction:"DESC"},orderByMedia:{field:"POSITION",direction:"ASC"},where:{status:"ACTIVE",...t.where},after:t.after},d=await fetchProducts(e,r);return d},fetchProducts=async(t,r)=>t([e,r]),loopFetchProducts=async(e,{ids:r,isSample:d,isStorefront:s,defaultSelectedProductCount:o,allStatus:a})=>{let i,c,n,u,l;let f=o||4,g=(r?.length==0?f:r?.length)??f,p=1,P=Math.ceil(g/8);for(;p<=P&&!1!==u;){let o=a?{}:{status:"ACTIVE"};i={first:t(g,p,8),firstMedia:1,firstVariant:1,orderBy:{field:"PLATFORM_CREATED_AT",direction:"DESC"},orderByMedia:{field:"POSITION",direction:"ASC"},where:{...o,isSample:d,...s&&{isStorefront:s},...r?.length?{baseIDIn:r}:{}},after:c};let f=await fetchProducts(e,i);if(c=f?.products?.pageInfo?.endCursor,1===p?(n=f,l=f):l?.products&&f?.products?.edges.length&&(l.products={edges:l.products.edges.concat(f?.products?.edges),pageInfo:f?.products?.pageInfo}),p++,!l){u=!1;break}}return n},mergeVariantsToProducts=async({fetcher:e,products:t,isSample:d,isStorefront:s})=>{let o=await Promise.all(t?.products?.edges?.map(async t=>{let o=await r(e,{id:t?.node?.baseID,isSample:d,isStorefront:s});return{productId:t?.node?.baseID,items:o}})??[]);return o},mergeMediasToProducts=async({fetcher:e,products:t,isSample:r,isStorefront:s})=>{let o=await Promise.all(t?.products?.edges?.map(async t=>{let o=await d(e,{id:t?.node?.baseID,isSample:r,isStorefront:s});return{productId:t?.node?.baseID,items:o}})??[]);return o};export{getListProductByVariables,getProductQueryAll,getProducts};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
let EASING={ease:"cubic-bezier(0.46,0.03,0.52,0.96)","ease-in":"cubic-bezier(0.55,0.08,0.68,0.53)","ease-out":"cubic-bezier(0.46,0.03,0.52,0.96)",linear:"linear"},animations=()=>{let t=t=>{let e=JSON.parse(JSON.stringify(t)),r=["delay","speed","scale","intensity"];return r.forEach(t=>{if(!e?.[t])return;if("scale"===t){if(!e?.zoomDirection)throw TypeError("zoomDirection not found on zoom preset");let[r,a]=e?.scale?.in??[1,1],[n,o]=e?.scale?.out??[1,1];e[t]={in:[Number(r)/100,Number(a)/100],out:[Number(n)/100,Number(o)/100]};return}let r=Number(e?.[t]);if("delay"===t?e[t]=1e3*r:e[t]=r,!isFinite(r))throw TypeError(`${t} must be a number`)}),e},e=(e,r)=>{let n=t(r),{direction:l,distance:s}=n,p=["left","right"].includes(l??"")?"X":"Y",u=["left","down"].includes(l??"")?"-":"",f=o(e),y=[{display:f,opacity:0,transform:`translate${p}(${u}${s??50}%)`},{display:f,opacity:i(e),transform:`translate${p}(0)`}];return c(e,y,{...a(n,500),fill:"forwards"})},r=(e,r)=>{let n=t(r),o=[{opacity:0},{opacity:i(e)}];return c(e,o,{...a(n,500)})},a=(t,e)=>{let r=t=>t?1.5/t*1e3:e,{loop:a,delay:n,speed:o,easing:i}=t??{},l=r(o),s=n??0,c=a?l+s:l;return{iterations:a?1/0:1,duration:c,delay:s,easing:EASING[i??"linear"]}},n=(e,r)=>{let n=t(r),{scale:l,zoomDirection:s,isFade:p}=n,[u,f]=l.in,[y,m]=l.out,d=o(e),b=i(e),$=[{display:d,transform:`scale(${u}, ${u})`,opacity:p?0:1},{display:d,transform:`scale(${f??1.2}, ${f??1.2})`,opacity:b}],w=[{display:d,transform:`scale(${y}, ${y})`,opacity:p?0:1},{display:d,transform:`scale(${m??.8}, ${m??.8})`,opacity:b}],x="in"===s?$:w;return c(e,x,{...a(n,700),fill:"forwards"})},o=t=>{let e="inline"===window.getComputedStyle(t,null).getPropertyValue("display");return e?"block":void 0},i=t=>window.getComputedStyle(t,null).getPropertyValue("opacity"),l=(t,e,r)=>{if(!e)return t;let a=e/r,n=[...t].pop();return[...t,{...n,offset:1-a}]},s=(e,r)=>{let n=t(r),{intensity:l}=n??{},s=o(e),p=i(e),u=[{transform:"translate3d(0, 0, 0)",opacity:p,display:s}],f=[{transform:"translate3d(4px, 0, 0)",opacity:p,display:s},{transform:"translate3d(-4px, 0, 0)",opacity:p,display:s},{transform:"translate3d(4px, 0, 0)",opacity:p,display:s}],y=[];Array.from(Array(l??1).keys()).forEach(()=>{y=[...y,...f]});let m=[{transform:"translate3d(-1px, 0, 0)",opacity:p,display:s},{transform:"translate3d(2px, 0, 0)",opacity:p,display:s},{transform:"translate3d(-4px, 0, 0)",opacity:p,display:s},...y,{transform:"translate3d(-4px, 0, 0)",opacity:p,display:s},{transform:"translate3d(2px, 0, 0)",opacity:p,display:s},{transform:"translate3d(-1px, 0, 0)",opacity:p,display:s}];return c(e,l?m:u,{...a(n??{},820)})},c=(t,e,r)=>{let a=new KeyframeEffect(t,r.iterations&&1===r.iterations?e:l(e,r?.delay??0,r?.duration??0),{...r});return new Animation(a,document.timeline)};return{zoom:n,shake:s,fade:r,slide:e}};export{animations};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
import e from"swr";import r from"swr/infinite";import{getProducts as t,getProductQueryAll as u,getListProductByVariables as o}from"../../helpers/queries/get-products.js";import{generateProductsQueryKey as s}from"../../helpers/query.js";import{useIsSampleProduct as l,useIsStorefrontProduct as c}from"../shop.js";import{useFetchHandle as p}from"../useFetchHandle.js";import{useMemo as n}from"react";import{usePageStore as a}from"../../contexts/PageContext.js";import{hasPublicStoreFrontData as d,createStoreFrontFetcher as f}from"../../helpers/create-store-front-fetcher.js";let useProductsQuery=(r,u,o)=>{let m=p(),i=a(e=>e.publicStoreFrontData),y=n(()=>d(i)?f(i):m,[i]),P=l(),h=c();return e(r?s({ids:r,isSample:P,isStorefront:h,defaultSelectedProductCount:o?.defaultSelectedProductCount,allStatus:o?.allStatus}):null,async([,e])=>t(o?.fetcher||y,e),u)},getKey=e=>(r,t)=>e&&(!t||t.products?.pageInfo?.hasNextPage)?0===r?["query/products",e]:["query/products",{...e,after:t.products?.pageInfo?.endCursor}]:null,useListProductQuery=(e,t)=>{let u=p(),s=r(getKey(e),async([,e])=>o(u,e),t);return s},useProductsQueryAll=(r,t,o)=>{let s=p();return e(r?["query/products",r]:null,async([,e])=>u(o||s,e),t)};export{useListProductQuery,useProductsQuery,useProductsQueryAll};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{animations as t}from"../helpers/animations.js";import"react";import"react/jsx-runtime";import"zustand";import"swr";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import"./useStickyStore.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"
|
|
2
|
+
import{animations as t}from"../helpers/animations.js";import"react";import"react/jsx-runtime";import"zustand";import"swr";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import"./useStickyStore.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import"../helpers/convert.js";let useAnimations=()=>{let{zoom:r,shake:i,fade:s,slide:o}=t();return{zoom:r,shake:i,fade:s,slide:o}};export{useAnimations};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import e from"swr";import{ProductOptionNameDocument as t}from"../graphql/queries/product-value-label.generated.js";import{colorPreset as o}from"../components/src/product/helpers/variant-presets.js";import{useSwatches as a}from"./shop.js";import{useFetchHandle as r}from"./useFetchHandle.js";import{useShopStore as s}from"../contexts/ShopContext.js";import"react";import"react/jsx-runtime";import"zustand";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import"./useStickyStore.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"@gem-sdk/core";import"classnames";import"dayjs";import l from"../helpers/is-browser.js";import"../helpers/convert.js";let swatchChange=!1,colorChange=!1,useInitialSwatchesOptions=t=>{let o=r(),i=s(e=>e.changeSwatches),{swatches:p}=a(),{data:n}=e(["/query/productOptionName",{}],async()=>fetchProductValueLabel(o),{revalidateOnMount:!0}),c=[];if(p?.forEach(e=>{c.push(e.optionTitle)}),n?.productOptionName?.forEach(e=>{c.includes(e)||(swatchChange=!0,p?.push({optionTitle:e,optionType:"rectangle_list",optionValues:[]}))}),!t)return[];setDefaultSwatches(p,t),l()&&p?.length&&(swatchChange||colorChange)&&(window?.parent?.postMessage?.(JSON.stringify({type:"update-swatches",swatches:p}),"*"),i(p)),swatchChange=!1},getColorDefault=(e,t)=>{let a=e?o[e.toLocaleLowerCase()]:void 0,r=a?[a]:[],s=t?.[0];return!s&&r.length&&(colorChange=!0),s?[s]:r},getProductOptionsLabelByName=(e,t)=>{let o=[],a=e.find(e=>e.name===t);return a?.values.forEach(e=>{e.label&&!o.includes(e.label)&&o.push(e.label)}),o},getSwatchesOptionsLabel=e=>{let t=[];return e.forEach(e=>{e.label&&!t.includes(e.label)&&t.push(e.label)}),t},setDefaultSwatches=(e,t)=>(e&&e?.map(e=>{let o=getProductOptionsLabelByName(t,e.optionTitle),a=getSwatchesOptionsLabel(e.optionValues);o.forEach(t=>{a.includes(t)||e.optionValues.push({label:t,colors:getColorDefault(t),imageUrl:""})}),e.optionValues=e.optionValues.map(e=>(void 0===e.imageUrl&&(swatchChange=!0),{label:e.label??"",colors:getColorDefault(e.label,e.colors),imageUrl:e.imageUrl??""}))}),e),fetchProductValueLabel=async e=>{let o={},a=async o=>{let a=await e([t,o]);return a};return a(o)};export{useInitialSwatchesOptions as default};
|
|
1
|
+
import e from"swr";import{ProductOptionNameDocument as t}from"../graphql/queries/product-value-label.generated.js";import{colorPreset as o}from"../components/src/product/helpers/variant-presets.js";import{useSwatches as a}from"./shop.js";import{useFetchHandle as r}from"./useFetchHandle.js";import{useShopStore as s}from"../contexts/ShopContext.js";import"react";import"react/jsx-runtime";import"zustand";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import"./useStickyStore.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import l from"../helpers/is-browser.js";import"../helpers/convert.js";let swatchChange=!1,colorChange=!1,useInitialSwatchesOptions=t=>{let o=r(),i=s(e=>e.changeSwatches),{swatches:p}=a(),{data:n}=e(["/query/productOptionName",{productOptionName:[]}],async()=>fetchProductValueLabel(o),{revalidateOnMount:!0}),c=[];if(p?.forEach(e=>{c.push(e.optionTitle)}),n?.productOptionName?.forEach(e=>{c.includes(e)||(swatchChange=!0,p?.push({optionTitle:e,optionType:"rectangle_list",optionValues:[]}))}),!t)return[];setDefaultSwatches(p,t),l()&&p?.length&&(swatchChange||colorChange)&&(window?.parent?.postMessage?.(JSON.stringify({type:"update-swatches",swatches:p}),"*"),i(p)),swatchChange=!1},getColorDefault=(e,t)=>{let a=e?o[e.toLocaleLowerCase()]:void 0,r=a?[a]:[],s=t?.[0];return!s&&r.length&&(colorChange=!0),s?[s]:r},getProductOptionsLabelByName=(e,t)=>{let o=[],a=e.find(e=>e.name===t);return a?.values.forEach(e=>{e.label&&!o.includes(e.label)&&o.push(e.label)}),o},getSwatchesOptionsLabel=e=>{let t=[];return e.forEach(e=>{e.label&&!t.includes(e.label)&&t.push(e.label)}),t},setDefaultSwatches=(e,t)=>(e&&e?.map(e=>{let o=getProductOptionsLabelByName(t,e.optionTitle),a=getSwatchesOptionsLabel(e.optionValues);o.forEach(t=>{a.includes(t)||e.optionValues.push({label:t,colors:getColorDefault(t),imageUrl:""})}),e.optionValues=e.optionValues.map(e=>(void 0===e.imageUrl&&(swatchChange=!0),{label:e.label??"",colors:getColorDefault(e.label,e.colors),imageUrl:e.imageUrl??""}))}),e),fetchProductValueLabel=async e=>{let o={},a=async o=>{let a=await e([t,o]);return a};return a(o)};export{useInitialSwatchesOptions as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{useCallback as e,useEffect as t,useMemo as r}from"react";import{useProductStore as s}from"../contexts/ProductContext.js";import"react/jsx-runtime";import"zustand";import{usePageStore as o}from"../contexts/PageContext.js";import"swr";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import{convertDecimalToNumber as u}from"./useFormatMoney.js";import"./useStickyStore.js";import{checkInStock as i}from"../helpers/variant.js";import{useShopifyLink as n}from"./shop/useShopifyLink.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"
|
|
2
|
+
import{useCallback as e,useEffect as t,useMemo as r}from"react";import{useProductStore as s}from"../contexts/ProductContext.js";import"react/jsx-runtime";import"zustand";import{usePageStore as o}from"../contexts/PageContext.js";import"swr";import"@gem-sdk/adapter-shopify";import"swr/mutation";import"swr/infinite";import"vanilla-lazyload";import"./useCartUI.js";import{convertDecimalToNumber as u}from"./useFormatMoney.js";import"./useStickyStore.js";import{checkInStock as i}from"../helpers/variant.js";import{useShopifyLink as n}from"./shop/useShopifyLink.js";import"../types/builder.js";import"../types/custom.js";import"../types/animations.js";import"react-transition-group";import"classnames";import"dayjs";import{flattenConnection as a}from"../helpers/flatten-connection.js";import"../helpers/convert.js";import{getSelectedVariant as c}from"../helpers/product.js";let useUniqProductID=()=>s(e=>e.uiqueId),useProduct=()=>s(e=>e.product),useFeaturedImageGlobal=()=>s(e=>e.featuredImageGlobal),useProductProperties=()=>s(e=>e.properties),useIsSyncProduct=()=>s(e=>e.isSyncProduct),useProductBundleDiscount=()=>{let e=s(e=>e.useProductCompareAtPrice),t=s(e=>e.setUseProductCompareAtPrice);return{useProductCompareAtPrice:e,seUseProductCompareAtPrice:t}},useProductShopifyEditLink=()=>{let e=s(e=>e.product),t=e?.baseID?.replace("gid://shopify/Product/",""),{linkEditProduct:r}=n({productId:t}),o=()=>{r&&window.open(r,"_blank")};return{linkEditProduct:r,redirectProductShopifyLink:o}},useQuantity=()=>{let o=s(e=>e.quantity),u=s(e=>e.updatePrice),i=s(e=>e.decrementQuantity),n=s(e=>e.incrementQuantity),a=s(e=>e.setQuantity),c=s(e=>e.setHasUpdatePriceFollowQuantity),d=s(e=>e.isSyncProduct),l=s(e=>e.product),p=l?.id,m=e(()=>{a(1)},[a]);return t(()=>{if(d){let e=new CustomEvent("set-product-quantity",{bubbles:!0,cancelable:!0,composed:!0,detail:{quantity:o,productId:p}});window.dispatchEvent(e)}},[o,d,p]),r(()=>({quantity:o,hasUpdatePrice:u,increment:n,decrement:i,reset:m,setQuantity:a,setUpdatePrice:c}),[i,n,o,m,a,c,u])},useHasPreSelected=()=>{let e=s(e=>e.hasPreSelected),t=s(e=>e.setHasPreSelected);return r(()=>({hasPreSelected:e,setHasPreSelected:t}),[e,t])},useSelectedOption=()=>{let t=s(e=>e.setSelectedOption),o=s(e=>e.selectedOptions),u=s(e=>e.forceSelectedOption),i=s(e=>e.isSyncProduct),n=s(e=>e.isChangeSelectedOption),a=s(e=>e.setIsChangeSelectedOption),c=e((e,r,s,o)=>{if(!o&&i){let t=new CustomEvent("set-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{optionId:e,optionValue:r,productId:s,isManualChange:!0}});window.dispatchEvent(t)}t(e,r),a(!0)},[i,t,a]),d=e((e,t,r,s)=>{if(!r&&i){let r=new CustomEvent("force-selected-option",{bubbles:!0,cancelable:!0,composed:!0,detail:{selectedOption:e,productId:t,isManualChange:s}});window.dispatchEvent(r)}u(e)},[u,i]);return r(()=>({isChangeSelectedOption:n,selectedOptions:o,setSelectedOption:c,forceSelectedOption:d}),[o,c,d])},useVariants=()=>{let e=s(e=>e.product?.variants);return a(e)},useVariant=e=>{let t=useVariants();return r(()=>t?.find(t=>t?.id===e),[e,t])},useCurrentVariant=()=>{let{selectedOptions:e}=useSelectedOption(),t=useVariants();return r(()=>c(t,e),[e,t])},useCurrentVariantInStock=()=>{let e=useCurrentVariant(),t=useProduct();return i(e,t)},useVariantOutStock=(e,t,r)=>{let{selectedOptions:s}=useSelectedOption(),o=useVariants(),u=r.optionNumber-1;if(r.position<u)return o.some(r=>{if(r){let{selectedOptions:s}=r,o=s?.some(r=>r?.name===e&&r.value===t),u=i(r);return o&&u}});let n=c(o,{...s,[e]:t});return i(n)},useCheckAvailableVariantInStock=(e,t)=>{let r=useVariants();return!!r&&r.some(r=>{if(r){let{selectedOptions:s}=r,o=s?.some(r=>r?.name===e&&r.value===t),u=i(r);return o&&u}return!1})},useProductOfferDiscount=()=>{let e=o(e=>e.productOffers),t=useProduct(),r=useCurrentVariant(),s=e?.find(e=>e?.node?.objectBaseID===t?.baseID)?.node;if(!s||!s.isEnabled)return 0;let i=s?.value;if(s&&"PERCENTAGE"===s.valueType&&i){let e=u(r?.price)??0;i=i*e/100}return i||0};export{useCheckAvailableVariantInStock,useCurrentVariant,useCurrentVariantInStock,useFeaturedImageGlobal,useHasPreSelected,useIsSyncProduct,useProduct,useProductBundleDiscount,useProductOfferDiscount,useProductProperties,useProductShopifyEditLink,useQuantity,useSelectedOption,useUniqProductID,useVariant,useVariantOutStock,useVariants};
|