@gem-sdk/core 1.48.0-dev.0 → 1.48.0-dev.102

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cjs/components/ComponentToolbarPreview.js +1 -0
  2. package/dist/cjs/components/InteractionSuffix.js +9 -1
  3. package/dist/cjs/components/Render.liquid.js +10 -11
  4. package/dist/cjs/graphql/fragments/product-little.generated.js +1 -0
  5. package/dist/cjs/graphql/fragments/published-theme-page.generated.js +8 -0
  6. package/dist/cjs/graphql-app-api/queries/ShopLibraryPage.generated.js +17 -0
  7. package/dist/cjs/helpers/animations.js +6 -6
  8. package/dist/cjs/helpers/background.js +1 -1
  9. package/dist/cjs/helpers/colors.js +2 -2
  10. package/dist/cjs/helpers/compose-advance-style.js +6 -3
  11. package/dist/cjs/helpers/interaction/index.js +66 -0
  12. package/dist/cjs/helpers/queries/get-product.js +1 -1
  13. package/dist/cjs/helpers/render.js +2 -0
  14. package/dist/cjs/helpers/shadow.js +15 -3
  15. package/dist/cjs/helpers/third-party/addAppBlockId.js +1 -1
  16. package/dist/cjs/helpers/third-party/appConfig.js +77 -0
  17. package/dist/cjs/helpers/third-party/appSetting.js +115 -0
  18. package/dist/cjs/helpers/third-party/constant.js +12 -1
  19. package/dist/cjs/helpers/typography.js +19 -15
  20. package/dist/cjs/index.js +6 -0
  21. package/dist/cjs/types/animations.js +2 -0
  22. package/dist/cjs/types/custom.js +1 -0
  23. package/dist/esm/components/ComponentToolbarPreview.js +1 -0
  24. package/dist/esm/components/InteractionSuffix.js +10 -2
  25. package/dist/esm/components/Render.liquid.js +10 -11
  26. package/dist/esm/graphql/fragments/product-little.generated.js +1 -0
  27. package/dist/esm/graphql/fragments/published-theme-page.generated.js +8 -0
  28. package/dist/esm/graphql-app-api/queries/ShopLibraryPage.generated.js +15 -0
  29. package/dist/esm/helpers/animations.js +6 -6
  30. package/dist/esm/helpers/background.js +1 -1
  31. package/dist/esm/helpers/colors.js +2 -2
  32. package/dist/esm/helpers/compose-advance-style.js +7 -4
  33. package/dist/esm/helpers/interaction/index.js +64 -0
  34. package/dist/esm/helpers/queries/get-product.js +1 -1
  35. package/dist/esm/helpers/render.js +2 -0
  36. package/dist/esm/helpers/shadow.js +15 -4
  37. package/dist/esm/helpers/third-party/addAppBlockId.js +1 -1
  38. package/dist/esm/helpers/third-party/appConfig.js +67 -1
  39. package/dist/esm/helpers/third-party/appSetting.js +115 -0
  40. package/dist/esm/helpers/third-party/constant.js +13 -2
  41. package/dist/esm/helpers/typography.js +19 -16
  42. package/dist/esm/index.js +4 -2
  43. package/dist/esm/types/animations.js +2 -0
  44. package/dist/esm/types/custom.js +1 -0
  45. package/dist/types/index.d.ts +4922 -893
  46. package/package.json +3 -3
@@ -454,6 +454,7 @@ const ComponentToolbarPreview = (props)=>{
454
454
  }
455
455
  return /*#__PURE__*/ jsxRuntime.jsxs("div", {
456
456
  "data-toolbar-parent": true,
457
+ "data-component-tag": parent.tag,
457
458
  "data-parent-uid": parent.uid,
458
459
  "data-toolbar-theme-section": isThemeSectionEditor,
459
460
  "data-toolbar-parent-revert": isShowParentRevert,
@@ -14,10 +14,13 @@ require('react-transition-group');
14
14
  require('@gem-sdk/core');
15
15
  require('classnames');
16
16
  require('dayjs');
17
+ var index = require('../helpers/interaction/index.js');
17
18
  require('../helpers/convert.js');
18
19
 
19
20
  const InteractionSuffix = ({ tag, uid })=>{
21
+ const { closeSelectOnPage } = index.useInteraction();
20
22
  const currentInteraction = PageContext.usePageStore((s)=>s.interactionData?.item);
23
+ const isSelectOnPage = PageContext.usePageStore((s)=>s.interactionData?.isSelectOnPage);
21
24
  const isCurrentInteractionTarget = react.useMemo(()=>{
22
25
  return currentInteraction?.targets?.find((t)=>t.uid === uid);
23
26
  }, [
@@ -46,10 +49,15 @@ const InteractionSuffix = ({ tag, uid })=>{
46
49
  isCurrentInteractionTarget
47
50
  ]);
48
51
  if (!isDisplay) {
49
- return undefined;
52
+ return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {});
50
53
  }
51
54
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
52
55
  children: [
56
+ isSelectOnPage && /*#__PURE__*/ jsxRuntime.jsx("button", {
57
+ className: "gp-bg-[#F4F4F4] gp-px-2 gp-py-0.5 gp-rounded-lg gp-text-[#212121] gp-text-sm gp-font-medium gp-hidden interaction-use-element-btn",
58
+ onClick: closeSelectOnPage,
59
+ children: "Use element"
60
+ }),
53
61
  /*#__PURE__*/ jsxRuntime.jsx("div", {
54
62
  className: "hidden gp-left-[-40px] gp-left-[-80px] gp-right-[-40px] gp-right-[-80px]"
55
63
  }),
@@ -76,8 +76,7 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
76
76
  pageContext,
77
77
  ...passProps,
78
78
  builderAttrs: {
79
- ...passProps.builderAttrs,
80
- 'data-id': uid
79
+ ...passProps.builderAttrs
81
80
  },
82
81
  rawChildren: item.childrens.map((id)=>{
83
82
  return {
@@ -116,8 +115,7 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
116
115
  pageContext,
117
116
  ...passProps,
118
117
  builderAttrs: {
119
- ...passProps.builderAttrs,
120
- 'data-id': uid
118
+ ...passProps.builderAttrs
121
119
  }
122
120
  });
123
121
  });
@@ -138,8 +136,7 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
138
136
  pageContext,
139
137
  ...passProps,
140
138
  builderAttrs: {
141
- ...passProps.builderAttrs,
142
- 'data-id': uid
139
+ ...passProps.builderAttrs
143
140
  },
144
141
  rawChildren: item.childrens.map((id)=>{
145
142
  return {
@@ -179,8 +176,7 @@ const Render = ({ uid, builder, components, parentId, extraFiles = {}, pageConte
179
176
  style: componentIconList.includes(item.tag) ? style : null,
180
177
  ...passProps,
181
178
  builderAttrs: {
182
- ...passProps.builderAttrs,
183
- 'data-id': uid
179
+ ...passProps.builderAttrs
184
180
  }
185
181
  });
186
182
  })}
@@ -219,7 +215,7 @@ const RenderCustomCode = (item)=>{
219
215
  };
220
216
  const appendAnimation = (props, liquid)=>{
221
217
  const { advanced, tag } = props;
222
- const { animation, op: opacity } = advanced ?? {};
218
+ const { animation, op: opacity, hasAnimationInteraction, displayInitInteraction = true } = advanced ?? {};
223
219
  const getAnimationType = (settings, type)=>{
224
220
  return settings?.triggerConfig?.[type]?.animation ?? 'none';
225
221
  };
@@ -233,7 +229,9 @@ const appendAnimation = (props, liquid)=>{
233
229
  const hoverDesktop = getAnimationType(getSettingsByDevice('desktop'), 'hover');
234
230
  const appearTablet = getAnimationType(getSettingsByDevice('tablet'), 'appear');
235
231
  const appearMobile = getAnimationType(getSettingsByDevice('mobile'), 'appear');
236
- const enableAnimation = animation?.desktop?.enabled && (appearDesktop !== 'none' || hoverDesktop !== 'none') || animation?.tablet?.enabled && appearTablet !== 'none' || animation?.mobile?.enabled && appearMobile !== 'none';
232
+ const enableAnimation = animation?.desktop?.enabled && (appearDesktop !== 'none' || hoverDesktop !== 'none') || animation?.tablet?.enabled && appearTablet !== 'none' || animation?.mobile?.enabled && appearMobile !== 'none' || !!hasAnimationInteraction;
233
+ const enableAnimationWhenInit = animation?.desktop?.enabled && (appearDesktop !== 'none' || hoverDesktop !== 'none') || animation?.tablet?.enabled && appearTablet !== 'none' || animation?.mobile?.enabled && appearMobile !== 'none';
234
+ if (!enableAnimation) return liquid;
237
235
  const getInitVisibility = (device)=>getSettingsByDevice(device)?.enabled && ![
238
236
  'shake',
239
237
  'none'
@@ -245,11 +243,12 @@ const appendAnimation = (props, liquid)=>{
245
243
  };
246
244
  return render.template`
247
245
  <gp-animation
246
+ display-init="${!displayInitInteraction ? 'hide' : 'show'}"
248
247
  gp-data='${JSON.stringify({
249
248
  config: animation,
250
249
  tag,
251
250
  opacity,
252
- isEnableInit: enableAnimation
251
+ notEnableAnimationWhenInit: !enableAnimationWhenInit
253
252
  })}'
254
253
  style="${{
255
254
  display: 'contents'
@@ -6,6 +6,7 @@
6
6
  title
7
7
  description
8
8
  descriptionHtml
9
+ createdAt
9
10
  handle
10
11
  averageRating
11
12
  isStorefront
@@ -28,6 +28,10 @@
28
28
  themePageCustomFonts {
29
29
  ...CustomFontSelect
30
30
  }
31
+ interaction {
32
+ id
33
+ value
34
+ }
31
35
  }
32
36
  `;
33
37
  const PreviewThemePageSelect = `
@@ -55,6 +59,10 @@ const PreviewThemePageSelect = `
55
59
  themePageCustomCode {
56
60
  ...CustomCodeSelect
57
61
  }
62
+ interaction {
63
+ id
64
+ value
65
+ }
58
66
  }
59
67
  `;
60
68
 
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ /* eslint-disable */ const ShopLibraryPageDocument = `
4
+ query ShopLibraryPage($shopLibraryPageId: ID!) {
5
+ shopLibraryPage(id: $shopLibraryPageId) {
6
+ id
7
+ name
8
+ sectionPosition
9
+ shopLibrarySections {
10
+ id
11
+ component
12
+ }
13
+ }
14
+ }
15
+ `;
16
+
17
+ exports.ShopLibraryPageDocument = ShopLibraryPageDocument;
@@ -46,7 +46,7 @@ const animations = ()=>{
46
46
  });
47
47
  return cloneOptions;
48
48
  };
49
- const slide = (target, options)=>{
49
+ const slide = (target, options, reverse)=>{
50
50
  const normalizedOptions = normalizeOptions(options);
51
51
  const { direction, distance } = normalizedOptions;
52
52
  const coordinate = [
@@ -67,11 +67,11 @@ const animations = ()=>{
67
67
  transform: `translate${coordinate}(0)`
68
68
  }
69
69
  ];
70
- return generateAnimationInstance(target, preset, {
70
+ return generateAnimationInstance(target, reverse ? preset.reverse() : preset, {
71
71
  ...generateOptions(normalizedOptions, 500)
72
72
  });
73
73
  };
74
- const fade = (target, options)=>{
74
+ const fade = (target, options, reverse)=>{
75
75
  const normalizedOptions = normalizeOptions(options);
76
76
  const preset = [
77
77
  {
@@ -81,7 +81,7 @@ const animations = ()=>{
81
81
  opacity: 1
82
82
  }
83
83
  ];
84
- return generateAnimationInstance(target, preset, {
84
+ return generateAnimationInstance(target, reverse ? preset.reverse() : preset, {
85
85
  ...generateOptions(normalizedOptions, 500)
86
86
  });
87
87
  };
@@ -101,7 +101,7 @@ const animations = ()=>{
101
101
  easing: EASING[easing ?? 'linear']
102
102
  };
103
103
  };
104
- const zoom = (target, options)=>{
104
+ const zoom = (target, options, reverse)=>{
105
105
  const normalizedOptions = normalizeOptions(options);
106
106
  const { scale, zoomDirection, isFade } = normalizedOptions;
107
107
  const [i1, i2] = scale.in;
@@ -127,7 +127,7 @@ const animations = ()=>{
127
127
  }
128
128
  ];
129
129
  const zoomPreset = zoomDirection === 'in' ? zoomInPreset : zoomOutPreset;
130
- return generateAnimationInstance(target, zoomPreset, {
130
+ return generateAnimationInstance(target, reverse ? zoomPreset.reverse() : zoomPreset, {
131
131
  ...generateOptions(normalizedOptions, 700)
132
132
  });
133
133
  };
@@ -121,7 +121,7 @@ const getBgAttachmentByDevice = (background, device)=>{
121
121
  return background?.[device]?.attachment;
122
122
  };
123
123
  const composeBackgroundCss = (backgroundColor)=>{
124
- return `${backgroundColor ? `background-color: ${colors.getSingleColorVariable(backgroundColor)} !important;` : undefined}`;
124
+ return `${backgroundColor ? `background-color: ${colors.getSingleColorVariable(backgroundColor)};` : undefined}`;
125
125
  };
126
126
  const makeFixedBgAttachment = (background)=>{
127
127
  if (!background) return;
@@ -114,9 +114,9 @@ const getGlobalColorResponsiveStyle = (type, data)=>{
114
114
  }
115
115
  }));
116
116
  };
117
- const getGlobalColorStateStyle = (type, data)=>{
117
+ const getGlobalColorStateStyle = (type, data, states)=>{
118
118
  if (!data) return {};
119
- return Object.fromEntries(Object.entries(data).map(([state, value])=>{
119
+ return Object.fromEntries(Object.entries(data).filter(([state])=>states?.length ? states?.includes(state) : true).map(([state, value])=>{
120
120
  if (state === 'active') return [];
121
121
  return [
122
122
  `-${constant.stateMapping?.[state] || ''}-${type}`,
@@ -101,6 +101,9 @@ function composeAdvanceStyle(data, tag, pageType) {
101
101
  if (attr === 'rounded') {
102
102
  Object.assign(styles, radius.composeRadius(value));
103
103
  }
104
+ if (attr === 'boxShadow') {
105
+ Object.assign(styles, shadow.getResonsiveStyleShadow(value, 'box-shadow', hasBoxShadow));
106
+ }
104
107
  if (composeAttr === 'desktop') {
105
108
  switch(attr){
106
109
  case 'padding':
@@ -215,20 +218,20 @@ function composeAdvanceStyle(data, tag, pageType) {
215
218
  }));
216
219
  }
217
220
  }
218
- if (attr === 'blockPadding' && pageType === "POST_PURCHASE") {
221
+ if (attr === 'blockPadding' && pageType === 'POST_PURCHASE') {
219
222
  const valueMapped = postPurchasePaddingMapping[value];
220
223
  styles[`--pb`] = getAttrValue(attr, valueMapped, tag);
221
224
  styles[`--pt`] = getAttrValue(attr, valueMapped, tag);
222
225
  styles[`--mb`] = '0px';
223
226
  styles[`--mt`] = '0px';
224
227
  }
225
- if (attr === 'inlinePadding' && pageType === "POST_PURCHASE") {
228
+ if (attr === 'inlinePadding' && pageType === 'POST_PURCHASE') {
226
229
  const valueMapped = postPurchasePaddingMapping[value];
227
230
  styles[`--pl`] = getAttrValue(attr, valueMapped, tag);
228
231
  styles[`--pr`] = getAttrValue(attr, valueMapped, tag);
229
232
  }
230
233
  });
231
- const advancedPostPurchaseStyles = pageType === "POST_PURCHASE" ? composeAdvanceStyleForPostPurchase(data, tag) : {};
234
+ const advancedPostPurchaseStyles = pageType === 'POST_PURCHASE' ? composeAdvanceStyleForPostPurchase(data, tag) : {};
232
235
  return {
233
236
  ...styles,
234
237
  ...advancedPostPurchaseStyles
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ require('react/jsx-runtime');
4
+ require('zustand');
5
+ require('react');
6
+ require('swr');
7
+ var PageContext = require('../../contexts/PageContext.js');
8
+ require('@gem-sdk/adapter-shopify');
9
+ require('swr/mutation');
10
+ require('swr/infinite');
11
+ require('vanilla-lazyload');
12
+ require('../../hooks/useCartUI.js');
13
+ require('react-transition-group');
14
+ require('@gem-sdk/core');
15
+ require('classnames');
16
+ require('dayjs');
17
+ require('../convert.js');
18
+
19
+ const useInteraction = ()=>{
20
+ const setInteractionIsSelectOnPage = PageContext.usePageStore((s)=>s.setInteractionIsSelectOnPage);
21
+ const onListener = ({ event, selector }, callback)=>{
22
+ const element = document.querySelector(selector);
23
+ if (!element) return;
24
+ element.addEventListener(event, (e)=>{
25
+ const event = e;
26
+ const params = event.detail;
27
+ if (callback) callback(params);
28
+ });
29
+ };
30
+ const trigger = ({ event, data, selector })=>{
31
+ const element = document.querySelector(selector);
32
+ if (!element) return;
33
+ const eventDispatch = new CustomEvent(event, {
34
+ bubbles: false,
35
+ cancelable: true,
36
+ detail: {
37
+ data
38
+ }
39
+ });
40
+ element.dispatchEvent(eventDispatch);
41
+ };
42
+ const saveToElementInteractionData = (element, key, value)=>{
43
+ const interactionData = element.getAttribute('gp-data-interaction');
44
+ const interactionDataJson = JSON.parse(interactionData || '{}');
45
+ element.setAttribute('gp-data-interaction', JSON.stringify({
46
+ ...interactionDataJson,
47
+ [key]: value
48
+ }));
49
+ };
50
+ const closeSelectOnPage = ()=>{
51
+ setInteractionIsSelectOnPage(false);
52
+ const event = new CustomEvent('editor:interaction:change-select-on-page', {
53
+ bubbles: true,
54
+ detail: false
55
+ });
56
+ window.dispatchEvent(event);
57
+ };
58
+ return {
59
+ onListener,
60
+ trigger,
61
+ saveToElementInteractionData,
62
+ closeSelectOnPage
63
+ };
64
+ };
65
+
66
+ exports.useInteraction = useInteraction;
@@ -36,7 +36,7 @@ const getProduct = async (fetcher, { id, isSample, isStorefront })=>{
36
36
  };
37
37
  };
38
38
  const orderBy = {
39
- field: 'CREATED_AT',
39
+ field: 'PLATFORM_CREATED_AT',
40
40
  direction: 'DESC'
41
41
  };
42
42
  const fetchProduct = async (fetcher, { id, isSample, isStorefront })=>{
@@ -58,6 +58,8 @@ const template = (strings, ...keys)=>{
58
58
  }
59
59
  }
60
60
  });
61
+ str = str.replaceAll(`style=""`, '');
62
+ str = str.replaceAll(`class=""`, '');
61
63
  return str;
62
64
  };
63
65
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -27,10 +27,10 @@ const getStyleShadow = (shadowStyle, isActiveState = false)=>{
27
27
  if (typeof value.distance == 'undefined') return {};
28
28
  const { value: distance, unit: unitDistance } = parseValueWithUnit(`${value?.distance}`);
29
29
  return {
30
- [`-${!isActiveState ? constant.stateMapping?.[state] || '' : ''}-${getShortname.getShortName(styleAppliedFor)}`]: isEnableShadow ? `${Math.cos(parseFloat(`${value?.angle}`) * Math.PI / 180) * parseFloat(`${distance}`)}${unitDistance} ${Math.sin(parseFloat(`${value?.angle}`) * Math.PI / 180) * parseFloat(`${distance}`)}${unitDistance} ${value?.blur} ${styleAppliedFor === 'box-shadow' ? value?.spread + ' ' : ''}${colors.getSingleColorVariable(value?.color)}` : 'none'
30
+ [`-${!isActiveState ? constant.stateMapping?.[state] || '' : ''}-${getShortname.getShortName(styleAppliedFor)}${shadowStyle.screen ? `-${shadowStyle.screen}` : ''}`]: isEnableShadow ? `${Math.cos(parseFloat(`${value?.angle}`) * Math.PI / 180) * parseFloat(`${distance}`)}${unitDistance} ${Math.sin(parseFloat(`${value?.angle}`) * Math.PI / 180) * parseFloat(`${distance}`)}${unitDistance} ${value?.blur} ${styleAppliedFor === 'box-shadow' ? value?.spread + ' ' : ''}${colors.getSingleColorVariable(value?.color)}` : 'none'
31
31
  };
32
32
  };
33
- const getStyleShadowState = (shadow, styleAppliedFor, isEnableShadow)=>{
33
+ const getStyleShadowState = (shadow, styleAppliedFor, isEnableShadow, screen)=>{
34
34
  if (!shadow || !styleAppliedFor) return {};
35
35
  const style = {};
36
36
  for (const [key, value] of Object.entries(shadow)){
@@ -38,11 +38,22 @@ const getStyleShadowState = (shadow, styleAppliedFor, isEnableShadow)=>{
38
38
  value: value,
39
39
  state: key,
40
40
  styleAppliedFor,
41
- isEnableShadow: isEnableShadow?.[key]
41
+ isEnableShadow: isEnableShadow?.[key],
42
+ screen: screen ?? ''
42
43
  }));
43
44
  }
44
45
  return style;
45
46
  };
47
+ const getResonsiveStyleShadow = (value, styleAppliedFor, isEnableShadow)=>{
48
+ if (!value) return undefined;
49
+ if ('desktop' in value || 'tablet' in value || 'mobile' in value) {
50
+ return {
51
+ ...getStyleShadowState(value.desktop, styleAppliedFor, isEnableShadow.desktop),
52
+ ...value.tablet && (isEnableShadow.tablet ?? isEnableShadow.desktop) ? getStyleShadowState(value.tablet, styleAppliedFor, isEnableShadow.tablet ?? isEnableShadow.desktop, 'tablet') : undefined,
53
+ ...value.mobile && (isEnableShadow.mobile ?? isEnableShadow.tablet ?? isEnableShadow.desktop) ? getStyleShadowState(value.mobile, styleAppliedFor, isEnableShadow.mobile ?? isEnableShadow.tablet ?? isEnableShadow.desktop, 'mobile') : undefined
54
+ };
55
+ }
56
+ };
46
57
  const composeShadowCss = ({ hasBoxShadow, boxShadowValue, important })=>{
47
58
  if (!hasBoxShadow) return undefined;
48
59
  if (!boxShadowValue) return undefined;
@@ -52,6 +63,7 @@ const composeShadowCss = ({ hasBoxShadow, boxShadowValue, important })=>{
52
63
  };
53
64
 
54
65
  exports.composeShadowCss = composeShadowCss;
66
+ exports.getResonsiveStyleShadow = getResonsiveStyleShadow;
55
67
  exports.getStyleShadow = getStyleShadow;
56
68
  exports.getStyleShadowState = getStyleShadowState;
57
69
  exports.parseValueWithUnit = parseValueWithUnit;
@@ -13,7 +13,7 @@ const addAppBlockId = (component)=>{
13
13
  };
14
14
  const handleSetBlockId = (component)=>{
15
15
  const { tag, uid } = component;
16
- if (component.settings.appBlockId === undefined) return component;
16
+ if (component.settings?.appBlockId === undefined) return component;
17
17
  component.settings.appBlockId = composeAppBlockId.composeAppBlockId(tag, uid);
18
18
  };
19
19
 
@@ -54,13 +54,90 @@ const PumperBundlesVolumeDiscountConfig = {
54
54
  appId: '0856870d-2aca-4b1e-a662-cf1797f61270'
55
55
  }
56
56
  };
57
+ const UnlimitedBundlesDiscountsConfig = {
58
+ UnlimitedBundlesDiscounts: {
59
+ appName: 'unlimited-bundles',
60
+ appId: 'd33d0f48-dee0-42a0-b156-2a5dce91814a'
61
+ }
62
+ };
63
+ const KiteFreeGiftDiscountConfig = {
64
+ KiteFreeGiftDiscount: {
65
+ appName: 'kite-free-gift-discounts',
66
+ appId: '2c7302c4-455d-4078-a829-48563ba26089'
67
+ }
68
+ };
69
+ const FastBundleBundlesDiscountsConfig = {
70
+ FastBundleBundlesDiscounts: {
71
+ appName: 'fast-bundle',
72
+ appId: '9e87fbe2-9041-4c23-acf5-322413994cef'
73
+ }
74
+ };
75
+ const SimpleBundlesKitsConfig = {
76
+ SimpleBundlesKits: {
77
+ appName: 'simple-bundles-kits',
78
+ appId: 'e553276b-36b2-446d-b80a-aa47fe5f96ac'
79
+ }
80
+ };
81
+ const EasyBundleBuilderSkailamaConfig = {
82
+ EasyBundleBuilderSkailama: {
83
+ appName: 'easy-bundles',
84
+ appId: '05b1325c-6303-4da5-8e2f-b13ab2a50e1a'
85
+ }
86
+ };
87
+ const AssortionUpsellBundlesConfig = {
88
+ AssortionUpsellBundles: {
89
+ appName: 'assortion',
90
+ appId: '5588d7f9-a5bc-4f4a-9c54-39b7e081dd23'
91
+ }
92
+ };
93
+ const PreorderNowPreOrderPqConfig = {
94
+ PreorderNowPreOrderPq: {
95
+ appName: 'preorder-now-pre-order-pq',
96
+ appId: '551fab2c-3af6-4a8f-ba21-736a71cb4540'
97
+ }
98
+ };
99
+ const KPreorderNowPartialPaymentConfig = {
100
+ KPreorderNowPartialPayment: {
101
+ appName: 'k-preorder-now-partial-payment',
102
+ appId: '65705a60-a3b0-43ae-9dc8-15db78d76b3b'
103
+ }
104
+ };
105
+ const FlyBundlesUpsellsFbtConfig = {
106
+ FlyBundlesUpsellsFbt: {
107
+ appName: 'fly-bundles-upsell',
108
+ appId: '26807bdc-c2ed-4a25-afb2-06e6b1ebf843'
109
+ }
110
+ };
111
+ const PreorderNowWodPresaleConfig = {
112
+ PreorderNowWodPresale: {
113
+ appName: 'preorder-now-wod-presale',
114
+ appId: 'fdf17d17-ef12-4a7b-8383-20cc1fc2a4b6'
115
+ }
116
+ };
117
+ const JunipProductReviewsUgcConfig = {
118
+ JunipProductReviewsUgc: {
119
+ appName: 'junip-product-reviews-ugc',
120
+ appId: 'dc14f5a8-ed15-41b1-ad08-cfba23f9789b'
121
+ }
122
+ };
57
123
 
124
+ exports.AssortionUpsellBundlesConfig = AssortionUpsellBundlesConfig;
58
125
  exports.BonLoyaltyRewardsReferralsConfig = BonLoyaltyRewardsReferralsConfig;
126
+ exports.EasyBundleBuilderSkailamaConfig = EasyBundleBuilderSkailamaConfig;
127
+ exports.FastBundleBundlesDiscountsConfig = FastBundleBundlesDiscountsConfig;
128
+ exports.FlyBundlesUpsellsFbtConfig = FlyBundlesUpsellsFbtConfig;
129
+ exports.JunipProductReviewsUgcConfig = JunipProductReviewsUgcConfig;
130
+ exports.KPreorderNowPartialPaymentConfig = KPreorderNowPartialPaymentConfig;
131
+ exports.KiteFreeGiftDiscountConfig = KiteFreeGiftDiscountConfig;
59
132
  exports.LoopSubscriptionsConfig = LoopSubscriptionsConfig;
133
+ exports.PreorderNowPreOrderPqConfig = PreorderNowPreOrderPqConfig;
134
+ exports.PreorderNowWodPresaleConfig = PreorderNowWodPresaleConfig;
60
135
  exports.PumperBundlesVolumeDiscountConfig = PumperBundlesVolumeDiscountConfig;
61
136
  exports.RechargeSubscriptionsConfig = RechargeSubscriptionsConfig;
62
137
  exports.ReviewxpoProductReviewsAppConfig = ReviewxpoProductReviewsAppConfig;
63
138
  exports.SelleasyConfig = SelleasyConfig;
64
139
  exports.ShopifyFormsConfig = ShopifyFormsConfig;
140
+ exports.SimpleBundlesKitsConfig = SimpleBundlesKitsConfig;
65
141
  exports.SkioSubscriptionsYcS20Config = SkioSubscriptionsYcS20Config;
66
142
  exports.SubifySubscriptionsConfig = SubifySubscriptionsConfig;
143
+ exports.UnlimitedBundlesDiscountsConfig = UnlimitedBundlesDiscountsConfig;
@@ -81,6 +81,13 @@ const overrideSettings = (tag, currentSetting, appSetting)=>{
81
81
  ...currentSetting,
82
82
  form_id: appSetting['formId']
83
83
  };
84
+ case 'FlyBundlesUpsellsFbt':
85
+ {
86
+ return {
87
+ ...currentSetting,
88
+ bundle_id: appSetting?.['customBundleId']
89
+ };
90
+ }
84
91
  default:
85
92
  return currentSetting;
86
93
  }
@@ -105,7 +112,115 @@ const PumperBundlesVolumeDiscount = {
105
112
  }
106
113
  }
107
114
  };
115
+ const UnlimitedBundlesDiscounts = {
116
+ UnlimitedBundlesDiscounts: {
117
+ 'product-page-placeholder': null
118
+ }
119
+ };
120
+ const KiteFreeGiftDiscount = {
121
+ KiteFreeGiftDiscount: {
122
+ 'app-block': null
123
+ }
124
+ };
125
+ const FastBundleBundlesDiscounts = {
126
+ FastBundleBundlesDiscounts: {
127
+ all_bundles: null,
128
+ fbt_position: null,
129
+ product_bundles: null,
130
+ product_bundle_with_ids: null,
131
+ volume_position: null
132
+ }
133
+ };
134
+ const SimpleBundlesKits = {
135
+ SimpleBundlesKits: {
136
+ 'infinite-options-selector': null
137
+ }
138
+ };
139
+ const EasyBundleBuilderSkailama = {
140
+ EasyBundleBuilderSkailama: {
141
+ 'app-block-bundlePage': null
142
+ }
143
+ };
144
+ const AssortionUpsellBundles = {
145
+ AssortionUpsellBundles: {
146
+ volume: null,
147
+ bundle: null,
148
+ addon: null
149
+ }
150
+ };
151
+ const PreorderNowPreOrderPq = {
152
+ PreorderNowPreOrderPq: {
153
+ 'app-block-notifyapp-block-notify': null,
154
+ 'app-block-partial': null,
155
+ 'app-block-timer': null,
156
+ 'app-block': null
157
+ }
158
+ };
159
+ const KPreorderNowPartialPayment = {
160
+ KPreorderNowPartialPayment: {
161
+ 'kaktus-bundle': null
162
+ }
163
+ };
164
+ const FlyBundlesUpsellsFbt = {
165
+ FlyBundlesUpsellsFbt: {
166
+ 'app-block-volume': null,
167
+ 'app-block-upsell-block': null,
168
+ 'app-block-fbt': null,
169
+ 'app-block-custom': {
170
+ bundle_id: ''
171
+ }
172
+ }
173
+ };
174
+ const PreorderNowWodPresale = {
175
+ PreorderNowWodPresale: {
176
+ 'app-block': null,
177
+ 'popups-block': null
178
+ }
179
+ };
180
+ const JunipProductReviewsUgc = {
181
+ JunipProductReviewsUgc: {
182
+ 'junip-review-carousel': {
183
+ reviewsType: 'product_reviews',
184
+ showSummary: true,
185
+ title: 'Reviews',
186
+ paddingTop: 48,
187
+ paddingBottom: 48,
188
+ containerClass: ''
189
+ },
190
+ 'junip-ugc-gallery': {
191
+ layout: 'scroll',
192
+ title: '',
193
+ paddingTop: 48,
194
+ paddingBottom: 48,
195
+ containerClass: ''
196
+ },
197
+ 'junip-product-review': {
198
+ product: '{{product}}'
199
+ },
200
+ 'junip-product-summary': {
201
+ product: '{{product}}'
202
+ },
203
+ 'junip-reviews': {
204
+ layout: 'list',
205
+ reviewsType: 'all',
206
+ showSummary: true,
207
+ reviewsCount: 10,
208
+ containerClass: ''
209
+ }
210
+ }
211
+ };
108
212
  const composeSettingsByWidgetType = {
213
+ ...JunipProductReviewsUgc,
214
+ ...FlyBundlesUpsellsFbt,
215
+ ...PreorderNowWodPresale,
216
+ ...KPreorderNowPartialPayment,
217
+ ...PreorderNowPreOrderPq,
218
+ ...AssortionUpsellBundles,
219
+ ...EasyBundleBuilderSkailama,
220
+ ...FastBundleBundlesDiscounts,
221
+ ...KiteFreeGiftDiscount,
222
+ ...UnlimitedBundlesDiscounts,
223
+ ...SimpleBundlesKits,
109
224
  ...PumperBundlesVolumeDiscount,
110
225
  ...ReviewxpoProductReviewsApp,
111
226
  ...ShopifyForms,
@@ -11,7 +11,18 @@ const mapShopifyAppMeta = {
11
11
  ...appConfig.SkioSubscriptionsYcS20Config,
12
12
  ...appConfig.ShopifyFormsConfig,
13
13
  ...appConfig.ReviewxpoProductReviewsAppConfig,
14
- ...appConfig.PumperBundlesVolumeDiscountConfig
14
+ ...appConfig.PumperBundlesVolumeDiscountConfig,
15
+ ...appConfig.UnlimitedBundlesDiscountsConfig,
16
+ ...appConfig.KiteFreeGiftDiscountConfig,
17
+ ...appConfig.FastBundleBundlesDiscountsConfig,
18
+ ...appConfig.SimpleBundlesKitsConfig,
19
+ ...appConfig.EasyBundleBuilderSkailamaConfig,
20
+ ...appConfig.AssortionUpsellBundlesConfig,
21
+ ...appConfig.PreorderNowPreOrderPqConfig,
22
+ ...appConfig.KPreorderNowPartialPaymentConfig,
23
+ ...appConfig.FlyBundlesUpsellsFbtConfig,
24
+ ...appConfig.PreorderNowWodPresaleConfig,
25
+ ...appConfig.JunipProductReviewsUgcConfig
15
26
  };
16
27
  const THIRD_PARTY_APP_BLOCK_ID_PREFIX = 'gp_app';
17
28