@gem-sdk/core 1.45.2 → 1.46.0-staging.10
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/ComponentToolbarPreview.js +4 -3
- package/dist/cjs/components/constant.js +4 -1
- package/dist/cjs/components/theme-section/ThemeSectionStatus.js +14 -5
- package/dist/cjs/contexts/BuilderPreviewContext.js +5 -1
- package/dist/cjs/contexts/ModalContext.js +2 -2
- package/dist/cjs/contexts/SectionContext.js +1 -0
- package/dist/cjs/helpers/colors.js +1 -1
- package/dist/cjs/helpers/loop-component.js +16 -0
- package/dist/cjs/helpers/pascal-to-kebab-case.js +7 -0
- package/dist/cjs/helpers/remove-matching-key.js +12 -0
- package/dist/cjs/helpers/size.js +4 -0
- package/dist/cjs/helpers/third-party/addAppBlockId.js +20 -0
- package/dist/cjs/helpers/third-party/appConfig.js +45 -0
- package/dist/cjs/helpers/third-party/appSetting.js +77 -0
- package/dist/cjs/helpers/third-party/composeAppBlockId.js +11 -0
- package/dist/cjs/helpers/third-party/constant.js +16 -0
- package/dist/cjs/helpers/third-party/generateAppBlockConfigs.js +21 -0
- package/dist/cjs/helpers/third-party/getAppBlockConfig.js +23 -0
- package/dist/cjs/helpers/third-party/getAppBlockType.js +12 -0
- package/dist/cjs/helpers/third-party/getAppBlocks.js +41 -0
- package/dist/cjs/hooks/articles/useArticlesQuery.js +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/esm/components/ComponentToolbarPreview.js +5 -4
- package/dist/esm/components/constant.js +4 -1
- package/dist/esm/components/theme-section/ThemeSectionStatus.js +14 -5
- package/dist/esm/contexts/BuilderPreviewContext.js +5 -1
- package/dist/esm/contexts/ModalContext.js +2 -2
- package/dist/esm/contexts/SectionContext.js +1 -0
- package/dist/esm/helpers/colors.js +1 -1
- package/dist/esm/helpers/loop-component.js +14 -0
- package/dist/esm/helpers/pascal-to-kebab-case.js +5 -0
- package/dist/esm/helpers/remove-matching-key.js +10 -0
- package/dist/esm/helpers/size.js +4 -1
- package/dist/esm/helpers/third-party/addAppBlockId.js +18 -0
- package/dist/esm/helpers/third-party/appConfig.js +38 -0
- package/dist/esm/helpers/third-party/appSetting.js +75 -0
- package/dist/esm/helpers/third-party/composeAppBlockId.js +9 -0
- package/dist/esm/helpers/third-party/constant.js +13 -0
- package/dist/esm/helpers/third-party/generateAppBlockConfigs.js +19 -0
- package/dist/esm/helpers/third-party/getAppBlockConfig.js +21 -0
- package/dist/esm/helpers/third-party/getAppBlockType.js +10 -0
- package/dist/esm/helpers/third-party/getAppBlocks.js +39 -0
- package/dist/esm/hooks/articles/useArticlesQuery.js +1 -0
- package/dist/esm/index.js +3 -1
- package/dist/types/index.d.ts +28 -2
- package/package.json +2 -2
|
@@ -59,7 +59,8 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
59
59
|
const editProductElementList = [
|
|
60
60
|
'Product Title',
|
|
61
61
|
'Product Description',
|
|
62
|
-
'Product Price'
|
|
62
|
+
'Product Price',
|
|
63
|
+
'Product Vendor'
|
|
63
64
|
];
|
|
64
65
|
const isOverToolbarPosition = (el, parent)=>{
|
|
65
66
|
const parentLength = parents.length;
|
|
@@ -567,7 +568,7 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
567
568
|
})
|
|
568
569
|
]
|
|
569
570
|
}, props.uid),
|
|
570
|
-
isEnableCreateThemeSection() && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsxRuntime.jsx(ThemeSectionStatus.
|
|
571
|
+
isEnableCreateThemeSection() && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsxRuntime.jsx(ThemeSectionStatus.ThemeSectionStatusWrapper, {
|
|
571
572
|
...props
|
|
572
573
|
}),
|
|
573
574
|
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
@@ -630,6 +631,6 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
630
631
|
]
|
|
631
632
|
});
|
|
632
633
|
};
|
|
633
|
-
var ComponentToolbarPreview$1 = /*#__PURE__*/ react.memo(ComponentToolbarPreview);
|
|
634
|
+
var ComponentToolbarPreview$1 = /*#__PURE__*/ react.memo(ComponentToolbarPreview); /* gem-lint/disallow-import-from-package-path */
|
|
634
635
|
|
|
635
636
|
exports.default = ComponentToolbarPreview$1;
|
|
@@ -2,8 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const getStatusMessage = (status)=>{
|
|
6
|
+
switch(status){
|
|
7
|
+
case 'DRAFT':
|
|
8
|
+
return 'This Theme Section is Draft. Publish page will also publish Theme Section.';
|
|
9
|
+
case 'NEED_PUBLISHING':
|
|
10
|
+
return 'Need to republish. Go to global edit and publish this section';
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const ThemeSectionStatusWrapper = ({ tag, status, isThemeSection })=>{
|
|
14
|
+
const isRenderThemeSectionStatus = tag === 'Section' && isThemeSection && (status === 'DRAFT' || status === 'NEED_PUBLISHING');
|
|
15
|
+
const statusMessage = getStatusMessage(status);
|
|
7
16
|
return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
8
17
|
children: isRenderThemeSectionStatus && /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
9
18
|
"data-theme-section-status": true,
|
|
@@ -24,13 +33,13 @@ const ThemeSectionStatus = ({ ...props })=>{
|
|
|
24
33
|
})
|
|
25
34
|
})
|
|
26
35
|
}),
|
|
27
|
-
/*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
36
|
+
statusMessage && /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
28
37
|
"data-theme-section-status-text": true,
|
|
29
|
-
children:
|
|
38
|
+
children: statusMessage
|
|
30
39
|
})
|
|
31
40
|
]
|
|
32
41
|
})
|
|
33
42
|
});
|
|
34
43
|
};
|
|
35
44
|
|
|
36
|
-
exports.
|
|
45
|
+
exports.ThemeSectionStatusWrapper = ThemeSectionStatusWrapper;
|
|
@@ -254,7 +254,11 @@ const createBuilderPreviewProvider = (args, pageName, isThemeSectionEditor)=>zus
|
|
|
254
254
|
}
|
|
255
255
|
},
|
|
256
256
|
getItem: (id)=>{
|
|
257
|
-
|
|
257
|
+
const item = get().state[id];
|
|
258
|
+
return {
|
|
259
|
+
...item,
|
|
260
|
+
rawChildrens: item?.childrens?.map((v)=>get().state[v])
|
|
261
|
+
};
|
|
258
262
|
},
|
|
259
263
|
removeItem: (id)=>{
|
|
260
264
|
if (id === 'ROOT') {
|
|
@@ -7,8 +7,8 @@ var zustand = require('zustand');
|
|
|
7
7
|
const ModalContext = /*#__PURE__*/ react.createContext(null);
|
|
8
8
|
const createModalProvider = (data)=>zustand.createStore((set)=>({
|
|
9
9
|
activeId: data,
|
|
10
|
-
setModalActive: (id)=>{
|
|
11
|
-
window?.parent?.postMessage?.(JSON.stringify({
|
|
10
|
+
setModalActive: (id, postMessage)=>{
|
|
11
|
+
postMessage && window?.parent?.postMessage?.(JSON.stringify({
|
|
12
12
|
type: 'active-element',
|
|
13
13
|
uid: id
|
|
14
14
|
}), '*');
|
|
@@ -10,6 +10,7 @@ const SectionContext = /*#__PURE__*/ react.createContext(null);
|
|
|
10
10
|
const createSectionProvider = (data)=>zustand.createStore((set, get)=>({
|
|
11
11
|
data: data ?? {},
|
|
12
12
|
getSection: (id)=>{
|
|
13
|
+
console.log('get().data', get().data);
|
|
13
14
|
const section = get().data[id];
|
|
14
15
|
return section ?? undefined;
|
|
15
16
|
},
|
|
@@ -156,7 +156,7 @@ const getSingleColorVariable = (color)=>{
|
|
|
156
156
|
};
|
|
157
157
|
function isColor(color) {
|
|
158
158
|
if (!color || typeof color !== 'string') return false;
|
|
159
|
-
return color?.startsWith('#') || color?.startsWith('rgb') || color?.startsWith('hsl') || color?.startsWith('transparent');
|
|
159
|
+
return color?.startsWith('#') || color?.startsWith('rgb') || color?.startsWith('hsl') || color?.startsWith('transparent') || color?.startsWith('linear-gradient');
|
|
160
160
|
}
|
|
161
161
|
const getGlobalColorStyle = (data)=>{
|
|
162
162
|
if (!data) return {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function loopComponent(component, callback) {
|
|
4
|
+
if (component) {
|
|
5
|
+
callback(component);
|
|
6
|
+
}
|
|
7
|
+
if (component?.childrens?.length) {
|
|
8
|
+
// eslint-disable-next-line
|
|
9
|
+
for(let i = 0; i < component.childrens.length; i++){
|
|
10
|
+
const children = component.childrens[i];
|
|
11
|
+
loopComponent(children, callback);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.loopComponent = loopComponent;
|
package/dist/cjs/helpers/size.js
CHANGED
|
@@ -181,6 +181,9 @@ function getCustomPaddingSizeCSSByDevice(globalSize, device) {
|
|
|
181
181
|
const getPaddingGlobalSize = (globalSize)=>{
|
|
182
182
|
return Object.assign({}, getCustomPaddingSizeCSSByDevice(globalSize, 'desktop'), getCustomPaddingSizeCSSByDevice(globalSize, 'tablet'), getCustomPaddingSizeCSSByDevice(globalSize, 'mobile'));
|
|
183
183
|
};
|
|
184
|
+
const getValueByDevice = (value, device)=>{
|
|
185
|
+
return value?.[device] === undefined ? value?.desktop === undefined ? value?.tablet : value?.desktop : value?.[device];
|
|
186
|
+
};
|
|
184
187
|
|
|
185
188
|
exports.composeSize = composeSize;
|
|
186
189
|
exports.composeSizeCss = composeSizeCss;
|
|
@@ -189,6 +192,7 @@ exports.getAspectRatioGlobalSize = getAspectRatioGlobalSize;
|
|
|
189
192
|
exports.getGlobalSizeGap = getGlobalSizeGap;
|
|
190
193
|
exports.getHeightByShapeGlobalSize = getHeightByShapeGlobalSize;
|
|
191
194
|
exports.getPaddingGlobalSize = getPaddingGlobalSize;
|
|
195
|
+
exports.getValueByDevice = getValueByDevice;
|
|
192
196
|
exports.getWidthByShapeGlobalSize = getWidthByShapeGlobalSize;
|
|
193
197
|
exports.getWidthHeightGlobalSize = getWidthHeightGlobalSize;
|
|
194
198
|
exports.makeGlobalSize = makeGlobalSize;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var loopComponent = require('../loop-component.js');
|
|
4
|
+
var composeAppBlockId = require('./composeAppBlockId.js');
|
|
5
|
+
|
|
6
|
+
const addAppBlockId = (component)=>{
|
|
7
|
+
const strComponent = JSON.stringify(component) || '';
|
|
8
|
+
if (!strComponent.includes('appBlockId')) {
|
|
9
|
+
return component;
|
|
10
|
+
}
|
|
11
|
+
loopComponent.loopComponent(component, (component)=>handleSetBlockId(component));
|
|
12
|
+
return component;
|
|
13
|
+
};
|
|
14
|
+
const handleSetBlockId = (component)=>{
|
|
15
|
+
const { tag, uid } = component;
|
|
16
|
+
if (component.settings.appBlockId === undefined) return component;
|
|
17
|
+
component.settings.appBlockId = composeAppBlockId.composeAppBlockId(tag, uid);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.addAppBlockId = addAppBlockId;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const RechargeSubscriptionsConfig = {
|
|
4
|
+
RechargeSubscriptions: {
|
|
5
|
+
appName: 'recharge-subscriptions',
|
|
6
|
+
appId: '371eed76-0b44-4869-9813-730372ea378e'
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
const BonLoyaltyRewardsReferralsConfig = {
|
|
10
|
+
BonLoyaltyRewardsReferrals: {
|
|
11
|
+
appName: 'bon-loyalty',
|
|
12
|
+
appId: '63496a04-c097-48d1-8c11-475aec24b12e'
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const SubifySubscriptionsConfig = {
|
|
16
|
+
SubifySubscriptionsApp: {
|
|
17
|
+
appName: 'subify-subscriptions-app',
|
|
18
|
+
appId: 'bc0dba25-cd46-4841-bea4-6bdfe9ac815f'
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const SelleasyConfig = {
|
|
22
|
+
SelleasyApp: {
|
|
23
|
+
appName: 'selleasy',
|
|
24
|
+
appId: '790c1a03-a71f-4bc1-9869-00dad526d3c2'
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const LoopSubscriptionsConfig = {
|
|
28
|
+
LoopSubscriptions: {
|
|
29
|
+
appName: 'Loop Subscriptions',
|
|
30
|
+
appId: '267a7c64-5cb3-4552-b817-5485165f0a0b'
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const SkioSubscriptionsYcS20Config = {
|
|
34
|
+
SkioSubscriptionsYcS20: {
|
|
35
|
+
appName: 'skio-subscriptions-yc-s20',
|
|
36
|
+
appId: 'de50f7a4-0bb0-4d4c-84e2-c03dce83436d'
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.BonLoyaltyRewardsReferralsConfig = BonLoyaltyRewardsReferralsConfig;
|
|
41
|
+
exports.LoopSubscriptionsConfig = LoopSubscriptionsConfig;
|
|
42
|
+
exports.RechargeSubscriptionsConfig = RechargeSubscriptionsConfig;
|
|
43
|
+
exports.SelleasyConfig = SelleasyConfig;
|
|
44
|
+
exports.SkioSubscriptionsYcS20Config = SkioSubscriptionsYcS20Config;
|
|
45
|
+
exports.SubifySubscriptionsConfig = SubifySubscriptionsConfig;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const RechargeSubscriptions = {
|
|
4
|
+
RechargeSubscriptions: {
|
|
5
|
+
'subscription-widget': {
|
|
6
|
+
product: '{{ product }}'
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const LoyaltyRewardsReferrals = {
|
|
11
|
+
BonLoyaltyRewardsReferrals: {
|
|
12
|
+
'loyalty-page-block': null,
|
|
13
|
+
'loyalty-page-earning-block': null,
|
|
14
|
+
'loyalty-page-header-block': null,
|
|
15
|
+
'loyalty-page-profile-block': null,
|
|
16
|
+
'loyalty-page-redeem-block': null,
|
|
17
|
+
'loyalty-page-referral-block': null,
|
|
18
|
+
'loyalty-page-tier-block': null,
|
|
19
|
+
'product-point-preview': null
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const SubifySubscriptions = {
|
|
23
|
+
SubifySubscriptionsApp: {
|
|
24
|
+
'app-block': {
|
|
25
|
+
product: '{{product}}',
|
|
26
|
+
use_app_block_wording: false,
|
|
27
|
+
widget_label: 'Purchase options',
|
|
28
|
+
one_time_purchase_text: 'One-Time Purchase',
|
|
29
|
+
subscription_text: 'Subscribe and save',
|
|
30
|
+
delivery_frequency_text: 'Delivery frequency',
|
|
31
|
+
prepaid_subscription_text: 'Subscription with prepaid',
|
|
32
|
+
skin1_priceSuffix: 'each',
|
|
33
|
+
skin1_save: 'Save(skin1)',
|
|
34
|
+
skin1_prepaid_payment_title: 'prepaid',
|
|
35
|
+
skin1_normal_payment_title: 'pay as you go',
|
|
36
|
+
skin2_discountSuffix: 'Save',
|
|
37
|
+
skin3_fullPrice: 'Full price',
|
|
38
|
+
skin3_priceSuffix: 'each',
|
|
39
|
+
skin3_discountSuffix: 'Off',
|
|
40
|
+
skin4_justOnce: 'Just once',
|
|
41
|
+
skin4_discountSuffix: 'Off',
|
|
42
|
+
skin4_priceSuffix: 'each',
|
|
43
|
+
skin4_fullPrice: '(Full price)',
|
|
44
|
+
skin4_sellingPlansTitle: 'Renews every:',
|
|
45
|
+
from: 'from',
|
|
46
|
+
max_discount_badge_title: 'UP To',
|
|
47
|
+
pay: 'Pay',
|
|
48
|
+
price_save_up_to: 'save up to'
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const SelleasyWidget = {
|
|
53
|
+
Selleasy: {
|
|
54
|
+
'lb-upsell-fbt-block': null,
|
|
55
|
+
'lb-upsell-addon-block': null
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const LoopSubscriptions = {
|
|
59
|
+
LoopSubscriptions: {
|
|
60
|
+
'star_rating': null
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const SkioSubscriptionsYcS20 = {
|
|
64
|
+
SkioSubscriptionsYcS20: {
|
|
65
|
+
'app-block': null
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const composeSettingsByWidgetType = {
|
|
69
|
+
...SkioSubscriptionsYcS20,
|
|
70
|
+
...LoopSubscriptions,
|
|
71
|
+
...RechargeSubscriptions,
|
|
72
|
+
...LoyaltyRewardsReferrals,
|
|
73
|
+
...SubifySubscriptions,
|
|
74
|
+
...SelleasyWidget
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
exports.composeSettingsByWidgetType = composeSettingsByWidgetType;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var pascalToKebabCase = require('../pascal-to-kebab-case.js');
|
|
4
|
+
var constant = require('./constant.js');
|
|
5
|
+
|
|
6
|
+
const composeAppBlockId = (tag, uid)=>{
|
|
7
|
+
const key = pascalToKebabCase.pascalToKebab(tag);
|
|
8
|
+
return `${constant.THIRD_PARTY_APP_BLOCK_ID_PREFIX}_${key}_${uid}`;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.composeAppBlockId = composeAppBlockId;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var appConfig = require('./appConfig.js');
|
|
4
|
+
|
|
5
|
+
const mapShopifyAppMeta = {
|
|
6
|
+
...appConfig.RechargeSubscriptionsConfig,
|
|
7
|
+
...appConfig.BonLoyaltyRewardsReferralsConfig,
|
|
8
|
+
...appConfig.SubifySubscriptionsConfig,
|
|
9
|
+
...appConfig.SelleasyConfig,
|
|
10
|
+
...appConfig.LoopSubscriptionsConfig,
|
|
11
|
+
...appConfig.SkioSubscriptionsYcS20Config
|
|
12
|
+
};
|
|
13
|
+
const THIRD_PARTY_APP_BLOCK_ID_PREFIX = 'gp_app';
|
|
14
|
+
|
|
15
|
+
exports.THIRD_PARTY_APP_BLOCK_ID_PREFIX = THIRD_PARTY_APP_BLOCK_ID_PREFIX;
|
|
16
|
+
exports.mapShopifyAppMeta = mapShopifyAppMeta;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var loopComponent = require('../loop-component.js');
|
|
4
|
+
var getAppBlockConfig = require('./getAppBlockConfig.js');
|
|
5
|
+
|
|
6
|
+
const generateAppBlockConfigs = (component)=>{
|
|
7
|
+
const strComponent = JSON.stringify(component) || '';
|
|
8
|
+
if (!strComponent.includes('appBlockId')) return null;
|
|
9
|
+
const configs = [];
|
|
10
|
+
loopComponent.loopComponent(component, (component)=>{
|
|
11
|
+
const settings = component.settings || {};
|
|
12
|
+
const appBlockId = settings?.appBlockId || '';
|
|
13
|
+
if (!appBlockId) return;
|
|
14
|
+
const config = getAppBlockConfig.getAppBlockConfig(component.tag, appBlockId, settings);
|
|
15
|
+
if (!config) return;
|
|
16
|
+
configs.push(config);
|
|
17
|
+
});
|
|
18
|
+
return configs;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.generateAppBlockConfigs = generateAppBlockConfigs;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var appSetting = require('./appSetting.js');
|
|
4
|
+
var getAppBlockType = require('./getAppBlockType.js');
|
|
5
|
+
|
|
6
|
+
const getAppBlockConfig = (tag, appBlockId, settings)=>{
|
|
7
|
+
const appBlockType = getAppBlockType.getAppBlockType({
|
|
8
|
+
tag,
|
|
9
|
+
widgetType: settings?.widgetType
|
|
10
|
+
});
|
|
11
|
+
const settingByWidget = appSetting.composeSettingsByWidgetType[tag][settings?.widgetType];
|
|
12
|
+
return {
|
|
13
|
+
key: appBlockId,
|
|
14
|
+
value: {
|
|
15
|
+
type: appBlockType,
|
|
16
|
+
...settingByWidget && {
|
|
17
|
+
settings: settingByWidget
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.getAppBlockConfig = getAppBlockConfig;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constant = require('./constant.js');
|
|
4
|
+
|
|
5
|
+
const getAppBlockType = ({ tag, widgetType })=>{
|
|
6
|
+
const shopifyAppMeta = constant.mapShopifyAppMeta[tag];
|
|
7
|
+
if (!shopifyAppMeta) return '';
|
|
8
|
+
const { appName, appId } = shopifyAppMeta;
|
|
9
|
+
return `shopify://apps/${appName}/blocks/${widgetType}/${appId}`;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
exports.getAppBlockType = getAppBlockType;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var removeMatchingKey = require('../remove-matching-key.js');
|
|
4
|
+
var addAppBlockId = require('./addAppBlockId.js');
|
|
5
|
+
var generateAppBlockConfigs = require('./generateAppBlockConfigs.js');
|
|
6
|
+
|
|
7
|
+
const getAppBlocks = (section, currentBlock, currentBlockOrder)=>{
|
|
8
|
+
const component = JSON.parse(section?.component || '');
|
|
9
|
+
const componentWithAppBlockId = addAppBlockId.addAppBlockId(component);
|
|
10
|
+
const appBlockConfigs = generateAppBlockConfigs.generateAppBlockConfigs(componentWithAppBlockId);
|
|
11
|
+
if (!appBlockConfigs?.length) {
|
|
12
|
+
return {
|
|
13
|
+
blocks: currentBlock,
|
|
14
|
+
block_order: currentBlockOrder
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
let newBlocks = currentBlock;
|
|
18
|
+
let newBlockOrder = currentBlockOrder;
|
|
19
|
+
appBlockConfigs.forEach(({ key, value })=>{
|
|
20
|
+
const newBlock = {
|
|
21
|
+
[key]: value
|
|
22
|
+
};
|
|
23
|
+
const oldKeyRemovedBlock = removeMatchingKey.removeMatchingKey(newBlocks, key);
|
|
24
|
+
newBlocks = {
|
|
25
|
+
...oldKeyRemovedBlock,
|
|
26
|
+
...newBlock
|
|
27
|
+
};
|
|
28
|
+
newBlockOrder = newBlockOrder ? [
|
|
29
|
+
...newBlockOrder,
|
|
30
|
+
key
|
|
31
|
+
] : [
|
|
32
|
+
key
|
|
33
|
+
];
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
blocks: newBlocks,
|
|
37
|
+
block_order: newBlockOrder
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
exports.getAppBlocks = getAppBlocks;
|
package/dist/cjs/index.js
CHANGED
|
@@ -104,6 +104,8 @@ var animations$1 = require('./types/animations.js');
|
|
|
104
104
|
var getCollection = require('./helpers/queries/get-collection.js');
|
|
105
105
|
var getProduct = require('./helpers/queries/get-product.js');
|
|
106
106
|
var getProductBySlug = require('./helpers/queries/get-product-by-slug.js');
|
|
107
|
+
var getAppBlocks = require('./helpers/third-party/getAppBlocks.js');
|
|
108
|
+
var addAppBlockId = require('./helpers/third-party/addAppBlockId.js');
|
|
107
109
|
|
|
108
110
|
|
|
109
111
|
|
|
@@ -272,6 +274,7 @@ exports.getAspectRatioGlobalSize = size.getAspectRatioGlobalSize;
|
|
|
272
274
|
exports.getGlobalSizeGap = size.getGlobalSizeGap;
|
|
273
275
|
exports.getHeightByShapeGlobalSize = size.getHeightByShapeGlobalSize;
|
|
274
276
|
exports.getPaddingGlobalSize = size.getPaddingGlobalSize;
|
|
277
|
+
exports.getValueByDevice = size.getValueByDevice;
|
|
275
278
|
exports.getWidthByShapeGlobalSize = size.getWidthByShapeGlobalSize;
|
|
276
279
|
exports.getWidthHeightGlobalSize = size.getWidthHeightGlobalSize;
|
|
277
280
|
exports.makeGlobalSize = size.makeGlobalSize;
|
|
@@ -386,3 +389,5 @@ exports.fetchMedias = getProduct.fetchMedias;
|
|
|
386
389
|
exports.fetchVariants = getProduct.fetchVariants;
|
|
387
390
|
exports.getProduct = getProduct.getProduct;
|
|
388
391
|
exports.getProductBySlug = getProductBySlug.getProductBySlug;
|
|
392
|
+
exports.getAppBlocks = getAppBlocks.getAppBlocks;
|
|
393
|
+
exports.addAppBlockId = addAppBlockId.addAppBlockId;
|
|
@@ -11,7 +11,7 @@ import 'vanilla-lazyload';
|
|
|
11
11
|
import '../hooks/useCartUI.js';
|
|
12
12
|
import { CreateThemeSection } from './theme-section/CreateThemeSection.js';
|
|
13
13
|
import Tooltip from './toolbar/Tooltip.js';
|
|
14
|
-
import {
|
|
14
|
+
import { ThemeSectionStatusWrapper } from './theme-section/ThemeSectionStatus.js';
|
|
15
15
|
import Resize from './resize/Resize.js';
|
|
16
16
|
import { usePostPurchase } from '../hooks/useToolbarPostPurchase.js';
|
|
17
17
|
import { ableGenerateContentElements } from './constant.js';
|
|
@@ -55,7 +55,8 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
55
55
|
const editProductElementList = [
|
|
56
56
|
'Product Title',
|
|
57
57
|
'Product Description',
|
|
58
|
-
'Product Price'
|
|
58
|
+
'Product Price',
|
|
59
|
+
'Product Vendor'
|
|
59
60
|
];
|
|
60
61
|
const isOverToolbarPosition = (el, parent)=>{
|
|
61
62
|
const parentLength = parents.length;
|
|
@@ -563,7 +564,7 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
563
564
|
})
|
|
564
565
|
]
|
|
565
566
|
}, props.uid),
|
|
566
|
-
isEnableCreateThemeSection() && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsx(
|
|
567
|
+
isEnableCreateThemeSection() && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsx(ThemeSectionStatusWrapper, {
|
|
567
568
|
...props
|
|
568
569
|
}),
|
|
569
570
|
/*#__PURE__*/ jsx("div", {
|
|
@@ -626,6 +627,6 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
626
627
|
]
|
|
627
628
|
});
|
|
628
629
|
};
|
|
629
|
-
var ComponentToolbarPreview$1 = /*#__PURE__*/ memo(ComponentToolbarPreview);
|
|
630
|
+
var ComponentToolbarPreview$1 = /*#__PURE__*/ memo(ComponentToolbarPreview); /* gem-lint/disallow-import-from-package-path */
|
|
630
631
|
|
|
631
632
|
export { ComponentToolbarPreview$1 as default };
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
3
|
+
const getStatusMessage = (status)=>{
|
|
4
|
+
switch(status){
|
|
5
|
+
case 'DRAFT':
|
|
6
|
+
return 'This Theme Section is Draft. Publish page will also publish Theme Section.';
|
|
7
|
+
case 'NEED_PUBLISHING':
|
|
8
|
+
return 'Need to republish. Go to global edit and publish this section';
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const ThemeSectionStatusWrapper = ({ tag, status, isThemeSection })=>{
|
|
12
|
+
const isRenderThemeSectionStatus = tag === 'Section' && isThemeSection && (status === 'DRAFT' || status === 'NEED_PUBLISHING');
|
|
13
|
+
const statusMessage = getStatusMessage(status);
|
|
5
14
|
return /*#__PURE__*/ jsx(Fragment, {
|
|
6
15
|
children: isRenderThemeSectionStatus && /*#__PURE__*/ jsxs("div", {
|
|
7
16
|
"data-theme-section-status": true,
|
|
@@ -22,13 +31,13 @@ const ThemeSectionStatus = ({ ...props })=>{
|
|
|
22
31
|
})
|
|
23
32
|
})
|
|
24
33
|
}),
|
|
25
|
-
/*#__PURE__*/ jsx("span", {
|
|
34
|
+
statusMessage && /*#__PURE__*/ jsx("span", {
|
|
26
35
|
"data-theme-section-status-text": true,
|
|
27
|
-
children:
|
|
36
|
+
children: statusMessage
|
|
28
37
|
})
|
|
29
38
|
]
|
|
30
39
|
})
|
|
31
40
|
});
|
|
32
41
|
};
|
|
33
42
|
|
|
34
|
-
export {
|
|
43
|
+
export { ThemeSectionStatusWrapper };
|
|
@@ -252,7 +252,11 @@ const createBuilderPreviewProvider = (args, pageName, isThemeSectionEditor)=>cre
|
|
|
252
252
|
}
|
|
253
253
|
},
|
|
254
254
|
getItem: (id)=>{
|
|
255
|
-
|
|
255
|
+
const item = get().state[id];
|
|
256
|
+
return {
|
|
257
|
+
...item,
|
|
258
|
+
rawChildrens: item?.childrens?.map((v)=>get().state[v])
|
|
259
|
+
};
|
|
256
260
|
},
|
|
257
261
|
removeItem: (id)=>{
|
|
258
262
|
if (id === 'ROOT') {
|
|
@@ -5,8 +5,8 @@ import { useStore, createStore } from 'zustand';
|
|
|
5
5
|
const ModalContext = /*#__PURE__*/ createContext(null);
|
|
6
6
|
const createModalProvider = (data)=>createStore((set)=>({
|
|
7
7
|
activeId: data,
|
|
8
|
-
setModalActive: (id)=>{
|
|
9
|
-
window?.parent?.postMessage?.(JSON.stringify({
|
|
8
|
+
setModalActive: (id, postMessage)=>{
|
|
9
|
+
postMessage && window?.parent?.postMessage?.(JSON.stringify({
|
|
10
10
|
type: 'active-element',
|
|
11
11
|
uid: id
|
|
12
12
|
}), '*');
|
|
@@ -8,6 +8,7 @@ const SectionContext = /*#__PURE__*/ createContext(null);
|
|
|
8
8
|
const createSectionProvider = (data)=>createStore((set, get)=>({
|
|
9
9
|
data: data ?? {},
|
|
10
10
|
getSection: (id)=>{
|
|
11
|
+
console.log('get().data', get().data);
|
|
11
12
|
const section = get().data[id];
|
|
12
13
|
return section ?? undefined;
|
|
13
14
|
},
|
|
@@ -154,7 +154,7 @@ const getSingleColorVariable = (color)=>{
|
|
|
154
154
|
};
|
|
155
155
|
function isColor(color) {
|
|
156
156
|
if (!color || typeof color !== 'string') return false;
|
|
157
|
-
return color?.startsWith('#') || color?.startsWith('rgb') || color?.startsWith('hsl') || color?.startsWith('transparent');
|
|
157
|
+
return color?.startsWith('#') || color?.startsWith('rgb') || color?.startsWith('hsl') || color?.startsWith('transparent') || color?.startsWith('linear-gradient');
|
|
158
158
|
}
|
|
159
159
|
const getGlobalColorStyle = (data)=>{
|
|
160
160
|
if (!data) return {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function loopComponent(component, callback) {
|
|
2
|
+
if (component) {
|
|
3
|
+
callback(component);
|
|
4
|
+
}
|
|
5
|
+
if (component?.childrens?.length) {
|
|
6
|
+
// eslint-disable-next-line
|
|
7
|
+
for(let i = 0; i < component.childrens.length; i++){
|
|
8
|
+
const children = component.childrens[i];
|
|
9
|
+
loopComponent(children, callback);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { loopComponent };
|
package/dist/esm/helpers/size.js
CHANGED
|
@@ -179,5 +179,8 @@ function getCustomPaddingSizeCSSByDevice(globalSize, device) {
|
|
|
179
179
|
const getPaddingGlobalSize = (globalSize)=>{
|
|
180
180
|
return Object.assign({}, getCustomPaddingSizeCSSByDevice(globalSize, 'desktop'), getCustomPaddingSizeCSSByDevice(globalSize, 'tablet'), getCustomPaddingSizeCSSByDevice(globalSize, 'mobile'));
|
|
181
181
|
};
|
|
182
|
+
const getValueByDevice = (value, device)=>{
|
|
183
|
+
return value?.[device] === undefined ? value?.desktop === undefined ? value?.tablet : value?.desktop : value?.[device];
|
|
184
|
+
};
|
|
182
185
|
|
|
183
|
-
export { composeSize, composeSizeCss, genSizeClass, getAspectRatioGlobalSize, getGlobalSizeGap, getHeightByShapeGlobalSize, getPaddingGlobalSize, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, makeGlobalSize, makeGlobalSizeIcon, makeStyleWithDefault };
|
|
186
|
+
export { composeSize, composeSizeCss, genSizeClass, getAspectRatioGlobalSize, getGlobalSizeGap, getHeightByShapeGlobalSize, getPaddingGlobalSize, getValueByDevice, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, makeGlobalSize, makeGlobalSizeIcon, makeStyleWithDefault };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { loopComponent } from '../loop-component.js';
|
|
2
|
+
import { composeAppBlockId } from './composeAppBlockId.js';
|
|
3
|
+
|
|
4
|
+
const addAppBlockId = (component)=>{
|
|
5
|
+
const strComponent = JSON.stringify(component) || '';
|
|
6
|
+
if (!strComponent.includes('appBlockId')) {
|
|
7
|
+
return component;
|
|
8
|
+
}
|
|
9
|
+
loopComponent(component, (component)=>handleSetBlockId(component));
|
|
10
|
+
return component;
|
|
11
|
+
};
|
|
12
|
+
const handleSetBlockId = (component)=>{
|
|
13
|
+
const { tag, uid } = component;
|
|
14
|
+
if (component.settings.appBlockId === undefined) return component;
|
|
15
|
+
component.settings.appBlockId = composeAppBlockId(tag, uid);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { addAppBlockId };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const RechargeSubscriptionsConfig = {
|
|
2
|
+
RechargeSubscriptions: {
|
|
3
|
+
appName: 'recharge-subscriptions',
|
|
4
|
+
appId: '371eed76-0b44-4869-9813-730372ea378e'
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
const BonLoyaltyRewardsReferralsConfig = {
|
|
8
|
+
BonLoyaltyRewardsReferrals: {
|
|
9
|
+
appName: 'bon-loyalty',
|
|
10
|
+
appId: '63496a04-c097-48d1-8c11-475aec24b12e'
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const SubifySubscriptionsConfig = {
|
|
14
|
+
SubifySubscriptionsApp: {
|
|
15
|
+
appName: 'subify-subscriptions-app',
|
|
16
|
+
appId: 'bc0dba25-cd46-4841-bea4-6bdfe9ac815f'
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const SelleasyConfig = {
|
|
20
|
+
SelleasyApp: {
|
|
21
|
+
appName: 'selleasy',
|
|
22
|
+
appId: '790c1a03-a71f-4bc1-9869-00dad526d3c2'
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const LoopSubscriptionsConfig = {
|
|
26
|
+
LoopSubscriptions: {
|
|
27
|
+
appName: 'Loop Subscriptions',
|
|
28
|
+
appId: '267a7c64-5cb3-4552-b817-5485165f0a0b'
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const SkioSubscriptionsYcS20Config = {
|
|
32
|
+
SkioSubscriptionsYcS20: {
|
|
33
|
+
appName: 'skio-subscriptions-yc-s20',
|
|
34
|
+
appId: 'de50f7a4-0bb0-4d4c-84e2-c03dce83436d'
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { BonLoyaltyRewardsReferralsConfig, LoopSubscriptionsConfig, RechargeSubscriptionsConfig, SelleasyConfig, SkioSubscriptionsYcS20Config, SubifySubscriptionsConfig };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const RechargeSubscriptions = {
|
|
2
|
+
RechargeSubscriptions: {
|
|
3
|
+
'subscription-widget': {
|
|
4
|
+
product: '{{ product }}'
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
const LoyaltyRewardsReferrals = {
|
|
9
|
+
BonLoyaltyRewardsReferrals: {
|
|
10
|
+
'loyalty-page-block': null,
|
|
11
|
+
'loyalty-page-earning-block': null,
|
|
12
|
+
'loyalty-page-header-block': null,
|
|
13
|
+
'loyalty-page-profile-block': null,
|
|
14
|
+
'loyalty-page-redeem-block': null,
|
|
15
|
+
'loyalty-page-referral-block': null,
|
|
16
|
+
'loyalty-page-tier-block': null,
|
|
17
|
+
'product-point-preview': null
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const SubifySubscriptions = {
|
|
21
|
+
SubifySubscriptionsApp: {
|
|
22
|
+
'app-block': {
|
|
23
|
+
product: '{{product}}',
|
|
24
|
+
use_app_block_wording: false,
|
|
25
|
+
widget_label: 'Purchase options',
|
|
26
|
+
one_time_purchase_text: 'One-Time Purchase',
|
|
27
|
+
subscription_text: 'Subscribe and save',
|
|
28
|
+
delivery_frequency_text: 'Delivery frequency',
|
|
29
|
+
prepaid_subscription_text: 'Subscription with prepaid',
|
|
30
|
+
skin1_priceSuffix: 'each',
|
|
31
|
+
skin1_save: 'Save(skin1)',
|
|
32
|
+
skin1_prepaid_payment_title: 'prepaid',
|
|
33
|
+
skin1_normal_payment_title: 'pay as you go',
|
|
34
|
+
skin2_discountSuffix: 'Save',
|
|
35
|
+
skin3_fullPrice: 'Full price',
|
|
36
|
+
skin3_priceSuffix: 'each',
|
|
37
|
+
skin3_discountSuffix: 'Off',
|
|
38
|
+
skin4_justOnce: 'Just once',
|
|
39
|
+
skin4_discountSuffix: 'Off',
|
|
40
|
+
skin4_priceSuffix: 'each',
|
|
41
|
+
skin4_fullPrice: '(Full price)',
|
|
42
|
+
skin4_sellingPlansTitle: 'Renews every:',
|
|
43
|
+
from: 'from',
|
|
44
|
+
max_discount_badge_title: 'UP To',
|
|
45
|
+
pay: 'Pay',
|
|
46
|
+
price_save_up_to: 'save up to'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const SelleasyWidget = {
|
|
51
|
+
Selleasy: {
|
|
52
|
+
'lb-upsell-fbt-block': null,
|
|
53
|
+
'lb-upsell-addon-block': null
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const LoopSubscriptions = {
|
|
57
|
+
LoopSubscriptions: {
|
|
58
|
+
'star_rating': null
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const SkioSubscriptionsYcS20 = {
|
|
62
|
+
SkioSubscriptionsYcS20: {
|
|
63
|
+
'app-block': null
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const composeSettingsByWidgetType = {
|
|
67
|
+
...SkioSubscriptionsYcS20,
|
|
68
|
+
...LoopSubscriptions,
|
|
69
|
+
...RechargeSubscriptions,
|
|
70
|
+
...LoyaltyRewardsReferrals,
|
|
71
|
+
...SubifySubscriptions,
|
|
72
|
+
...SelleasyWidget
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export { composeSettingsByWidgetType };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { pascalToKebab } from '../pascal-to-kebab-case.js';
|
|
2
|
+
import { THIRD_PARTY_APP_BLOCK_ID_PREFIX } from './constant.js';
|
|
3
|
+
|
|
4
|
+
const composeAppBlockId = (tag, uid)=>{
|
|
5
|
+
const key = pascalToKebab(tag);
|
|
6
|
+
return `${THIRD_PARTY_APP_BLOCK_ID_PREFIX}_${key}_${uid}`;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { composeAppBlockId };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RechargeSubscriptionsConfig, BonLoyaltyRewardsReferralsConfig, SubifySubscriptionsConfig, SelleasyConfig, LoopSubscriptionsConfig, SkioSubscriptionsYcS20Config } from './appConfig.js';
|
|
2
|
+
|
|
3
|
+
const mapShopifyAppMeta = {
|
|
4
|
+
...RechargeSubscriptionsConfig,
|
|
5
|
+
...BonLoyaltyRewardsReferralsConfig,
|
|
6
|
+
...SubifySubscriptionsConfig,
|
|
7
|
+
...SelleasyConfig,
|
|
8
|
+
...LoopSubscriptionsConfig,
|
|
9
|
+
...SkioSubscriptionsYcS20Config
|
|
10
|
+
};
|
|
11
|
+
const THIRD_PARTY_APP_BLOCK_ID_PREFIX = 'gp_app';
|
|
12
|
+
|
|
13
|
+
export { THIRD_PARTY_APP_BLOCK_ID_PREFIX, mapShopifyAppMeta };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { loopComponent } from '../loop-component.js';
|
|
2
|
+
import { getAppBlockConfig } from './getAppBlockConfig.js';
|
|
3
|
+
|
|
4
|
+
const generateAppBlockConfigs = (component)=>{
|
|
5
|
+
const strComponent = JSON.stringify(component) || '';
|
|
6
|
+
if (!strComponent.includes('appBlockId')) return null;
|
|
7
|
+
const configs = [];
|
|
8
|
+
loopComponent(component, (component)=>{
|
|
9
|
+
const settings = component.settings || {};
|
|
10
|
+
const appBlockId = settings?.appBlockId || '';
|
|
11
|
+
if (!appBlockId) return;
|
|
12
|
+
const config = getAppBlockConfig(component.tag, appBlockId, settings);
|
|
13
|
+
if (!config) return;
|
|
14
|
+
configs.push(config);
|
|
15
|
+
});
|
|
16
|
+
return configs;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { generateAppBlockConfigs };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { composeSettingsByWidgetType } from './appSetting.js';
|
|
2
|
+
import { getAppBlockType } from './getAppBlockType.js';
|
|
3
|
+
|
|
4
|
+
const getAppBlockConfig = (tag, appBlockId, settings)=>{
|
|
5
|
+
const appBlockType = getAppBlockType({
|
|
6
|
+
tag,
|
|
7
|
+
widgetType: settings?.widgetType
|
|
8
|
+
});
|
|
9
|
+
const settingByWidget = composeSettingsByWidgetType[tag][settings?.widgetType];
|
|
10
|
+
return {
|
|
11
|
+
key: appBlockId,
|
|
12
|
+
value: {
|
|
13
|
+
type: appBlockType,
|
|
14
|
+
...settingByWidget && {
|
|
15
|
+
settings: settingByWidget
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { getAppBlockConfig };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { mapShopifyAppMeta } from './constant.js';
|
|
2
|
+
|
|
3
|
+
const getAppBlockType = ({ tag, widgetType })=>{
|
|
4
|
+
const shopifyAppMeta = mapShopifyAppMeta[tag];
|
|
5
|
+
if (!shopifyAppMeta) return '';
|
|
6
|
+
const { appName, appId } = shopifyAppMeta;
|
|
7
|
+
return `shopify://apps/${appName}/blocks/${widgetType}/${appId}`;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { getAppBlockType };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { removeMatchingKey } from '../remove-matching-key.js';
|
|
2
|
+
import { addAppBlockId } from './addAppBlockId.js';
|
|
3
|
+
import { generateAppBlockConfigs } from './generateAppBlockConfigs.js';
|
|
4
|
+
|
|
5
|
+
const getAppBlocks = (section, currentBlock, currentBlockOrder)=>{
|
|
6
|
+
const component = JSON.parse(section?.component || '');
|
|
7
|
+
const componentWithAppBlockId = addAppBlockId(component);
|
|
8
|
+
const appBlockConfigs = generateAppBlockConfigs(componentWithAppBlockId);
|
|
9
|
+
if (!appBlockConfigs?.length) {
|
|
10
|
+
return {
|
|
11
|
+
blocks: currentBlock,
|
|
12
|
+
block_order: currentBlockOrder
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
let newBlocks = currentBlock;
|
|
16
|
+
let newBlockOrder = currentBlockOrder;
|
|
17
|
+
appBlockConfigs.forEach(({ key, value })=>{
|
|
18
|
+
const newBlock = {
|
|
19
|
+
[key]: value
|
|
20
|
+
};
|
|
21
|
+
const oldKeyRemovedBlock = removeMatchingKey(newBlocks, key);
|
|
22
|
+
newBlocks = {
|
|
23
|
+
...oldKeyRemovedBlock,
|
|
24
|
+
...newBlock
|
|
25
|
+
};
|
|
26
|
+
newBlockOrder = newBlockOrder ? [
|
|
27
|
+
...newBlockOrder,
|
|
28
|
+
key
|
|
29
|
+
] : [
|
|
30
|
+
key
|
|
31
|
+
];
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
blocks: newBlocks,
|
|
35
|
+
block_order: newBlockOrder
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { getAppBlocks };
|
package/dist/esm/index.js
CHANGED
|
@@ -66,7 +66,7 @@ export { generateCollectionQueryKey, generateProductQueryKey, generateProductsQu
|
|
|
66
66
|
export { composeCornerCss, composeRadius, composeRadiusResponsive, getCornerCSSFromGlobal, getCustomRadius, getRadiusCSSFromGlobal, getRadiusStyleActiveState } from './helpers/radius.js';
|
|
67
67
|
export { RenderIf, composeMemo, dataStringify, props, removeUndefinedValuesFromObject, styles, template } from './helpers/render.js';
|
|
68
68
|
export { composeShadowCss, getStyleShadow, getStyleShadowState, parseValueWithUnit } from './helpers/shadow.js';
|
|
69
|
-
export { composeSize, composeSizeCss, genSizeClass, getAspectRatioGlobalSize, getGlobalSizeGap, getHeightByShapeGlobalSize, getPaddingGlobalSize, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, makeGlobalSize, makeGlobalSizeIcon, makeStyleWithDefault } from './helpers/size.js';
|
|
69
|
+
export { composeSize, composeSizeCss, genSizeClass, getAspectRatioGlobalSize, getGlobalSizeGap, getHeightByShapeGlobalSize, getPaddingGlobalSize, getValueByDevice, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, makeGlobalSize, makeGlobalSizeIcon, makeStyleWithDefault } from './helpers/size.js';
|
|
70
70
|
export { composeFallbackTypographyStyle, composeFontFamilyTypographyV2, composeTypography, composeTypographyAttr, composeTypographyClassName, composeTypographyCss, composeTypographyStyle, composeTypographyV2, composeTypographyV2Css, genTypoClass } from './helpers/typography.js';
|
|
71
71
|
export { useAddToCart } from './hooks/cart/use-add-to-cart.js';
|
|
72
72
|
export { useCartData } from './hooks/cart/use-cart-data.js';
|
|
@@ -107,3 +107,5 @@ export { AnimationDirectionType, AnimationEasingType, AnimationSetting, Animatio
|
|
|
107
107
|
export { calculateFirstProduct, getCollection } from './helpers/queries/get-collection.js';
|
|
108
108
|
export { fetchMedias, fetchVariants, getProduct } from './helpers/queries/get-product.js';
|
|
109
109
|
export { getProductBySlug } from './helpers/queries/get-product-by-slug.js';
|
|
110
|
+
export { getAppBlocks } from './helpers/third-party/getAppBlocks.js';
|
|
111
|
+
export { addAppBlockId } from './helpers/third-party/addAppBlockId.js';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6709,6 +6709,7 @@ type BlockEntity = {
|
|
|
6709
6709
|
name?: string;
|
|
6710
6710
|
dateModified?: string | number;
|
|
6711
6711
|
childrens?: string[];
|
|
6712
|
+
rawChildrens?: BlockEntity[];
|
|
6712
6713
|
settings?: Record<string, any>;
|
|
6713
6714
|
advanced?: Record<string, any>;
|
|
6714
6715
|
styles?: Record<string, any>;
|
|
@@ -6716,6 +6717,7 @@ type BlockEntity = {
|
|
|
6716
6717
|
type?: 'component';
|
|
6717
6718
|
isThemeSection?: boolean;
|
|
6718
6719
|
needPublishing?: boolean;
|
|
6720
|
+
status?: ThemeSectionStatus$1;
|
|
6719
6721
|
isShopifySection?: boolean;
|
|
6720
6722
|
isShopifyVisibility?: boolean;
|
|
6721
6723
|
};
|
|
@@ -6726,10 +6728,12 @@ type SectionEntity = {
|
|
|
6726
6728
|
type: 'section';
|
|
6727
6729
|
name?: string;
|
|
6728
6730
|
isThemeSection?: boolean;
|
|
6731
|
+
status?: ThemeSectionStatus$1;
|
|
6729
6732
|
needPublishing?: boolean;
|
|
6730
6733
|
isShopifySection?: boolean;
|
|
6731
6734
|
isShopifyVisibility?: boolean;
|
|
6732
6735
|
};
|
|
6736
|
+
type ThemeSectionStatus$1 = 'DRAFT' | 'PUBLISHED' | 'NEED_PUBLISHING';
|
|
6733
6737
|
type BuilderEntity = BlockEntity | SectionEntity;
|
|
6734
6738
|
type BuilderEntityNested = Omit<BlockEntity, 'childrens'> & {
|
|
6735
6739
|
childrens?: BuilderEntityNested[];
|
|
@@ -6782,6 +6786,12 @@ type SaleFunnelDiscountEdge$1 = {
|
|
|
6782
6786
|
type ProductOffer = Maybe$1<Pick<SaleFunnelDiscountEdge$1, 'cursor'> & {
|
|
6783
6787
|
node?: Maybe$1<Pick<SaleFunnelDiscount$1, 'id' | 'value' | 'type' | 'position' | 'objectBaseID' | 'objectType' | 'title' | 'valueType' | 'isEnabled'>>;
|
|
6784
6788
|
}>;
|
|
6789
|
+
type RawChild = {
|
|
6790
|
+
uid: string;
|
|
6791
|
+
builder: Record<string, any>;
|
|
6792
|
+
components: Record<string, any>;
|
|
6793
|
+
[key: string]: any;
|
|
6794
|
+
};
|
|
6785
6795
|
|
|
6786
6796
|
type InitComponentType<T = any> = {
|
|
6787
6797
|
[K in keyof T]-?: {
|
|
@@ -7224,6 +7234,7 @@ type RangeControlType<T> = SharedControlType<T> & {
|
|
|
7224
7234
|
disableOnChange?: boolean;
|
|
7225
7235
|
useOnlyUnitInit?: boolean;
|
|
7226
7236
|
hideUnit?: boolean;
|
|
7237
|
+
hideInput?: boolean;
|
|
7227
7238
|
} & OnlyOne<{
|
|
7228
7239
|
minRelated?: string;
|
|
7229
7240
|
}, {
|
|
@@ -7302,11 +7313,13 @@ type Option$2<T> = {
|
|
|
7302
7313
|
svgIcon?: string;
|
|
7303
7314
|
tooltip?: string;
|
|
7304
7315
|
type?: string;
|
|
7316
|
+
note?: string;
|
|
7305
7317
|
};
|
|
7306
7318
|
type Mapped$3<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
|
|
7307
7319
|
id: K;
|
|
7308
7320
|
label?: string;
|
|
7309
7321
|
info?: string;
|
|
7322
|
+
isFullWidth?: boolean;
|
|
7310
7323
|
hyperlinkInfo?: HyperlinkInfo;
|
|
7311
7324
|
hideOnMode?: {
|
|
7312
7325
|
responsive?: boolean;
|
|
@@ -7343,6 +7356,7 @@ type Mapped$3<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
|
|
|
7343
7356
|
type: 'select';
|
|
7344
7357
|
options: Option$2<T>[];
|
|
7345
7358
|
default?: T;
|
|
7359
|
+
isFullWidth?: boolean;
|
|
7346
7360
|
};
|
|
7347
7361
|
type SelectControlType<T> = {
|
|
7348
7362
|
[K in keyof T]-?: Mapped$3<K, T[K]>;
|
|
@@ -8096,6 +8110,7 @@ type ControlUI = {
|
|
|
8096
8110
|
mobile?: boolean;
|
|
8097
8111
|
};
|
|
8098
8112
|
hideOnPages?: PageType[];
|
|
8113
|
+
itemSpacing?: 'small' | 'medium' | 'large';
|
|
8099
8114
|
};
|
|
8100
8115
|
isMoreSetting?: boolean;
|
|
8101
8116
|
hiddenDivice?: boolean;
|
|
@@ -8124,6 +8139,7 @@ type ComponentPreset = {
|
|
|
8124
8139
|
};
|
|
8125
8140
|
components: InitComponentType[];
|
|
8126
8141
|
hideTextContent?: boolean;
|
|
8142
|
+
flowTagComponents?: Record<string, InitComponentType[]>;
|
|
8127
8143
|
};
|
|
8128
8144
|
|
|
8129
8145
|
type PageContext = {
|
|
@@ -28850,7 +28866,7 @@ declare const useCollectionStore: <U>(selector: (state: ExtractState<StoreApi<Co
|
|
|
28850
28866
|
|
|
28851
28867
|
type ModalContextProps = {
|
|
28852
28868
|
activeId?: string;
|
|
28853
|
-
setModalActive: (id?: string) => void;
|
|
28869
|
+
setModalActive: (id?: string, postMessage?: boolean) => void;
|
|
28854
28870
|
clearModal: () => void;
|
|
28855
28871
|
};
|
|
28856
28872
|
type ModalProviderProps = Pick<ModalContextProps, 'activeId'> & {
|
|
@@ -35518,6 +35534,7 @@ declare const getHeightByShapeGlobalSize: (shapeByLayout?: ObjectDevices<SizeSet
|
|
|
35518
35534
|
declare const getWidthByShapeGlobalSize: (shapeByLayout?: ObjectDevices<SizeSettingGlobal>, defaultAuto?: boolean) => Partial<Record<NameDevices$1, string>>;
|
|
35519
35535
|
declare const getAspectRatioGlobalSize: (shape?: ObjectDevices<SizeSettingGlobal>) => ObjectDevices<string>;
|
|
35520
35536
|
declare const getPaddingGlobalSize: (globalSize?: ObjectDevices<SizeSettingGlobal>) => React.CSSProperties;
|
|
35537
|
+
declare const getValueByDevice: <T>(value: any, device: NameDevices$1) => T;
|
|
35521
35538
|
|
|
35522
35539
|
type TypographyClass = `gp-g-${TypographyType}`;
|
|
35523
35540
|
declare const genTypoClass: (name: TypographyType) => TypographyClass;
|
|
@@ -37326,4 +37343,13 @@ type PublishedThemePageSelectFragment = Pick<PublishedThemePage$1, 'id' | 'name'
|
|
|
37326
37343
|
|
|
37327
37344
|
declare const getProductBySlug: (fetcher: FetchFunc, slug?: string) => Promise<ProductSelectFragment>;
|
|
37328
37345
|
|
|
37329
|
-
|
|
37346
|
+
declare const getAppBlocks: (section: PublishedPageSection$1 & {
|
|
37347
|
+
appBlocks: string;
|
|
37348
|
+
}, currentBlock: {}, currentBlockOrder: string[]) => {
|
|
37349
|
+
blocks: {};
|
|
37350
|
+
block_order: string[];
|
|
37351
|
+
};
|
|
37352
|
+
|
|
37353
|
+
declare const addAppBlockId: (component: Component) => Component;
|
|
37354
|
+
|
|
37355
|
+
export { AddOn, AddonProvider, AddonProviderProps, AdvancedType, AliReviewsWidgetType, AlignItemProp, AlignProp, AnimationBaseSetting, AnimationConfig, AnimationDirectionType, AnimationEasingType, AnimationFadeSettingType, AnimationSetting, AnimationSettingType, AnimationShakeSettingType, AnimationSlideSettingType, AnimationTrigger, AnimationTriggerType, AnimationType, AnimationZoomDirectionType, AnimationZoomSettingType, appAPI as AppAPIType, ArticleListProvider, ArticleListProviderProps, ArticleProvider, ArticleProviderProps, Background, BaseProps, BasePropsWrap, BlockEntity, BogosWidgetType, BoldSubscriptionsWidgetType, Border, BorderStyle, BuilderComponentProvider, BuilderComponentProviderProps, BuilderEntity, BuilderEntityNested, BuilderPreviewProvider, BuilderPreviewProviderProps, BuilderProvider, BuilderProviderProps, BuilderState, Builtin, CartLineProvider, CartLineProviderProps, CollectionDetailFilterDocument, CollectionDetailFilterQueryResponse, CollectionDetailFilterQueryVariables, CollectionDocument, CollectionProvider, CollectionProviderProps, CollectionQueryResponse, CollectionQueryVariables, CollectionSelectFragment, CollectionsDocument, CollectionsQueryResponse, CollectionsQueryVariables, ColorKey, ColorType$1 as ColorType, ColorValueType, Component, ComponentPreset, ComponentSetting, ContainerProp, ControlProp, ControlTriggerAction, ControlUI, CornerRadius, CornerRadiusType, CustomComponentConfig, DeepPartial, DynamicCollection, DynamicProduct, ExtractState, FeraReviewsV3WidgetType, FeraReviewsWidgetType, FetchCollectionArgs, FetchFunc, FetchProductParams, FlexDirectionProp, FontName, GRADIENT_BGR_KEY, GlobalStyleConfig, GlobalStyleResponsiveConfig, GlobalSwatchesData, GraphQLConnection, GroupPropType, GrowaveWidgetType, HSLAColorType, HSLColorType, HexColorType, ImageShape$1 as ImageShape, InitComponentType, InstantJudgeMeReviewsWidgetType, InstantKlaviyoWidgetType, InstantLooxReviewsWidgetType, JudgeMeReviewsWidgetType, KlaviyoWidgetType, LaiProductReviewsAdvancedWidgetType, LaiProductReviewsWidgetType, LibrarySaleFunnelDocument, LibrarySaleFunnelQueryResponse, LibrarySaleFunnelQueryVariables, LibraryTemplateDocument, LibraryTemplateQueryResponse, LibraryTemplateQueryVariables, LooxReviewsWidgetType, ModalProvider, ModalProviderProps, NameDevices$1 as NameDevices, NestedKeys, ObjectDeviceGlobalType, ObjectDevices, ObjectLayoutValue, OmnisendWidgetType, OnlyOne, OpinewDesignWidgetType, OpinewWidgetType, OptionNormalStyle, OptionSpecialStyle, Options, PageContext, PageProvider, PageProviderProps, PageType, PageViewUpDocument, PageViewUpMutationResponse, PageViewUpMutationVariables, PickyStoryWidgetType, PostPurchaseTypo, PreviewPageDocument, PreviewPageQueryResponse, PreviewPageQueryVariables, Primitive, ProductInputAnalytic, ProductListProvider, ProductListProviderProps, ProductOffer, ProductProvider, ProductProviderProps, ProductReviewsWidgetType, ProductSelectFragment, ProductsDocument, ProductsQueryResponse, ProductsQueryVariables, PublicStoreFrontData, PublishedThemePageSelectFragment, PublishedThemePagesDocument, PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables, RGBAColorType, RGBColorType, Ratio$1 as Ratio, RawChild, RenderMemo as Render, RenderChildren, RenderIf, Render as RenderLiquid, RenderMode, RenderPreviewMemo as RenderPreview, RequiredCursorEdge, ResponsiveKey, ResponsiveStateProp, RivyoWidgetType, RoundedSize, RyviuWidgetType, SaleFunnelDiscount$1 as SaleFunnelDiscount, SaleFunnelDiscountEdge$1 as SaleFunnelDiscountEdge, SaleFunnelDiscountObjectType$1 as SaleFunnelDiscountObjectType, SaleFunnelDiscountType$1 as SaleFunnelDiscountType, SaleFunnelDiscountValueType$1 as SaleFunnelDiscountValueType, SaleFunnelDiscountsDocument, SaleFunnelDiscountsQueryResponse, SaleFunnelDiscountsQueryVariables, Scalars$1 as Scalars, ScaleByDirection, SectionData, SectionEntity, SectionProvider, SectionProviderProps, SettingByAnimationType, SettingByAnimationValues, ShadowProps, ShadowStyle, ShadowStyleApplied, ShadowType, ShopProvider, ShopProviderProps, shop as ShopType, SizeProps, SizeSetting, SizeSettingGlobal, SizeType, SpacingType, StampedWidgetType, StateProp, StateSelector, StateType, StoreConfig, StorePropertyDocument, StorePropertyQueryResponse, StorePropertyQueryVariables, SwatchesOptionType, SwatchesOptionValue, ThemePageDocument, ThemePageQueryResponse, ThemePageQueryVariables, ThemeSectionStatus$1 as ThemeSectionStatus, TransformProp, TriggerConfig, TrustooWidgetType, TypographyProps, TypographySetting, TypographySettingV2, TypographyType, TypographyV2Attrs, TypographyV2Props, UltimateSalesBoostWidgetType, VariantSelectFragment, VitalsWidgetType, WiserV2WidgetType, WiserWidgetType, WrapRenderChildren, YotpoReviewsWidgetType, addAppBlockId, animations, baseAssetURL, calculateFirstProduct, checkAvailableVariantInStock, cls, composeAdvanceStyle, composeAdvanceStyleForPostPurchase, composeBackgroundCss, composeBorderCss, composeCornerCss, composeFallbackTypographyStyle, composeFontFamilyTypographyV2, composeGridLayout, composeMemo, composePositionLineHeight, composePostionIconList, composeRadius, composeRadiusResponsive, composeShadowCss, composeSize, composeSizeCss, composeSpacing, composeTextColorCss, composeTypography, composeTypographyAttr, composeTypographyClassName, composeTypographyCss, composeTypographyStyle, composeTypographyV2, composeTypographyV2Css, convertHTML, convertOldLayout, dataStringify, fetchMedias, fetchVariants, filterAttrInStyle, filterCornerInStyle, filterToolbarPreview, flattenConnection, fpixel, genSizeClass, genTypoClass, genVariable, generateCollectionQueryKey, generateProductQueryKey, generateProductsQueryKey, getAppBlocks, getAspectRatioGlobalSize, getBgImageByDevice, getBorderRadiusStyle, getBorderStyle, getCarouselContainerHeight, getCollection, getCornerCSSFromGlobal, getCustomRadius, getGlobalColorCSSProp, getGlobalColorClass, getGlobalColorResponsiveClass, getGlobalColorResponsiveStyle, getGlobalColorStateClass, getGlobalColorStateClassDynamicBtn, getGlobalColorStateResponsiveClass, getGlobalColorStateResponsiveClassDynamicBtn, getGlobalColorStateResponsiveStyle, getGlobalColorStateStyle, getGlobalColorStyle, getGlobalSizeGap, getGradientBgrStyleByDevice, getGradientBgrStyleForButton, getHeightByShapeGlobalSize, getPaddingGlobalSize, getProduct, getProductBySlug, getRadiusCSSFromGlobal, getRadiusStyleActiveState, getResponsiveStateValue, getResponsiveValue, getResponsiveValueByScreen, getSelectedVariant, getShortName, getSingleColorVariable, getSpacingVariable, getStyleBackgroundByDevice, getStyleBgColor, getStyleShadow, getStyleShadowState, getValueByDevice, getWidthByShapeGlobalSize, getWidthHeightGlobalSize, globalEvent, gridToArrayRegex, gtag, handleConvertBorderColor, handleConvertBorderStyle, handleConvertBorderWidth, handleConvertClassColor, handleConvertClassColorDynamicBtn, isBrowser, isColor, isColumnDirectionExist, isDefined, isEmptyChildren, isLocalEnv, isSafari, loadScript, makeAspectRatio, makeContainerWidthOrHeight, makeDotGapToCarouselStyle, makeFixedBgAttachment, makeGlobalSize, makeGlobalSizeHeightResponsive, makeGlobalSizeIcon, makeGlobalSizeWidthResponsive, makeHeight, makeLineClamp, makeStyle, makeStyleKey, makeStyleResponsive, makeStyleResponsiveByScreen, makeStyleResponsiveState, makeStyleState, makeStyleWithDefault, makeWidth, normalizeBuilderData, optionLayoutStyle, parseSelectedOption, parseValueWithUnit, prefetchQueries, props, removeAttrInStyle, removeNullUndefined, removePaddingYInStyle, removeUndefinedValuesFromObject, shopifyPriceRounding, splitStyle, styles, template, tiktokpixel, useAddToCart, useAddon, useAddons, useArticleListStore, useArticleStore, useArticlesQuery, useBlogsQuery, useBuilderComponent, useBuilderPreviewStore, useBuilderStore, useCartData, useCartDiscountCodesUpdate, useCartId, useCartLine, useCartLineStore, useCartNoteUpdate, useCartUI, useCheckAvailableVariantInStock, useCheckoutUrl, useCollection, useCollectionQuery, useCollectionStore, useCollectionsQuery, useConnectedShopify, useCreateCart, useCurrency, useCurrentDevice, useCurrentVariant, useCurrentVariantInStock, useEditorMode, useFeaturedImageGlobal, useFormatMoney, useInitialSwatchesOptions, useIsSampleProduct, useIsStorefrontProduct, useIsSyncProduct, useIsomorphicLayoutEffect, useLazyVideo, useLoadScript, useLocale, useMatchMutate, useMobileOnly, useModalStore, useMoney, useMoneyFormat, usePageStore, usePageType, usePluginEnable, usePrevious, useProduct, useProductList, useProductListProducts, useProductListSettings, useProductListStore, useProductListStyles, useProductOfferDiscount, useProductProperties, useProductQuery, useProductStore, useProductsQuery, useProductsQueryAll, useQuantity, useRemoveCartItem, useSection, useSectionStore, useSelectedOption, useShopStore, useStoreFront, useSuspenseFetch, useSwatches, useSwatchesOptions, useUniqProductID, useUpdateCartItem, useVariant, useVariantOutStock, useVariants, validateEmail };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gem-sdk/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.46.0-staging.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@gem-sdk/adapter-shopify": "1.45.0",
|
|
31
|
-
"@gem-sdk/styles": "1.
|
|
31
|
+
"@gem-sdk/styles": "1.46.0-staging.8",
|
|
32
32
|
"@types/classnames": "^2.3.1"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|