@gem-sdk/core 1.46.0-staging.1 → 1.46.0-staging.12
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 +8 -2
- package/dist/cjs/components/Render.liquid.js +17 -7
- package/dist/cjs/components/ai-generator/AIContentGenerator.js +1 -1
- package/dist/cjs/graphql/queries/articles.generated.js +3 -1
- package/dist/cjs/graphql/queries/blogs.generated.js +3 -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/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/index.js +4 -0
- package/dist/esm/components/ComponentToolbarPreview.js +8 -2
- package/dist/esm/components/Render.liquid.js +17 -7
- package/dist/esm/components/ai-generator/AIContentGenerator.js +1 -1
- package/dist/esm/graphql/queries/articles.generated.js +3 -1
- package/dist/esm/graphql/queries/blogs.generated.js +3 -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/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/index.js +2 -0
- package/dist/types/index.d.ts +35 -9
- package/package.json +3 -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;
|
|
@@ -294,6 +295,11 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
294
295
|
const isEnableCreateThemeSection = ()=>{
|
|
295
296
|
return editingPageType !== 'STATIC' && editingPageType !== 'POST_PURCHASE';
|
|
296
297
|
};
|
|
298
|
+
const isEnableAIContent = ()=>{
|
|
299
|
+
const { isShopifySection, tag } = props;
|
|
300
|
+
if (isShopifySection || isThemeSection && !isThemeSectionEditor) return false;
|
|
301
|
+
return constant.ableGenerateContentElements.includes(tag);
|
|
302
|
+
};
|
|
297
303
|
// if (!isActive) return null;
|
|
298
304
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
299
305
|
children: [
|
|
@@ -459,7 +465,7 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
459
465
|
props.tag === 'Section' && !props.isThemeSection && isEnableCreateThemeSection() && !props.isShopifySection && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsxRuntime.jsx(CreateThemeSection.CreateThemeSection, {
|
|
460
466
|
...props
|
|
461
467
|
}),
|
|
462
|
-
|
|
468
|
+
isEnableAIContent() && /*#__PURE__*/ jsxRuntime.jsx(AIContentGenerator.AIContentGenerator, {
|
|
463
469
|
...props
|
|
464
470
|
}),
|
|
465
471
|
props.tag == 'Sticky' && /*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
@@ -20,6 +20,7 @@ require('dayjs');
|
|
|
20
20
|
var composeAdvanceStyle = require('../helpers/compose-advance-style.js');
|
|
21
21
|
var convert = require('../helpers/convert.js');
|
|
22
22
|
var render = require('../helpers/render.js');
|
|
23
|
+
var cssjson = require('cssjson');
|
|
23
24
|
|
|
24
25
|
const componentsRenderWithParentId = [
|
|
25
26
|
'CarouselItem'
|
|
@@ -181,19 +182,28 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
|
|
|
181
182
|
};
|
|
182
183
|
}
|
|
183
184
|
};
|
|
185
|
+
const isEmptyCSS = (cssString)=>{
|
|
186
|
+
if (!cssString) return true;
|
|
187
|
+
const cssJSON = cssjson.toJSON(cssString);
|
|
188
|
+
const isObjectEmpty = (obj)=>{
|
|
189
|
+
if (typeof obj !== 'object' || obj === null) return true;
|
|
190
|
+
return !Object.keys(obj).some((key)=>{
|
|
191
|
+
return key === 'attributes' && Object.keys(obj[key]).length > 0 || typeof obj[key] === 'object' && !isObjectEmpty(obj[key]);
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
return isObjectEmpty(cssJSON.children);
|
|
195
|
+
};
|
|
184
196
|
const RenderCustomCode = (item)=>{
|
|
185
197
|
const { css, javascript, rootClassName } = item.advanced?.editorData || {};
|
|
186
198
|
const replacedCSS = css?.replaceAll(rootClassName, item.uid);
|
|
187
199
|
const replacedJS = javascript?.replaceAll(rootClassName, item.uid);
|
|
188
|
-
const cssCode = render.RenderIf(!!css, render.template`
|
|
189
|
-
<style
|
|
190
|
-
|
|
191
|
-
|
|
200
|
+
const cssCode = render.RenderIf(!!css && !isEmptyCSS(replacedCSS), render.template`
|
|
201
|
+
<style id="${`custom-css-${item?.uid}`}">
|
|
202
|
+
${replacedCSS}
|
|
203
|
+
</style>
|
|
192
204
|
`);
|
|
193
205
|
const jsCode = render.RenderIf(!!javascript, render.template`
|
|
194
|
-
<script
|
|
195
|
-
id="${`custom-js-${item?.uid}`}"
|
|
196
|
-
>
|
|
206
|
+
<script id="${`custom-js-${item?.uid}`}">
|
|
197
207
|
try {
|
|
198
208
|
${replacedJS}
|
|
199
209
|
} catch(err){}
|
|
@@ -108,7 +108,7 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
108
108
|
ref: genTool,
|
|
109
109
|
children: [
|
|
110
110
|
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
111
|
-
className: "gp-gen-content-toolbar gp-border-r
|
|
111
|
+
className: "gp-gen-content-toolbar gp-border-r gp-pr-1 gp-mr-1",
|
|
112
112
|
children: /*#__PURE__*/ jsxRuntime.jsxs("button", {
|
|
113
113
|
className: classNames({
|
|
114
114
|
'gp-toolbar-ai-active': isShowPopup
|
|
@@ -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;
|
|
@@ -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
|
+
Selleasy: {
|
|
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
|
|
|
@@ -387,3 +389,5 @@ exports.fetchMedias = getProduct.fetchMedias;
|
|
|
387
389
|
exports.fetchVariants = getProduct.fetchVariants;
|
|
388
390
|
exports.getProduct = getProduct.getProduct;
|
|
389
391
|
exports.getProductBySlug = getProductBySlug.getProductBySlug;
|
|
392
|
+
exports.getAppBlocks = getAppBlocks.getAppBlocks;
|
|
393
|
+
exports.addAppBlockId = addAppBlockId.addAppBlockId;
|
|
@@ -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;
|
|
@@ -290,6 +291,11 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
290
291
|
const isEnableCreateThemeSection = ()=>{
|
|
291
292
|
return editingPageType !== 'STATIC' && editingPageType !== 'POST_PURCHASE';
|
|
292
293
|
};
|
|
294
|
+
const isEnableAIContent = ()=>{
|
|
295
|
+
const { isShopifySection, tag } = props;
|
|
296
|
+
if (isShopifySection || isThemeSection && !isThemeSectionEditor) return false;
|
|
297
|
+
return ableGenerateContentElements.includes(tag);
|
|
298
|
+
};
|
|
293
299
|
// if (!isActive) return null;
|
|
294
300
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
295
301
|
children: [
|
|
@@ -455,7 +461,7 @@ const ComponentToolbarPreview = (props)=>{
|
|
|
455
461
|
props.tag === 'Section' && !props.isThemeSection && isEnableCreateThemeSection() && !props.isShopifySection && getIndexSection() < SECTION_LIMIT && /*#__PURE__*/ jsx(CreateThemeSection, {
|
|
456
462
|
...props
|
|
457
463
|
}),
|
|
458
|
-
|
|
464
|
+
isEnableAIContent() && /*#__PURE__*/ jsx(AIContentGenerator, {
|
|
459
465
|
...props
|
|
460
466
|
}),
|
|
461
467
|
props.tag == 'Sticky' && /*#__PURE__*/ jsx("div", {
|
|
@@ -16,6 +16,7 @@ import 'dayjs';
|
|
|
16
16
|
import { composeAdvanceStyle } from '../helpers/compose-advance-style.js';
|
|
17
17
|
import { baseAssetURL, isLocalEnv } from '../helpers/convert.js';
|
|
18
18
|
import { RenderIf, template } from '../helpers/render.js';
|
|
19
|
+
import { toJSON } from 'cssjson';
|
|
19
20
|
|
|
20
21
|
const componentsRenderWithParentId = [
|
|
21
22
|
'CarouselItem'
|
|
@@ -177,19 +178,28 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
|
|
|
177
178
|
};
|
|
178
179
|
}
|
|
179
180
|
};
|
|
181
|
+
const isEmptyCSS = (cssString)=>{
|
|
182
|
+
if (!cssString) return true;
|
|
183
|
+
const cssJSON = toJSON(cssString);
|
|
184
|
+
const isObjectEmpty = (obj)=>{
|
|
185
|
+
if (typeof obj !== 'object' || obj === null) return true;
|
|
186
|
+
return !Object.keys(obj).some((key)=>{
|
|
187
|
+
return key === 'attributes' && Object.keys(obj[key]).length > 0 || typeof obj[key] === 'object' && !isObjectEmpty(obj[key]);
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
return isObjectEmpty(cssJSON.children);
|
|
191
|
+
};
|
|
180
192
|
const RenderCustomCode = (item)=>{
|
|
181
193
|
const { css, javascript, rootClassName } = item.advanced?.editorData || {};
|
|
182
194
|
const replacedCSS = css?.replaceAll(rootClassName, item.uid);
|
|
183
195
|
const replacedJS = javascript?.replaceAll(rootClassName, item.uid);
|
|
184
|
-
const cssCode = RenderIf(!!css, template`
|
|
185
|
-
<style
|
|
186
|
-
|
|
187
|
-
|
|
196
|
+
const cssCode = RenderIf(!!css && !isEmptyCSS(replacedCSS), template`
|
|
197
|
+
<style id="${`custom-css-${item?.uid}`}">
|
|
198
|
+
${replacedCSS}
|
|
199
|
+
</style>
|
|
188
200
|
`);
|
|
189
201
|
const jsCode = RenderIf(!!javascript, template`
|
|
190
|
-
<script
|
|
191
|
-
id="${`custom-js-${item?.uid}`}"
|
|
192
|
-
>
|
|
202
|
+
<script id="${`custom-js-${item?.uid}`}">
|
|
193
203
|
try {
|
|
194
204
|
${replacedJS}
|
|
195
205
|
} catch(err){}
|
|
@@ -106,7 +106,7 @@ const AIContentGenerator = ({ ...props })=>{
|
|
|
106
106
|
ref: genTool,
|
|
107
107
|
children: [
|
|
108
108
|
/*#__PURE__*/ jsx("div", {
|
|
109
|
-
className: "gp-gen-content-toolbar gp-border-r
|
|
109
|
+
className: "gp-gen-content-toolbar gp-border-r gp-pr-1 gp-mr-1",
|
|
110
110
|
children: /*#__PURE__*/ jsxs("button", {
|
|
111
111
|
className: classNames({
|
|
112
112
|
'gp-toolbar-ai-active': isShowPopup
|
|
@@ -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 };
|
|
@@ -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
|
+
Selleasy: {
|
|
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
|
@@ -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
|
@@ -75,7 +75,7 @@ type Article$2 = {
|
|
|
75
75
|
platform?: Maybe$1<ArticlePlatform$1>;
|
|
76
76
|
platformCreatedAt?: Maybe$1<Scalars$2['Time']>;
|
|
77
77
|
platformUpdatedAt?: Maybe$1<Scalars$2['Time']>;
|
|
78
|
-
tags
|
|
78
|
+
tags?: Maybe$1<Array<Maybe$1<Tag$1>>>;
|
|
79
79
|
templateSuffix?: Maybe$1<Scalars$2['String']>;
|
|
80
80
|
title?: Maybe$1<Scalars$2['String']>;
|
|
81
81
|
titleMeta?: Maybe$1<Scalars$2['String']>;
|
|
@@ -2333,6 +2333,7 @@ type Entity = {
|
|
|
2333
2333
|
findPublishedThemePageOnlineStoreDataByID: PublishedThemePageOnlineStoreData$1;
|
|
2334
2334
|
findPublishedThemeSectionByID: PublishedThemeSection$1;
|
|
2335
2335
|
findPublishedThemeStyleByID: PublishedThemeStyle$1;
|
|
2336
|
+
findTagByID: Tag$1;
|
|
2336
2337
|
};
|
|
2337
2338
|
type EntityFindMetafieldByIdArgs = {
|
|
2338
2339
|
id: Scalars$2['ID'];
|
|
@@ -2373,6 +2374,9 @@ type EntityFindPublishedThemeSectionByIdArgs = {
|
|
|
2373
2374
|
type EntityFindPublishedThemeStyleByIdArgs = {
|
|
2374
2375
|
id: Scalars$2['ID'];
|
|
2375
2376
|
};
|
|
2377
|
+
type EntityFindTagByIdArgs = {
|
|
2378
|
+
id: Scalars$2['ID'];
|
|
2379
|
+
};
|
|
2376
2380
|
type Media$1 = {
|
|
2377
2381
|
alt?: Maybe$1<Scalars$2['String']>;
|
|
2378
2382
|
contentType?: Maybe$1<Scalars$2['String']>;
|
|
@@ -5429,9 +5433,6 @@ type PublishedThemePage$1 = {
|
|
|
5429
5433
|
themePageOnlineStoreData?: Maybe$1<Array<Maybe$1<PublishedThemePageOnlineStoreData$1>>>;
|
|
5430
5434
|
type: PublishedThemePageType$1;
|
|
5431
5435
|
updatedAt?: Maybe$1<Scalars$2['Time']>;
|
|
5432
|
-
publishedAt?: Maybe$1<Scalars$2['Time']>;
|
|
5433
|
-
isPlatformDefault?: boolean;
|
|
5434
|
-
platformOriginalTemplateContent?: string;
|
|
5435
5436
|
};
|
|
5436
5437
|
type PublishedThemePageCustomSection$1 = {
|
|
5437
5438
|
id: Scalars$2['ID'];
|
|
@@ -6334,6 +6335,12 @@ type StoreProperty$1 = {
|
|
|
6334
6335
|
primaryDomain?: Maybe$1<Scalars$2['String']>;
|
|
6335
6336
|
swatchesConfig: Scalars$2['String'];
|
|
6336
6337
|
};
|
|
6338
|
+
type Tag$1 = {
|
|
6339
|
+
createdAt?: Maybe$1<Scalars$2['Time']>;
|
|
6340
|
+
id: Scalars$2['ID'];
|
|
6341
|
+
name?: Maybe$1<Scalars$2['String']>;
|
|
6342
|
+
updatedAt?: Maybe$1<Scalars$2['Time']>;
|
|
6343
|
+
};
|
|
6337
6344
|
type TagType$1 = 'ARTICLE' | 'BLOG' | 'COLLECTION' | 'PRODUCT';
|
|
6338
6345
|
/**
|
|
6339
6346
|
* TagWhereInput is used for filtering Tag objects.
|
|
@@ -6452,7 +6459,7 @@ type VariantProductOptionWhereInput$1 = {
|
|
|
6452
6459
|
variantIDNEQ?: InputMaybe$1<Scalars$2['ID']>;
|
|
6453
6460
|
variantIDNotIn?: InputMaybe$1<Array<Scalars$2['ID']>>;
|
|
6454
6461
|
};
|
|
6455
|
-
type _Entity = Metafield$1 | Product$1 | PublishedCustomSection$1 | PublishedPageInteraction$1 | PublishedPageSection$1 | PublishedPageSectionMeta$1 | PublishedShopMeta$1 | PublishedThemePage$1 | PublishedThemePageCustomSection$1 | PublishedThemePageMeta$1 | PublishedThemePageOnlineStoreData$1 | PublishedThemeSection$1 | PublishedThemeStyle$1;
|
|
6462
|
+
type _Entity = Metafield$1 | Product$1 | PublishedCustomSection$1 | PublishedPageInteraction$1 | PublishedPageSection$1 | PublishedPageSectionMeta$1 | PublishedShopMeta$1 | PublishedThemePage$1 | PublishedThemePageCustomSection$1 | PublishedThemePageMeta$1 | PublishedThemePageOnlineStoreData$1 | PublishedThemeSection$1 | PublishedThemeStyle$1 | Tag$1;
|
|
6456
6463
|
type _Service = {
|
|
6457
6464
|
sdl?: Maybe$1<Scalars$2['String']>;
|
|
6458
6465
|
};
|
|
@@ -6471,6 +6478,7 @@ type shop_EntityFindPublishedThemePageMetaByIdArgs = EntityFindPublishedThemePag
|
|
|
6471
6478
|
type shop_EntityFindPublishedThemePageOnlineStoreDataByIdArgs = EntityFindPublishedThemePageOnlineStoreDataByIdArgs;
|
|
6472
6479
|
type shop_EntityFindPublishedThemeSectionByIdArgs = EntityFindPublishedThemeSectionByIdArgs;
|
|
6473
6480
|
type shop_EntityFindPublishedThemeStyleByIdArgs = EntityFindPublishedThemeStyleByIdArgs;
|
|
6481
|
+
type shop_EntityFindTagByIdArgs = EntityFindTagByIdArgs;
|
|
6474
6482
|
type shop_Query_EntitiesArgs = Query_EntitiesArgs;
|
|
6475
6483
|
type shop__Entity = _Entity;
|
|
6476
6484
|
type shop__Service = _Service;
|
|
@@ -6553,6 +6561,7 @@ declare namespace shop {
|
|
|
6553
6561
|
shop_EntityFindPublishedThemePageOnlineStoreDataByIdArgs as EntityFindPublishedThemePageOnlineStoreDataByIdArgs,
|
|
6554
6562
|
shop_EntityFindPublishedThemeSectionByIdArgs as EntityFindPublishedThemeSectionByIdArgs,
|
|
6555
6563
|
shop_EntityFindPublishedThemeStyleByIdArgs as EntityFindPublishedThemeStyleByIdArgs,
|
|
6564
|
+
shop_EntityFindTagByIdArgs as EntityFindTagByIdArgs,
|
|
6556
6565
|
Exact$1 as Exact,
|
|
6557
6566
|
InputMaybe$1 as InputMaybe,
|
|
6558
6567
|
MakeMaybe$1 as MakeMaybe,
|
|
@@ -6693,6 +6702,7 @@ declare namespace shop {
|
|
|
6693
6702
|
ShopShopify$1 as ShopShopify,
|
|
6694
6703
|
ShopTokenWhereInput$1 as ShopTokenWhereInput,
|
|
6695
6704
|
StoreProperty$1 as StoreProperty,
|
|
6705
|
+
Tag$1 as Tag,
|
|
6696
6706
|
TagType$1 as TagType,
|
|
6697
6707
|
TagWhereInput$1 as TagWhereInput,
|
|
6698
6708
|
VariantProductOptionWhereInput$1 as VariantProductOptionWhereInput,
|
|
@@ -37217,7 +37227,8 @@ type ArticlesQueryVariables = Exact$1<{
|
|
|
37217
37227
|
type ArticlesQueryResponse = {
|
|
37218
37228
|
articles?: Maybe$1<(Pick<ArticleConnection$1, 'totalCount'> & {
|
|
37219
37229
|
edges: Array<(Pick<ArticleEdge$1, 'cursor'> & {
|
|
37220
|
-
node?: Maybe$1<(Pick<Article$2, 'id' | 'title' | 'handle' | 'description' | 'templateSuffix' | 'titleMeta' | 'descriptionMeta' | 'baseID' | 'platform' | '
|
|
37230
|
+
node?: Maybe$1<(Pick<Article$2, 'id' | 'title' | 'handle' | 'description' | 'templateSuffix' | 'titleMeta' | 'descriptionMeta' | 'baseID' | 'platform' | 'isSample' | 'platformCreatedAt' | 'author'> & {
|
|
37231
|
+
tags: Array<never>;
|
|
37221
37232
|
content?: Maybe$1<Pick<ArticleContent$1, 'excerptHtml'>>;
|
|
37222
37233
|
blogs?: Maybe$1<{
|
|
37223
37234
|
edges: Array<{
|
|
@@ -37246,9 +37257,15 @@ type BlogsQueryResponse = {
|
|
|
37246
37257
|
node?: Maybe$1<(Pick<Blog$1, 'baseID' | 'description' | 'descriptionMeta' | 'handle' | 'id' | 'platform' | 'tags' | 'templateSuffix' | 'title' | 'titleMeta'> & {
|
|
37247
37258
|
articles?: Maybe$1<(Pick<ArticleConnection$1, 'totalCount'> & {
|
|
37248
37259
|
edges: Array<(Pick<ArticleEdge$1, 'cursor'> & {
|
|
37249
|
-
node?: Maybe$1<(Pick<Article$2, 'id' | 'title' | 'handle' | 'description' | 'templateSuffix' | 'titleMeta' | 'descriptionMeta' | 'baseID' | '
|
|
37260
|
+
node?: Maybe$1<(Pick<Article$2, 'id' | 'title' | 'handle' | 'description' | 'templateSuffix' | 'titleMeta' | 'descriptionMeta' | 'baseID' | 'platform' | 'isSample' | 'platformCreatedAt' | 'author'> & {
|
|
37261
|
+
tags: Array<never>;
|
|
37250
37262
|
content?: Maybe$1<Pick<ArticleContent$1, 'excerptHtml'>>;
|
|
37251
|
-
|
|
37263
|
+
blogs?: Maybe$1<{
|
|
37264
|
+
edges: Array<{
|
|
37265
|
+
node?: Maybe$1<Pick<Blog$1, 'title' | 'handle'>>;
|
|
37266
|
+
}>;
|
|
37267
|
+
}>;
|
|
37268
|
+
media?: Maybe$1<Pick<Media$1, 'alt' | 'width' | 'src' | 'height'>>;
|
|
37252
37269
|
})>;
|
|
37253
37270
|
})>;
|
|
37254
37271
|
})>;
|
|
@@ -37343,4 +37360,13 @@ type PublishedThemePageSelectFragment = Pick<PublishedThemePage$1, 'id' | 'name'
|
|
|
37343
37360
|
|
|
37344
37361
|
declare const getProductBySlug: (fetcher: FetchFunc, slug?: string) => Promise<ProductSelectFragment>;
|
|
37345
37362
|
|
|
37346
|
-
|
|
37363
|
+
declare const getAppBlocks: (section: PublishedPageSection$1 & {
|
|
37364
|
+
appBlocks: string;
|
|
37365
|
+
}, currentBlock: {}, currentBlockOrder: string[]) => {
|
|
37366
|
+
blocks: {};
|
|
37367
|
+
block_order: string[];
|
|
37368
|
+
};
|
|
37369
|
+
|
|
37370
|
+
declare const addAppBlockId: (component: Component) => Component;
|
|
37371
|
+
|
|
37372
|
+
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.46.0-staging.
|
|
3
|
+
"version": "1.46.0-staging.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -28,11 +28,12 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@gem-sdk/adapter-shopify": "1.45.0",
|
|
31
|
-
"@gem-sdk/styles": "1.46.0-staging.
|
|
31
|
+
"@gem-sdk/styles": "1.46.0-staging.8",
|
|
32
32
|
"@types/classnames": "^2.3.1"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"classnames": "^2.5.1",
|
|
36
|
+
"cssjson": "2.1.3",
|
|
36
37
|
"dayjs": "^1.11.11",
|
|
37
38
|
"react-error-boundary": "4.0.10",
|
|
38
39
|
"swr": "2.1.2",
|