@useinsider/guido 3.2.0-beta.e01b42a → 3.2.0-beta.e0e56ef

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 (152) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +164 -96
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +91 -80
  5. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +7 -7
  6. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +12 -20
  7. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  8. package/dist/components/organisms/header/EditorActions.vue2.js +51 -36
  9. package/dist/components/organisms/header/RightSlot.vue.js +10 -10
  10. package/dist/components/organisms/header/RightSlot.vue2.js +16 -13
  11. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +51 -31
  12. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  13. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +23 -22
  14. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  15. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +37 -39
  16. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  17. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +30 -41
  18. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +15 -14
  19. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +18 -17
  20. package/dist/composables/useActionsApi.js +4 -4
  21. package/dist/composables/useFullStoryBridge.js +14 -0
  22. package/dist/composables/useHtmlCompiler.js +23 -21
  23. package/dist/composables/useHtmlValidator.js +40 -38
  24. package/dist/composables/usePreviewMode.js +20 -16
  25. package/dist/composables/useRibbonOffset.js +21 -0
  26. package/dist/composables/useSave.js +23 -15
  27. package/dist/composables/useStripo.js +52 -47
  28. package/dist/composables/validators/useLiquidValidator.js +42 -0
  29. package/dist/config/compiler/liquidCompilerRules.js +15 -0
  30. package/dist/config/compiler/recommendationCompilerRules.js +162 -43
  31. package/dist/config/compiler/unsubscribeCompilerRules.js +48 -45
  32. package/dist/config/compiler/utils/recommendationCompilerUtils.js +52 -46
  33. package/dist/config/migrator/checkboxMigrator.js +5 -3
  34. package/dist/config/migrator/index.js +9 -9
  35. package/dist/config/migrator/radioButtonMigrator.js +14 -12
  36. package/dist/config/migrator/recommendation/compositionMapper.js +98 -0
  37. package/dist/config/migrator/recommendation/extractors.js +27 -0
  38. package/dist/config/migrator/recommendation/htmlBuilder.js +496 -0
  39. package/dist/config/migrator/recommendation/parseLegacyConfig.js +33 -0
  40. package/dist/config/migrator/recommendation/settingsMapper.js +78 -0
  41. package/dist/config/migrator/recommendation/themeMapper.js +93 -0
  42. package/dist/config/migrator/recommendationMigrator.js +74 -290
  43. package/dist/enums/extensions/recommendationBlock.js +16 -12
  44. package/dist/enums/onboarding.js +7 -2
  45. package/dist/enums/recommendation.js +2 -2
  46. package/dist/enums/unsubscribe.js +34 -27
  47. package/dist/extensions/Blocks/CouponBlock/template.js +24 -13
  48. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +38 -38
  49. package/dist/extensions/Blocks/Items/enums/productEnums.js +19 -7
  50. package/dist/extensions/Blocks/Recommendation/block.js +35 -32
  51. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  52. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +5 -5
  53. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +27 -11
  54. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +185 -172
  55. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +21 -18
  56. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +99 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +6 -6
  58. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +3 -1
  59. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +211 -162
  60. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +27 -57
  61. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +14 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +31 -31
  63. package/dist/extensions/Blocks/Recommendation/services/configService.js +65 -29
  64. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +18 -17
  65. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +29 -25
  66. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +7 -5
  67. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +30 -29
  68. package/dist/extensions/Blocks/Recommendation/templates/index.js +7 -7
  69. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +3 -1
  70. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +21 -21
  71. package/dist/extensions/Blocks/Recommendation/templates/utils.js +57 -50
  72. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +17 -14
  73. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +13 -22
  74. package/dist/extensions/Blocks/Unsubscribe/block.js +11 -11
  75. package/dist/extensions/DynamicContent/dynamic-content.js +17 -12
  76. package/dist/guido.css +1 -1
  77. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +258 -235
  78. package/dist/node_modules/valibot/dist/index.js +450 -235
  79. package/dist/package.json.js +1 -1
  80. package/dist/services/recommendationApi.js +15 -15
  81. package/dist/services/stripoApi.js +9 -9
  82. package/dist/services/templateLibraryApi.js +48 -46
  83. package/dist/src/@types/config/defaults.d.ts +5 -1
  84. package/dist/src/@types/config/index.d.ts +3 -3
  85. package/dist/src/@types/config/schemas.d.ts +241 -0
  86. package/dist/src/@types/config/types.d.ts +11 -1
  87. package/dist/src/@types/generic.d.ts +0 -1
  88. package/dist/src/@types/save-as-template.d.ts +1 -0
  89. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  90. package/dist/src/composables/useActionsApi.d.ts +1 -1
  91. package/dist/src/composables/useConfig.d.ts +68 -0
  92. package/dist/src/composables/useFullStoryBridge.d.ts +11 -0
  93. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  94. package/dist/src/composables/validators/useLiquidValidator.d.ts +3 -0
  95. package/dist/src/config/compiler/liquidCompilerRules.d.ts +2 -0
  96. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +1 -1
  97. package/dist/src/config/migrator/index.d.ts +2 -1
  98. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +2 -0
  99. package/dist/src/config/migrator/recommendation/compositionMapper.test.d.ts +1 -0
  100. package/dist/src/config/migrator/recommendation/extractors.d.ts +7 -0
  101. package/dist/src/config/migrator/recommendation/extractors.test.d.ts +1 -0
  102. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +11 -0
  103. package/dist/src/config/migrator/recommendation/parseLegacyConfig.d.ts +15 -0
  104. package/dist/src/config/migrator/recommendation/parseLegacyConfig.test.d.ts +1 -0
  105. package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +7 -0
  106. package/dist/src/config/migrator/recommendation/settingsMapper.test.d.ts +1 -0
  107. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +5 -0
  108. package/dist/src/config/migrator/recommendation/themeMapper.test.d.ts +1 -0
  109. package/dist/src/config/migrator/recommendation/types.d.ts +205 -0
  110. package/dist/src/config/migrator/recommendationMigrator.d.ts +13 -1
  111. package/dist/src/config/migrator/recommendationMigrator.test.d.ts +1 -0
  112. package/dist/src/enums/extensions/recommendationBlock.d.ts +3 -0
  113. package/dist/src/enums/onboarding.d.ts +6 -0
  114. package/dist/src/enums/unsubscribe.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +2 -0
  116. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  117. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  118. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +3 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +35 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.test.d.ts +1 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +3 -20
  124. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +29 -0
  125. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +10 -0
  126. package/dist/src/extensions/Blocks/Recommendation/services/configService.test.d.ts +1 -0
  127. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +4 -4
  128. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +3 -3
  129. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +20 -3
  130. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +1 -1
  131. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -3
  132. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +3 -3
  133. package/dist/src/services/templateLibraryApi.d.ts +1 -1
  134. package/dist/src/stores/config.d.ts +612 -0
  135. package/dist/src/stores/onboarding.d.ts +4 -0
  136. package/dist/src/stores/preview.d.ts +3 -0
  137. package/dist/src/utils/genericUtil.d.ts +1 -1
  138. package/dist/src/utils/htmlCompiler.d.ts +2 -1
  139. package/dist/src/utils/htmlEscape.d.ts +5 -0
  140. package/dist/src/utils/htmlEscape.test.d.ts +1 -0
  141. package/dist/static/styles/base.css.js +7 -2
  142. package/dist/static/styles/components/button.css.js +3 -2
  143. package/dist/static/styles/components/loader.css.js +4 -0
  144. package/dist/stores/onboarding.js +4 -0
  145. package/dist/stores/preview.js +4 -3
  146. package/dist/utils/genericUtil.js +42 -20
  147. package/dist/utils/htmlCompiler.js +48 -41
  148. package/dist/utils/htmlEscape.js +13 -0
  149. package/dist/utils/templatePreparation.js +36 -25
  150. package/dist/utils/tooltipUtils.js +4 -5
  151. package/package.json +8 -4
  152. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
@@ -1,21 +1,22 @@
1
- import { TextPaddingsBuiltInControl as d, ButtonBackgroundColorBuiltInControl as c, TextFontFamilyBuiltInControl as u, TextStyleBuiltInControl as i, TextSizeBuiltInControl as C, TextColorBuiltInControl as g, TextAlignBuiltInControl as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ import { TextPaddingsBuiltInControl as d, ButtonBackgroundColorBuiltInControl as i, TextFontFamilyBuiltInControl as u, TextStyleBuiltInControl as c, TextSizeBuiltInControl as C, TextColorBuiltInControl as g, TextAlignBuiltInControl as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { RecommendationBlockId as l } from "../../constants/blockIds.js";
3
3
  import { RecommendationControlId as e } from "../../constants/controlIds.js";
4
- import { BLOCK_ROOT_SELECTOR as I, ATTR_PRODUCT_ATTR as s } from "../../constants/selectors.js";
4
+ import { BLOCK_ROOT_SELECTOR as A, ATTR_PRODUCT_ATTR as s } from "../../constants/selectors.js";
5
+ import { CustomAttributeTextTrimControl as I } from "./textTrim.js";
5
6
  function o(t) {
6
- const n = t.closest(I);
7
- if (!n)
7
+ const r = t.closest(A);
8
+ if (!r)
8
9
  return [];
9
- const r = t.asElement().getAttribute(s);
10
- if (r) {
11
- const T = `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"][${s}="${r}"]`;
12
- return n.querySelectorAll(T);
10
+ const n = t.asElement().getAttribute(s);
11
+ if (n) {
12
+ const T = `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"][${s}="${n}"]`;
13
+ return r.querySelectorAll(T);
13
14
  }
14
- return n.querySelectorAll(
15
+ return r.querySelectorAll(
15
16
  `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"]`
16
17
  );
17
18
  }
18
- const A = class extends a {
19
+ const m = class extends a {
19
20
  getId() {
20
21
  return e.CUSTOM_ATTR_ALIGN;
21
22
  }
@@ -36,7 +37,7 @@ const A = class extends a {
36
37
  getTargetNodes(t) {
37
38
  return o(t);
38
39
  }
39
- }, m = class extends i {
40
+ }, x = class extends c {
40
41
  getId() {
41
42
  return e.CUSTOM_ATTR_STYLE;
42
43
  }
@@ -50,29 +51,31 @@ const A = class extends a {
50
51
  getTargetNodes(t) {
51
52
  return o(t);
52
53
  }
53
- }, R = class extends c {
54
+ }, R = class extends i {
54
55
  getId() {
55
56
  return e.CUSTOM_ATTR_BACKGROUND;
56
57
  }
57
58
  getTargetNodes(t) {
58
59
  return o(t);
59
60
  }
60
- }, x = class extends d {
61
+ }, B = class extends d {
61
62
  getId() {
62
63
  return e.CUSTOM_ATTR_PADDINGS;
63
64
  }
64
65
  getTargetNodes(t) {
65
66
  return o(t);
66
67
  }
67
- }, k = {
68
- align: A,
68
+ }, p = {
69
+ align: m,
69
70
  color: _,
70
71
  size: S,
71
- style: m,
72
+ style: x,
72
73
  fontFamily: O,
73
74
  background: R,
74
- paddings: x
75
+ paddings: B,
76
+ textTrim: I
75
77
  };
76
78
  export {
77
- k as CustomAttributeControls
79
+ p as CustomAttributeControls,
80
+ I as CustomAttributeTextTrimControl
78
81
  };
@@ -0,0 +1,99 @@
1
+ import { ModificationDescription as T } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as m } from "../../../common-control.js";
3
+ import { RecommendationBlockId as n } from "../../constants/blockIds.js";
4
+ import { RecommendationControlId as l } from "../../constants/controlIds.js";
5
+ import { BLOCK_ROOT_SELECTOR as u, ATTR_PRODUCT_ATTR as a } from "../../constants/selectors.js";
6
+ import { CSS_CLASS_TEXT_TRIM as o, ensureTextTrimCssRulesExist as c } from "../shared/textTrimCssRules.js";
7
+ const i = {
8
+ TEXT_TRIM_ENABLED: "customAttrTextTrimEnabled"
9
+ };
10
+ class g extends m {
11
+ getId() {
12
+ return l.CUSTOM_ATTR_TEXT_TRIM;
13
+ }
14
+ getTemplate() {
15
+ return `
16
+ <hr style="margin: 0; border: none; border-top: 1px solid #e0e0e0;" />
17
+ <div class="custom-attr-text-trim-control-container">
18
+ ${this._GuTwoColumns([
19
+ this._GuLabel({ text: this.api.translate("Trim Long Text") }),
20
+ this._GuToggle(i.TEXT_TRIM_ENABLED)
21
+ ])}
22
+ </div>
23
+ `;
24
+ }
25
+ onRender() {
26
+ this._setFormValues(), this._listenToFormUpdates();
27
+ }
28
+ onTemplateNodeUpdated(t) {
29
+ super.onTemplateNodeUpdated(t), this._setFormValues();
30
+ }
31
+ // ========================================================================
32
+ // State Reading
33
+ // ========================================================================
34
+ _setFormValues() {
35
+ this.api.updateValues({
36
+ [i.TEXT_TRIM_ENABLED]: this._getCurrentTrimState()
37
+ });
38
+ }
39
+ _getCurrentTrimState() {
40
+ if (!this.currentNode || !("hasClass" in this.currentNode))
41
+ return !1;
42
+ if (this.currentNode.hasClass(o))
43
+ return !0;
44
+ const t = this._getTargetElements();
45
+ return t.length > 0 && "hasClass" in t[0] ? t[0].hasClass(o) : !1;
46
+ }
47
+ // ========================================================================
48
+ // Target Element Discovery (per-attribute scoping)
49
+ // ========================================================================
50
+ /**
51
+ * Finds all custom attribute elements of the same type as the current node.
52
+ *
53
+ * Similar to getCustomAttrTargetNodes in customAttribute/index.ts, but adapted
54
+ * for CommonControl lifecycle where currentNode is a class property (not a
55
+ * parameter from Stripo's getTargetNodes override).
56
+ */
57
+ _getTargetElements() {
58
+ if (!this.currentNode || !("closest" in this.currentNode))
59
+ return [];
60
+ const t = this.currentNode.closest(u);
61
+ if (!t)
62
+ return [];
63
+ const e = "asElement" in this.currentNode ? this.currentNode.asElement().getAttribute(a) : null;
64
+ if (e) {
65
+ const s = `[esd-extension-block-id="${n.CUSTOM_ATTRIBUTE}"][${a}="${e}"]`;
66
+ return Array.from(t.querySelectorAll(s));
67
+ }
68
+ return Array.from(
69
+ t.querySelectorAll(
70
+ `[esd-extension-block-id="${n.CUSTOM_ATTRIBUTE}"]`
71
+ )
72
+ );
73
+ }
74
+ // ========================================================================
75
+ // Toggle Handler
76
+ // ========================================================================
77
+ _onTextTrimChange(t) {
78
+ const e = this._getTargetElements();
79
+ if (!e.length)
80
+ return;
81
+ t && c(this.api);
82
+ const r = this.api.getDocumentModifier();
83
+ e.forEach((s) => {
84
+ t ? r.modifyHtml(s).setClass(o) : r.modifyHtml(s).removeClass(o);
85
+ }), r.apply(
86
+ new T(
87
+ t ? "Enable custom attribute text trimming" : "Disable custom attribute text trimming"
88
+ )
89
+ );
90
+ }
91
+ _listenToFormUpdates() {
92
+ this.api.onValueChanged(i.TEXT_TRIM_ENABLED, (t) => {
93
+ this._onTextTrimChange(t);
94
+ });
95
+ }
96
+ }
97
+ export {
98
+ g as CustomAttributeTextTrimControl
99
+ };
@@ -1,7 +1,7 @@
1
- var c = Object.defineProperty;
2
- var h = (s, i, t) => i in s ? c(s, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[i] = t;
3
- var a = (s, i, t) => h(s, typeof i != "symbol" ? i + "" : i, t);
4
- import { UEAttr as l } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ var l = Object.defineProperty;
2
+ var c = (s, i, t) => i in s ? l(s, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[i] = t;
3
+ var a = (s, i, t) => c(s, typeof i != "symbol" ? i + "" : i, t);
4
+ import { UEAttr as h } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
5
  import { CommonControl as d } from "../../../common-control.js";
6
6
  import { RecommendationConfigService as n } from "../../services/configService.js";
7
7
  import { useRecommendationExtensionStore as m } from "../../store/recommendation.js";
@@ -42,7 +42,7 @@ class T extends d {
42
42
  this._initializeSelectItems(), this._setFormValues(), this._listenToFormUpdates();
43
43
  }
44
44
  onTemplateNodeUpdated(t) {
45
- super.onTemplateNodeUpdated(t), this._setFormValues();
45
+ super.onTemplateNodeUpdated(t), this._initializeSelectItems(), this._setFormValues();
46
46
  }
47
47
  _setFormValues() {
48
48
  const t = n.getConfig(this.currentNode);
@@ -58,7 +58,7 @@ class T extends d {
58
58
  try {
59
59
  this.api.setUIEAttribute(
60
60
  e.ALGORITHM,
61
- l.SELECTPICKER.items,
61
+ h.SELECTPICKER.items,
62
62
  t
63
63
  );
64
64
  } catch (r) {
@@ -114,7 +114,9 @@ class H extends g {
114
114
  var r;
115
115
  super.onTemplateNodeUpdated(t);
116
116
  const e = this._getRecommendationIdFromNode(t);
117
- e !== null && e !== this.store.currentRecommendationId && this.store.setCurrentBlock(e), this._syncNodeConfigToStore(), e !== null && !((r = this.store.blockStates[e]) != null && r.isInitialized) && this._fetchBlockData(e), [
117
+ e !== null && e !== this.store.currentRecommendationId && this.store.setCurrentBlock(e), e !== null && this._syncNodeConfigToStore(), e !== null && !((r = this.store.blockStates[e]) != null && r.isInitialized) && this._fetchBlockData(e).then(() => {
118
+ this._initializeSubControls();
119
+ }), [
118
120
  this.layoutOrientationControl,
119
121
  this.productCountControl,
120
122
  this.algorithmControl,