@gem-sdk/core 1.0.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.
- package/dist/cjs/components/AddOn.js +18 -0
- package/dist/cjs/components/ComponentWrapper.js +45 -0
- package/dist/cjs/components/ComponentWrapperPreview.js +58 -0
- package/dist/cjs/components/Empty.js +7 -0
- package/dist/cjs/components/Render.js +28 -0
- package/dist/cjs/components/RenderBlock.js +21 -0
- package/dist/cjs/components/RenderPreview.js +28 -0
- package/dist/cjs/components/RenderSection.js +19 -0
- package/dist/cjs/contexts/AddonContext.js +25 -0
- package/dist/cjs/contexts/BuilderComponent.js +30 -0
- package/dist/cjs/contexts/BuilderContext.js +29 -0
- package/dist/cjs/contexts/BuilderPreviewContext.js +353 -0
- package/dist/cjs/contexts/CartLineContext.js +24 -0
- package/dist/cjs/contexts/CollectionContext.js +24 -0
- package/dist/cjs/contexts/ProductContext.js +126 -0
- package/dist/cjs/contexts/ProductListContext.js +24 -0
- package/dist/cjs/contexts/SectionContext.js +49 -0
- package/dist/cjs/contexts/ShopContext.js +43 -0
- package/dist/cjs/graphql/fragments/analytic.generated.js +11 -0
- package/dist/cjs/graphql/fragments/collection-detail.generated.js +13 -0
- package/dist/cjs/graphql/fragments/collection-product.generated.js +26 -0
- package/dist/cjs/graphql/fragments/data-seo.generated.js +11 -0
- package/dist/cjs/graphql/fragments/media.generated.js +14 -0
- package/dist/cjs/graphql/fragments/product-little.generated.js +25 -0
- package/dist/cjs/graphql/fragments/product-option-value.generated.js +13 -0
- package/dist/cjs/graphql/fragments/product-option.generated.js +14 -0
- package/dist/cjs/graphql/fragments/product.generated.js +33 -0
- package/dist/cjs/graphql/fragments/published-custom-section.generated.js +12 -0
- package/dist/cjs/graphql/fragments/published-page-section.generated.js +11 -0
- package/dist/cjs/graphql/fragments/published-theme-page.generated.js +27 -0
- package/dist/cjs/graphql/fragments/published-theme-style.generated.js +11 -0
- package/dist/cjs/graphql/fragments/selected-option.generated.js +11 -0
- package/dist/cjs/graphql/fragments/variant.generated.js +35 -0
- package/dist/cjs/graphql/queries/collection-detail-filter.generated.js +34 -0
- package/dist/cjs/graphql/queries/collection.generated.js +52 -0
- package/dist/cjs/graphql/queries/preview-page.generated.js +23 -0
- package/dist/cjs/graphql/queries/product-little-detail.generated.js +24 -0
- package/dist/cjs/graphql/queries/product-medias.generated.js +29 -0
- package/dist/cjs/graphql/queries/product-variants.generated.js +33 -0
- package/dist/cjs/graphql/queries/products.generated.js +41 -0
- package/dist/cjs/graphql/queries/published-theme-pages.generated.js +23 -0
- package/dist/cjs/graphql/queries/storeProperty.generated.js +12 -0
- package/dist/cjs/helpers/GlobalEvent.js +17 -0
- package/dist/cjs/helpers/background.js +104 -0
- package/dist/cjs/helpers/borders.js +138 -0
- package/dist/cjs/helpers/clone-deep.js +5 -0
- package/dist/cjs/helpers/cls.js +20 -0
- package/dist/cjs/helpers/colors.js +157 -0
- package/dist/cjs/helpers/compose-advance-style.js +132 -0
- package/dist/cjs/helpers/constant.js +17 -0
- package/dist/cjs/helpers/css-variable.js +7 -0
- package/dist/cjs/helpers/email.js +11 -0
- package/dist/cjs/helpers/flatten-connection.js +10 -0
- package/dist/cjs/helpers/fpixel.js +29 -0
- package/dist/cjs/helpers/get-resonsive-value.js +32 -0
- package/dist/cjs/helpers/get-shortname.js +92 -0
- package/dist/cjs/helpers/gtag.js +48 -0
- package/dist/cjs/helpers/is-browser.js +9 -0
- package/dist/cjs/helpers/is-defined.js +7 -0
- package/dist/cjs/helpers/is-empty-children.js +12 -0
- package/dist/cjs/helpers/layout.js +17 -0
- package/dist/cjs/helpers/load-script.js +32 -0
- package/dist/cjs/helpers/make-style.js +99 -0
- package/dist/cjs/helpers/normalize-builder-data.js +17 -0
- package/dist/cjs/helpers/prefetch-queries.js +68 -0
- package/dist/cjs/helpers/product.js +35 -0
- package/dist/cjs/helpers/queries/get-collection.js +173 -0
- package/dist/cjs/helpers/queries/get-product-by-slug.js +99 -0
- package/dist/cjs/helpers/queries/get-product.js +113 -0
- package/dist/cjs/helpers/queries/get-products.js +135 -0
- package/dist/cjs/helpers/radius.js +91 -0
- package/dist/cjs/helpers/shadow.js +48 -0
- package/dist/cjs/helpers/size.js +20 -0
- package/dist/cjs/helpers/spacing.js +45 -0
- package/dist/cjs/helpers/tiktokpixel.js +17 -0
- package/dist/cjs/helpers/typography.js +7 -0
- package/dist/cjs/hooks/cart/use-add-to-cart.js +20 -0
- package/dist/cjs/hooks/cart/use-cart-data.js +26 -0
- package/dist/cjs/hooks/cart/use-cart-discount-codes-update.js +20 -0
- package/dist/cjs/hooks/cart/use-cart-note-update.js +20 -0
- package/dist/cjs/hooks/cart/use-create-cart.js +22 -0
- package/dist/cjs/hooks/cart/use-remove-cart-item.js +20 -0
- package/dist/cjs/hooks/cart/use-update-cart-item.js +20 -0
- package/dist/cjs/hooks/shop/use-collection-query.js +16 -0
- package/dist/cjs/hooks/shop/use-product-query.js +16 -0
- package/dist/cjs/hooks/shop/use-products-query.js +16 -0
- package/dist/cjs/hooks/shop.js +80 -0
- package/dist/cjs/hooks/use-current-device.js +23 -0
- package/dist/cjs/hooks/use-lazy-video.js +15 -0
- package/dist/cjs/hooks/useCartId.js +36 -0
- package/dist/cjs/hooks/useCartLine.js +11 -0
- package/dist/cjs/hooks/useCartUI.js +42 -0
- package/dist/cjs/hooks/useCollection.js +9 -0
- package/dist/cjs/hooks/useFetchHandle.js +13 -0
- package/dist/cjs/hooks/useFormatMoney.js +17 -0
- package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +10 -0
- package/dist/cjs/hooks/useLoadScript.js +30 -0
- package/dist/cjs/hooks/useMoney.js +52 -0
- package/dist/cjs/hooks/usePrevious.js +17 -0
- package/dist/cjs/hooks/useProduct.js +90 -0
- package/dist/cjs/hooks/useProductList.js +21 -0
- package/dist/cjs/hooks/useSuspenseFetch.js +24 -0
- package/dist/cjs/hooks/useSwatchesOptions.js +39 -0
- package/dist/cjs/index.js +229 -0
- package/dist/cjs/types/global-style.js +7 -0
- package/dist/cjs/types/shop.js +2 -0
- package/dist/esm/components/AddOn.js +14 -0
- package/dist/esm/components/ComponentWrapper.js +40 -0
- package/dist/esm/components/ComponentWrapperPreview.js +54 -0
- package/dist/esm/components/Empty.js +3 -0
- package/dist/esm/components/Render.js +24 -0
- package/dist/esm/components/RenderBlock.js +17 -0
- package/dist/esm/components/RenderPreview.js +24 -0
- package/dist/esm/components/RenderSection.js +15 -0
- package/dist/esm/contexts/AddonContext.js +21 -0
- package/dist/esm/contexts/BuilderComponent.js +27 -0
- package/dist/esm/contexts/BuilderContext.js +26 -0
- package/dist/esm/contexts/BuilderPreviewContext.js +350 -0
- package/dist/esm/contexts/CartLineContext.js +21 -0
- package/dist/esm/contexts/CollectionContext.js +20 -0
- package/dist/esm/contexts/ProductContext.js +123 -0
- package/dist/esm/contexts/ProductListContext.js +20 -0
- package/dist/esm/contexts/SectionContext.js +45 -0
- package/dist/esm/contexts/ShopContext.js +40 -0
- package/dist/esm/graphql/fragments/analytic.generated.js +9 -0
- package/dist/esm/graphql/fragments/collection-detail.generated.js +11 -0
- package/dist/esm/graphql/fragments/collection-product.generated.js +24 -0
- package/dist/esm/graphql/fragments/data-seo.generated.js +9 -0
- package/dist/esm/graphql/fragments/media.generated.js +12 -0
- package/dist/esm/graphql/fragments/product-little.generated.js +23 -0
- package/dist/esm/graphql/fragments/product-option-value.generated.js +11 -0
- package/dist/esm/graphql/fragments/product-option.generated.js +12 -0
- package/dist/esm/graphql/fragments/product.generated.js +31 -0
- package/dist/esm/graphql/fragments/published-custom-section.generated.js +10 -0
- package/dist/esm/graphql/fragments/published-page-section.generated.js +9 -0
- package/dist/esm/graphql/fragments/published-theme-page.generated.js +25 -0
- package/dist/esm/graphql/fragments/published-theme-style.generated.js +9 -0
- package/dist/esm/graphql/fragments/selected-option.generated.js +9 -0
- package/dist/esm/graphql/fragments/variant.generated.js +33 -0
- package/dist/esm/graphql/queries/collection-detail-filter.generated.js +32 -0
- package/dist/esm/graphql/queries/collection.generated.js +50 -0
- package/dist/esm/graphql/queries/preview-page.generated.js +21 -0
- package/dist/esm/graphql/queries/product-little-detail.generated.js +22 -0
- package/dist/esm/graphql/queries/product-medias.generated.js +27 -0
- package/dist/esm/graphql/queries/product-variants.generated.js +31 -0
- package/dist/esm/graphql/queries/products.generated.js +38 -0
- package/dist/esm/graphql/queries/published-theme-pages.generated.js +21 -0
- package/dist/esm/graphql/queries/storeProperty.generated.js +10 -0
- package/dist/esm/helpers/GlobalEvent.js +13 -0
- package/dist/esm/helpers/background.js +102 -0
- package/dist/esm/helpers/borders.js +133 -0
- package/dist/esm/helpers/clone-deep.js +3 -0
- package/dist/esm/helpers/cls.js +18 -0
- package/dist/esm/helpers/colors.js +145 -0
- package/dist/esm/helpers/compose-advance-style.js +130 -0
- package/dist/esm/helpers/constant.js +13 -0
- package/dist/esm/helpers/css-variable.js +5 -0
- package/dist/esm/helpers/email.js +6 -0
- package/dist/esm/helpers/flatten-connection.js +8 -0
- package/dist/esm/helpers/fpixel.js +25 -0
- package/dist/esm/helpers/get-resonsive-value.js +28 -0
- package/dist/esm/helpers/get-shortname.js +90 -0
- package/dist/esm/helpers/gtag.js +45 -0
- package/dist/esm/helpers/is-browser.js +5 -0
- package/dist/esm/helpers/is-defined.js +5 -0
- package/dist/esm/helpers/is-empty-children.js +7 -0
- package/dist/esm/helpers/layout.js +15 -0
- package/dist/esm/helpers/load-script.js +30 -0
- package/dist/esm/helpers/make-style.js +91 -0
- package/dist/esm/helpers/normalize-builder-data.js +15 -0
- package/dist/esm/helpers/prefetch-queries.js +66 -0
- package/dist/esm/helpers/product.js +32 -0
- package/dist/esm/helpers/queries/get-collection.js +170 -0
- package/dist/esm/helpers/queries/get-product-by-slug.js +97 -0
- package/dist/esm/helpers/queries/get-product.js +109 -0
- package/dist/esm/helpers/queries/get-products.js +133 -0
- package/dist/esm/helpers/radius.js +86 -0
- package/dist/esm/helpers/shadow.js +45 -0
- package/dist/esm/helpers/size.js +18 -0
- package/dist/esm/helpers/spacing.js +42 -0
- package/dist/esm/helpers/tiktokpixel.js +15 -0
- package/dist/esm/helpers/typography.js +5 -0
- package/dist/esm/hooks/cart/use-add-to-cart.js +18 -0
- package/dist/esm/hooks/cart/use-cart-data.js +24 -0
- package/dist/esm/hooks/cart/use-cart-discount-codes-update.js +18 -0
- package/dist/esm/hooks/cart/use-cart-note-update.js +18 -0
- package/dist/esm/hooks/cart/use-create-cart.js +20 -0
- package/dist/esm/hooks/cart/use-remove-cart-item.js +18 -0
- package/dist/esm/hooks/cart/use-update-cart-item.js +18 -0
- package/dist/esm/hooks/shop/use-collection-query.js +14 -0
- package/dist/esm/hooks/shop/use-product-query.js +14 -0
- package/dist/esm/hooks/shop/use-products-query.js +14 -0
- package/dist/esm/hooks/shop.js +68 -0
- package/dist/esm/hooks/use-current-device.js +21 -0
- package/dist/esm/hooks/use-lazy-video.js +13 -0
- package/dist/esm/hooks/useCartId.js +32 -0
- package/dist/esm/hooks/useCartLine.js +7 -0
- package/dist/esm/hooks/useCartUI.js +38 -0
- package/dist/esm/hooks/useCollection.js +7 -0
- package/dist/esm/hooks/useFetchHandle.js +11 -0
- package/dist/esm/hooks/useFormatMoney.js +13 -0
- package/dist/esm/hooks/useIsomorphicLayoutEffect.js +6 -0
- package/dist/esm/hooks/useLoadScript.js +26 -0
- package/dist/esm/hooks/useMoney.js +48 -0
- package/dist/esm/hooks/usePrevious.js +15 -0
- package/dist/esm/hooks/useProduct.js +78 -0
- package/dist/esm/hooks/useProductList.js +16 -0
- package/dist/esm/hooks/useSuspenseFetch.js +20 -0
- package/dist/esm/hooks/useSwatchesOptions.js +35 -0
- package/dist/esm/index.js +82 -0
- package/dist/esm/types/global-style.js +4 -0
- package/dist/esm/types/shop.js +1 -0
- package/dist/types/index.d.ts +7393 -0
- package/package.json +50 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
const usePrevious = (value) => {
|
|
6
|
+
// The ref object is a generic container whose current property is mutable ...
|
|
7
|
+
// ... and can hold any value, similar to an instance property on a class
|
|
8
|
+
const ref = react.useRef();
|
|
9
|
+
// Store current value in ref
|
|
10
|
+
react.useEffect(() => {
|
|
11
|
+
ref.current = value;
|
|
12
|
+
}, [value]); // Only re-run if value changes
|
|
13
|
+
// Return previous value (happens before update in useEffect above)
|
|
14
|
+
return ref.current;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.usePrevious = usePrevious;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var ProductContext = require('../contexts/ProductContext.js');
|
|
5
|
+
var flattenConnection = require('../helpers/flatten-connection.js');
|
|
6
|
+
require('swr');
|
|
7
|
+
var product = require('../helpers/product.js');
|
|
8
|
+
|
|
9
|
+
const useUniqProductID = () => {
|
|
10
|
+
return ProductContext.useProductStore((s) => s.uiqueId);
|
|
11
|
+
};
|
|
12
|
+
const useProduct = () => {
|
|
13
|
+
return ProductContext.useProductStore((s) => s.product);
|
|
14
|
+
};
|
|
15
|
+
const useFeaturedImageGlobal = () => {
|
|
16
|
+
return ProductContext.useProductStore((s) => s.featuredImageGlobal);
|
|
17
|
+
};
|
|
18
|
+
const useProductProperties = () => {
|
|
19
|
+
return ProductContext.useProductStore((s) => s.properties);
|
|
20
|
+
};
|
|
21
|
+
const useQuantity = () => {
|
|
22
|
+
const quantity = ProductContext.useProductStore((s) => s.quantity);
|
|
23
|
+
const decrement = ProductContext.useProductStore((s) => s.decrementQuantity);
|
|
24
|
+
const increment = ProductContext.useProductStore((s) => s.incrementQuantity);
|
|
25
|
+
const updateQuantity = ProductContext.useProductStore((s) => s.setQuantity);
|
|
26
|
+
const reset = react.useCallback(() => {
|
|
27
|
+
updateQuantity(1);
|
|
28
|
+
}, [updateQuantity]);
|
|
29
|
+
return react.useMemo(() => ({ quantity, increment, decrement, reset, setQuantity: updateQuantity }), [decrement, increment, quantity, reset, updateQuantity]);
|
|
30
|
+
};
|
|
31
|
+
const useSelectedOption = () => {
|
|
32
|
+
const setSelectedOption = ProductContext.useProductStore((s) => s.setSelectedOption);
|
|
33
|
+
const selectedOptions = ProductContext.useProductStore((s) => s.selectedOptions);
|
|
34
|
+
const forceSelectedOption = ProductContext.useProductStore((s) => s.forceSelectedOption);
|
|
35
|
+
const updateOption = react.useCallback((optionId, optionValue) => {
|
|
36
|
+
setSelectedOption(optionId, optionValue);
|
|
37
|
+
}, [setSelectedOption]);
|
|
38
|
+
return react.useMemo(() => ({
|
|
39
|
+
selectedOptions,
|
|
40
|
+
setSelectedOption: updateOption,
|
|
41
|
+
forceSelectedOption,
|
|
42
|
+
}), [selectedOptions, updateOption, forceSelectedOption]);
|
|
43
|
+
};
|
|
44
|
+
const useVariants = () => {
|
|
45
|
+
const variants = ProductContext.useProductStore((s) => s.product?.variants);
|
|
46
|
+
return flattenConnection.flattenConnection(variants);
|
|
47
|
+
};
|
|
48
|
+
const useVariant = (id) => {
|
|
49
|
+
const variants = useVariants();
|
|
50
|
+
return react.useMemo(() => variants?.find((v) => v?.id === id), [id, variants]);
|
|
51
|
+
};
|
|
52
|
+
const useCurrentVariant = () => {
|
|
53
|
+
const { selectedOptions } = useSelectedOption();
|
|
54
|
+
const variants = useVariants();
|
|
55
|
+
return react.useMemo(() => product.getSelectedVariant(variants, selectedOptions), [selectedOptions, variants]);
|
|
56
|
+
};
|
|
57
|
+
function checkInStock(variant) {
|
|
58
|
+
if (!variant)
|
|
59
|
+
return false;
|
|
60
|
+
return ((variant?.inventoryQuantity && variant.inventoryQuantity > 0) ||
|
|
61
|
+
!variant?.manageInventory ||
|
|
62
|
+
variant.inventoryPolicy === 'continue');
|
|
63
|
+
}
|
|
64
|
+
const useCurrentVariantInStock = () => {
|
|
65
|
+
const currentVariant = useCurrentVariant();
|
|
66
|
+
const isInStock = checkInStock(currentVariant);
|
|
67
|
+
return isInStock;
|
|
68
|
+
};
|
|
69
|
+
const useVariantOutStock = (optionId, optionValue) => {
|
|
70
|
+
const { selectedOptions } = useSelectedOption();
|
|
71
|
+
const variants = useVariants();
|
|
72
|
+
const matchedVariant = product.getSelectedVariant(variants, {
|
|
73
|
+
...selectedOptions,
|
|
74
|
+
[optionId]: optionValue,
|
|
75
|
+
});
|
|
76
|
+
const isInStock = checkInStock(matchedVariant);
|
|
77
|
+
return !isInStock;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.useCurrentVariant = useCurrentVariant;
|
|
81
|
+
exports.useCurrentVariantInStock = useCurrentVariantInStock;
|
|
82
|
+
exports.useFeaturedImageGlobal = useFeaturedImageGlobal;
|
|
83
|
+
exports.useProduct = useProduct;
|
|
84
|
+
exports.useProductProperties = useProductProperties;
|
|
85
|
+
exports.useQuantity = useQuantity;
|
|
86
|
+
exports.useSelectedOption = useSelectedOption;
|
|
87
|
+
exports.useUniqProductID = useUniqProductID;
|
|
88
|
+
exports.useVariant = useVariant;
|
|
89
|
+
exports.useVariantOutStock = useVariantOutStock;
|
|
90
|
+
exports.useVariants = useVariants;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ProductListContext = require('../contexts/ProductListContext.js');
|
|
4
|
+
|
|
5
|
+
const useProductList = () => {
|
|
6
|
+
return ProductListContext.useProductListStore((s) => s.collection);
|
|
7
|
+
};
|
|
8
|
+
const useProductListProducts = () => {
|
|
9
|
+
return ProductListContext.useProductListStore((s) => s.products);
|
|
10
|
+
};
|
|
11
|
+
const useProductListSettings = () => {
|
|
12
|
+
return ProductListContext.useProductListStore((s) => s.settings);
|
|
13
|
+
};
|
|
14
|
+
const useProductListStyles = () => {
|
|
15
|
+
return ProductListContext.useProductListStore((s) => s.styles);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.useProductList = useProductList;
|
|
19
|
+
exports.useProductListProducts = useProductListProducts;
|
|
20
|
+
exports.useProductListSettings = useProductListSettings;
|
|
21
|
+
exports.useProductListStyles = useProductListStyles;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const cache = new Map();
|
|
6
|
+
const useSuspenseFetch = (key, promise) => {
|
|
7
|
+
const value = cache.get(key) || { status: 'new', data: null };
|
|
8
|
+
if (value.status === 'resolved') {
|
|
9
|
+
return { data: value.data };
|
|
10
|
+
}
|
|
11
|
+
promise()
|
|
12
|
+
.then((data) => {
|
|
13
|
+
value.status = 'resolved';
|
|
14
|
+
value.data = data;
|
|
15
|
+
cache.set(key, value);
|
|
16
|
+
})
|
|
17
|
+
.catch(() => {
|
|
18
|
+
value.status = 'error';
|
|
19
|
+
value.data = null;
|
|
20
|
+
});
|
|
21
|
+
throw promise();
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
exports.default = useSuspenseFetch;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var shop = require('./shop.js');
|
|
6
|
+
|
|
7
|
+
const initialSwatchOptionValue = {
|
|
8
|
+
label: '',
|
|
9
|
+
colors: [],
|
|
10
|
+
imageUrl: '',
|
|
11
|
+
};
|
|
12
|
+
const initialGlobalSwatchesData = {
|
|
13
|
+
optionTitle: '',
|
|
14
|
+
optionType: '',
|
|
15
|
+
optionValues: [],
|
|
16
|
+
};
|
|
17
|
+
const useSwatchesOptions = (options) => {
|
|
18
|
+
const { swatches } = shop.useSwatches();
|
|
19
|
+
if (!options)
|
|
20
|
+
return [];
|
|
21
|
+
return options?.map((option) => {
|
|
22
|
+
const swatchOption = swatches?.find((sw) => sw?.optionTitle === option?.name) || { ...initialGlobalSwatchesData };
|
|
23
|
+
return {
|
|
24
|
+
...option,
|
|
25
|
+
optionType: swatchOption ? swatchOption.optionType : '',
|
|
26
|
+
values: option.values?.map((val) => {
|
|
27
|
+
const swatchValue = (swatchOption &&
|
|
28
|
+
swatchOption?.optionValues?.find((swatOp) => swatOp?.label === val?.label)) || { ...initialSwatchOptionValue };
|
|
29
|
+
return {
|
|
30
|
+
...val,
|
|
31
|
+
colors: swatchValue?.colors || [],
|
|
32
|
+
imageUrl: swatchValue?.imageUrl || '',
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
exports.default = useSwatchesOptions;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var AddOn = require('./components/AddOn.js');
|
|
4
|
+
var Render = require('./components/Render.js');
|
|
5
|
+
var RenderPreview = require('./components/RenderPreview.js');
|
|
6
|
+
var AddonContext = require('./contexts/AddonContext.js');
|
|
7
|
+
var BuilderComponent = require('./contexts/BuilderComponent.js');
|
|
8
|
+
var BuilderContext = require('./contexts/BuilderContext.js');
|
|
9
|
+
var BuilderPreviewContext = require('./contexts/BuilderPreviewContext.js');
|
|
10
|
+
var CartLineContext = require('./contexts/CartLineContext.js');
|
|
11
|
+
var ProductListContext = require('./contexts/ProductListContext.js');
|
|
12
|
+
var ProductContext = require('./contexts/ProductContext.js');
|
|
13
|
+
var SectionContext = require('./contexts/SectionContext.js');
|
|
14
|
+
var ShopContext = require('./contexts/ShopContext.js');
|
|
15
|
+
var CollectionContext = require('./contexts/CollectionContext.js');
|
|
16
|
+
var collectionDetailFilter_generated = require('./graphql/queries/collection-detail-filter.generated.js');
|
|
17
|
+
var collection_generated = require('./graphql/queries/collection.generated.js');
|
|
18
|
+
var publishedThemePages_generated = require('./graphql/queries/published-theme-pages.generated.js');
|
|
19
|
+
var products_generated = require('./graphql/queries/products.generated.js');
|
|
20
|
+
var storeProperty_generated = require('./graphql/queries/storeProperty.generated.js');
|
|
21
|
+
var previewPage_generated = require('./graphql/queries/preview-page.generated.js');
|
|
22
|
+
var borders = require('./helpers/borders.js');
|
|
23
|
+
var cls = require('./helpers/cls.js');
|
|
24
|
+
var flattenConnection = require('./helpers/flatten-connection.js');
|
|
25
|
+
var getResonsiveValue = require('./helpers/get-resonsive-value.js');
|
|
26
|
+
var getShortname = require('./helpers/get-shortname.js');
|
|
27
|
+
var GlobalEvent = require('./helpers/GlobalEvent.js');
|
|
28
|
+
var isBrowser = require('./helpers/is-browser.js');
|
|
29
|
+
var isEmptyChildren = require('./helpers/is-empty-children.js');
|
|
30
|
+
var makeStyle = require('./helpers/make-style.js');
|
|
31
|
+
var normalizeBuilderData = require('./helpers/normalize-builder-data.js');
|
|
32
|
+
var prefetchQueries = require('./helpers/prefetch-queries.js');
|
|
33
|
+
var shadow = require('./helpers/shadow.js');
|
|
34
|
+
var size = require('./helpers/size.js');
|
|
35
|
+
var spacing = require('./helpers/spacing.js');
|
|
36
|
+
var loadScript = require('./helpers/load-script.js');
|
|
37
|
+
var email = require('./helpers/email.js');
|
|
38
|
+
var layout = require('./helpers/layout.js');
|
|
39
|
+
var background = require('./helpers/background.js');
|
|
40
|
+
var cssVariable = require('./helpers/css-variable.js');
|
|
41
|
+
var isDefined = require('./helpers/is-defined.js');
|
|
42
|
+
var colors = require('./helpers/colors.js');
|
|
43
|
+
var typography = require('./helpers/typography.js');
|
|
44
|
+
var radius = require('./helpers/radius.js');
|
|
45
|
+
var product = require('./helpers/product.js');
|
|
46
|
+
var fpixel = require('./helpers/fpixel.js');
|
|
47
|
+
var gtag = require('./helpers/gtag.js');
|
|
48
|
+
var tiktokpixel = require('./helpers/tiktokpixel.js');
|
|
49
|
+
var useAddToCart = require('./hooks/cart/use-add-to-cart.js');
|
|
50
|
+
var useCartData = require('./hooks/cart/use-cart-data.js');
|
|
51
|
+
var useCartDiscountCodesUpdate = require('./hooks/cart/use-cart-discount-codes-update.js');
|
|
52
|
+
var useCartNoteUpdate = require('./hooks/cart/use-cart-note-update.js');
|
|
53
|
+
var useCreateCart = require('./hooks/cart/use-create-cart.js');
|
|
54
|
+
var useRemoveCartItem = require('./hooks/cart/use-remove-cart-item.js');
|
|
55
|
+
var useUpdateCartItem = require('./hooks/cart/use-update-cart-item.js');
|
|
56
|
+
var shop = require('./hooks/shop.js');
|
|
57
|
+
var useCollectionQuery = require('./hooks/shop/use-collection-query.js');
|
|
58
|
+
var useProductQuery = require('./hooks/shop/use-product-query.js');
|
|
59
|
+
var useProductsQuery = require('./hooks/shop/use-products-query.js');
|
|
60
|
+
var useCurrentDevice = require('./hooks/use-current-device.js');
|
|
61
|
+
var useLazyVideo = require('./hooks/use-lazy-video.js');
|
|
62
|
+
var useCartId = require('./hooks/useCartId.js');
|
|
63
|
+
var useCartLine = require('./hooks/useCartLine.js');
|
|
64
|
+
var useCartUI = require('./hooks/useCartUI.js');
|
|
65
|
+
var useCollection = require('./hooks/useCollection.js');
|
|
66
|
+
var useFormatMoney = require('./hooks/useFormatMoney.js');
|
|
67
|
+
var react = require('react');
|
|
68
|
+
var useIsomorphicLayoutEffect = require('./hooks/useIsomorphicLayoutEffect.js');
|
|
69
|
+
var useLoadScript = require('./hooks/useLoadScript.js');
|
|
70
|
+
var useMoney = require('./hooks/useMoney.js');
|
|
71
|
+
var usePrevious = require('./hooks/usePrevious.js');
|
|
72
|
+
var useProduct = require('./hooks/useProduct.js');
|
|
73
|
+
var useProductList = require('./hooks/useProductList.js');
|
|
74
|
+
var useSuspenseFetch = require('./hooks/useSuspenseFetch.js');
|
|
75
|
+
var useSwatchesOptions = require('./hooks/useSwatchesOptions.js');
|
|
76
|
+
var shop$1 = require('./types/shop.js');
|
|
77
|
+
var globalStyle = require('./types/global-style.js');
|
|
78
|
+
var getCollection = require('./helpers/queries/get-collection.js');
|
|
79
|
+
var getProduct = require('./helpers/queries/get-product.js');
|
|
80
|
+
var getProductBySlug = require('./helpers/queries/get-product-by-slug.js');
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
exports.AddOn = AddOn.default;
|
|
85
|
+
exports.Render = Render.default;
|
|
86
|
+
exports.RenderPreview = RenderPreview.default;
|
|
87
|
+
exports.AddonProvider = AddonContext.AddonProvider;
|
|
88
|
+
exports.useAddon = AddonContext.useAddon;
|
|
89
|
+
exports.useAddons = AddonContext.useAddons;
|
|
90
|
+
exports.BuilderComponentProvider = BuilderComponent.BuilderComponentProvider;
|
|
91
|
+
exports.useBuilderComponent = BuilderComponent.useBuilderComponent;
|
|
92
|
+
exports.BuilderProvider = BuilderContext.BuilderProvider;
|
|
93
|
+
exports.useBuilderStore = BuilderContext.useBuilderStore;
|
|
94
|
+
exports.BuilderPreviewProvider = BuilderPreviewContext.BuilderPreviewProvider;
|
|
95
|
+
exports.useBuilderPreviewStore = BuilderPreviewContext.useBuilderPreviewStore;
|
|
96
|
+
exports.CartLineProvider = CartLineContext.CartLineProvider;
|
|
97
|
+
exports.useCartLineStore = CartLineContext.useCartLineStore;
|
|
98
|
+
exports.ProductListProvider = ProductListContext.ProductListProvider;
|
|
99
|
+
exports.useProductListStore = ProductListContext.useProductListStore;
|
|
100
|
+
exports.ProductProvider = ProductContext.ProductProvider;
|
|
101
|
+
exports.useProductStore = ProductContext.useProductStore;
|
|
102
|
+
exports.SectionProvider = SectionContext.SectionProvider;
|
|
103
|
+
exports.useSection = SectionContext.useSection;
|
|
104
|
+
exports.useSectionStore = SectionContext.useSectionStore;
|
|
105
|
+
exports.ShopProvider = ShopContext.ShopProvider;
|
|
106
|
+
exports.useShopStore = ShopContext.useShopStore;
|
|
107
|
+
exports.CollectionProvider = CollectionContext.CollectionProvider;
|
|
108
|
+
exports.useCollectionStore = CollectionContext.useCollectionStore;
|
|
109
|
+
exports.CollectionDetailFilterDocument = collectionDetailFilter_generated.CollectionDetailFilterDocument;
|
|
110
|
+
exports.CollectionDocument = collection_generated.CollectionDocument;
|
|
111
|
+
exports.PublishedThemePagesDocument = publishedThemePages_generated.PublishedThemePagesDocument;
|
|
112
|
+
exports.ProductsDocument = products_generated.ProductsDocument;
|
|
113
|
+
exports.StorePropertyDocument = storeProperty_generated.StorePropertyDocument;
|
|
114
|
+
exports.PreviewPageDocument = previewPage_generated.PreviewPageDocument;
|
|
115
|
+
exports.handleConvertBorderColor = borders.handleConvertBorderColor;
|
|
116
|
+
exports.handleConvertBorderStyle = borders.handleConvertBorderStyle;
|
|
117
|
+
exports.handleConvertBorderWidth = borders.handleConvertBorderWidth;
|
|
118
|
+
exports.handleConvertClassColor = borders.handleConvertClassColor;
|
|
119
|
+
exports.cls = cls.cls;
|
|
120
|
+
exports.flattenConnection = flattenConnection.flattenConnection;
|
|
121
|
+
exports.getResponsiveStateValue = getResonsiveValue.getResponsiveStateValue;
|
|
122
|
+
exports.getResponsiveValue = getResonsiveValue.getResponsiveValue;
|
|
123
|
+
exports.getResponsiveValueByScreen = getResonsiveValue.getResponsiveValueByScreen;
|
|
124
|
+
exports.getShortName = getShortname.getShortName;
|
|
125
|
+
exports.globalEvent = GlobalEvent.default;
|
|
126
|
+
exports.isBrowser = isBrowser.default;
|
|
127
|
+
exports.isEmptyChildren = isEmptyChildren.isEmptyChildren;
|
|
128
|
+
exports.makeAspectRatio = makeStyle.makeAspectRatio;
|
|
129
|
+
exports.makeHeight = makeStyle.makeHeight;
|
|
130
|
+
exports.makeStyle = makeStyle.makeStyle;
|
|
131
|
+
exports.makeStyleResponsive = makeStyle.makeStyleResponsive;
|
|
132
|
+
exports.makeStyleResponsiveState = makeStyle.makeStyleResponsiveState;
|
|
133
|
+
exports.makeStyleState = makeStyle.makeStyleState;
|
|
134
|
+
exports.makeWidth = makeStyle.makeWidth;
|
|
135
|
+
exports.normalizeBuilderData = normalizeBuilderData.normalizeBuilderData;
|
|
136
|
+
exports.prefetchQueries = prefetchQueries.prefetchQueries;
|
|
137
|
+
exports.getStyleShadow = shadow.getStyleShadow;
|
|
138
|
+
exports.getStyleShadowState = shadow.getStyleShadowState;
|
|
139
|
+
exports.composeSize = size.composeSize;
|
|
140
|
+
exports.composeSpacing = spacing.composeSpacing;
|
|
141
|
+
exports.getSpacingVariable = spacing.getSpacingVariable;
|
|
142
|
+
exports.loadScript = loadScript.loadScript;
|
|
143
|
+
exports.validateEmail = email.validateEmail;
|
|
144
|
+
exports.optionLayoutStyle = layout.optionLayoutStyle;
|
|
145
|
+
exports.getStyleBackgroundByDevice = background.getStyleBackgroundByDevice;
|
|
146
|
+
exports.genVariable = cssVariable.genVariable;
|
|
147
|
+
exports.isDefined = isDefined.isDefined;
|
|
148
|
+
exports.getGlobalColorCSSProp = colors.getGlobalColorCSSProp;
|
|
149
|
+
exports.getGlobalColorClass = colors.getGlobalColorClass;
|
|
150
|
+
exports.getGlobalColorResponsiveClass = colors.getGlobalColorResponsiveClass;
|
|
151
|
+
exports.getGlobalColorResponsiveStyle = colors.getGlobalColorResponsiveStyle;
|
|
152
|
+
exports.getGlobalColorStateClass = colors.getGlobalColorStateClass;
|
|
153
|
+
exports.getGlobalColorStateResponsiveClass = colors.getGlobalColorStateResponsiveClass;
|
|
154
|
+
exports.getGlobalColorStateResponsiveStyle = colors.getGlobalColorStateResponsiveStyle;
|
|
155
|
+
exports.getGlobalColorStateStyle = colors.getGlobalColorStateStyle;
|
|
156
|
+
exports.getGlobalColorStyle = colors.getGlobalColorStyle;
|
|
157
|
+
exports.getSingleColorVariable = colors.getSingleColorVariable;
|
|
158
|
+
exports.isColor = colors.isColor;
|
|
159
|
+
exports.genTypoClass = typography.genTypoClass;
|
|
160
|
+
exports.composeRadius = radius.composeRadius;
|
|
161
|
+
exports.getCustomRadius = radius.getCustomRadius;
|
|
162
|
+
exports.getRadiusCSSFromGlobal = radius.getRadiusCSSFromGlobal;
|
|
163
|
+
exports.getRadiusStyleActiveState = radius.getRadiusStyleActiveState;
|
|
164
|
+
exports.getSelectedVariant = product.getSelectedVariant;
|
|
165
|
+
exports.parseSelectedOption = product.parseSelectedOption;
|
|
166
|
+
exports.fpixel = fpixel;
|
|
167
|
+
exports.gtag = gtag;
|
|
168
|
+
exports.tiktokpixel = tiktokpixel;
|
|
169
|
+
exports.useAddToCart = useAddToCart.useAddToCart;
|
|
170
|
+
exports.useCartData = useCartData.useCartData;
|
|
171
|
+
exports.useCartDiscountCodesUpdate = useCartDiscountCodesUpdate.useCartDiscountCodesUpdate;
|
|
172
|
+
exports.useCartNoteUpdate = useCartNoteUpdate.useCartNoteUpdate;
|
|
173
|
+
exports.useCreateCart = useCreateCart.useCreateCart;
|
|
174
|
+
exports.useRemoveCartItem = useRemoveCartItem.useRemoveCartItem;
|
|
175
|
+
exports.useUpdateCartItem = useUpdateCartItem.useUpdateCartItem;
|
|
176
|
+
exports.useConnectedShopify = shop.useConnectedShopify;
|
|
177
|
+
exports.useCurrency = shop.useCurrency;
|
|
178
|
+
exports.useEditorMode = shop.useEditorMode;
|
|
179
|
+
exports.useIsSampleProduct = shop.useIsSampleProduct;
|
|
180
|
+
exports.useLocale = shop.useLocale;
|
|
181
|
+
exports.useMatchMutate = shop.useMatchMutate;
|
|
182
|
+
exports.useMobileOnly = shop.useMobileOnly;
|
|
183
|
+
exports.usePageType = shop.usePageType;
|
|
184
|
+
exports.usePluginEnable = shop.usePluginEnable;
|
|
185
|
+
exports.useStoreFront = shop.useStoreFront;
|
|
186
|
+
exports.useCollectionQuery = useCollectionQuery.useCollectionQuery;
|
|
187
|
+
exports.useProductQuery = useProductQuery.useProductQuery;
|
|
188
|
+
exports.useProductsQuery = useProductsQuery.useProductsQuery;
|
|
189
|
+
exports.useCurrentDevice = useCurrentDevice.useCurrentDevice;
|
|
190
|
+
exports.useLazyVideo = useLazyVideo.useLazyVideo;
|
|
191
|
+
exports.useCartId = useCartId.default;
|
|
192
|
+
exports.useCartLine = useCartLine.default;
|
|
193
|
+
exports.useCartUI = useCartUI.default;
|
|
194
|
+
exports.useCollection = useCollection.useCollection;
|
|
195
|
+
exports.useFormatMoney = useFormatMoney.default;
|
|
196
|
+
Object.defineProperty(exports, 'useId', {
|
|
197
|
+
enumerable: true,
|
|
198
|
+
get: function () { return react.useId; }
|
|
199
|
+
});
|
|
200
|
+
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect.default;
|
|
201
|
+
exports.useLoadScript = useLoadScript.default;
|
|
202
|
+
exports.useMoney = useMoney.default;
|
|
203
|
+
exports.usePrevious = usePrevious.usePrevious;
|
|
204
|
+
exports.useCurrentVariant = useProduct.useCurrentVariant;
|
|
205
|
+
exports.useCurrentVariantInStock = useProduct.useCurrentVariantInStock;
|
|
206
|
+
exports.useFeaturedImageGlobal = useProduct.useFeaturedImageGlobal;
|
|
207
|
+
exports.useProduct = useProduct.useProduct;
|
|
208
|
+
exports.useProductProperties = useProduct.useProductProperties;
|
|
209
|
+
exports.useQuantity = useProduct.useQuantity;
|
|
210
|
+
exports.useSelectedOption = useProduct.useSelectedOption;
|
|
211
|
+
exports.useUniqProductID = useProduct.useUniqProductID;
|
|
212
|
+
exports.useVariant = useProduct.useVariant;
|
|
213
|
+
exports.useVariantOutStock = useProduct.useVariantOutStock;
|
|
214
|
+
exports.useVariants = useProduct.useVariants;
|
|
215
|
+
exports.useProductList = useProductList.useProductList;
|
|
216
|
+
exports.useProductListProducts = useProductList.useProductListProducts;
|
|
217
|
+
exports.useProductListSettings = useProductList.useProductListSettings;
|
|
218
|
+
exports.useProductListStyles = useProductList.useProductListStyles;
|
|
219
|
+
exports.useSuspenseFetch = useSuspenseFetch.default;
|
|
220
|
+
exports.useSwatchesOptions = useSwatchesOptions.default;
|
|
221
|
+
exports.ShopType = shop$1;
|
|
222
|
+
exports.OptionNormalStyle = globalStyle.OptionNormalStyle;
|
|
223
|
+
exports.OptionSpecialStyle = globalStyle.OptionSpecialStyle;
|
|
224
|
+
exports.calculateFirstProduct = getCollection.calculateFirstProduct;
|
|
225
|
+
exports.getCollection = getCollection.getCollection;
|
|
226
|
+
exports.fetchMedias = getProduct.fetchMedias;
|
|
227
|
+
exports.fetchVariants = getProduct.fetchVariants;
|
|
228
|
+
exports.getProduct = getProduct.getProduct;
|
|
229
|
+
exports.getProductBySlug = getProductBySlug.getProductBySlug;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useAddon } from '../contexts/AddonContext.js';
|
|
3
|
+
import { usePluginEnable } from '../hooks/shop.js';
|
|
4
|
+
|
|
5
|
+
const AddOn = ({ name }) => {
|
|
6
|
+
const Comp = useAddon(name);
|
|
7
|
+
const plugins = usePluginEnable();
|
|
8
|
+
if (!plugins?.includes(name)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return jsx(Comp, {});
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { AddOn as default };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { isValidElement } from 'react';
|
|
3
|
+
import { composeAdvanceStyle } from '../helpers/compose-advance-style.js';
|
|
4
|
+
|
|
5
|
+
const disableWrap = [
|
|
6
|
+
'Col',
|
|
7
|
+
'Row',
|
|
8
|
+
'Section',
|
|
9
|
+
'Image',
|
|
10
|
+
'Text',
|
|
11
|
+
'Button',
|
|
12
|
+
'ProductButton',
|
|
13
|
+
'Cart',
|
|
14
|
+
'Tabs',
|
|
15
|
+
'TabItem',
|
|
16
|
+
'Carousel',
|
|
17
|
+
'CarouselItem',
|
|
18
|
+
'ShopPayButton',
|
|
19
|
+
'AccordionItem',
|
|
20
|
+
'Video',
|
|
21
|
+
'Header',
|
|
22
|
+
'HeroBanner',
|
|
23
|
+
'Icon',
|
|
24
|
+
'IconList',
|
|
25
|
+
'HTMLCode',
|
|
26
|
+
'IconListHoz',
|
|
27
|
+
'IconListItem',
|
|
28
|
+
'CSSCode',
|
|
29
|
+
];
|
|
30
|
+
const ComponentWrapper = ({ children, ...props }) => {
|
|
31
|
+
if (props.type === 'section')
|
|
32
|
+
return null;
|
|
33
|
+
const style = composeAdvanceStyle(props.advanced, props.tag);
|
|
34
|
+
if (disableWrap.includes(props.tag) && isValidElement(children)) {
|
|
35
|
+
return jsx(children.type, { ...children.props, ...{ style } });
|
|
36
|
+
}
|
|
37
|
+
return (jsx("div", { style: style, className: `${props.uid}`, children: children }));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { ComponentWrapper as default, disableWrap };
|
|
@@ -0,0 +1,54 @@
|
|
|
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 './ComponentWrapper.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.toolbar?.hide) {
|
|
33
|
+
customProps['data-toolbar-hide'] = true;
|
|
34
|
+
}
|
|
35
|
+
if (editorConfigs.slots?.children) {
|
|
36
|
+
customProps['data-slots-children'] = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const style = composeAdvanceStyle(props.advanced, props.tag);
|
|
40
|
+
const builderAttrs = {
|
|
41
|
+
...customProps,
|
|
42
|
+
'data-uid': props.uid,
|
|
43
|
+
'data-component-type': 'component',
|
|
44
|
+
'data-component-tag': props.tag,
|
|
45
|
+
'data-component-label': props.label,
|
|
46
|
+
};
|
|
47
|
+
if (disableWrap.includes(props.tag) && isValidElement(children)) {
|
|
48
|
+
return jsx(children.type, { ...children.props, ...{ style, builderAttrs } });
|
|
49
|
+
}
|
|
50
|
+
// Render
|
|
51
|
+
return (jsx("div", { style: style, className: `${props.uid}`, ...builderAttrs, children: children }));
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { ComponentWrapperPreview as default };
|
|
@@ -0,0 +1,24 @@
|
|
|
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)
|
|
13
|
+
return null;
|
|
14
|
+
if (item?.type === 'section') {
|
|
15
|
+
return jsx(RenderSectionMemo, { sectionId: item.uid });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return (jsx(ErrorBoundary, { fallbackRender: ({ error, resetErrorBoundary }) => (jsxs(Fragment, { children: [jsx("span", { "aria-label": "Error message", children: error.message }), jsx("button", { type: "button", onClick: resetErrorBoundary, children: "Try again" })] })), children: jsx(ComponentWrapper, { ...item, children: item?.childrens?.length ? (jsx(Component, { builderProps: { uid, builderData: item }, styles: item.styles, setting: item.settings, ...passProps, children: item.childrens.map((id) => (jsx(RenderMemo, { uid: id }, id))) })) : (jsx(Component, { builderProps: { uid, builderData: item }, styles: item.styles, setting: item.settings, ...passProps })) }) }, item.uid));
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const RenderMemo = memo(Render);
|
|
22
|
+
RenderMemo.displayName = 'RenderMemo';
|
|
23
|
+
|
|
24
|
+
export { RenderMemo as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
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')
|
|
12
|
+
return null;
|
|
13
|
+
return (jsx(ErrorBoundary, { fallbackRender: ({ error, resetErrorBoundary }) => (jsxs(ComponentWrapper, { ...item, children: [jsx("span", { "aria-label": "Error message", children: error.message }), jsx("button", { type: "button", onClick: resetErrorBoundary, children: "Try again" })] })), children: jsx(ComponentWrapper, { ...item, children: item?.childrens?.length ? (jsx(Component, { builderProps: { uid }, styles: item.styles ?? {}, setting: item.settings ?? {}, children: item?.childrens?.map((id) => (jsx(RenderBlockMemo, { uid: id }, id))) })) : (jsx(Component, { builderProps: { uid }, styles: item.styles ?? {}, setting: item.settings ?? {} })) }) }, item.uid));
|
|
14
|
+
};
|
|
15
|
+
const RenderBlockMemo = memo(RenderBlock);
|
|
16
|
+
|
|
17
|
+
export { RenderBlockMemo as default };
|
|
@@ -0,0 +1,24 @@
|
|
|
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)
|
|
13
|
+
return null;
|
|
14
|
+
if (item?.type === 'section') {
|
|
15
|
+
return jsx(RenderSectionMemo, { sectionId: item.uid });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return (jsx(ErrorBoundary, { fallbackRender: ({ error, resetErrorBoundary }) => (jsxs(ComponentWrapperPreview, { ...item, children: [jsx("span", { "aria-label": "Error message", children: error.message }), jsx("button", { type: "button", onClick: resetErrorBoundary, children: "Try again" })] })), children: jsx(ComponentWrapperPreview, { ...item, children: item?.childrens?.length ? (jsx(Component, { builderProps: { uid, builderData: item }, styles: item.styles, setting: item.settings, ...passProps, children: item.childrens.map((id) => (jsx(RenderPreviewMemo, { uid: id }, id))) })) : (jsx(Component, { builderProps: { uid, builderData: item }, styles: item.styles, setting: item.settings, ...passProps })) }) }, item.uid));
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const RenderPreviewMemo = memo(RenderPreview);
|
|
22
|
+
RenderPreviewMemo.displayName = 'RenderPreviewMemo';
|
|
23
|
+
|
|
24
|
+
export { RenderPreviewMemo as default };
|
|
@@ -0,0 +1,15 @@
|
|
|
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)
|
|
10
|
+
return null;
|
|
11
|
+
return (jsx(BuilderProvider, { state: state, children: jsx(RenderBlockMemo, { uid: sectionId }) }, sectionId));
|
|
12
|
+
};
|
|
13
|
+
const RenderSectionMemo = memo(RenderSection);
|
|
14
|
+
|
|
15
|
+
export { RenderSectionMemo as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import Empty from '../components/Empty.js';
|
|
4
|
+
|
|
5
|
+
const AddonContext = createContext(null);
|
|
6
|
+
const AddonProvider = ({ children, components, ...passProps }) => {
|
|
7
|
+
return (jsx(AddonContext.Provider, { ...passProps, value: { components }, children: children }));
|
|
8
|
+
};
|
|
9
|
+
const useAddons = () => {
|
|
10
|
+
const context = useContext(AddonContext);
|
|
11
|
+
if (!context) {
|
|
12
|
+
throw new Error('useAddons must be used within an AddonProvider');
|
|
13
|
+
}
|
|
14
|
+
return useMemo(() => context.components, [context.components]);
|
|
15
|
+
};
|
|
16
|
+
const useAddon = (id) => {
|
|
17
|
+
const addons = useAddons();
|
|
18
|
+
return useMemo(() => (id ? addons[id] ?? Empty : Empty), [id, addons]);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { AddonProvider, useAddon, useAddons };
|