@useinsider/guido 1.0.3-beta.f27e9ff → 1.0.3-beta.f711f2e

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 (200) hide show
  1. package/README.md +0 -6
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +80 -80
  4. package/dist/components/organisms/LoadingWrapper.vue.js +1 -1
  5. package/dist/components/organisms/header/RightSlot.vue.js +1 -1
  6. package/dist/components/organisms/header/RightSlot.vue2.js +20 -21
  7. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
  8. package/dist/composables/useActionsApi.js +1 -1
  9. package/dist/composables/useBlocksConfig.js +2 -1
  10. package/dist/composables/useGuidoActions.js +9 -19
  11. package/dist/composables/useHtmlCompiler.js +13 -15
  12. package/dist/composables/useHtmlValidator.js +35 -36
  13. package/dist/composables/useStripo.js +41 -47
  14. package/dist/config/compiler/unsubscribeCompilerRules.js +28 -33
  15. package/dist/enums/defaults.js +1 -2
  16. package/dist/enums/extensions/recommendationBlock.js +2 -2
  17. package/dist/enums/onboarding.js +3 -7
  18. package/dist/enums/unsubscribe.js +25 -27
  19. package/dist/extensions/Blocks/Checkbox/block.js +2 -5
  20. package/dist/extensions/Blocks/Checkbox/control.js +14 -15
  21. package/dist/extensions/Blocks/Checkbox/template.js +9 -14
  22. package/dist/extensions/Blocks/RadioButton/block.js +2 -5
  23. package/dist/extensions/Blocks/RadioButton/control.js +17 -18
  24. package/dist/extensions/Blocks/RadioButton/template.js +9 -18
  25. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
  26. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  27. package/dist/extensions/Blocks/Unsubscribe/block.js +41 -45
  28. package/dist/extensions/Blocks/common-control.js +110 -174
  29. package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
  30. package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
  31. package/dist/guido.css +1 -1
  32. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +168 -213
  33. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +12 -13
  34. package/dist/node_modules/lodash-es/keysIn.js +3 -3
  35. package/dist/package.json.js +1 -1
  36. package/dist/services/recommendationApi.js +19 -13
  37. package/dist/src/@types/generic.d.ts +6 -27
  38. package/dist/src/components/Guido.vue.d.ts +2 -3
  39. package/dist/src/composables/useGuidoActions.d.ts +0 -9
  40. package/dist/src/enums/onboarding.d.ts +0 -4
  41. package/dist/src/extensions/Blocks/Checkbox/block.d.ts +0 -1
  42. package/dist/src/extensions/Blocks/Checkbox/template.d.ts +1 -1
  43. package/dist/src/extensions/Blocks/RadioButton/block.d.ts +0 -1
  44. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  45. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  46. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +4 -3
  47. package/dist/src/extensions/Blocks/common-control.d.ts +7 -44
  48. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
  49. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
  50. package/dist/src/stores/config.d.ts +2 -3
  51. package/dist/src/stores/dynamic-content.d.ts +3 -3
  52. package/dist/src/stores/editor.d.ts +1 -1
  53. package/dist/src/stores/onboarding.d.ts +1 -335
  54. package/dist/src/stores/preview.d.ts +1 -1
  55. package/dist/src/stores/recommendation.d.ts +1 -1
  56. package/dist/src/stores/save-as-template.d.ts +1 -1
  57. package/dist/src/stores/toaster.d.ts +1 -1
  58. package/dist/src/stores/unsubscribe.d.ts +1 -1
  59. package/dist/src/stores/version-history.d.ts +1 -1
  60. package/dist/src/utils/genericUtil.d.ts +0 -1
  61. package/dist/static/styles/customEditorStyle.css.js +1 -1
  62. package/dist/stores/config.js +5 -5
  63. package/dist/stores/dynamic-content.js +2 -2
  64. package/dist/stores/editor.js +1 -1
  65. package/dist/stores/onboarding.js +36 -44
  66. package/dist/stores/preview.js +1 -1
  67. package/dist/stores/recommendation.js +3 -3
  68. package/dist/stores/save-as-template.js +2 -2
  69. package/dist/stores/toaster.js +1 -1
  70. package/dist/stores/unsubscribe.js +1 -1
  71. package/dist/stores/version-history.js +4 -4
  72. package/dist/utils/genericUtil.js +8 -18
  73. package/package.json +4 -4
  74. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +0 -21
  75. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +0 -99
  76. package/dist/config/compiler/itemsCompilerRules.js +0 -14
  77. package/dist/extensions/Blocks/Items/block.js +0 -67
  78. package/dist/extensions/Blocks/Items/controls/button/link.js +0 -68
  79. package/dist/extensions/Blocks/Items/controls/cardComposition.js +0 -193
  80. package/dist/extensions/Blocks/Items/controls/image/link.js +0 -68
  81. package/dist/extensions/Blocks/Items/controls/index.js +0 -217
  82. package/dist/extensions/Blocks/Items/controls/name/trimming.js +0 -70
  83. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +0 -107
  84. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +0 -123
  85. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +0 -76
  86. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -61
  87. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +0 -92
  88. package/dist/extensions/Blocks/Items/controls/settingsControl.js +0 -316
  89. package/dist/extensions/Blocks/Items/enums/controlEnums.js +0 -5
  90. package/dist/extensions/Blocks/Items/enums/productEnums.js +0 -274
  91. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -77
  92. package/dist/extensions/Blocks/Items/extension.js +0 -20
  93. package/dist/extensions/Blocks/Items/iconsRegistry.js +0 -32
  94. package/dist/extensions/Blocks/Items/items.css.js +0 -23
  95. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +0 -62
  96. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +0 -72
  97. package/dist/extensions/Blocks/Items/settingsPanel.js +0 -132
  98. package/dist/extensions/Blocks/Items/store/items-block.js +0 -75
  99. package/dist/extensions/Blocks/Items/template.js +0 -195
  100. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  101. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  102. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  103. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  104. package/dist/extensions/Blocks/controlFactories.js +0 -223
  105. package/dist/node_modules/lodash-es/_DataView.js +0 -6
  106. package/dist/node_modules/lodash-es/_Promise.js +0 -6
  107. package/dist/node_modules/lodash-es/_Set.js +0 -6
  108. package/dist/node_modules/lodash-es/_SetCache.js +0 -13
  109. package/dist/node_modules/lodash-es/_WeakMap.js +0 -6
  110. package/dist/node_modules/lodash-es/_arrayFilter.js +0 -10
  111. package/dist/node_modules/lodash-es/_arrayMap.js +0 -8
  112. package/dist/node_modules/lodash-es/_arrayPush.js +0 -8
  113. package/dist/node_modules/lodash-es/_arraySome.js +0 -9
  114. package/dist/node_modules/lodash-es/_baseEach.js +0 -6
  115. package/dist/node_modules/lodash-es/_baseFlatten.js +0 -13
  116. package/dist/node_modules/lodash-es/_baseForOwn.js +0 -8
  117. package/dist/node_modules/lodash-es/_baseGet.js +0 -11
  118. package/dist/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
  119. package/dist/node_modules/lodash-es/_baseHasIn.js +0 -6
  120. package/dist/node_modules/lodash-es/_baseIsEqual.js +0 -8
  121. package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +0 -32
  122. package/dist/node_modules/lodash-es/_baseIsMatch.js +0 -29
  123. package/dist/node_modules/lodash-es/_baseIteratee.js +0 -11
  124. package/dist/node_modules/lodash-es/_baseKeys.js +0 -14
  125. package/dist/node_modules/lodash-es/_baseMap.js +0 -11
  126. package/dist/node_modules/lodash-es/_baseMatches.js +0 -12
  127. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +0 -17
  128. package/dist/node_modules/lodash-es/_baseProperty.js +0 -8
  129. package/dist/node_modules/lodash-es/_basePropertyDeep.js +0 -9
  130. package/dist/node_modules/lodash-es/_baseRange.js +0 -9
  131. package/dist/node_modules/lodash-es/_baseToString.js +0 -18
  132. package/dist/node_modules/lodash-es/_baseTrim.js +0 -8
  133. package/dist/node_modules/lodash-es/_cacheHas.js +0 -6
  134. package/dist/node_modules/lodash-es/_castPath.js +0 -10
  135. package/dist/node_modules/lodash-es/_createBaseEach.js +0 -15
  136. package/dist/node_modules/lodash-es/_createRange.js +0 -11
  137. package/dist/node_modules/lodash-es/_equalArrays.js +0 -40
  138. package/dist/node_modules/lodash-es/_equalByTag.js +0 -45
  139. package/dist/node_modules/lodash-es/_equalObjects.js +0 -36
  140. package/dist/node_modules/lodash-es/_getAllKeys.js +0 -9
  141. package/dist/node_modules/lodash-es/_getMatchData.js +0 -12
  142. package/dist/node_modules/lodash-es/_getSymbols.js +0 -10
  143. package/dist/node_modules/lodash-es/_getTag.js +0 -28
  144. package/dist/node_modules/lodash-es/_hasPath.js +0 -19
  145. package/dist/node_modules/lodash-es/_isFlattenable.js +0 -10
  146. package/dist/node_modules/lodash-es/_isKey.js +0 -12
  147. package/dist/node_modules/lodash-es/_isStrictComparable.js +0 -7
  148. package/dist/node_modules/lodash-es/_mapToArray.js +0 -9
  149. package/dist/node_modules/lodash-es/_matchesStrictComparable.js +0 -8
  150. package/dist/node_modules/lodash-es/_memoizeCapped.js +0 -11
  151. package/dist/node_modules/lodash-es/_nativeKeys.js +0 -5
  152. package/dist/node_modules/lodash-es/_setCacheAdd.js +0 -7
  153. package/dist/node_modules/lodash-es/_setCacheHas.js +0 -6
  154. package/dist/node_modules/lodash-es/_setToArray.js +0 -9
  155. package/dist/node_modules/lodash-es/_stringToPath.js +0 -10
  156. package/dist/node_modules/lodash-es/_toKey.js +0 -10
  157. package/dist/node_modules/lodash-es/_trimmedEndIndex.js +0 -9
  158. package/dist/node_modules/lodash-es/flatMap.js +0 -8
  159. package/dist/node_modules/lodash-es/get.js +0 -8
  160. package/dist/node_modules/lodash-es/hasIn.js +0 -8
  161. package/dist/node_modules/lodash-es/isSymbol.js +0 -9
  162. package/dist/node_modules/lodash-es/keys.js +0 -9
  163. package/dist/node_modules/lodash-es/map.js +0 -11
  164. package/dist/node_modules/lodash-es/property.js +0 -10
  165. package/dist/node_modules/lodash-es/range.js +0 -5
  166. package/dist/node_modules/lodash-es/stubArray.js +0 -6
  167. package/dist/node_modules/lodash-es/toFinite.js +0 -14
  168. package/dist/node_modules/lodash-es/toNumber.js +0 -22
  169. package/dist/node_modules/lodash-es/toString.js +0 -7
  170. package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +0 -2
  171. package/dist/src/config/compiler/itemsCompilerRules.d.ts +0 -2
  172. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -27
  173. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -14
  174. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -33
  175. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -14
  176. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +0 -501
  177. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -14
  178. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -19
  179. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -21
  180. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -14
  181. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -13
  182. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -15
  183. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -48
  184. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +0 -62
  185. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +0 -163
  186. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -50
  187. package/dist/src/extensions/Blocks/Items/extension.d.ts +0 -2
  188. package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +0 -4
  189. package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +0 -4
  190. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -43
  191. package/dist/src/extensions/Blocks/Items/template.d.ts +0 -24
  192. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  193. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  194. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  195. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  196. package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -312
  197. package/dist/src/utils/environmentUtil.d.ts +0 -5
  198. package/dist/src/utils/pairProductVariables.d.ts +0 -7
  199. package/dist/utils/environmentUtil.js +0 -4
  200. package/dist/utils/pairProductVariables.js +0 -136
@@ -1,135 +1,78 @@
1
- var c = Object.defineProperty;
2
- var I = (a, r, e) => r in a ? c(a, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[r] = e;
3
- var l = (a, r, e) => I(a, typeof r != "symbol" ? r + "" : r, e);
4
- import { Control as O, UIElementType as t, UEAttr as $ } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- class _ extends O {
1
+ var u = Object.defineProperty;
2
+ var C = (o, n, E) => n in o ? u(o, n, { enumerable: !0, configurable: !0, writable: !0, value: E }) : o[n] = E;
3
+ var a = (o, n, E) => C(o, typeof n != "symbol" ? n + "" : n, E);
4
+ import { Control as R, UIElementType as $, UEAttr as e } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ class N extends R {
6
6
  constructor() {
7
7
  super(...arguments);
8
- l(this, "currentNode");
9
- l(this, "lastBlockInstanceId", null);
8
+ a(this, "currentNode");
10
9
  }
11
10
  getContainer() {
12
- var e;
13
- return (e = document.querySelector("ui-editor")) == null ? void 0 : e.shadowRoot;
11
+ var E;
12
+ return (E = document.querySelector("ui-editor")) == null ? void 0 : E.shadowRoot;
14
13
  }
15
- onTemplateNodeUpdated(e) {
16
- this.currentNode = e;
14
+ onTemplateNodeUpdated(E) {
15
+ this.currentNode = E;
17
16
  }
18
- onDestroy() {
19
- this.lastBlockInstanceId = null;
20
- }
21
- /**
22
- * Gets the config block element from the current node.
23
- * @returns The config block element or null if not found
24
- */
25
- getConfigBlock() {
26
- if (!this.currentNode)
27
- return null;
28
- const e = this.currentNode.closest(".items-block-v2");
29
- return e ? e.querySelector("esd-config-block") : null;
30
- }
31
- /**
32
- * Gets the current block instance ID from the config block.
33
- * @param blockInstanceIdAttribute - The attribute name for block instance ID (default: 'data-block-instance-id')
34
- * @returns The block instance ID or null if not found
35
- */
36
- getBlockInstanceId(e = "data-block-instance-id") {
37
- const n = this.getConfigBlock();
38
- return n ? n.getAttribute(e) : null;
39
- }
40
- /**
41
- * Handles block instance change detection and syncing.
42
- * This is a helper method for controls that need to sync attributes when switching between block instances.
43
- * @param syncFunction - Function to call when block instance changes (to sync from attributes)
44
- * @param updateUI - Function to call to update the UI (called both on change and when same block)
45
- * @param blockInstanceIdAttribute - The attribute name for block instance ID (default: 'data-block-instance-id')
46
- * @returns true if block instance changed, false otherwise
47
- */
48
- handleBlockInstanceChange(e, n, E = "data-block-instance-id") {
49
- const o = this.getBlockInstanceId(E);
50
- if (!o)
51
- return !1;
52
- const T = o !== this.lastBlockInstanceId;
53
- return T ? (this.currentNode && e(this.currentNode), n(), this.lastBlockInstanceId = o) : n(), T;
54
- }
55
- _GuLabel({ text: e, name: n = "", position: E = "top" }) {
56
- return `
57
- <${t.LABEL}
58
- style="${E === "top" ? "margin-bottom: 8px;" : ""}"
59
- ${$.LABEL.text}="${e}"
60
- ${$.LABEL.name}="${n || `${e} Label`}">
61
- </${t.LABEL}>
62
- `;
63
- }
64
- _GuToggle(e) {
17
+ _GuLabel({ text: E, name: t = "", position: T = "top" }) {
65
18
  return `
66
- <${t.SWITCHER}
67
- ${$.SWITCHER.name}="${e}">
68
- </${t.SWITCHER}>
19
+ <${$.LABEL}
20
+ style="${T === "top" ? "margin-bottom: 8px;" : ""}"
21
+ ${e.LABEL.text}="${E}"
22
+ ${e.LABEL.name}="${t || `${E} Label`}">
23
+ </${$.LABEL}>
69
24
  `;
70
25
  }
71
- _GuSelectItem({ text: e, value: n }) {
26
+ _GuToggle(E) {
72
27
  return `
73
- <${t.SELECT_ITEM}
74
- ${$.SELECT_ITEM.text}="${e}"
75
- ${$.SELECT_ITEM.value}="${n}">
76
- </${t.SELECT_ITEM}>`;
77
- }
78
- _GuSelect({ name: e, placeholder: n, options: E, className: o = "es-180w" }) {
79
- return `
80
- <${t.SELECTPICKER}
81
- class="${o}"
82
- ${$.SELECTPICKER.name}="${e}"
83
- ${$.SELECTPICKER.placeholder}="${n}">
84
- ${E.map((T) => this._GuSelectItem(T)).join("")}
85
- </${t.SELECTPICKER}>
28
+ <${$.SWITCHER}
29
+ ${e.SWITCHER.name}="${E}">
30
+ </${$.SWITCHER}>
86
31
  `;
87
32
  }
88
- _GuTextInput({ name: e, placeholder: n, className: E = "", disabled: o = !1 }) {
33
+ _GuSelectItem({ text: E, value: t }) {
89
34
  return `
90
- <${t.TEXT}
91
- class=${E}
92
- ${$.TEXT.name}="${e}"
93
- placeholder="${n || e}"
94
- ${o ? `${$.TEXT.disabled}="true"` : ""}>
95
- </${t.TEXT}>
96
- `;
35
+ <${$.SELECT_ITEM}
36
+ ${e.SELECT_ITEM.text}="${E}"
37
+ ${e.SELECT_ITEM.value}="${t}">
38
+ </${$.SELECT_ITEM}>`;
97
39
  }
98
- _GuCounter({ name: e, maxValue: n, minValue: E = 1, step: o = 1 }) {
40
+ _GuSelect({ name: E, placeholder: t, options: T, className: r = "es-180w" }) {
99
41
  return `
100
- <${t.COUNTER}
101
- ${$.COUNTER.name}="${e}"
102
- ${$.COUNTER.minValue}="${E}"
103
- ${$.COUNTER.maxValue}="${n}"
104
- ${$.COUNTER.step}="${o}">
105
- </${t.COUNTER}>
42
+ <${$.SELECTPICKER}
43
+ class="${r}"
44
+ ${e.SELECTPICKER.name}="${E}"
45
+ ${e.SELECTPICKER.placeholder}="${t}">
46
+ ${T.map((O) => this._GuSelectItem(O)).join("")}
47
+ </${$.SELECTPICKER}>
106
48
  `;
107
49
  }
108
- _GuRadioButtonItem({ text: e, value: n, icon: E }) {
50
+ _GuTextInput({ name: E, placeholder: t, className: T = "" }) {
109
51
  return `
110
- <${t.RADIO_ITEM}
111
- ${$.RADIO_ITEM.value}="${n}"
112
- ${e ? `${$.RADIO_ITEM.text}="${e}"` : ""}
113
- ${E ? `${$.RADIO_ITEM.icon}="${E}"` : ""}>
114
- </${t.RADIO_ITEM}>
52
+ <${$.TEXT}
53
+ class=${T}
54
+ ${e.TEXT.name}="${E}"
55
+ placeholder="${t || E}">
56
+ </${$.TEXT}>
115
57
  `;
116
58
  }
117
- _GuRadioButton({ name: e, buttons: n, id: E = "" }) {
59
+ _GuCounter({ name: E, maxValue: t, minValue: T = 1, step: r = 1 }) {
118
60
  return `
119
- <${t.RADIO_BUTTONS}
120
- ${E ? `id="${E}"` : ""}
121
- ${$.RADIO_BUTTONS.name}="${e}">
122
- ${n.map((o) => this._GuRadioButtonItem(o)).join("")}
123
- </${t.RADIO_BUTTONS}>
61
+ <${$.COUNTER}
62
+ ${e.COUNTER.name}="${E}"
63
+ ${e.COUNTER.minValue}="${T}"
64
+ ${e.COUNTER.maxValue}="${t}"
65
+ ${e.COUNTER.step}="${r}">
66
+ </${$.COUNTER}>
124
67
  `;
125
68
  }
126
- _GuButton({ name: e, label: n, id: E = "" }) {
69
+ _GuButton({ name: E, label: t, id: T = "" }) {
127
70
  return `
128
- <${t.BUTTON}
129
- ${$.BUTTON.name}="${e}"
130
- ${E ? `id="${E}"` : ""}
131
- ${$.BUTTON.caption}="${n}"}>
132
- </${t.BUTTON}>
71
+ <${$.BUTTON}
72
+ ${e.BUTTON.name}="${E}"
73
+ ${T ? `id="${T}"` : ""}
74
+ ${e.BUTTON.caption}="${t}"}>
75
+ </${$.BUTTON}>
133
76
  `;
134
77
  }
135
78
  /**
@@ -137,26 +80,19 @@ class _ extends O {
137
80
  * @param param0
138
81
  * @returns It returns a button with an icon.
139
82
  */
140
- _GuIconButton({ name: e, icon: n, className: E = "" }) {
83
+ _GuIconButton({ name: E, icon: t, className: T = "" }) {
141
84
  return `
142
- <${t.BUTTON}
143
- class="${E}"
144
- ${$.BUTTON.name}="${e}"
145
- ${$.BUTTON.icon}="${n}">
146
- </${t.BUTTON}>
147
- `;
148
- }
149
- _GuOneColumn(e, n = "") {
150
- return `
151
- <div class="container one-column ${n}">
152
- ${e.join("")}
153
- </div>
85
+ <${$.BUTTON}
86
+ class="${T}"
87
+ ${e.BUTTON.name}="${E}"
88
+ ${e.BUTTON.icon}="${t}">
89
+ </${$.BUTTON}>
154
90
  `;
155
91
  }
156
- _GuTwoColumns(e, n = "") {
92
+ _GuTwoColumns(E) {
157
93
  return `
158
- <div class="container two-columns ${n}">
159
- ${e.join("")}
94
+ <div class="checkbox-select-container container two-columns">
95
+ ${E.join("")}
160
96
  </div>
161
97
  `;
162
98
  }
@@ -167,82 +103,82 @@ class _ extends O {
167
103
  * @param itemLabels - Optional array of objects with key and label properties for display
168
104
  * @returns HTML string for the orderable control
169
105
  */
170
- _GuOrderable(e, n) {
171
- let E = "";
172
- n.forEach((T) => {
173
- const u = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
174
- E += `
175
- <${t.ORDERABLE_ITEM} ${u}="${T.key}">
176
- ${T.content}
177
- </${t.ORDERABLE_ITEM}>
106
+ _GuOrderable(E, t) {
107
+ let T = "";
108
+ t.forEach((O) => {
109
+ const L = e.ORDERABLE_ITEM && "name" in e.ORDERABLE_ITEM ? e.ORDERABLE_ITEM.name : "name";
110
+ T += `
111
+ <${$.ORDERABLE_ITEM} ${L}="${O.key}">
112
+ ${O.content}
113
+ </${$.ORDERABLE_ITEM}>
178
114
  `;
179
115
  });
180
- const o = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
116
+ const r = e.ORDERABLE && "name" in e.ORDERABLE ? e.ORDERABLE.name : "name";
181
117
  return `
182
- <${t.ORDERABLE} ${o}="${e}">
183
- ${E}
184
- </${t.ORDERABLE}>
118
+ <${$.ORDERABLE} ${r}="${E}">
119
+ ${T}
120
+ </${$.ORDERABLE}>
185
121
  `;
186
122
  }
187
- _GuNestedControl(e, n) {
123
+ _GuNestedControl(E, t) {
188
124
  return `
189
- <${t.NESTED_CONTROL} ${$.NESTED_CONTROL.controlId}="${e}">
190
- ${n}
191
- </${t.NESTED_CONTROL}>
125
+ <${$.NESTED_CONTROL} ${e.NESTED_CONTROL.controlId}="${E}">
126
+ ${t}
127
+ </${$.NESTED_CONTROL}>
192
128
  `;
193
129
  }
194
- _GuExpandable(e, n) {
130
+ _GuExpandable(E, t) {
195
131
  return `
196
- <${t.EXPANDABLE}>
197
- <${t.EXPANDABLE_HEADER}>
198
- <${t.LABEL} ${$.LABEL.text}="${e}"></${t.LABEL}>
199
- </${t.EXPANDABLE_HEADER}>
200
- <${t.EXPANDABLE_CONTENT}>
132
+ <${$.EXPANDABLE}>
133
+ <${$.EXPANDABLE_HEADER}>
134
+ <${$.LABEL} ${e.LABEL.text}="${E}"></${$.LABEL}>
135
+ </${$.EXPANDABLE_HEADER}>
136
+ <${$.EXPANDABLE_CONTENT}>
201
137
 
202
- ${n}
138
+ ${t}
203
139
 
204
- </${t.EXPANDABLE_CONTENT}>
205
- </${t.EXPANDABLE}>
140
+ </${$.EXPANDABLE_CONTENT}>
141
+ </${$.EXPANDABLE}>
206
142
  `;
207
143
  }
208
- _GuColorPicker(e) {
144
+ _GuColorPicker(E) {
209
145
  return `
210
- <${t.COLOR}
211
- ${$.COLOR.name}="${e}">
212
- </${t.COLOR}>
146
+ <${$.COLOR}
147
+ ${e.COLOR.name}="${E}">
148
+ </${$.COLOR}>
213
149
  `;
214
150
  }
215
- _GuFontFamily(e, n = "Select Font") {
151
+ _GuFontFamily(E, t = "Select Font") {
216
152
  return `
217
- <${t.FONT_FAMILY_SELECT}
218
- ${$.FONT_FAMILY_SELECT.name}="${e}"
219
- ${$.FONT_FAMILY_SELECT.placeholder}="${n}">
220
- </${t.FONT_FAMILY_SELECT}>
153
+ <${$.FONT_FAMILY_SELECT}
154
+ ${e.FONT_FAMILY_SELECT.name}="${E}"
155
+ ${e.FONT_FAMILY_SELECT.placeholder}="${t}">
156
+ </${$.FONT_FAMILY_SELECT}>
221
157
  `;
222
158
  }
223
- _GuRadioButtons(e, n) {
224
- const E = n.map((o) => `
225
- <${t.RADIO_ITEM}
226
- ${$.RADIO_ITEM.text}="${o.text}"
227
- ${$.RADIO_ITEM.value}="${o.value}">
228
- </${t.RADIO_ITEM}>
159
+ _GuRadioButtons(E, t) {
160
+ const T = t.map((r) => `
161
+ <${$.RADIO_ITEM}
162
+ ${e.RADIO_ITEM.text}="${r.text}"
163
+ ${e.RADIO_ITEM.value}="${r.value}">
164
+ </${$.RADIO_ITEM}>
229
165
  `).join("");
230
166
  return `
231
- <${t.RADIO_BUTTONS}
232
- ${$.RADIO_BUTTONS.name}="${e}">
233
- ${E}
234
- </${t.RADIO_BUTTONS}>
167
+ <${$.RADIO_BUTTONS}
168
+ ${e.RADIO_BUTTONS.name}="${E}">
169
+ ${T}
170
+ </${$.RADIO_BUTTONS}>
235
171
  `;
236
172
  }
237
- _GuCheckbox(e, n) {
173
+ _GuCheckbox(E, t) {
238
174
  return `
239
- <${t.CHECKBOX}
240
- ${$.CHECKBOX.name}="${e}"
241
- ${$.CHECKBOX.caption}="${n}">
242
- </${t.CHECKBOX}>
175
+ <${$.CHECKBOX}
176
+ ${e.CHECKBOX.name}="${E}"
177
+ ${e.CHECKBOX.caption}="${t}">
178
+ </${$.CHECKBOX}>
243
179
  `;
244
180
  }
245
181
  }
246
182
  export {
247
- _ as CommonControl
183
+ N as CommonControl
248
184
  };
@@ -1,33 +1,27 @@
1
- var d = Object.defineProperty;
2
- var m = (t, e, n) => e in t ? d(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
- var c = (t, e, n) => m(t, typeof e != "symbol" ? e + "" : e, n);
4
- class C {
1
+ var i = Object.defineProperty;
2
+ var d = (t, e, n) => e in t ? i(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
+ var a = (t, e, n) => d(t, typeof e != "symbol" ? e + "" : e, n);
4
+ class y {
5
5
  constructor() {
6
- c(this, "selectedDynamicContent", null);
7
- c(this, "dataSelectCallback", () => {
6
+ a(this, "selectedDynamicContent", null);
7
+ a(this, "dataSelectCallback", () => {
8
8
  });
9
- c(this, "closeDynamicContentHandler", null);
10
9
  }
11
- /**
12
- * Opens the merge tags library modal
13
- * @param dynamicContent - Currently selected dynamic content (if any)
14
- * @param onDataSelectCallback - Callback invoked when user selects a merge tag
15
- * @param position - Optional position data to place the modal
16
- */
17
- openMergeTagsLibrary(e, n, l) {
18
- this.closeDynamicContentHandler && (document.removeEventListener("dynamic-content:close", this.closeDynamicContentHandler), this.closeDynamicContentHandler = null), this.dataSelectCallback = n, this.selectedDynamicContent = e;
19
- const o = {
20
- attribute: e,
21
- position: l
22
- }, s = new CustomEvent("dynamic-content:open", {
23
- detail: o
10
+ openMergeTagsLibrary(e, n) {
11
+ this.dataSelectCallback = n, this.selectedDynamicContent = e;
12
+ const s = new CustomEvent("dynamic-content:open", {
13
+ detail: {
14
+ attribute: e
15
+ }
24
16
  });
25
- document.dispatchEvent(s), this.closeDynamicContentHandler = (i) => {
26
- const a = i.detail;
27
- this.selectedDynamicContent = a, a.text && a.value && this.dataSelectCallback(a);
28
- }, document.addEventListener("dynamic-content:close", this.closeDynamicContentHandler);
17
+ document.dispatchEvent(s);
18
+ const o = (l) => {
19
+ const c = l.detail;
20
+ this.selectedDynamicContent = c, c.text && c.value && this.dataSelectCallback(c), document.removeEventListener("dynamic-content:close", o);
21
+ };
22
+ document.addEventListener("dynamic-content:close", o);
29
23
  }
30
24
  }
31
25
  export {
32
- C as ExternalMergeTagsLibrary
26
+ y as ExternalMergeTagsLibrary
33
27
  };
@@ -1,156 +1,61 @@
1
- var c = Object.defineProperty;
2
- var g = (o, s, t) => s in o ? c(o, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[s] = t;
3
- var r = (o, s, t) => g(o, typeof s != "symbol" ? s + "" : s, t);
4
- import { mergeTagToDynamicContent as d, dynamicContentToMergeTags as m } from "../../utils/genericUtil.js";
5
- import { UIElement as u, UIElementType as a, UEAttr as h, UIElementTagRegistry as T } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- import { ExternalMergeTagsLibrary as y } from "./dynamic-content-modal.js";
7
- const l = "external-dynamic-content-ui-element", C = "button-add-dynamic-content";
8
- class p extends T {
9
- registerUiElements(s) {
10
- s[a.MERGETAGS] = l;
1
+ var o = Object.defineProperty;
2
+ var g = (n, t, e) => t in n ? o(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var i = (n, t, e) => g(n, typeof t != "symbol" ? t + "" : t, e);
4
+ import { dynamicContentToMergeTags as m } from "../../utils/genericUtil.js";
5
+ import { UIElement as c, UIElementType as r, UEAttr as l, UIElementTagRegistry as d } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { ExternalMergeTagsLibrary as T } from "./dynamic-content-modal.js";
7
+ const a = "external-dynamic-content-ui-element", y = "button-add-dynamic-content";
8
+ class p extends d {
9
+ registerUiElements(t) {
10
+ t[r.MERGETAGS] = a;
11
11
  }
12
12
  }
13
- class b extends u {
13
+ class C extends c {
14
14
  constructor() {
15
15
  super(...arguments);
16
- r(this, "mergeTagsButton", null);
17
- r(this, "mergeTagsLibrary", null);
18
- r(this, "clickListener", null);
19
- r(this, "lastClickedElement", null);
20
- r(this, "lastClickedFrame", null);
21
- r(this, "mousedownListener", null);
16
+ i(this, "mergeTagsButton", null);
17
+ i(this, "listener", () => {
18
+ });
19
+ i(this, "mergeTagsLibrary", null);
20
+ i(this, "selectedDynamicContent", { value: "", text: "" });
22
21
  }
23
22
  getId() {
24
- return l;
23
+ return a;
25
24
  }
26
- onRender(t) {
27
- var e;
28
- this.mergeTagsButton = t.querySelector("#guido__btn-add-dynamic-content"), this.clickListener = this._onClick.bind(this), (e = this.mergeTagsButton) == null || e.addEventListener("click", this.clickListener), this._setupCoordinateTracking();
25
+ onRender(e) {
26
+ var s;
27
+ this.listener = this._onClick.bind(this), this.mergeTagsButton = e.querySelector("#guido__btn-add-dynamic-content"), (s = this.mergeTagsButton) == null || s.addEventListener("click", this.listener);
29
28
  }
30
29
  onDestroy() {
31
- var t;
32
- this.clickListener && ((t = this.mergeTagsButton) == null || t.removeEventListener("click", this.clickListener)), this._cleanupCoordinateTracking(), this.mergeTagsButton = null, this.clickListener = null, this.lastClickedElement = null, this.lastClickedFrame = null;
30
+ var e;
31
+ (e = this.mergeTagsButton) == null || e.removeEventListener("click", this.listener);
33
32
  }
34
33
  _onClick() {
35
34
  this.openMergeTagLibrary();
36
35
  }
37
- /**
38
- * Called when Stripo detects merge tag interactions
39
- * This is the key method that receives notifications about merge tag clicks
40
- * @param name - Attribute name (e.g., 'mergeTag')
41
- * @param value - MergeTag object with label, value, selStart, selEnd, etc.
42
- */
43
- onAttributeUpdated(t, e) {
44
- if (t !== "mergeTag" || !(e != null && e.value))
45
- return;
46
- const n = d(e), i = this._getLastClickedPosition();
47
- this.lastClickedElement = null, this.lastClickedFrame = null, this._openDynamicContentLibrary(n, i);
48
- }
49
36
  openMergeTagLibrary() {
50
- const t = this._getButtonPosition(), e = { value: "", text: "" };
51
- this._openDynamicContentLibrary(e, t);
52
- }
53
- /**
54
- * Opens the dynamic content library for external apps
55
- * Dispatches event with dynamic content data and position
56
- */
57
- _openDynamicContentLibrary(t, e) {
58
- this.mergeTagsLibrary || (this.mergeTagsLibrary = new y()), this.mergeTagsLibrary.openMergeTagsLibrary(
59
- t,
60
- (n) => {
61
- n.text && n.value ? this.api.triggerValueChange(m([n])[0]) : this.api.triggerValueChange(null);
62
- },
63
- e
37
+ this.mergeTagsLibrary || (this.mergeTagsLibrary = new T()), this.mergeTagsLibrary.openMergeTagsLibrary(
38
+ this.selectedDynamicContent,
39
+ (e) => {
40
+ this.api.onValueChanged(m([e])[0]);
41
+ }
64
42
  );
65
43
  }
66
- /**
67
- * Gets the button's position on the screen
68
- * Used to position the modal or anything else near the button
69
- */
70
- _getButtonPosition() {
71
- if (!this.mergeTagsButton)
72
- return { x: 0, y: 0, width: 0, height: 0 };
73
- const { x: t, y: e, width: n, height: i } = this.mergeTagsButton.getBoundingClientRect();
74
- return { x: t, y: e, width: n, height: i };
75
- }
76
- /**
77
- * Sets up coordinate tracking for merge tag clicks in the iframe
78
- * Workaround from Stripo intercepting click events - tracks mousedown events instead
79
- */
80
- _setupCoordinateTracking() {
81
- var e;
82
- const t = this._getEditorFrame();
83
- (e = t == null ? void 0 : t.contentWindow) != null && e.document && (this.mousedownListener = (n) => {
84
- const i = this._findMergeTagElement(n.target);
85
- i && (this.lastClickedElement = i, this.lastClickedFrame = t);
86
- }, t.contentWindow.document.addEventListener("mousedown", this.mousedownListener));
87
- }
88
- /**
89
- * Gets the editor iframe element
90
- */
91
- _getEditorFrame() {
92
- var n;
93
- const t = document.querySelector("ui-editor");
94
- if (!(t != null && t.shadowRoot))
95
- return null;
96
- const e = t.shadowRoot.querySelector("iframe");
97
- return (n = e == null ? void 0 : e.contentWindow) != null && n.document ? e : null;
98
- }
99
- /**
100
- * Finds merge tag element in the element tree
101
- */
102
- _findMergeTagElement(t) {
103
- return t.closest(".target, .esd-merge-tag");
104
- }
105
- /**
106
- * Gets the position of the last clicked element, calculated on-demand
107
- * This ensures we always use the correct element's position even with rapid clicks
108
- */
109
- _getLastClickedPosition() {
110
- if (!(!this.lastClickedElement || !this.lastClickedFrame))
111
- return this._calculateAbsolutePosition(this.lastClickedFrame, this.lastClickedElement);
112
- }
113
- /**
114
- * Calculates absolute position of element relative to page
115
- */
116
- _calculateAbsolutePosition(t, e) {
117
- const n = t.getBoundingClientRect(), i = e.getBoundingClientRect();
118
- return {
119
- x: n.x + i.x,
120
- y: n.y + i.y,
121
- width: i.width,
122
- height: i.height
123
- };
124
- }
125
- /**
126
- * Cleans up the coordinate tracking event listener
127
- */
128
- _cleanupCoordinateTracking() {
129
- var e;
130
- if (!this.mousedownListener)
131
- return;
132
- const t = this._getEditorFrame();
133
- (e = t == null ? void 0 : t.contentWindow) != null && e.document && t.contentWindow.document.removeEventListener("mousedown", this.mousedownListener), this.mousedownListener = null;
134
- }
135
- /**
136
- * Returns the HTML template for the "Add Dynamic Content" button
137
- * This button is placed in the merge tags selector UI
138
- */
139
44
  getTemplate() {
140
45
  return `
141
46
  <div>
142
- <${a.BUTTON}
47
+ <${r.BUTTON}
143
48
  id="guido__btn-add-dynamic-content"
144
49
  class="btn btn-primary"
145
- ${h.BUTTON.name}="${C}">
146
- <${a.ICON} src="plus" class="icon icon-button color-primary">
147
- </${a.ICON}>
50
+ ${l.BUTTON.name}="${y}">
51
+ <${r.ICON} src="plus" class="icon icon-button color-primary">
52
+ </${r.ICON}>
148
53
  ${this.api.translate("Add Dynamic Content")}
149
- </${a.BUTTON}>
54
+ </${r.BUTTON}>
150
55
  </div>`;
151
56
  }
152
57
  }
153
58
  export {
154
59
  p as DynamicContentTagRegistry,
155
- b as DynamicContentUiElementExtension
60
+ C as DynamicContentUiElementExtension
156
61
  };
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-0502bceb] .in-button-v2__wrapper{line-height:0}[data-v-b5997368] .in-segments-wrapper .in-tooltip-wrapper__box{text-align:left}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-98181b5a]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-98181b5a]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-98181b5a]{height:calc(100vh - 75px)}[data-v-70835920] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-dd57102d] .guido__verion-history-view-option-selection-desktop svg,[data-v-dd57102d] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-dd57102d] .in-segments-wrapper__button_selected,[data-v-dd57102d] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-7a09985c]{gap:16px}[data-v-c2adc57d] .in-progress-wrapper__progress p span:last-child{display:none!important}.desktop-preview-container[data-v-2dd60b0c],[data-v-2dd60b0c] .desktop-preview-container .in-container{min-height:720px!important;height:100%}.cropped-text[data-v-f20b3a9b]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{gap:16px}[data-v-0502bceb] .in-button-v2__wrapper{line-height:0}[data-v-b5997368] .in-segments-wrapper .in-tooltip-wrapper__box{text-align:left}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.guido-loading__wrapper[data-v-dced5582]{height:100%;top:75px}.guido-editor__wrapper[data-v-821a0bca],.guido-editor__container[data-v-821a0bca]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-821a0bca]{height:calc(100vh - 75px)}[data-v-70835920] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{object-fit:cover;transform:scale(1)}[data-v-dd57102d] .guido__verion-history-view-option-selection-desktop svg,[data-v-dd57102d] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-dd57102d] .in-segments-wrapper__button_selected,[data-v-dd57102d] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-7a09985c]{gap:16px}[data-v-c2adc57d] .in-progress-wrapper__progress p span:last-child{display:none!important}.desktop-preview-container[data-v-2dd60b0c],[data-v-2dd60b0c] .desktop-preview-container .in-container{min-height:720px!important;height:100%}.cropped-text[data-v-f20b3a9b]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-v-d3c52b44] .vueperslides__bullets,[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}