@gem-sdk/core 1.14.0-next.91 → 1.14.0

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.
Files changed (241) hide show
  1. package/dist/cjs/components/AddOn.js +18 -1
  2. package/dist/cjs/components/ComponentWrapper.js +28 -1
  3. package/dist/cjs/components/ComponentWrapperPreview.js +72 -1
  4. package/dist/cjs/components/Empty.js +7 -1
  5. package/dist/cjs/components/Render.js +65 -1
  6. package/dist/cjs/components/Render.liquid.js +158 -3
  7. package/dist/cjs/components/RenderBlock.js +54 -1
  8. package/dist/cjs/components/RenderPreview.js +66 -1
  9. package/dist/cjs/components/RenderSection.js +23 -1
  10. package/dist/cjs/components/constant.js +39 -1
  11. package/dist/cjs/contexts/AddonContext.js +36 -1
  12. package/dist/cjs/contexts/BuilderComponent.js +34 -1
  13. package/dist/cjs/contexts/BuilderContext.js +35 -1
  14. package/dist/cjs/contexts/BuilderPreviewContext.js +370 -1
  15. package/dist/cjs/contexts/CartLineContext.js +29 -1
  16. package/dist/cjs/contexts/CollectionContext.js +38 -1
  17. package/dist/cjs/contexts/ModalContext.js +47 -1
  18. package/dist/cjs/contexts/ProductContext.js +149 -1
  19. package/dist/cjs/contexts/ProductListContext.js +32 -1
  20. package/dist/cjs/contexts/SectionContext.js +53 -1
  21. package/dist/cjs/contexts/ShopContext.js +70 -1
  22. package/dist/cjs/graphql/fragments/analytic.generated.js +6 -2
  23. package/dist/cjs/graphql/fragments/collection-detail.generated.js +6 -2
  24. package/dist/cjs/graphql/fragments/collection-product.generated.js +6 -2
  25. package/dist/cjs/graphql/fragments/collection.generated.js +6 -2
  26. package/dist/cjs/graphql/fragments/custom-code.generated.js +6 -2
  27. package/dist/cjs/graphql/fragments/data-seo.generated.js +6 -2
  28. package/dist/cjs/graphql/fragments/media.generated.js +6 -3
  29. package/dist/cjs/graphql/fragments/product-little.generated.js +6 -2
  30. package/dist/cjs/graphql/fragments/product-option-value.generated.js +6 -2
  31. package/dist/cjs/graphql/fragments/product-option.generated.js +6 -2
  32. package/dist/cjs/graphql/fragments/product.generated.js +6 -2
  33. package/dist/cjs/graphql/fragments/published-custom-section.generated.js +6 -2
  34. package/dist/cjs/graphql/fragments/published-page-section.generated.js +6 -2
  35. package/dist/cjs/graphql/fragments/published-theme-page.generated.js +6 -2
  36. package/dist/cjs/graphql/fragments/published-theme-style.generated.js +6 -2
  37. package/dist/cjs/graphql/fragments/selected-option.generated.js +6 -2
  38. package/dist/cjs/graphql/fragments/variant.generated.js +6 -2
  39. package/dist/cjs/graphql/mutations/page-view-up.generated.js +7 -3
  40. package/dist/cjs/graphql/queries/collection-detail-filter.generated.js +16 -2
  41. package/dist/cjs/graphql/queries/collection.generated.js +14 -2
  42. package/dist/cjs/graphql/queries/collections.generated.js +9 -2
  43. package/dist/cjs/graphql/queries/preview-page.generated.js +14 -2
  44. package/dist/cjs/graphql/queries/product-little-detail.generated.js +11 -2
  45. package/dist/cjs/graphql/queries/product-medias.generated.js +8 -2
  46. package/dist/cjs/graphql/queries/product-variants.generated.js +10 -2
  47. package/dist/cjs/graphql/queries/products.generated.js +17 -3
  48. package/dist/cjs/graphql/queries/published-theme-pages.generated.js +14 -2
  49. package/dist/cjs/graphql/queries/store-property.generated.js +6 -2
  50. package/dist/cjs/helpers/GlobalEvent.js +19 -1
  51. package/dist/cjs/helpers/background.js +109 -1
  52. package/dist/cjs/helpers/borders.js +183 -4
  53. package/dist/cjs/helpers/clone-deep.js +5 -1
  54. package/dist/cjs/helpers/cls.js +16 -1
  55. package/dist/cjs/helpers/colors.js +183 -1
  56. package/dist/cjs/helpers/compose-advance-style.js +188 -1
  57. package/dist/cjs/helpers/constant.js +23 -1
  58. package/dist/cjs/helpers/convert.js +7 -1
  59. package/dist/cjs/helpers/css-variable.js +7 -1
  60. package/dist/cjs/helpers/email.js +11 -1
  61. package/dist/cjs/helpers/flatten-connection.js +9 -1
  62. package/dist/cjs/helpers/get-resonsive-value.js +31 -1
  63. package/dist/cjs/helpers/get-shortname.js +92 -1
  64. package/dist/cjs/helpers/is-browser.js +9 -1
  65. package/dist/cjs/helpers/is-defined.js +7 -1
  66. package/dist/cjs/helpers/is-empty-children.js +12 -1
  67. package/dist/cjs/helpers/is-safari.js +9 -1
  68. package/dist/cjs/helpers/layout.js +59 -1
  69. package/dist/cjs/helpers/load-script.js +31 -1
  70. package/dist/cjs/helpers/make-style.js +128 -1
  71. package/dist/cjs/helpers/normalize-builder-data.js +23 -1
  72. package/dist/cjs/helpers/prefetch-queries.js +78 -1
  73. package/dist/cjs/helpers/product.js +45 -1
  74. package/dist/cjs/helpers/queries/get-collection.js +220 -1
  75. package/dist/cjs/helpers/queries/get-collections.js +21 -1
  76. package/dist/cjs/helpers/queries/get-product-by-slug.js +125 -1
  77. package/dist/cjs/helpers/queries/get-product.js +154 -1
  78. package/dist/cjs/helpers/queries/get-products.js +161 -1
  79. package/dist/cjs/helpers/query.js +29 -1
  80. package/dist/cjs/helpers/radius.js +131 -6
  81. package/dist/cjs/helpers/render.js +71 -1
  82. package/dist/cjs/helpers/shadow.js +56 -1
  83. package/dist/cjs/helpers/size.js +35 -4
  84. package/dist/cjs/helpers/spacing.js +43 -1
  85. package/dist/cjs/helpers/tracking/fpixel.js +28 -1
  86. package/dist/cjs/helpers/tracking/gtag.js +93 -1
  87. package/dist/cjs/helpers/tracking/tiktokpixel.js +17 -1
  88. package/dist/cjs/helpers/typography.js +105 -17
  89. package/dist/cjs/helpers/variant.js +8 -1
  90. package/dist/cjs/hooks/cart/use-add-to-cart.js +20 -1
  91. package/dist/cjs/hooks/cart/use-cart-data.js +28 -1
  92. package/dist/cjs/hooks/cart/use-cart-discount-codes-update.js +20 -1
  93. package/dist/cjs/hooks/cart/use-cart-note-update.js +20 -1
  94. package/dist/cjs/hooks/cart/use-create-cart.js +22 -1
  95. package/dist/cjs/hooks/cart/use-remove-cart-item.js +20 -1
  96. package/dist/cjs/hooks/cart/use-update-cart-item.js +20 -1
  97. package/dist/cjs/hooks/shop/use-collection-query.js +22 -1
  98. package/dist/cjs/hooks/shop/use-collections-query.js +17 -1
  99. package/dist/cjs/hooks/shop/use-product-query.js +22 -1
  100. package/dist/cjs/hooks/shop/use-products-query.js +22 -1
  101. package/dist/cjs/hooks/shop.js +126 -1
  102. package/dist/cjs/hooks/use-current-device.js +21 -1
  103. package/dist/cjs/hooks/use-lazy-video.js +15 -1
  104. package/dist/cjs/hooks/useCartId.js +44 -1
  105. package/dist/cjs/hooks/useCartLine.js +11 -1
  106. package/dist/cjs/hooks/useCartUI.js +48 -1
  107. package/dist/cjs/hooks/useCollection.js +9 -1
  108. package/dist/cjs/hooks/useFetchHandle.js +13 -1
  109. package/dist/cjs/hooks/useFormatMoney.js +58 -1
  110. package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +10 -1
  111. package/dist/cjs/hooks/useLoadScript.js +32 -1
  112. package/dist/cjs/hooks/useMoney.js +84 -1
  113. package/dist/cjs/hooks/usePrevious.js +19 -1
  114. package/dist/cjs/hooks/useProduct.js +124 -1
  115. package/dist/cjs/hooks/useProductList.js +21 -1
  116. package/dist/cjs/hooks/useSuspenseFetch.js +27 -1
  117. package/dist/cjs/hooks/useSwatchesOptions.js +41 -1
  118. package/dist/cjs/index.js +291 -1
  119. package/dist/cjs/types/global-style.js +14 -1
  120. package/dist/cjs/types/shop.js +2 -1
  121. package/dist/esm/components/AddOn.js +14 -1
  122. package/dist/esm/components/ComponentWrapper.js +24 -1
  123. package/dist/esm/components/ComponentWrapperPreview.js +68 -1
  124. package/dist/esm/components/Empty.js +3 -1
  125. package/dist/esm/components/Render.js +61 -1
  126. package/dist/esm/components/Render.liquid.js +153 -3
  127. package/dist/esm/components/RenderBlock.js +50 -1
  128. package/dist/esm/components/RenderPreview.js +62 -1
  129. package/dist/esm/components/RenderSection.js +19 -1
  130. package/dist/esm/components/constant.js +37 -1
  131. package/dist/esm/contexts/AddonContext.js +32 -1
  132. package/dist/esm/contexts/BuilderComponent.js +31 -1
  133. package/dist/esm/contexts/BuilderContext.js +32 -1
  134. package/dist/esm/contexts/BuilderPreviewContext.js +367 -1
  135. package/dist/esm/contexts/CartLineContext.js +26 -1
  136. package/dist/esm/contexts/CollectionContext.js +35 -1
  137. package/dist/esm/contexts/ModalContext.js +44 -1
  138. package/dist/esm/contexts/ProductContext.js +146 -1
  139. package/dist/esm/contexts/ProductListContext.js +28 -1
  140. package/dist/esm/contexts/SectionContext.js +49 -1
  141. package/dist/esm/contexts/ShopContext.js +67 -1
  142. package/dist/esm/graphql/fragments/analytic.generated.js +4 -2
  143. package/dist/esm/graphql/fragments/collection-detail.generated.js +4 -2
  144. package/dist/esm/graphql/fragments/collection-product.generated.js +4 -2
  145. package/dist/esm/graphql/fragments/collection.generated.js +4 -2
  146. package/dist/esm/graphql/fragments/custom-code.generated.js +4 -2
  147. package/dist/esm/graphql/fragments/data-seo.generated.js +4 -2
  148. package/dist/esm/graphql/fragments/media.generated.js +4 -3
  149. package/dist/esm/graphql/fragments/product-little.generated.js +4 -2
  150. package/dist/esm/graphql/fragments/product-option-value.generated.js +4 -2
  151. package/dist/esm/graphql/fragments/product-option.generated.js +4 -2
  152. package/dist/esm/graphql/fragments/product.generated.js +4 -2
  153. package/dist/esm/graphql/fragments/published-custom-section.generated.js +4 -2
  154. package/dist/esm/graphql/fragments/published-page-section.generated.js +4 -2
  155. package/dist/esm/graphql/fragments/published-theme-page.generated.js +4 -2
  156. package/dist/esm/graphql/fragments/published-theme-style.generated.js +4 -2
  157. package/dist/esm/graphql/fragments/selected-option.generated.js +4 -2
  158. package/dist/esm/graphql/fragments/variant.generated.js +4 -2
  159. package/dist/esm/graphql/mutations/page-view-up.generated.js +5 -3
  160. package/dist/esm/graphql/queries/collection-detail-filter.generated.js +22 -10
  161. package/dist/esm/graphql/queries/collection.generated.js +18 -8
  162. package/dist/esm/graphql/queries/collections.generated.js +8 -3
  163. package/dist/esm/graphql/queries/preview-page.generated.js +18 -8
  164. package/dist/esm/graphql/queries/product-little-detail.generated.js +12 -5
  165. package/dist/esm/graphql/queries/product-medias.generated.js +6 -2
  166. package/dist/esm/graphql/queries/product-variants.generated.js +10 -4
  167. package/dist/esm/graphql/queries/products.generated.js +20 -9
  168. package/dist/esm/graphql/queries/published-theme-pages.generated.js +18 -8
  169. package/dist/esm/graphql/queries/store-property.generated.js +4 -2
  170. package/dist/esm/helpers/GlobalEvent.js +15 -1
  171. package/dist/esm/helpers/background.js +106 -1
  172. package/dist/esm/helpers/borders.js +175 -4
  173. package/dist/esm/helpers/clone-deep.js +3 -1
  174. package/dist/esm/helpers/cls.js +14 -1
  175. package/dist/esm/helpers/colors.js +168 -1
  176. package/dist/esm/helpers/compose-advance-style.js +185 -1
  177. package/dist/esm/helpers/constant.js +19 -1
  178. package/dist/esm/helpers/convert.js +4 -1
  179. package/dist/esm/helpers/css-variable.js +5 -1
  180. package/dist/esm/helpers/email.js +6 -1
  181. package/dist/esm/helpers/flatten-connection.js +7 -1
  182. package/dist/esm/helpers/get-resonsive-value.js +27 -1
  183. package/dist/esm/helpers/get-shortname.js +90 -1
  184. package/dist/esm/helpers/is-browser.js +5 -1
  185. package/dist/esm/helpers/is-defined.js +5 -1
  186. package/dist/esm/helpers/is-empty-children.js +7 -1
  187. package/dist/esm/helpers/is-safari.js +5 -1
  188. package/dist/esm/helpers/layout.js +54 -1
  189. package/dist/esm/helpers/load-script.js +29 -1
  190. package/dist/esm/helpers/make-style.js +117 -1
  191. package/dist/esm/helpers/normalize-builder-data.js +21 -1
  192. package/dist/esm/helpers/prefetch-queries.js +76 -1
  193. package/dist/esm/helpers/product.js +41 -1
  194. package/dist/esm/helpers/queries/get-collection.js +217 -1
  195. package/dist/esm/helpers/queries/get-collections.js +19 -1
  196. package/dist/esm/helpers/queries/get-product-by-slug.js +123 -1
  197. package/dist/esm/helpers/queries/get-product.js +150 -1
  198. package/dist/esm/helpers/queries/get-products.js +159 -1
  199. package/dist/esm/helpers/query.js +25 -1
  200. package/dist/esm/helpers/radius.js +124 -6
  201. package/dist/esm/helpers/render.js +64 -1
  202. package/dist/esm/helpers/shadow.js +51 -1
  203. package/dist/esm/helpers/size.js +31 -4
  204. package/dist/esm/helpers/spacing.js +40 -1
  205. package/dist/esm/helpers/tracking/fpixel.js +24 -1
  206. package/dist/esm/helpers/tracking/gtag.js +87 -1
  207. package/dist/esm/helpers/tracking/tiktokpixel.js +15 -1
  208. package/dist/esm/helpers/typography.js +96 -17
  209. package/dist/esm/helpers/variant.js +6 -1
  210. package/dist/esm/hooks/cart/use-add-to-cart.js +18 -1
  211. package/dist/esm/hooks/cart/use-cart-data.js +26 -1
  212. package/dist/esm/hooks/cart/use-cart-discount-codes-update.js +18 -1
  213. package/dist/esm/hooks/cart/use-cart-note-update.js +18 -1
  214. package/dist/esm/hooks/cart/use-create-cart.js +20 -1
  215. package/dist/esm/hooks/cart/use-remove-cart-item.js +18 -1
  216. package/dist/esm/hooks/cart/use-update-cart-item.js +18 -1
  217. package/dist/esm/hooks/shop/use-collection-query.js +20 -1
  218. package/dist/esm/hooks/shop/use-collections-query.js +15 -1
  219. package/dist/esm/hooks/shop/use-product-query.js +20 -1
  220. package/dist/esm/hooks/shop/use-products-query.js +20 -1
  221. package/dist/esm/hooks/shop.js +111 -1
  222. package/dist/esm/hooks/use-current-device.js +19 -1
  223. package/dist/esm/hooks/use-lazy-video.js +13 -1
  224. package/dist/esm/hooks/useCartId.js +40 -1
  225. package/dist/esm/hooks/useCartLine.js +7 -1
  226. package/dist/esm/hooks/useCartUI.js +44 -1
  227. package/dist/esm/hooks/useCollection.js +7 -1
  228. package/dist/esm/hooks/useFetchHandle.js +11 -1
  229. package/dist/esm/hooks/useFormatMoney.js +56 -1
  230. package/dist/esm/hooks/useIsomorphicLayoutEffect.js +6 -1
  231. package/dist/esm/hooks/useLoadScript.js +28 -1
  232. package/dist/esm/hooks/useMoney.js +80 -1
  233. package/dist/esm/hooks/usePrevious.js +17 -1
  234. package/dist/esm/hooks/useProduct.js +111 -1
  235. package/dist/esm/hooks/useProductList.js +16 -1
  236. package/dist/esm/hooks/useSuspenseFetch.js +23 -1
  237. package/dist/esm/hooks/useSwatchesOptions.js +37 -1
  238. package/dist/esm/index.js +92 -1
  239. package/dist/esm/types/global-style.js +11 -1
  240. package/dist/types/index.d.ts +27 -28
  241. package/package.json +2 -2
@@ -1 +1,35 @@
1
- "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand");const BuilderContext=react.createContext(null),createBuilderProvider=e=>zustand.createStore((r,t)=>({state:e,getItem:e=>t().state[e]})),BuilderProvider=({children:e,state:r,lazy:t,priority:u,...i})=>{let d=t?react.Suspense:react.Fragment,s=createBuilderProvider(r);return jsxRuntime.jsx(d,{children:jsxRuntime.jsx(BuilderContext.Provider,{...i,value:s,children:e})})},useBuilderStore=(e,r)=>{let t=react.useContext(BuilderContext);if(!t)throw Error("useBuilderStore must be used within a BuilderProvider");return zustand.useStore(t,e,r)};exports.BuilderProvider=BuilderProvider,exports.useBuilderStore=useBuilderStore;
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var zustand = require('zustand');
6
+
7
+ const BuilderContext = /*#__PURE__*/ react.createContext(null);
8
+ const createBuilderProvider = (data)=>zustand.createStore((_, get)=>({
9
+ state: data,
10
+ getItem: (id)=>{
11
+ return get().state[id];
12
+ }
13
+ }));
14
+ const BuilderProvider = ({ children, state, lazy, priority, ...passProps })=>{
15
+ const Component = lazy ? react.Suspense : react.Fragment;
16
+ const store = createBuilderProvider(state);
17
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
18
+ children: /*#__PURE__*/ jsxRuntime.jsx(BuilderContext.Provider, {
19
+ ...passProps,
20
+ value: store,
21
+ children: children
22
+ })
23
+ });
24
+ };
25
+ // export const useBuilderStore = useStore;
26
+ const useBuilderStore = (selector, equalityFn)=>{
27
+ const store = react.useContext(BuilderContext);
28
+ if (!store) {
29
+ throw new Error('useBuilderStore must be used within a BuilderProvider');
30
+ }
31
+ return zustand.useStore(store, selector, equalityFn);
32
+ };
33
+
34
+ exports.BuilderProvider = BuilderProvider;
35
+ exports.useBuilderStore = useBuilderStore;
@@ -1 +1,370 @@
1
- "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand"),cloneDeep=require("../helpers/clone-deep.js"),normalizeBuilderData=require("../helpers/normalize-builder-data.js");function moveByIndex(e,t,i){let r=e.splice(t,1)[0];void 0!==r&&e.splice(i,0,r)}function removeByKey(e,t){let i=t[e];i&&(delete t[e],"section"!==i.type&&i.childrens?.map(e=>removeByKey(e,t)))}const BuilderPreviewContext=react.createContext(null),root={uid:"ROOT",tag:"Root",label:"Root",childrens:[]},createBuilderPreviewProvider=e=>zustand.createStore((t,i)=>({state:e,loaded:!1,addItem:e=>{let{position:r,data:l}=e,d=i().state,n=Date.now();if("section"===e.type){if(!Array.isArray(l)){let e=l.uid,i=d.ROOT;i.childrens?i.childrens.splice(r??0,0,e):i.childrens=[e],i.dateModified=n,t({state:{...d,[e]:{uid:e,type:"section",label:l.label},ROOT:cloneDeep.cloneDeep(i)}})}}else{let{id:i,data:l}=e,s=i?d[i]??d.ROOT:d.ROOT;if("section"===s.type)return;if(Array.isArray(l)){let e=l.map(e=>e.uid),i=l.reduceRight((e,t)=>{let i=normalizeBuilderData.normalizeBuilderData(t);return{...e,...i}},{});s.dateModified=n,s.childrens=s.childrens??[],s.childrens.splice(r??0,0,...e),t({state:{...d,...i,[s.uid]:cloneDeep.cloneDeep(s)}})}else{let e=normalizeBuilderData.normalizeBuilderData(l);s.dateModified=n,s.childrens=s.childrens??[],s.childrens.splice(r??0,0,l.uid),t({state:{...d,...e,[s.uid]:cloneDeep.cloneDeep(s)}})}}},changeItemProp:(e,r,l)=>{if(!l||!["setting","style","advanced"].includes(l))return;let d=i().state,n=d[e];if(n?.type!=="section"&&n){let i=Date.now();switch(n.dateModified=i,l){case"setting":t({state:{...d,[e]:{...n,settings:{...n.settings,...r}}}});break;case"style":t({state:{...d,[e]:{...n,styles:{...n.styles,...r}}}});break;case"advanced":t({state:{...d,[e]:{...n,advanced:{...n.advanced,...r}}}})}}},changeItemPropByKey:({id:e,key:r,data:l,group:d})=>{if(!d||!["setting","style","advanced"].includes(d))return;let n=i().state,s=n[e];if(s?.type!=="section"&&s){let i={style:s.styles??{},advanced:s.advanced??{},setting:s.settings??{}};void 0===l?(console.warn("Data is undefined"),delete i[d][r]):i[d][r]=l,t({state:{...n,[e]:{...s,settings:{...i.setting},styles:{...i.style},advanced:{...i.advanced}}}})}},getItem:e=>i().state[e],removeItem:e=>{if("ROOT"===e)t({state:{ROOT:root}});else{let r=i().state;removeByKey(e,r);let l=Object.entries(r).find(([,t])=>"section"!==t.type&&t.childrens?.includes(e));if(l){let i=Date.now(),[d,n]=l;if("section"===n.type)return;n.childrens=n.childrens?.filter(t=>t!==e),n.dateModified=i,t({state:{...r,[d]:cloneDeep.cloneDeep(n)}})}}},moveItem:(e,r,l)=>{let d=i().state,n=d[e],s=d[r];if(n&&s&&"section"!==s.type){if("section"===n.type){let i=d.ROOT;if(!i.childrens)return;let r=i.childrens.findIndex(t=>t===e);moveByIndex(i.childrens,r,l??0),t({state:{...d,ROOT:cloneDeep.cloneDeep(i)}})}else{let i=Object.entries(d).find(([,t])=>"section"!==t.type&&t.childrens?.includes(e));if(n&&i){let a=Date.now(),[,c]=i;if("section"===c.type)return;if(c.dateModified=a,r===c.uid&&c.childrens){let i=c.childrens.findIndex(t=>t===e);c.childrens&&i!==l&&(moveByIndex(c.childrens,i,l??0),t({state:{...d,[c.uid]:cloneDeep.cloneDeep(c)}}))}else c.childrens=c.childrens?.filter(t=>t!==e),s&&(s.dateModified=a,s.childrens=s.childrens??[],s.childrens.splice(l??0,0,n.uid),t({state:{...d,[s.uid]:cloneDeep.cloneDeep(s),[c.uid]:cloneDeep.cloneDeep(c)}}))}}}},forceChangeState:e=>{t({state:e,loaded:!0})},initState:e=>{if(Array.isArray(e)){let i=e.map(e=>e.uid),r=e.reduceRight((e,t)=>{let i=normalizeBuilderData.normalizeBuilderData(t);return{...e,...i}},{});t({loaded:!0,state:{ROOT:{...root,childrens:i},...r}})}else{let i=normalizeBuilderData.normalizeBuilderData(e);t({loaded:!0,state:{ROOT:{...root,childrens:[e.uid]},...i}})}},addSection:(e,r)=>{let l=i().state,d=l.ROOT;d.childrens||(d.childrens=[]),d.childrens.splice(r??0,0,e.uid),t({state:{...l,ROOT:cloneDeep.cloneDeep(d)}})}})),BuilderPreviewProvider=({children:e,state:t,lazy:i,...r})=>{let l=i?react.Suspense:react.Fragment,d=react.useMemo(()=>createBuilderPreviewProvider(t),[t]);return jsxRuntime.jsx(l,{children:jsxRuntime.jsx(BuilderPreviewContext.Provider,{...r,value:d,children:e})})},useBuilderPreviewStore=(e,t)=>{let i=react.useContext(BuilderPreviewContext);if(!i)throw Error("useBuilderPreviewStore must be used within a BuilderPreviewProvider");return zustand.useStore(i,e,t)};exports.BuilderPreviewProvider=BuilderPreviewProvider,exports.useBuilderPreviewStore=useBuilderPreviewStore;
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var zustand = require('zustand');
6
+ var cloneDeep = require('../helpers/clone-deep.js');
7
+ var normalizeBuilderData = require('../helpers/normalize-builder-data.js');
8
+
9
+ function moveByIndex(input, from, to) {
10
+ const elm = input.splice(from, 1)[0];
11
+ if (elm !== undefined) {
12
+ input.splice(to, 0, elm);
13
+ }
14
+ }
15
+ function removeByKey(id, data) {
16
+ const item = data[id];
17
+ if (item) {
18
+ delete data[id];
19
+ if (item.type !== 'section') {
20
+ item.childrens?.map((child)=>removeByKey(child, data));
21
+ }
22
+ }
23
+ }
24
+ const BuilderPreviewContext = /*#__PURE__*/ react.createContext(null);
25
+ const root = {
26
+ uid: 'ROOT',
27
+ tag: 'Root',
28
+ label: 'Root',
29
+ childrens: []
30
+ };
31
+ const createBuilderPreviewProvider = (args)=>zustand.createStore((set, get)=>({
32
+ state: args,
33
+ loaded: false,
34
+ addItem: (args)=>{
35
+ const { position, data } = args;
36
+ const state = get().state;
37
+ const dateModified = Date.now();
38
+ if (args.type === 'section') {
39
+ if (!Array.isArray(data)) {
40
+ const sectionId = data.uid;
41
+ // Section only add to ROOT
42
+ const ROOT = state.ROOT;
43
+ if (!ROOT.childrens) {
44
+ ROOT.childrens = [
45
+ sectionId
46
+ ];
47
+ } else {
48
+ ROOT.childrens.splice(position ?? 0, 0, sectionId);
49
+ }
50
+ ROOT.dateModified = dateModified;
51
+ set({
52
+ state: {
53
+ ...state,
54
+ [sectionId]: {
55
+ uid: sectionId,
56
+ type: 'section',
57
+ label: data.label
58
+ },
59
+ ROOT: cloneDeep.cloneDeep(ROOT)
60
+ }
61
+ });
62
+ }
63
+ } else {
64
+ const { id, data } = args;
65
+ const parent = id ? state[id] ?? state.ROOT : state.ROOT;
66
+ // Can't add item to section
67
+ if (parent.type === 'section') return;
68
+ if (Array.isArray(data)) {
69
+ const childrens = data.map((v)=>v.uid);
70
+ const newState = data.reduceRight((prev, current)=>{
71
+ const item = normalizeBuilderData.normalizeBuilderData(current);
72
+ return {
73
+ ...prev,
74
+ ...item
75
+ };
76
+ }, {});
77
+ parent.dateModified = dateModified;
78
+ parent.childrens = parent.childrens ?? [];
79
+ parent.childrens.splice(position ?? 0, 0, ...childrens);
80
+ set({
81
+ state: {
82
+ ...state,
83
+ ...newState,
84
+ [parent.uid]: cloneDeep.cloneDeep(parent)
85
+ }
86
+ });
87
+ } else {
88
+ const item = normalizeBuilderData.normalizeBuilderData(data);
89
+ parent.dateModified = dateModified;
90
+ parent.childrens = parent.childrens ?? [];
91
+ parent.childrens.splice(position ?? 0, 0, data.uid);
92
+ set({
93
+ state: {
94
+ ...state,
95
+ ...item,
96
+ [parent.uid]: cloneDeep.cloneDeep(parent)
97
+ }
98
+ });
99
+ }
100
+ }
101
+ },
102
+ changeItemProp: (id, data, group)=>{
103
+ if (!group || ![
104
+ 'setting',
105
+ 'style',
106
+ 'advanced'
107
+ ].includes(group)) return;
108
+ const state = get().state;
109
+ const item = state[id];
110
+ // Ignore section
111
+ if (item?.type === 'section') return;
112
+ if (item) {
113
+ const dateModified = Date.now();
114
+ item.dateModified = dateModified;
115
+ switch(group){
116
+ case 'setting':
117
+ set({
118
+ state: {
119
+ ...state,
120
+ [id]: {
121
+ ...item,
122
+ settings: {
123
+ ...item.settings,
124
+ ...data
125
+ }
126
+ }
127
+ }
128
+ });
129
+ break;
130
+ case 'style':
131
+ set({
132
+ state: {
133
+ ...state,
134
+ [id]: {
135
+ ...item,
136
+ styles: {
137
+ ...item.styles,
138
+ ...data
139
+ }
140
+ }
141
+ }
142
+ });
143
+ break;
144
+ case 'advanced':
145
+ set({
146
+ state: {
147
+ ...state,
148
+ [id]: {
149
+ ...item,
150
+ advanced: {
151
+ ...item.advanced,
152
+ ...data
153
+ }
154
+ }
155
+ }
156
+ });
157
+ break;
158
+ }
159
+ }
160
+ },
161
+ changeItemPropByKey: ({ id, key, data, group })=>{
162
+ if (!group || ![
163
+ 'setting',
164
+ 'style',
165
+ 'advanced'
166
+ ].includes(group)) return;
167
+ const state = get().state;
168
+ const item = state[id];
169
+ // Ignore section
170
+ if (item?.type === 'section') return;
171
+ if (item) {
172
+ const itemSetting = {
173
+ style: item.styles ?? {},
174
+ advanced: item.advanced ?? {},
175
+ setting: item.settings ?? {}
176
+ };
177
+ if (data === undefined) {
178
+ console.warn('Data is undefined');
179
+ delete itemSetting[group][key];
180
+ } else {
181
+ itemSetting[group][key] = data;
182
+ }
183
+ set({
184
+ state: {
185
+ ...state,
186
+ [id]: {
187
+ ...item,
188
+ settings: {
189
+ ...itemSetting.setting
190
+ },
191
+ styles: {
192
+ ...itemSetting.style
193
+ },
194
+ advanced: {
195
+ ...itemSetting.advanced
196
+ }
197
+ }
198
+ }
199
+ });
200
+ }
201
+ },
202
+ getItem: (id)=>{
203
+ return get().state[id];
204
+ },
205
+ removeItem: (id)=>{
206
+ if (id === 'ROOT') {
207
+ set({
208
+ state: {
209
+ ROOT: root
210
+ }
211
+ });
212
+ } else {
213
+ const state = get().state;
214
+ removeByKey(id, state);
215
+ // Get parent node by id
216
+ const parent = Object.entries(state).find(([, value])=>value.type !== 'section' && value.childrens?.includes(id));
217
+ if (parent) {
218
+ const dateModified = Date.now();
219
+ const [parentId, parentValue] = parent;
220
+ if (parentValue.type === 'section') return;
221
+ parentValue.childrens = parentValue.childrens?.filter((child)=>child !== id);
222
+ parentValue.dateModified = dateModified;
223
+ set({
224
+ state: {
225
+ ...state,
226
+ [parentId]: cloneDeep.cloneDeep(parentValue)
227
+ }
228
+ });
229
+ }
230
+ }
231
+ },
232
+ moveItem: (id, toId, position)=>{
233
+ const state = get().state;
234
+ const item = state[id];
235
+ const moveTo = state[toId];
236
+ // Ignore section
237
+ if (!item || !moveTo || moveTo.type === 'section') return;
238
+ if (item.type === 'section') {
239
+ // Section only add to ROOT
240
+ const ROOT = state.ROOT;
241
+ if (!ROOT.childrens) return;
242
+ const currentIndex = ROOT.childrens.findIndex((uid)=>uid === id);
243
+ moveByIndex(ROOT.childrens, currentIndex, position ?? 0);
244
+ set({
245
+ state: {
246
+ ...state,
247
+ ROOT: cloneDeep.cloneDeep(ROOT)
248
+ }
249
+ });
250
+ } else {
251
+ const parent = Object.entries(state).find(([, value])=>value.type !== 'section' && value.childrens?.includes(id));
252
+ if (item && parent) {
253
+ const dateModified = Date.now();
254
+ const [, parentItem] = parent;
255
+ // Ignore section
256
+ if (parentItem.type === 'section') return;
257
+ parentItem.dateModified = dateModified;
258
+ if (toId === parentItem.uid && parentItem.childrens) {
259
+ // Move item to the same parent
260
+ const currentIndex = parentItem.childrens.findIndex((uid)=>uid === id);
261
+ if (parentItem.childrens && currentIndex !== position) {
262
+ moveByIndex(parentItem.childrens, currentIndex, position ?? 0);
263
+ set({
264
+ state: {
265
+ ...state,
266
+ [parentItem.uid]: cloneDeep.cloneDeep(parentItem)
267
+ }
268
+ });
269
+ }
270
+ } else {
271
+ // Move item to another parent
272
+ // Remove item from parent node
273
+ parentItem.childrens = parentItem.childrens?.filter((uid)=>uid !== id);
274
+ if (moveTo) {
275
+ moveTo.dateModified = dateModified;
276
+ moveTo.childrens = moveTo.childrens ?? [];
277
+ moveTo.childrens.splice(position ?? 0, 0, item.uid);
278
+ set({
279
+ state: {
280
+ ...state,
281
+ [moveTo.uid]: cloneDeep.cloneDeep(moveTo),
282
+ [parentItem.uid]: cloneDeep.cloneDeep(parentItem)
283
+ }
284
+ });
285
+ }
286
+ }
287
+ }
288
+ }
289
+ },
290
+ forceChangeState: (data)=>{
291
+ set({
292
+ state: data,
293
+ loaded: true
294
+ });
295
+ },
296
+ initState: (data)=>{
297
+ if (Array.isArray(data)) {
298
+ const childrens = data.map((v)=>v.uid);
299
+ const newState = data.reduceRight((prev, current)=>{
300
+ const item = normalizeBuilderData.normalizeBuilderData(current);
301
+ return {
302
+ ...prev,
303
+ ...item
304
+ };
305
+ }, {});
306
+ set({
307
+ loaded: true,
308
+ state: {
309
+ ROOT: {
310
+ ...root,
311
+ childrens
312
+ },
313
+ ...newState
314
+ }
315
+ });
316
+ } else {
317
+ const newState = normalizeBuilderData.normalizeBuilderData(data);
318
+ set({
319
+ loaded: true,
320
+ state: {
321
+ ROOT: {
322
+ ...root,
323
+ childrens: [
324
+ data.uid
325
+ ]
326
+ },
327
+ ...newState
328
+ }
329
+ });
330
+ }
331
+ },
332
+ addSection: (data, position)=>{
333
+ const state = get().state;
334
+ const ROOT = state.ROOT;
335
+ if (!ROOT.childrens) ROOT.childrens = [];
336
+ ROOT.childrens.splice(position ?? 0, 0, data.uid);
337
+ set({
338
+ state: {
339
+ ...state,
340
+ ROOT: cloneDeep.cloneDeep(ROOT)
341
+ }
342
+ });
343
+ }
344
+ }));
345
+ const BuilderPreviewProvider = ({ children, state, lazy, ...passProps })=>{
346
+ const Component = lazy ? react.Suspense : react.Fragment;
347
+ const value = react.useMemo(()=>{
348
+ return createBuilderPreviewProvider(state);
349
+ }, [
350
+ state
351
+ ]);
352
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
353
+ children: /*#__PURE__*/ jsxRuntime.jsx(BuilderPreviewContext.Provider, {
354
+ ...passProps,
355
+ value: value,
356
+ children: children
357
+ })
358
+ });
359
+ };
360
+ // export const useBuilderPreviewStore = useStore;
361
+ const useBuilderPreviewStore = (selector, equalityFn)=>{
362
+ const store = react.useContext(BuilderPreviewContext);
363
+ if (!store) {
364
+ throw new Error('useBuilderPreviewStore must be used within a BuilderPreviewProvider');
365
+ }
366
+ return zustand.useStore(store, selector, equalityFn);
367
+ };
368
+
369
+ exports.BuilderPreviewProvider = BuilderPreviewProvider;
370
+ exports.useBuilderPreviewStore = useBuilderPreviewStore;
@@ -1 +1,29 @@
1
- "use strict";var jsxRuntime=require("react/jsx-runtime"),zustand=require("zustand"),react=require("react");const CartLineContext=react.createContext(null),createCartLineStore=e=>zustand.createStore(()=>({...e})),CartLineProvider=({children:e,line:t})=>jsxRuntime.jsx(CartLineContext.Provider,{value:createCartLineStore({line:t}),children:e},`${t.id}-${t.quantity}`),useCartLineStore=(e,t)=>{let r=react.useContext(CartLineContext);if(!r)throw Error("useCartLineStore must be used within a CartLineProvider");return zustand.useStore(r,e,t)};exports.CartLineProvider=CartLineProvider,exports.useCartLineStore=useCartLineStore;
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var zustand = require('zustand');
5
+ var react = require('react');
6
+
7
+ const CartLineContext = /*#__PURE__*/ react.createContext(null);
8
+ const createCartLineStore = (data)=>zustand.createStore(()=>({
9
+ ...data
10
+ }));
11
+ const CartLineProvider = ({ children, line })=>{
12
+ return /*#__PURE__*/ jsxRuntime.jsx(CartLineContext.Provider, {
13
+ value: createCartLineStore({
14
+ line
15
+ }),
16
+ children: children
17
+ }, `${line.id}-${line.quantity}`);
18
+ };
19
+ // export const useCartLineStore = useStore;
20
+ const useCartLineStore = (selector, equalityFn)=>{
21
+ const store = react.useContext(CartLineContext);
22
+ if (!store) {
23
+ throw new Error('useCartLineStore must be used within a CartLineProvider');
24
+ }
25
+ return zustand.useStore(store, selector, equalityFn);
26
+ };
27
+
28
+ exports.CartLineProvider = CartLineProvider;
29
+ exports.useCartLineStore = useCartLineStore;
@@ -1 +1,38 @@
1
- "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand");const CollectionContext=react.createContext(null),createCollectionProvider=e=>zustand.createStore(t=>({...e,changeCollectionStore:({collection:e})=>{t({collection:e})}})),CollectionProvider=({collection:e,children:t})=>{let o=react.useMemo(()=>createCollectionProvider({collection:e}),[e]);return jsxRuntime.jsx(CollectionContext.Provider,{value:o,children:t},e?.id)},useCollectionStore=(e,t)=>{let o=react.useContext(CollectionContext);if(!o)throw Error("useCollectionStore must be used within a useCollectionStore");return zustand.useStore(o,e,t)};exports.CollectionProvider=CollectionProvider,exports.useCollectionStore=useCollectionStore;
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var zustand = require('zustand');
6
+
7
+ const CollectionContext = /*#__PURE__*/ react.createContext(null);
8
+ const createCollectionProvider = (data)=>zustand.createStore((set)=>({
9
+ ...data,
10
+ changeCollectionStore: ({ collection })=>{
11
+ set({
12
+ collection: collection
13
+ });
14
+ }
15
+ }));
16
+ const CollectionProvider = ({ collection, children })=>{
17
+ const store = react.useMemo(()=>{
18
+ return createCollectionProvider({
19
+ collection
20
+ });
21
+ }, [
22
+ collection
23
+ ]);
24
+ return /*#__PURE__*/ jsxRuntime.jsx(CollectionContext.Provider, {
25
+ value: store,
26
+ children: children
27
+ }, collection?.id);
28
+ };
29
+ const useCollectionStore = (selector, equalityFn)=>{
30
+ const store = react.useContext(CollectionContext);
31
+ if (!store) {
32
+ throw new Error('useCollectionStore must be used within a useCollectionStore');
33
+ }
34
+ return zustand.useStore(store, selector, equalityFn);
35
+ };
36
+
37
+ exports.CollectionProvider = CollectionProvider;
38
+ exports.useCollectionStore = useCollectionStore;
@@ -1 +1,47 @@
1
- "use strict";var jsxRuntime=require("react/jsx-runtime"),react=require("react"),zustand=require("zustand");const ModalContext=react.createContext(null),createModalProvider=e=>zustand.createStore(t=>({activeId:e,setModalActive:e=>{window?.parent?.postMessage?.(JSON.stringify({type:"active-element",uid:e}),"*"),t({activeId:e})},clearModal:()=>{window?.parent?.postMessage?.(JSON.stringify({type:"active-element",uid:null}),"*"),t({activeId:void 0})}})),ModalProvider=({children:e,activeId:t,...r})=>{let o=createModalProvider(t);return jsxRuntime.jsx(ModalContext.Provider,{...r,value:o,children:e})},useModalStore=(e,t)=>{let r=react.useContext(ModalContext);if(!r)throw Error("useModalStore must be used within a ModalProvider");return zustand.useStore(r,e,t)};exports.ModalProvider=ModalProvider,exports.useModalStore=useModalStore;
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var zustand = require('zustand');
6
+
7
+ const ModalContext = /*#__PURE__*/ react.createContext(null);
8
+ const createModalProvider = (data)=>zustand.createStore((set)=>({
9
+ activeId: data,
10
+ setModalActive: (id)=>{
11
+ window?.parent?.postMessage?.(JSON.stringify({
12
+ type: 'active-element',
13
+ uid: id
14
+ }), '*');
15
+ set({
16
+ activeId: id
17
+ });
18
+ },
19
+ clearModal: ()=>{
20
+ window?.parent?.postMessage?.(JSON.stringify({
21
+ type: 'active-element',
22
+ uid: null
23
+ }), '*');
24
+ set({
25
+ activeId: undefined
26
+ });
27
+ }
28
+ }));
29
+ const ModalProvider = ({ children, activeId, ...passProps })=>{
30
+ const store = createModalProvider(activeId);
31
+ return /*#__PURE__*/ jsxRuntime.jsx(ModalContext.Provider, {
32
+ ...passProps,
33
+ value: store,
34
+ children: children
35
+ });
36
+ };
37
+ // export const useBuilderStore = useStore;
38
+ const useModalStore = (selector, equalityFn)=>{
39
+ const store = react.useContext(ModalContext);
40
+ if (!store) {
41
+ throw new Error('useModalStore must be used within a ModalProvider');
42
+ }
43
+ return zustand.useStore(store, selector, equalityFn);
44
+ };
45
+
46
+ exports.ModalProvider = ModalProvider;
47
+ exports.useModalStore = useModalStore;