@useinsider/guido 1.0.3-beta.cc614d6 → 1.0.3-beta.cdff8ce

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 (195) hide show
  1. package/README.md +6 -0
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +44 -41
  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 +21 -20
  7. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +21 -0
  8. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +99 -0
  9. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +20 -18
  10. package/dist/composables/useActionsApi.js +1 -1
  11. package/dist/composables/useBlocksConfig.js +1 -2
  12. package/dist/composables/useGuidoActions.js +19 -9
  13. package/dist/composables/useHtmlCompiler.js +15 -13
  14. package/dist/composables/useHtmlValidator.js +36 -35
  15. package/dist/composables/useStripo.js +47 -41
  16. package/dist/config/compiler/itemsCompilerRules.js +14 -0
  17. package/dist/config/compiler/unsubscribeCompilerRules.js +33 -28
  18. package/dist/enums/defaults.js +2 -1
  19. package/dist/enums/extensions/recommendationBlock.js +2 -2
  20. package/dist/enums/onboarding.js +7 -3
  21. package/dist/enums/unsubscribe.js +27 -25
  22. package/dist/extensions/Blocks/Checkbox/block.js +5 -2
  23. package/dist/extensions/Blocks/Checkbox/control.js +15 -14
  24. package/dist/extensions/Blocks/Checkbox/template.js +14 -9
  25. package/dist/extensions/Blocks/Items/block.js +67 -0
  26. package/dist/extensions/Blocks/Items/controls/button/link.js +68 -0
  27. package/dist/extensions/Blocks/Items/controls/cardComposition.js +193 -0
  28. package/dist/extensions/Blocks/Items/controls/image/link.js +68 -0
  29. package/dist/extensions/Blocks/Items/controls/index.js +217 -0
  30. package/dist/extensions/Blocks/Items/controls/name/trimming.js +70 -0
  31. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +107 -0
  32. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +123 -0
  33. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +76 -0
  34. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +61 -0
  35. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +92 -0
  36. package/dist/extensions/Blocks/Items/controls/settingsControl.js +316 -0
  37. package/dist/extensions/Blocks/Items/enums/controlEnums.js +5 -0
  38. package/dist/extensions/Blocks/Items/enums/productEnums.js +274 -0
  39. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +77 -0
  40. package/dist/extensions/Blocks/Items/extension.js +20 -0
  41. package/dist/extensions/Blocks/Items/iconsRegistry.js +32 -0
  42. package/dist/extensions/Blocks/Items/items.css.js +23 -0
  43. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +62 -0
  44. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +72 -0
  45. package/dist/extensions/Blocks/Items/settingsPanel.js +132 -0
  46. package/dist/extensions/Blocks/Items/store/items-block.js +75 -0
  47. package/dist/extensions/Blocks/Items/template.js +195 -0
  48. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +17 -0
  49. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +28 -0
  50. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +76 -0
  51. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +46 -0
  52. package/dist/extensions/Blocks/RadioButton/block.js +5 -2
  53. package/dist/extensions/Blocks/RadioButton/control.js +18 -17
  54. package/dist/extensions/Blocks/RadioButton/template.js +18 -9
  55. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
  56. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  57. package/dist/extensions/Blocks/Unsubscribe/block.js +45 -41
  58. package/dist/extensions/Blocks/common-control.js +174 -110
  59. package/dist/extensions/Blocks/controlFactories.js +223 -0
  60. package/dist/guido.css +1 -1
  61. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +213 -168
  62. package/dist/node_modules/lodash-es/_DataView.js +6 -0
  63. package/dist/node_modules/lodash-es/_Promise.js +6 -0
  64. package/dist/node_modules/lodash-es/_Set.js +6 -0
  65. package/dist/node_modules/lodash-es/_SetCache.js +13 -0
  66. package/dist/node_modules/lodash-es/_WeakMap.js +6 -0
  67. package/dist/node_modules/lodash-es/_arrayFilter.js +10 -0
  68. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +13 -12
  69. package/dist/node_modules/lodash-es/_arrayMap.js +8 -0
  70. package/dist/node_modules/lodash-es/_arrayPush.js +8 -0
  71. package/dist/node_modules/lodash-es/_arraySome.js +9 -0
  72. package/dist/node_modules/lodash-es/_baseEach.js +6 -0
  73. package/dist/node_modules/lodash-es/_baseFlatten.js +13 -0
  74. package/dist/node_modules/lodash-es/_baseForOwn.js +8 -0
  75. package/dist/node_modules/lodash-es/_baseGet.js +11 -0
  76. package/dist/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
  77. package/dist/node_modules/lodash-es/_baseHasIn.js +6 -0
  78. package/dist/node_modules/lodash-es/_baseIsEqual.js +8 -0
  79. package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +32 -0
  80. package/dist/node_modules/lodash-es/_baseIsMatch.js +29 -0
  81. package/dist/node_modules/lodash-es/_baseIteratee.js +11 -0
  82. package/dist/node_modules/lodash-es/_baseKeys.js +14 -0
  83. package/dist/node_modules/lodash-es/_baseMap.js +11 -0
  84. package/dist/node_modules/lodash-es/_baseMatches.js +12 -0
  85. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +17 -0
  86. package/dist/node_modules/lodash-es/_baseProperty.js +8 -0
  87. package/dist/node_modules/lodash-es/_basePropertyDeep.js +9 -0
  88. package/dist/node_modules/lodash-es/_baseRange.js +9 -0
  89. package/dist/node_modules/lodash-es/_baseToString.js +18 -0
  90. package/dist/node_modules/lodash-es/_baseTrim.js +8 -0
  91. package/dist/node_modules/lodash-es/_cacheHas.js +6 -0
  92. package/dist/node_modules/lodash-es/_castPath.js +10 -0
  93. package/dist/node_modules/lodash-es/_createBaseEach.js +15 -0
  94. package/dist/node_modules/lodash-es/_createRange.js +11 -0
  95. package/dist/node_modules/lodash-es/_equalArrays.js +40 -0
  96. package/dist/node_modules/lodash-es/_equalByTag.js +45 -0
  97. package/dist/node_modules/lodash-es/_equalObjects.js +36 -0
  98. package/dist/node_modules/lodash-es/_getAllKeys.js +9 -0
  99. package/dist/node_modules/lodash-es/_getMatchData.js +12 -0
  100. package/dist/node_modules/lodash-es/_getSymbols.js +10 -0
  101. package/dist/node_modules/lodash-es/_getTag.js +28 -0
  102. package/dist/node_modules/lodash-es/_hasPath.js +19 -0
  103. package/dist/node_modules/lodash-es/_isFlattenable.js +10 -0
  104. package/dist/node_modules/lodash-es/_isKey.js +12 -0
  105. package/dist/node_modules/lodash-es/_isStrictComparable.js +7 -0
  106. package/dist/node_modules/lodash-es/_mapToArray.js +9 -0
  107. package/dist/node_modules/lodash-es/_matchesStrictComparable.js +8 -0
  108. package/dist/node_modules/lodash-es/_memoizeCapped.js +11 -0
  109. package/dist/node_modules/lodash-es/_nativeKeys.js +5 -0
  110. package/dist/node_modules/lodash-es/_setCacheAdd.js +7 -0
  111. package/dist/node_modules/lodash-es/_setCacheHas.js +6 -0
  112. package/dist/node_modules/lodash-es/_setToArray.js +9 -0
  113. package/dist/node_modules/lodash-es/_stringToPath.js +10 -0
  114. package/dist/node_modules/lodash-es/_toKey.js +10 -0
  115. package/dist/node_modules/lodash-es/_trimmedEndIndex.js +9 -0
  116. package/dist/node_modules/lodash-es/flatMap.js +8 -0
  117. package/dist/node_modules/lodash-es/get.js +8 -0
  118. package/dist/node_modules/lodash-es/hasIn.js +8 -0
  119. package/dist/node_modules/lodash-es/isSymbol.js +9 -0
  120. package/dist/node_modules/lodash-es/keys.js +9 -0
  121. package/dist/node_modules/lodash-es/keysIn.js +3 -3
  122. package/dist/node_modules/lodash-es/map.js +11 -0
  123. package/dist/node_modules/lodash-es/property.js +10 -0
  124. package/dist/node_modules/lodash-es/range.js +5 -0
  125. package/dist/node_modules/lodash-es/stubArray.js +6 -0
  126. package/dist/node_modules/lodash-es/toFinite.js +14 -0
  127. package/dist/node_modules/lodash-es/toNumber.js +22 -0
  128. package/dist/node_modules/lodash-es/toString.js +7 -0
  129. package/dist/package.json.js +1 -1
  130. package/dist/services/recommendationApi.js +13 -19
  131. package/dist/src/@types/generic.d.ts +1 -0
  132. package/dist/src/components/Guido.vue.d.ts +1 -0
  133. package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +2 -0
  134. package/dist/src/composables/useGuidoActions.d.ts +9 -0
  135. package/dist/src/config/compiler/itemsCompilerRules.d.ts +2 -0
  136. package/dist/src/enums/onboarding.d.ts +4 -0
  137. package/dist/src/extensions/Blocks/Checkbox/block.d.ts +1 -0
  138. package/dist/src/extensions/Blocks/Checkbox/template.d.ts +1 -1
  139. package/dist/src/extensions/Blocks/Items/block.d.ts +27 -0
  140. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +14 -0
  141. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +33 -0
  142. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +14 -0
  143. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +501 -0
  144. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +14 -0
  145. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +19 -0
  146. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +21 -0
  147. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +14 -0
  148. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +13 -0
  149. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +15 -0
  150. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +48 -0
  151. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +62 -0
  152. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +163 -0
  153. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +50 -0
  154. package/dist/src/extensions/Blocks/Items/extension.d.ts +2 -0
  155. package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +4 -0
  156. package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +4 -0
  157. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +43 -0
  158. package/dist/src/extensions/Blocks/Items/template.d.ts +24 -0
  159. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +23 -0
  160. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +32 -0
  161. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +50 -0
  162. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +8 -0
  163. package/dist/src/extensions/Blocks/RadioButton/block.d.ts +1 -0
  164. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  165. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  166. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +3 -4
  167. package/dist/src/extensions/Blocks/common-control.d.ts +44 -7
  168. package/dist/src/extensions/Blocks/controlFactories.d.ts +312 -0
  169. package/dist/src/stores/config.d.ts +2 -1
  170. package/dist/src/stores/dynamic-content.d.ts +1 -1
  171. package/dist/src/stores/editor.d.ts +1 -1
  172. package/dist/src/stores/onboarding.d.ts +335 -1
  173. package/dist/src/stores/preview.d.ts +1 -1
  174. package/dist/src/stores/recommendation.d.ts +1 -1
  175. package/dist/src/stores/save-as-template.d.ts +1 -1
  176. package/dist/src/stores/toaster.d.ts +1 -1
  177. package/dist/src/stores/unsubscribe.d.ts +1 -1
  178. package/dist/src/stores/version-history.d.ts +1 -1
  179. package/dist/src/utils/environmentUtil.d.ts +5 -0
  180. package/dist/src/utils/pairProductVariables.d.ts +7 -0
  181. package/dist/static/styles/customEditorStyle.css.js +1 -1
  182. package/dist/stores/config.js +5 -5
  183. package/dist/stores/dynamic-content.js +1 -1
  184. package/dist/stores/editor.js +1 -1
  185. package/dist/stores/onboarding.js +44 -36
  186. package/dist/stores/preview.js +1 -1
  187. package/dist/stores/recommendation.js +3 -3
  188. package/dist/stores/save-as-template.js +2 -2
  189. package/dist/stores/toaster.js +1 -1
  190. package/dist/stores/unsubscribe.js +1 -1
  191. package/dist/stores/version-history.js +4 -4
  192. package/dist/utils/environmentUtil.js +4 -0
  193. package/dist/utils/genericUtil.js +16 -17
  194. package/dist/utils/pairProductVariables.js +136 -0
  195. package/package.json +6 -4
package/README.md CHANGED
@@ -167,6 +167,7 @@ export default {
167
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
168
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
169
169
  | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
170
+ | `test-email:click` | - | Fired when user clicks the test email button in the header |
170
171
 
171
172
  ### Guido Exposed Methods
172
173
  ```typescript
@@ -197,6 +198,7 @@ interface GuidoConfig {
197
198
  saveAsTemplate: boolean;
198
199
  versionHistory: boolean;
199
200
  testMessage: boolean;
201
+ displayConditions: boolean;
200
202
  };
201
203
  blocks?: {
202
204
  excludeDefaults?: GuidoBlockType[];
@@ -215,6 +217,7 @@ interface GuidoConfig {
215
217
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
216
218
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
217
219
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
220
+ | `features.displayConditions` | `boolean` | `true` | Enable display conditions |
218
221
  | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
219
222
  | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
220
223
  | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
@@ -597,6 +600,9 @@ Create a `.env` file with the following variables: (You can get env variables fr
597
600
  VITE_STRIPO_PLUGIN_ID=your_plugin_id
598
601
  VITE_STRIPO_SECRET_KEY=your_secret_key
599
602
  VITE_STRIPO_ROLE=your_role
603
+
604
+ # Playwright Test Configuration (Optional - for local debugging only)
605
+ HEADED=false # Set to 'true' to run tests with visible browser
600
606
  ```
601
607
 
602
608
  ### Project Structure
@@ -12,7 +12,7 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "41915b53"
15
+ "98181b5a"
16
16
  );
17
17
  const v = s.exports;
18
18
  export {
@@ -1,8 +1,8 @@
1
- import { defineComponent as O, defineAsyncComponent as U, ref as z, computed as L, watch as B, onMounted as K, onUnmounted as j } from "vue";
1
+ import { defineComponent as O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
2
2
  import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
3
3
  import { usePartner as J } from "../composables/usePartner.js";
4
4
  import { useStripo as Q } from "../composables/useStripo.js";
5
- import { migrate as W } from "../config/migrator/index.js";
5
+ import { migrate as L } from "../config/migrator/index.js";
6
6
  import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
7
7
  import Z from "./organisms/base/Toaster.vue.js";
8
8
  import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
@@ -12,12 +12,12 @@ import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
12
  import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
13
  import { useStripoApi as re } from "../services/stripoApi.js";
14
14
  import { useConfigStore as ie } from "../stores/config.js";
15
- import { useDynamicContentStore as ae } from "../stores/dynamic-content.js";
16
- import { useEditorStore as se } from "../stores/editor.js";
15
+ import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as ae } from "../stores/editor.js";
17
17
  import { usePreviewStore as ce } from "../stores/preview.js";
18
- import { useUnsubscribeStore as de } from "../stores/unsubscribe.js";
19
- import me from "../node_modules/lodash-es/merge.js";
20
- const Le = /* @__PURE__ */ O({
18
+ import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
19
+ import de from "../node_modules/lodash-es/merge.js";
20
+ const Ue = /* @__PURE__ */ O({
21
21
  __name: "Guido",
22
22
  props: {
23
23
  templateId: null,
@@ -31,101 +31,104 @@ const Le = /* @__PURE__ */ O({
31
31
  guidoConfig: null,
32
32
  templateConfig: null
33
33
  },
34
- emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
- setup(_, { expose: k, emit: t }) {
36
- const l = _, A = U(
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
+ setup(W, { expose: _, emit: o }) {
36
+ const u = W, A = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), N = U(
38
+ ), N = I(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), p = z(), i = ae(), g = de(), f = ie(), a = se(), F = ce(), n = L(() => a.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
40
+ ), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
41
41
  var e;
42
42
  return (e = p.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: s,
44
+ templateId: a,
45
45
  userId: C,
46
46
  guidoConfig: h,
47
- templateConfig: o,
47
+ templateConfig: t,
48
48
  html: r = "",
49
49
  css: S = "",
50
50
  partnerName: c = y(),
51
- productType: d = v(),
51
+ productType: m = v(),
52
52
  messageType: w = X,
53
53
  username: D = V
54
- } = l, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
- a.templateId = s, window.GuidoConfig = me(Y, h), window.GuidoConfig.partner = {
54
+ } = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
55
+ s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: d,
57
+ productType: m,
58
58
  messageType: w
59
- }, f.templateConfig = o;
59
+ }, f.templateConfig = t;
60
60
  const { initPlugin: E } = Q({
61
- emailId: s,
61
+ emailId: a,
62
62
  userId: C,
63
63
  username: D,
64
64
  partnerName: c,
65
- productType: d,
66
- preselectedDynamicContentList: m,
65
+ productType: m,
66
+ preselectedDynamicContentList: d,
67
67
  onReady: () => {
68
- console.debug("guido:ready"), t("ready");
68
+ console.debug("guido:ready"), o("ready");
69
69
  }
70
- }), { getDefaultTemplate: T } = re(), R = L(() => {
70
+ }), { getDefaultTemplate: T } = re(), R = U(() => {
71
71
  var e;
72
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
73
73
  });
74
74
  q({
75
75
  onBack: () => {
76
- console.debug("guido:back"), t("back");
76
+ console.debug("guido:back"), o("back");
77
77
  },
78
78
  onSaveStart: () => {
79
- console.debug("guido:save:start"), t("save:start");
79
+ console.debug("guido:save:start"), o("save:start");
80
80
  },
81
81
  onSaveComplete: (e) => {
82
- console.debug("guido:save:complete", e), t("save:complete", e);
82
+ console.debug("guido:save:complete", e), o("save:complete", e);
83
+ },
84
+ onTestEmailClick: () => {
85
+ console.debug("guido:test-email:click"), o("test-email:click");
83
86
  }
84
87
  });
85
88
  const P = (e) => {
86
89
  console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
- }, G = () => {
90
+ }, k = () => {
88
91
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
89
92
  };
90
93
  B(() => n.value, () => {
91
- t("on-change", n.value);
94
+ o("on-change", n.value);
92
95
  });
93
- const u = (e) => {
94
- const I = e, { attribute: x, position: M } = I.detail;
95
- console.debug("dynamic-content:open", I.detail), t("dynamic-content:open", x, M);
96
+ const l = (e) => {
97
+ const G = e, { attribute: x, position: M } = G.detail;
98
+ console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
96
99
  };
97
100
  return K(async () => {
98
101
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
99
102
  try {
100
- g.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
103
+ g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
101
104
  let e = {
102
- html: r && await W(r),
105
+ html: r && await L(r),
103
106
  css: S,
104
107
  forceRecreate: !0
105
108
  // TODO: It should be false for old templates. We will communicate with Stripo
106
109
  };
107
- e.html || (e = await T(), e.html = await W(e.html)), await E(e), i.selectedDynamicContentList = m;
110
+ e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
108
111
  } catch (e) {
109
112
  console.error("Failed to initialize Stripo editor:", e);
110
113
  }
111
- document.addEventListener("dynamic-content:open", u);
114
+ document.addEventListener("dynamic-content:open", l);
112
115
  }), j(() => {
113
- document.removeEventListener("dynamic-content:open", u);
116
+ document.removeEventListener("dynamic-content:open", l);
114
117
  try {
115
118
  window.UIEditor.removeEditor();
116
119
  } catch {
117
120
  console.debug("Failed to remove Stripo editor: No editor found");
118
121
  }
119
- }), k({
122
+ }), _({
120
123
  dynamicContent: {
121
124
  insert: P,
122
- close: G
125
+ close: k
123
126
  },
124
127
  hasChanges: n,
125
128
  saveSilent: b
126
- }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: l, configStore: f, editorStore: a, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: s, userId: C, guidoConfig: h, templateConfig: o, html: r, css: S, partnerName: c, productType: d, messageType: w, username: D, preselectedDynamicContentList: m, emit: t, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: G, handleDynamicContentOpen: u, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
129
+ }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
127
130
  }
128
131
  });
129
132
  export {
130
- Le as default
133
+ Ue as default
131
134
  };
@@ -10,7 +10,7 @@ var s = function() {
10
10
  n,
11
11
  !1,
12
12
  null,
13
- "dced5582"
13
+ "07c4b2d8"
14
14
  );
15
15
  const l = _.exports;
16
16
  export {
@@ -3,7 +3,7 @@ import l from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var r = function() {
4
4
  var o, i, n;
5
5
  var s = this, e = s._self._c, t = s._self._setupProxy;
6
- return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(_) {
6
+ return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(c) {
7
7
  return t.handleSave(!1);
8
8
  } } })], 1);
9
9
  }, u = [], d = /* @__PURE__ */ l(
@@ -1,35 +1,36 @@
1
- import { defineComponent as g, ref as l, computed as H } from "vue";
2
- import { useConfig as _ } from "../../../composables/useConfig.js";
3
- import { useExport as h } from "../../../composables/useExport.js";
4
- import { useSave as V } from "../../../composables/useSave.js";
5
- import { useTranslations as x } from "../../../composables/useTranslations.js";
1
+ import { defineComponent as H, ref as m, computed as _ } from "vue";
2
+ import { useConfig as h } from "../../../composables/useConfig.js";
3
+ import { useExport as V } from "../../../composables/useExport.js";
4
+ import { useTestEmailClick as x } from "../../../composables/useGuidoActions.js";
5
+ import { useSave as E } from "../../../composables/useSave.js";
6
+ import { useTranslations as T } from "../../../composables/useTranslations.js";
6
7
  import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
7
- import { useEditorStore as T } from "../../../stores/editor.js";
8
- import { getTooltipOptions as E } from "../../../utils/tooltipUtils.js";
9
- import { InButtonV2 as O } from "@useinsider/design-system-vue";
10
- const z = /* @__PURE__ */ g({
8
+ import { useEditorStore as C } from "../../../stores/editor.js";
9
+ import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
10
+ import { InButtonV2 as A } from "@useinsider/design-system-vue";
11
+ const J = /* @__PURE__ */ H({
11
12
  __name: "RightSlot",
12
- setup(A, { expose: m }) {
13
- const { config: u } = _(), { exportHtml: r } = h(), { save: n } = V(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = T(), t = x(), e = l(!1), s = l(!1), c = () => {
13
+ setup(k, { expose: c }) {
14
+ const { config: u } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = C(), t = T(), e = m(!1), s = m(!1), f = x(), v = () => {
14
15
  if (o.isVersionHistoryOpen) {
15
16
  a();
16
17
  return;
17
18
  }
18
19
  i();
19
- }, f = async () => {
20
+ }, d = async () => {
20
21
  e.value = !0, await r(), e.value = !1;
21
- }, v = () => {
22
+ }, y = () => {
22
23
  o.isSaveAsTemplateDrawerOpen = !0;
23
- }, d = H(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (y) => {
24
+ }, S = _(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), l = async (p) => {
24
25
  s.value = !0, o.loadingStatus = !0;
25
- const S = await n(y);
26
- return s.value = !1, o.loadingStatus = !1, S;
26
+ const g = await n(p);
27
+ return s.value = !1, p && (o.loadingStatus = !1), g;
27
28
  };
28
- return m({
29
- handleSave: p
30
- }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: c, handleExport: f, handleSaveAs: v, versionHistoryTooltipText: d, handleSave: p, getTooltipOptions: E, InButtonV2: O };
29
+ return c({
30
+ handleSave: l
31
+ }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, testEmailClick: f, handleVersionHistory: v, handleExport: d, handleSaveAs: y, versionHistoryTooltipText: S, handleSave: l, getTooltipOptions: O, InButtonV2: A };
31
32
  }
32
33
  });
33
34
  export {
34
- z as default
35
+ J as default
35
36
  };
@@ -0,0 +1,21 @@
1
+ import g from "./ItemsOnboarding.vue2.js";
2
+ /* empty css */
3
+ import m from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var l = function() {
5
+ var e, n, r, i, s, a;
6
+ var o = this, d = o._self._c, t = o._self._setupProxy;
7
+ return t.isVisible ? d(t.InOnboard, { key: "guido__items-onboard", staticClass: "w-21-s p-a z-11", class: (e = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : e.classes, attrs: { id: "guido__items-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (n = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : n.bottom, "left-position": (r = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : r.left, "pages-config": t.onboardingStore.onboardings.itemsOnboarding.config, "pointer-position": (i = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : i.position, "right-position": (s = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : s.right, "top-position": (a = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: t.handleBack, close: function(b) {
8
+ return t.onboardingStore.close("itemsOnboarding");
9
+ }, nextButtonClick: t.handleNext } }) : o._e();
10
+ }, c = [], p = /* @__PURE__ */ m(
11
+ g,
12
+ l,
13
+ c,
14
+ !1,
15
+ null,
16
+ "dd1a237a"
17
+ );
18
+ const I = p.exports;
19
+ export {
20
+ I as default
21
+ };
@@ -0,0 +1,99 @@
1
+ import { defineComponent as l, computed as a, watch as u } from "vue";
2
+ import { useTranslations as x } from "../../../composables/useTranslations.js";
3
+ import { RIBBON_SELECTOR as T, UI_EDITOR_SELECTOR as O, CARD_COMPOSITION_TAB_SELECTOR as B, SETTINGS_TAB_SELECTOR as f } from "../../../enums/onboarding.js";
4
+ import { useOnboardingStore as C } from "../../../stores/onboarding.js";
5
+ import { InOnboard as k } from "@useinsider/design-system-vue";
6
+ const E = /* @__PURE__ */ l({
7
+ __name: "ItemsOnboarding",
8
+ setup(_) {
9
+ const e = x(), o = C(), c = a(() => {
10
+ const t = document.querySelector(T);
11
+ return (t == null ? void 0 : t.offsetHeight) ?? 0;
12
+ }), n = (t) => `${t + c.value}px`, r = (t) => {
13
+ const i = document.querySelector(O);
14
+ if (!(i != null && i.shadowRoot))
15
+ return;
16
+ const { shadowRoot: s } = i, m = s.querySelector(t);
17
+ m && m.click();
18
+ }, d = a(() => [
19
+ {
20
+ classes: "guido-items-onboarding-card-1",
21
+ right: "426px",
22
+ top: n(90),
23
+ position: "Right Top",
24
+ title: e("email-editor.onboarding-items-title"),
25
+ description: e("email-editor.onboarding-items-description"),
26
+ imageSource: "",
27
+ backButtonClick: () => {
28
+ },
29
+ nextButtonType: "text",
30
+ nextButtonText: e("products.next"),
31
+ nextButtonClick: () => {
32
+ o.next("itemsOnboarding");
33
+ }
34
+ },
35
+ {
36
+ classes: "guido-items-onboarding-card-2",
37
+ right: "426px",
38
+ top: n(218),
39
+ position: "Right Top",
40
+ title: e("email-editor.onboarding-items-item-type-title"),
41
+ description: e("email-editor.onboarding-items-item-type-description"),
42
+ imageSource: "",
43
+ backButtonType: "text",
44
+ backButtonText: e("ds-steps.back"),
45
+ backButtonClick: () => {
46
+ o.previous("itemsOnboarding");
47
+ },
48
+ nextButtonType: "text",
49
+ nextButtonText: e("products.next"),
50
+ nextButtonClick: () => {
51
+ o.next("itemsOnboarding");
52
+ }
53
+ },
54
+ {
55
+ classes: "guido-items-onboarding-card-3",
56
+ right: "426px",
57
+ top: n(140),
58
+ position: "Right Top",
59
+ title: e("email-editor.onboarding-items-composition-title"),
60
+ description: e("email-editor.onboarding-items-composition-description"),
61
+ imageSource: "",
62
+ backButtonType: "text",
63
+ backButtonText: e("ds-steps.back"),
64
+ backButtonClick: () => {
65
+ o.previous("itemsOnboarding");
66
+ },
67
+ nextButtonType: "text",
68
+ nextButtonText: e("action-builder.ok"),
69
+ nextButtonClick: () => {
70
+ o.close("itemsOnboarding");
71
+ }
72
+ }
73
+ ]), g = a(() => o.onboardings.itemsOnboarding.config.length > 0 && o.onboardings.itemsOnboarding.isActive), p = () => {
74
+ var t, i;
75
+ (i = (t = o.getItemsCurrentCard) == null ? void 0 : t.nextButtonClick) == null || i.call(t);
76
+ }, b = () => {
77
+ var t, i;
78
+ (i = (t = o.getItemsCurrentCard) == null ? void 0 : t.backButtonClick) == null || i.call(t);
79
+ };
80
+ return u(
81
+ () => o.isActive("itemsOnboarding"),
82
+ (t) => {
83
+ t && o.setConfig("itemsOnboarding", d.value);
84
+ },
85
+ { immediate: !0 }
86
+ ), u(
87
+ () => o.onboardings.itemsOnboarding.cardIndex,
88
+ (t, i) => {
89
+ if (!o.isActive("itemsOnboarding"))
90
+ return;
91
+ const s = `${i}-${t}`;
92
+ s === "1-2" && r(B), s === "2-1" && r(f);
93
+ }
94
+ ), { __sfc: !0, trans: e, onboardingStore: o, ribbonOffset: c, getTopPosition: n, switchTab: r, onboardingCardsConfig: d, isVisible: g, handleNext: p, handleBack: b, InOnboard: k };
95
+ }
96
+ });
97
+ export {
98
+ E as default
99
+ };
@@ -1,23 +1,25 @@
1
1
  import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
2
- import { usePartner as u } from "../../../composables/usePartner.js";
3
- import { useEditorStore as v } from "../../../stores/editor.js";
4
- import { useOnboardingStore as l } from "../../../stores/onboarding.js";
5
- import { usePreviewStore as y } from "../../../stores/preview.js";
6
- import S from "./AMPOnboarding.vue.js";
7
- import h from "./GenericOnboarding.vue.js";
8
- import w from "./NewVersionPopup.vue.js";
9
- import P from "./TextBlockOnboarding.vue.js";
10
- import _ from "./VersionHistoryOnboarding.vue.js";
11
- const F = /* @__PURE__ */ b({
2
+ import u from "./AMPOnboarding.vue.js";
3
+ import v from "./GenericOnboarding.vue.js";
4
+ import l from "./ItemsOnboarding.vue.js";
5
+ import y from "./NewVersionPopup.vue.js";
6
+ import S from "./TextBlockOnboarding.vue.js";
7
+ import h from "./VersionHistoryOnboarding.vue.js";
8
+ import { usePartner as w } from "../../../composables/usePartner.js";
9
+ import { useEditorStore as P } from "../../../stores/editor.js";
10
+ import { useOnboardingStore as _ } from "../../../stores/onboarding.js";
11
+ import { usePreviewStore as A } from "../../../stores/preview.js";
12
+ const G = /* @__PURE__ */ b({
12
13
  __name: "OnboardingWrapper",
13
14
  emits: ["onboarding-finished"],
14
- setup(A, { emit: f }) {
15
- const o = l(), r = v(), s = y(), { isTestPartner: a } = u(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
16
- { type: "newVersionPopup", component: w },
17
- { type: "genericOnboarding", component: h },
18
- { type: "textBlockOnboarding", component: P },
19
- { type: "versionHistoryOnboarding", component: _ },
20
- { type: "ampOnboarding", component: S }
15
+ setup(H, { emit: f }) {
16
+ const o = _(), r = P(), s = A(), { isTestPartner: a } = w(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
17
+ { type: "newVersionPopup", component: y },
18
+ { type: "genericOnboarding", component: v },
19
+ { type: "textBlockOnboarding", component: S },
20
+ { type: "versionHistoryOnboarding", component: h },
21
+ { type: "ampOnboarding", component: u },
22
+ { type: "itemsOnboarding", component: l }
21
23
  ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
22
24
  return O(async () => {
23
25
  await o.fetchUserModalState();
@@ -40,5 +42,5 @@ const F = /* @__PURE__ */ b({
40
42
  }
41
43
  });
42
44
  export {
43
- F as default
45
+ G as default
44
46
  };
@@ -17,7 +17,7 @@ const A = () => {
17
17
  ]
18
18
  },
19
19
  mergeTags: ["Tag1", "Tag2"],
20
- forseAmp: !1,
20
+ forceAmp: !1,
21
21
  resetDataSavedFlag: !1,
22
22
  disableLineHeightsReplace: !0
23
23
  }, ...t }, m = {
@@ -19,8 +19,7 @@ const l = {
19
19
  "recommendation-block": () => import("../extensions/Blocks/Recommendation/extension.js"),
20
20
  "unsubscribe-block": () => import("../extensions/Blocks/Unsubscribe/extension.js"),
21
21
  "coupon-block": () => import("../extensions/Blocks/CouponBlock/extension.js"),
22
- "items-block": null
23
- // TODO: Add ItemsBlock extension when available
22
+ "items-block": () => import("../extensions/Blocks/Items/extension.js")
24
23
  }, a = (n) => {
25
24
  if (!n || !n.length)
26
25
  return {};
@@ -1,6 +1,6 @@
1
1
  import { provideValue as o, useInjectedValue as t } from "./useProvideInject.js";
2
- const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symbol.for("guido.save.complete"), s = (e) => {
3
- o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
2
+ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symbol.for("guido.save.complete"), a = Symbol.for("guido.test.email.click"), i = (e) => {
3
+ o(r, e.onBack), o(n, e.onSaveStart), o(c, e.onSaveComplete), o(a, e.onTestEmailClick);
4
4
  }, u = () => {
5
5
  try {
6
6
  return t(r);
@@ -9,7 +9,7 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symb
9
9
  "useBack: No back handler provided. Make sure Guido component is in the component tree."
10
10
  );
11
11
  }
12
- }, d = () => {
12
+ }, l = () => {
13
13
  try {
14
14
  return t(n);
15
15
  } catch {
@@ -17,21 +17,31 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symb
17
17
  "useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
18
18
  );
19
19
  }
20
- }, i = () => {
20
+ }, d = () => {
21
21
  try {
22
- return t(a);
22
+ return t(c);
23
23
  } catch {
24
24
  throw new Error(
25
25
  "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
26
26
  );
27
27
  }
28
+ }, m = () => {
29
+ try {
30
+ return t(a);
31
+ } catch {
32
+ throw new Error(
33
+ "useTestEmailClick: No test email click handler provided. Make sure Guido component is in the component tree."
34
+ );
35
+ }
28
36
  };
29
37
  export {
30
38
  r as BACK_KEY,
31
- a as SAVE_COMPLETE_KEY,
39
+ c as SAVE_COMPLETE_KEY,
32
40
  n as SAVE_START_KEY,
33
- s as provideGuidoActions,
41
+ a as TEST_EMAIL_CLICK_KEY,
42
+ i as provideGuidoActions,
34
43
  u as useBack,
35
- i as useSaveComplete,
36
- d as useSaveStart
44
+ d as useSaveComplete,
45
+ l as useSaveStart,
46
+ m as useTestEmailClick
37
47
  };
@@ -1,25 +1,27 @@
1
1
  import { defaultHtmlCompilerRules as t } from "../config/compiler/htmlCompilerRules.js";
2
- import { outlookCompilerRules as p } from "../config/compiler/outlookCompilerRules.js";
3
- import { recommendationCompilerRules as s } from "../config/compiler/recommendationCompilerRules.js";
4
- import { socialCompilerRules as u } from "../config/compiler/socialCompilerRules.js";
5
- import { unsubscribeCompilerRules as n } from "../config/compiler/unsubscribeCompilerRules.js";
6
- import { createHtmlCompiler as c } from "../utils/htmlCompiler.js";
7
- import { useConfig as f } from "./useConfig.js";
8
- const h = () => {
9
- const { config: e } = f(), l = e.htmlCompilerRules || [], m = [
2
+ import { itemsCompilerRules as p } from "../config/compiler/itemsCompilerRules.js";
3
+ import { outlookCompilerRules as s } from "../config/compiler/outlookCompilerRules.js";
4
+ import { recommendationCompilerRules as u } from "../config/compiler/recommendationCompilerRules.js";
5
+ import { socialCompilerRules as n } from "../config/compiler/socialCompilerRules.js";
6
+ import { unsubscribeCompilerRules as c } from "../config/compiler/unsubscribeCompilerRules.js";
7
+ import { createHtmlCompiler as f } from "../utils/htmlCompiler.js";
8
+ import { useConfig as R } from "./useConfig.js";
9
+ const x = () => {
10
+ const { config: e } = R(), m = e.htmlCompilerRules || [], l = [
10
11
  ...!!e.ignoreDefaultHtmlCompilerRules ? [] : t,
12
+ ...u,
13
+ ...c,
14
+ ...p,
11
15
  ...s,
12
16
  ...n,
13
- ...p,
14
- ...u,
15
- ...l.map((o, i) => ({
17
+ ...m.map((o, i) => ({
16
18
  ...o,
17
19
  priority: o.priority + 1e3 + i
18
20
  // Ensure additional rules run after default rules
19
21
  }))
20
- ], r = c(m);
22
+ ], r = f(l);
21
23
  return { compileHtml: (o) => r.compile(o) };
22
24
  };
23
25
  export {
24
- h as useHtmlCompiler
26
+ x as useHtmlCompiler
25
27
  };