@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,68 @@
1
- import{jsx as t}from"react/jsx-runtime";import{isValidElement as e}from"react";import{composeAdvanceStyle as o}from"../helpers/compose-advance-style.js";import{disableWrap as n}from"./constant.js";let ComponentWrapperPreview=({children:a,...r})=>{if("section"===r.type)return null;let p={};if(r.editorConfigs){let t=r.editorConfigs;t.placeholder?.notAppendBeforeAfter&&(p["data-placeholder-not-append-before-after"]=!0),t.toolbar?.parent&&(p["data-toolbar-parent"]=!0),t.component?.noDelete&&(p["data-component-no-delete"]=!0),t.component?.noDuplicate&&(p["data-component-no-duplicate"]=!0),t.component?.noDragDrop&&(p["data-component-no-drag-drop"]=!0),t.component?.noSetting&&(p["data-component-no-setting"]=!0),t.component?.isThirdParty&&(p["data-component-is-third-party"]=!0),t.toolbar?.hide&&(p["data-toolbar-hide"]=!0),t.slots?.children&&(p["data-slots-children"]=!0)}let d=o(r.advanced,r.tag),l=r.advanced,i={...p,"data-uid":r.uid,"data-component-type":"component","data-component-tag":r.tag,"data-component-label":r.label};return n.includes(r.tag)&&e(a)?t(a.type,{...a.props,style:d,builderAttrs:i,advanced:l}):t("div",{style:d,className:`${r.uid}`,...i,children:a})};export{ComponentWrapperPreview as default};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { isValidElement } from 'react';
3
+ import { composeAdvanceStyle } from '../helpers/compose-advance-style.js';
4
+ import { disableWrap } from './constant.js';
5
+
6
+ const ComponentWrapperPreview = ({ children, ...props })=>{
7
+ if (props.type === 'section') {
8
+ return null;
9
+ }
10
+ const customProps = {};
11
+ // Build editor configs
12
+ if (props.editorConfigs) {
13
+ const editorConfigs = props.editorConfigs;
14
+ if (editorConfigs.placeholder?.notAppendBeforeAfter) {
15
+ customProps['data-placeholder-not-append-before-after'] = true;
16
+ }
17
+ if (editorConfigs.toolbar?.parent) {
18
+ customProps['data-toolbar-parent'] = true;
19
+ }
20
+ if (editorConfigs.component?.noDelete) {
21
+ customProps['data-component-no-delete'] = true;
22
+ }
23
+ if (editorConfigs.component?.noDuplicate) {
24
+ customProps['data-component-no-duplicate'] = true;
25
+ }
26
+ if (editorConfigs.component?.noDragDrop) {
27
+ customProps['data-component-no-drag-drop'] = true;
28
+ }
29
+ if (editorConfigs.component?.noSetting) {
30
+ customProps['data-component-no-setting'] = true;
31
+ }
32
+ if (editorConfigs.component?.isThirdParty) {
33
+ customProps['data-component-is-third-party'] = true;
34
+ }
35
+ if (editorConfigs.toolbar?.hide) {
36
+ customProps['data-toolbar-hide'] = true;
37
+ }
38
+ if (editorConfigs.slots?.children) {
39
+ customProps['data-slots-children'] = true;
40
+ }
41
+ }
42
+ const style = composeAdvanceStyle(props.advanced, props.tag);
43
+ const advanced = props.advanced;
44
+ const builderAttrs = {
45
+ ...customProps,
46
+ 'data-uid': props.uid,
47
+ 'data-component-type': 'component',
48
+ 'data-component-tag': props.tag,
49
+ 'data-component-label': props.label
50
+ };
51
+ if (disableWrap.includes(props.tag) && /*#__PURE__*/ isValidElement(children)) {
52
+ return /*#__PURE__*/ jsx(children.type, {
53
+ ...children.props,
54
+ style,
55
+ builderAttrs,
56
+ advanced
57
+ });
58
+ }
59
+ // Render
60
+ return /*#__PURE__*/ jsx("div", {
61
+ style: style,
62
+ className: `${props.uid}`,
63
+ ...builderAttrs,
64
+ children: children
65
+ });
66
+ };
67
+
68
+ export { ComponentWrapperPreview as default };
@@ -1 +1,3 @@
1
- let Empty=()=>null;export{Empty as default};
1
+ const Empty = ()=>null;
2
+
3
+ export { Empty as default };
@@ -1 +1,61 @@
1
- import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{memo as n}from"react";import{ErrorBoundary as o}from"react-error-boundary";import{useBuilderComponent as i}from"../contexts/BuilderComponent.js";import{useBuilderStore as s}from"../contexts/BuilderContext.js";import d from"./ComponentWrapper.js";import l from"./RenderSection.js";let Render=({uid:n,...m})=>{let a=s(e=>e.getItem(n)),p=i(a?.tag);return a?a?.type==="section"?e(l,{sectionId:a.uid}):e(o,{fallbackRender:({error:n,resetErrorBoundary:o})=>r(t,{children:[e("span",{"aria-label":"Error message",children:n.message}),e("button",{type:"button",onClick:o,children:"Try again"})]}),children:e(d,{...a,children:a?.childrens?.length?e(p,{builderProps:{uid:n,builderData:a},styles:a.styles,setting:a.settings,...m,children:a.childrens.map(r=>e(RenderMemo,{uid:r},r))}):e(p,{builderProps:{uid:n,builderData:a},styles:a.styles,setting:a.settings,...m})})},a.uid):null},RenderMemo=n(Render);RenderMemo.displayName="RenderMemo";export{RenderMemo as default};
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { memo } from 'react';
3
+ import { ErrorBoundary } from 'react-error-boundary';
4
+ import { useBuilderComponent } from '../contexts/BuilderComponent.js';
5
+ import { useBuilderStore } from '../contexts/BuilderContext.js';
6
+ import ComponentWrapper from './ComponentWrapper.js';
7
+ import RenderSectionMemo from './RenderSection.js';
8
+
9
+ const Render = ({ uid, ...passProps })=>{
10
+ const item = useBuilderStore((s)=>s.getItem(uid));
11
+ const Component = useBuilderComponent(item?.tag);
12
+ if (!item) return null;
13
+ if (item?.type === 'section') {
14
+ return /*#__PURE__*/ jsx(RenderSectionMemo, {
15
+ sectionId: item.uid
16
+ });
17
+ } else {
18
+ return /*#__PURE__*/ jsx(ErrorBoundary, {
19
+ fallbackRender: ({ error, resetErrorBoundary })=>/*#__PURE__*/ jsxs(Fragment, {
20
+ children: [
21
+ /*#__PURE__*/ jsx("span", {
22
+ "aria-label": "Error message",
23
+ children: error.message
24
+ }),
25
+ /*#__PURE__*/ jsx("button", {
26
+ type: "button",
27
+ onClick: resetErrorBoundary,
28
+ children: "Try again"
29
+ })
30
+ ]
31
+ }),
32
+ children: /*#__PURE__*/ jsx(ComponentWrapper, {
33
+ ...item,
34
+ children: item?.childrens?.length ? /*#__PURE__*/ jsx(Component, {
35
+ builderProps: {
36
+ uid,
37
+ builderData: item
38
+ },
39
+ styles: item.styles,
40
+ setting: item.settings,
41
+ ...passProps,
42
+ children: item.childrens.map((id)=>/*#__PURE__*/ jsx(RenderMemo, {
43
+ uid: id
44
+ }, id))
45
+ }) : /*#__PURE__*/ jsx(Component, {
46
+ builderProps: {
47
+ uid,
48
+ builderData: item
49
+ },
50
+ styles: item.styles,
51
+ setting: item.settings,
52
+ ...passProps
53
+ })
54
+ })
55
+ }, item.uid);
56
+ }
57
+ };
58
+ const RenderMemo = /*#__PURE__*/ memo(Render);
59
+ RenderMemo.displayName = 'RenderMemo';
60
+
61
+ export { RenderMemo as default };
@@ -1,3 +1,153 @@
1
- import"react";import"swr";import{RenderIf as e,template as t}from"../helpers/render.js";import"../helpers/convert.js";import{composeAdvanceStyle as r}from"../helpers/compose-advance-style.js";import{disableWrap as i}from"./constant.js";let componentsRenderWithParentId=["CarouselItem"],componentTexts=["Text","Heading"],Render=({uid:n,builder:s,components:l,parentId:d,extraFiles:a={},...o})=>{let c=s[n],u=l[c?.tag];if(!u)return console.log("Miss component: ",c),{liquid:"",extraFiles:a};if(!c||c?.type==="section")return{liquid:"",extraFiles:a};{let a={extraFiles:{}},p=r(c.advanced,c.tag),m="";return{liquid:m=i.includes(c.tag)?e(c?.childrens?.length,()=>u({builderProps:{uid:n,builderData:c},styles:c.styles,setting:c.settings,style:p,advanced:c.advanced,parentId:componentsRenderWithParentId.includes(c.tag)?d:null,...o,rawChildren:c.childrens.map(e=>({...s[e],uid:e,builder:s,components:l,customProps:a})),children:c.childrens.map(e=>RenderChildren({uid:e,builder:s,components:l,customProps:a})).join("")}),()=>u({builderProps:{uid:n,builderData:c},styles:c.styles,setting:c.settings,advanced:c.advanced,style:p,isText:!!componentTexts.includes(c.tag)||null,parentId:componentsRenderWithParentId.includes(c.tag)?d:null,...o})):t`<div style="${p}" class="${c.uid}">
2
- ${e(c?.childrens?.length,()=>u({builderProps:{uid:n,builderData:c},styles:c.styles,setting:c.settings,...o,rawChildren:c.childrens.map(e=>({...s[e],uid:e,builder:s,components:l,customProps:a})),children:c.childrens.map(e=>RenderChildren({uid:e,builder:s,components:l,customProps:a})).join("")}),()=>u({builderProps:{uid:n,builderData:c},styles:c.styles,setting:c.settings,isText:!!componentTexts.includes(c.tag)||null,...o}))}
3
- </div>`,extraFiles:a.extraFiles}}},RenderChildren=e=>{let t=Render(e);for(let r in t.extraFiles)if(Object.prototype.hasOwnProperty.call(t.extraFiles,r)){let i=t.extraFiles[r];e.customProps.extraFiles[r]=i}let r=new TextEncoder,i=t?.liquid?r.encode(t.liquid).length:0;if(Math.ceil(i/1024)>=180){let r=`gp-section-snippet-${e.uid}`;return e.customProps.extraFiles[r]=t.liquid,`{% render '${r}', product: product, variant: variant, product_form_id: product_form_id %}`}return t.liquid};export{RenderChildren,Render as default};
1
+ import 'react';
2
+ import 'swr';
3
+ import { RenderIf, template } from '../helpers/render.js';
4
+ import '../helpers/convert.js';
5
+ import { composeAdvanceStyle } from '../helpers/compose-advance-style.js';
6
+ import { disableWrap } from './constant.js';
7
+
8
+ const componentsRenderWithParentId = [
9
+ 'CarouselItem'
10
+ ];
11
+ const componentTexts = [
12
+ 'Text',
13
+ 'Heading'
14
+ ];
15
+ const Render = ({ uid, builder, components, parentId, extraFiles = {}, ...passProps })=>{
16
+ const item = builder[uid];
17
+ const Component = components[item?.tag];
18
+ if (!Component) {
19
+ console.log('Miss component: ', item);
20
+ return {
21
+ liquid: '',
22
+ extraFiles
23
+ };
24
+ }
25
+ if (!item) {
26
+ return {
27
+ liquid: '',
28
+ extraFiles
29
+ };
30
+ }
31
+ if (item?.type === 'section') {
32
+ return {
33
+ liquid: '',
34
+ extraFiles
35
+ };
36
+ } else {
37
+ const customProps = {
38
+ extraFiles: {}
39
+ };
40
+ const style = composeAdvanceStyle(item.advanced, item.tag);
41
+ let liquid = '';
42
+ if (disableWrap.includes(item.tag)) {
43
+ liquid = RenderIf(item?.childrens?.length, ()=>{
44
+ return Component({
45
+ builderProps: {
46
+ uid,
47
+ builderData: item
48
+ },
49
+ styles: item.styles,
50
+ setting: item.settings,
51
+ style,
52
+ advanced: item.advanced,
53
+ parentId: componentsRenderWithParentId.includes(item.tag) ? parentId : null,
54
+ ...passProps,
55
+ rawChildren: item.childrens.map((id)=>{
56
+ return {
57
+ ...builder[id],
58
+ uid: id,
59
+ builder,
60
+ components,
61
+ customProps
62
+ };
63
+ }),
64
+ children: item.childrens.map((id)=>RenderChildren({
65
+ uid: id,
66
+ builder,
67
+ components,
68
+ customProps
69
+ })).join('')
70
+ });
71
+ }, ()=>{
72
+ return Component({
73
+ builderProps: {
74
+ uid,
75
+ builderData: item
76
+ },
77
+ styles: item.styles,
78
+ setting: item.settings,
79
+ advanced: item.advanced,
80
+ style,
81
+ isText: componentTexts.includes(item.tag) ? true : null,
82
+ parentId: componentsRenderWithParentId.includes(item.tag) ? parentId : null,
83
+ ...passProps
84
+ });
85
+ });
86
+ } else {
87
+ liquid = template`<div style="${style}" class="${item.uid}">
88
+ ${RenderIf(item?.childrens?.length, ()=>{
89
+ return Component({
90
+ builderProps: {
91
+ uid,
92
+ builderData: item
93
+ },
94
+ styles: item.styles,
95
+ setting: item.settings,
96
+ ...passProps,
97
+ rawChildren: item.childrens.map((id)=>{
98
+ return {
99
+ ...builder[id],
100
+ uid: id,
101
+ builder,
102
+ components,
103
+ customProps
104
+ };
105
+ }),
106
+ children: item.childrens.map((id)=>RenderChildren({
107
+ uid: id,
108
+ builder,
109
+ components,
110
+ customProps
111
+ })).join('')
112
+ });
113
+ }, ()=>{
114
+ return Component({
115
+ builderProps: {
116
+ uid,
117
+ builderData: item
118
+ },
119
+ styles: item.styles,
120
+ setting: item.settings,
121
+ isText: componentTexts.includes(item.tag) ? true : null,
122
+ ...passProps
123
+ });
124
+ })}
125
+ </div>`;
126
+ }
127
+ return {
128
+ liquid,
129
+ extraFiles: customProps.extraFiles
130
+ };
131
+ }
132
+ };
133
+ const RenderChildren = (props)=>{
134
+ const data = Render(props);
135
+ // Append to prop parent
136
+ for(const key in data.extraFiles){
137
+ if (Object.prototype.hasOwnProperty.call(data.extraFiles, key)) {
138
+ const value = data.extraFiles[key];
139
+ props.customProps.extraFiles[key] = value;
140
+ }
141
+ }
142
+ // Fix limit 256kb
143
+ const textEncoder = new TextEncoder();
144
+ const size = data?.liquid ? textEncoder.encode(data.liquid).length : 0;
145
+ if (Math.ceil(size / 1024) >= 180) {
146
+ const fileName = `gp-section-snippet-${props.uid}`;
147
+ props.customProps.extraFiles[fileName] = data.liquid;
148
+ return `{% render '${fileName}', product: product, variant: variant, product_form_id: product_form_id %}`;
149
+ }
150
+ return data.liquid;
151
+ };
152
+
153
+ export { RenderChildren, Render as default };
@@ -1 +1,50 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{ErrorBoundary as o}from"react-error-boundary";import{useBuilderComponent as n}from"../contexts/BuilderComponent.js";import{useBuilderStore as l}from"../contexts/BuilderContext.js";import s from"./ComponentWrapper.js";let RenderBlock=({uid:t})=>{let i=l(e=>e.getItem(t)),d=n(i?.tag);return i&&"section"!==i.type?e(o,{fallbackRender:({error:t,resetErrorBoundary:o})=>r(s,{...i,children:[e("span",{"aria-label":"Error message",children:t.message}),e("button",{type:"button",onClick:o,children:"Try again"})]}),children:e(s,{...i,children:i?.childrens?.length?e(d,{builderProps:{uid:t},styles:i.styles??{},setting:i.settings??{},children:i?.childrens?.map(r=>e(RenderBlockMemo,{uid:r},r))}):e(d,{builderProps:{uid:t},styles:i.styles??{},setting:i.settings??{}})})},i.uid):null},RenderBlockMemo=t(RenderBlock);export{RenderBlockMemo as default};
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { memo } from 'react';
3
+ import { ErrorBoundary } from 'react-error-boundary';
4
+ import { useBuilderComponent } from '../contexts/BuilderComponent.js';
5
+ import { useBuilderStore } from '../contexts/BuilderContext.js';
6
+ import ComponentWrapper from './ComponentWrapper.js';
7
+
8
+ const RenderBlock = ({ uid })=>{
9
+ const item = useBuilderStore((s)=>s.getItem(uid));
10
+ const Component = useBuilderComponent(item?.tag);
11
+ if (!item || item.type === 'section') return null;
12
+ return /*#__PURE__*/ jsx(ErrorBoundary, {
13
+ fallbackRender: ({ error, resetErrorBoundary })=>/*#__PURE__*/ jsxs(ComponentWrapper, {
14
+ ...item,
15
+ children: [
16
+ /*#__PURE__*/ jsx("span", {
17
+ "aria-label": "Error message",
18
+ children: error.message
19
+ }),
20
+ /*#__PURE__*/ jsx("button", {
21
+ type: "button",
22
+ onClick: resetErrorBoundary,
23
+ children: "Try again"
24
+ })
25
+ ]
26
+ }),
27
+ children: /*#__PURE__*/ jsx(ComponentWrapper, {
28
+ ...item,
29
+ children: item?.childrens?.length ? /*#__PURE__*/ jsx(Component, {
30
+ builderProps: {
31
+ uid
32
+ },
33
+ styles: item.styles ?? {},
34
+ setting: item.settings ?? {},
35
+ children: item?.childrens?.map((id)=>/*#__PURE__*/ jsx(RenderBlockMemo, {
36
+ uid: id
37
+ }, id))
38
+ }) : /*#__PURE__*/ jsx(Component, {
39
+ builderProps: {
40
+ uid
41
+ },
42
+ styles: item.styles ?? {},
43
+ setting: item.settings ?? {}
44
+ })
45
+ })
46
+ }, item.uid);
47
+ };
48
+ const RenderBlockMemo = /*#__PURE__*/ memo(RenderBlock);
49
+
50
+ export { RenderBlockMemo as default };
@@ -1 +1,62 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{ErrorBoundary as i}from"react-error-boundary";import{useBuilderComponent as n}from"../contexts/BuilderComponent.js";import{useBuilderPreviewStore as o}from"../contexts/BuilderPreviewContext.js";import s from"./ComponentWrapperPreview.js";import d from"./RenderSection.js";let RenderPreview=({uid:t,...l})=>{let m=o(e=>e.getItem(t)),a=n(m?.tag);return m?m?.type==="section"?e(d,{sectionId:m.uid}):e(i,{fallbackRender:({error:t,resetErrorBoundary:i})=>r(s,{...m,children:[e("span",{"aria-label":"Error message",children:t.message}),e("button",{type:"button",onClick:i,children:"Try again"})]}),children:e(s,{...m,children:m?.childrens?.length?e(a,{builderProps:{uid:t,builderData:m},styles:m.styles,setting:m.settings,...l,children:m.childrens.map(r=>e(RenderPreviewMemo,{uid:r},r))}):e(a,{builderProps:{uid:t,builderData:m},styles:m.styles,setting:m.settings,...l})})},m.uid):null},RenderPreviewMemo=t(RenderPreview);RenderPreviewMemo.displayName="RenderPreviewMemo";export{RenderPreviewMemo as default};
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { memo } from 'react';
3
+ import { ErrorBoundary } from 'react-error-boundary';
4
+ import { useBuilderComponent } from '../contexts/BuilderComponent.js';
5
+ import { useBuilderPreviewStore } from '../contexts/BuilderPreviewContext.js';
6
+ import ComponentWrapperPreview from './ComponentWrapperPreview.js';
7
+ import RenderSectionMemo from './RenderSection.js';
8
+
9
+ const RenderPreview = ({ uid, ...passProps })=>{
10
+ const item = useBuilderPreviewStore((s)=>s.getItem(uid));
11
+ const Component = useBuilderComponent(item?.tag);
12
+ if (!item) return null;
13
+ if (item?.type === 'section') {
14
+ return /*#__PURE__*/ jsx(RenderSectionMemo, {
15
+ sectionId: item.uid
16
+ });
17
+ } else {
18
+ return /*#__PURE__*/ jsx(ErrorBoundary, {
19
+ fallbackRender: ({ error, resetErrorBoundary })=>/*#__PURE__*/ jsxs(ComponentWrapperPreview, {
20
+ ...item,
21
+ children: [
22
+ /*#__PURE__*/ jsx("span", {
23
+ "aria-label": "Error message",
24
+ children: error.message
25
+ }),
26
+ /*#__PURE__*/ jsx("button", {
27
+ type: "button",
28
+ onClick: resetErrorBoundary,
29
+ children: "Try again"
30
+ })
31
+ ]
32
+ }),
33
+ children: /*#__PURE__*/ jsx(ComponentWrapperPreview, {
34
+ ...item,
35
+ children: item?.childrens?.length ? /*#__PURE__*/ jsx(Component, {
36
+ builderProps: {
37
+ uid,
38
+ builderData: item
39
+ },
40
+ styles: item.styles,
41
+ setting: item.settings,
42
+ ...passProps,
43
+ children: item.childrens.map((id)=>/*#__PURE__*/ jsx(RenderPreviewMemo, {
44
+ uid: id
45
+ }, id))
46
+ }) : /*#__PURE__*/ jsx(Component, {
47
+ builderProps: {
48
+ uid,
49
+ builderData: item
50
+ },
51
+ styles: item.styles,
52
+ setting: item.settings,
53
+ ...passProps
54
+ })
55
+ })
56
+ }, item.uid);
57
+ }
58
+ };
59
+ const RenderPreviewMemo = /*#__PURE__*/ memo(RenderPreview);
60
+ RenderPreviewMemo.displayName = 'RenderPreviewMemo';
61
+
62
+ export { RenderPreviewMemo as default };
@@ -1 +1,19 @@
1
- import{jsx as e}from"react/jsx-runtime";import{memo as t}from"react";import{BuilderProvider as o}from"../contexts/BuilderContext.js";import{useSection as r}from"../contexts/SectionContext.js";import n from"./RenderBlock.js";let RenderSection=({sectionId:t})=>{let i=r(t);return i?e(o,{state:i,children:e(n,{uid:t})},t):null},RenderSectionMemo=t(RenderSection);export{RenderSectionMemo as default};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { memo } from 'react';
3
+ import { BuilderProvider } from '../contexts/BuilderContext.js';
4
+ import { useSection } from '../contexts/SectionContext.js';
5
+ import RenderBlockMemo from './RenderBlock.js';
6
+
7
+ const RenderSection = ({ sectionId })=>{
8
+ const state = useSection(sectionId);
9
+ if (!state) return null;
10
+ return /*#__PURE__*/ jsx(BuilderProvider, {
11
+ state: state,
12
+ children: /*#__PURE__*/ jsx(RenderBlockMemo, {
13
+ uid: sectionId
14
+ })
15
+ }, sectionId);
16
+ };
17
+ const RenderSectionMemo = /*#__PURE__*/ memo(RenderSection);
18
+
19
+ export { RenderSectionMemo as default };
@@ -1 +1,37 @@
1
- let disableWrap=["Col","CollectionBanner","Row","Section","Image","Text","Button","ProductButton","Cart","Tabs","TabItem","Carousel","CarouselItem","ShopPayButton","AccordionItem","Video","Header","HeroBanner","Icon","IconList","HTMLCode","IconListHoz","IconListItem","CSSCode","FormEmail","FormDropdown","SubmitButton","Dialog","TextField","FormTextarea","ProductPrice","Product","ProductImages"];export{disableWrap};
1
+ const disableWrap = [
2
+ 'Col',
3
+ 'CollectionBanner',
4
+ 'Row',
5
+ 'Section',
6
+ 'Image',
7
+ 'Text',
8
+ 'Button',
9
+ 'ProductButton',
10
+ 'Cart',
11
+ 'Tabs',
12
+ 'TabItem',
13
+ 'Carousel',
14
+ 'CarouselItem',
15
+ 'ShopPayButton',
16
+ 'AccordionItem',
17
+ 'Video',
18
+ 'Header',
19
+ 'HeroBanner',
20
+ 'Icon',
21
+ 'IconList',
22
+ 'HTMLCode',
23
+ 'IconListHoz',
24
+ 'IconListItem',
25
+ 'CSSCode',
26
+ 'FormEmail',
27
+ 'FormDropdown',
28
+ 'SubmitButton',
29
+ 'Dialog',
30
+ 'TextField',
31
+ 'FormTextarea',
32
+ 'ProductPrice',
33
+ 'Product',
34
+ 'ProductImages'
35
+ ];
36
+
37
+ export { disableWrap };
@@ -1 +1,32 @@
1
- import{jsx as o}from"react/jsx-runtime";import{useContext as d,useMemo as e,createContext as n}from"react";import r from"../components/Empty.js";let AddonContext=n(null),AddonProvider=({children:d,components:e,...n})=>o(AddonContext.Provider,{...n,value:{components:e},children:d}),useAddons=()=>{let o=d(AddonContext);if(!o)throw Error("useAddons must be used within an AddonProvider");return e(()=>o.components,[o.components])},useAddon=o=>{let d=useAddons();return e(()=>o?d[o]??r:r,[o,d])};export{AddonProvider,useAddon,useAddons};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useContext, useMemo, createContext } from 'react';
3
+ import Empty from '../components/Empty.js';
4
+
5
+ const AddonContext = /*#__PURE__*/ createContext(null);
6
+ const AddonProvider = ({ children, components, ...passProps })=>{
7
+ return /*#__PURE__*/ jsx(AddonContext.Provider, {
8
+ ...passProps,
9
+ value: {
10
+ components
11
+ },
12
+ children: children
13
+ });
14
+ };
15
+ const useAddons = ()=>{
16
+ const context = useContext(AddonContext);
17
+ if (!context) {
18
+ throw new Error('useAddons must be used within an AddonProvider');
19
+ }
20
+ return useMemo(()=>context.components, [
21
+ context.components
22
+ ]);
23
+ };
24
+ const useAddon = (id)=>{
25
+ const addons = useAddons();
26
+ return useMemo(()=>id ? addons[id] ?? Empty : Empty, [
27
+ id,
28
+ addons
29
+ ]);
30
+ };
31
+
32
+ export { AddonProvider, useAddon, useAddons };
@@ -1 +1,31 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useStore as o,createStore as t}from"zustand";import{useContext as r,createContext as n}from"react";import m from"../components/Empty.js";let BuilderComponentContext=n(null),createBuilderComponentStore=e=>t((o,t)=>({components:e,getItem:e=>t().components[e]})),BuilderComponentProvider=({children:o,components:t,...r})=>e(BuilderComponentContext.Provider,{...r,value:createBuilderComponentStore(t),children:o}),useBuilderComponent=e=>{let t=r(BuilderComponentContext);if(!t)throw Error("useBuilderComponent must be used within a BuilderComponentProvider");return o(t,o=>e?o.getItem(e)??m:m)};export{BuilderComponentProvider,useBuilderComponent};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useStore, createStore } from 'zustand';
3
+ import { useContext, createContext } from 'react';
4
+ import Empty from '../components/Empty.js';
5
+
6
+ const BuilderComponentContext = /*#__PURE__*/ createContext(null);
7
+ const createBuilderComponentStore = (components)=>createStore((_, get)=>({
8
+ components,
9
+ getItem: (id)=>{
10
+ return get().components[id];
11
+ }
12
+ }));
13
+ const BuilderComponentProvider = ({ children, components, ...passProps })=>{
14
+ return /*#__PURE__*/ jsx(BuilderComponentContext.Provider, {
15
+ ...passProps,
16
+ value: createBuilderComponentStore(components),
17
+ children: children
18
+ });
19
+ };
20
+ // export const useBuilderComponent = (id?: string) => {
21
+ // return useStore((s) => (id ? s.getItem(id) ?? Empty : Empty));
22
+ // };
23
+ const useBuilderComponent = (id)=>{
24
+ const store = useContext(BuilderComponentContext);
25
+ if (!store) {
26
+ throw new Error('useBuilderComponent must be used within a BuilderComponentProvider');
27
+ }
28
+ return useStore(store, (s)=>id ? s.getItem(id) ?? Empty : Empty);
29
+ };
30
+
31
+ export { BuilderComponentProvider, useBuilderComponent };
@@ -1 +1,32 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useContext as r,createContext as t,Suspense as i,Fragment as u}from"react";import{useStore as d,createStore as o}from"zustand";let BuilderContext=t(null),createBuilderProvider=e=>o((r,t)=>({state:e,getItem:e=>t().state[e]})),BuilderProvider=({children:r,state:t,lazy:d,priority:o,...l})=>{let n=d?i:u,B=createBuilderProvider(t);return e(n,{children:e(BuilderContext.Provider,{...l,value:B,children:r})})},useBuilderStore=(e,t)=>{let i=r(BuilderContext);if(!i)throw Error("useBuilderStore must be used within a BuilderProvider");return d(i,e,t)};export{BuilderProvider,useBuilderStore};
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useContext, createContext, Suspense, Fragment } from 'react';
3
+ import { useStore, createStore } from 'zustand';
4
+
5
+ const BuilderContext = /*#__PURE__*/ createContext(null);
6
+ const createBuilderProvider = (data)=>createStore((_, get)=>({
7
+ state: data,
8
+ getItem: (id)=>{
9
+ return get().state[id];
10
+ }
11
+ }));
12
+ const BuilderProvider = ({ children, state, lazy, priority, ...passProps })=>{
13
+ const Component = lazy ? Suspense : Fragment;
14
+ const store = createBuilderProvider(state);
15
+ return /*#__PURE__*/ jsx(Component, {
16
+ children: /*#__PURE__*/ jsx(BuilderContext.Provider, {
17
+ ...passProps,
18
+ value: store,
19
+ children: children
20
+ })
21
+ });
22
+ };
23
+ // export const useBuilderStore = useStore;
24
+ const useBuilderStore = (selector, equalityFn)=>{
25
+ const store = useContext(BuilderContext);
26
+ if (!store) {
27
+ throw new Error('useBuilderStore must be used within a BuilderProvider');
28
+ }
29
+ return useStore(store, selector, equalityFn);
30
+ };
31
+
32
+ export { BuilderProvider, useBuilderStore };