@useinsider/guido 1.0.0-beta.e40480e → 1.0.0-beta.e415f9e

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 (173) hide show
  1. package/README.md +282 -30
  2. package/dist/@types/generic.d.ts +8 -0
  3. package/dist/App.vue.d.ts +1 -1
  4. package/dist/_virtual/AddCustomFont.js +4 -0
  5. package/dist/_virtual/AiAssistantValueType.js +4 -0
  6. package/dist/_virtual/BackgroundColorBuiltInControl.js +4 -0
  7. package/dist/_virtual/BackgroundImageBuiltInControl.js +4 -0
  8. package/dist/_virtual/Block.js +4 -0
  9. package/dist/_virtual/BlockAttributes.js +4 -0
  10. package/dist/_virtual/BlockCompositionType.js +4 -0
  11. package/dist/_virtual/BlockPaddingsBuiltInControl.js +4 -0
  12. package/dist/_virtual/BlockRenderer.js +4 -0
  13. package/dist/_virtual/BlockType.js +4 -0
  14. package/dist/_virtual/BlocksPanel.js +4 -0
  15. package/dist/_virtual/BuiltInControl.js +4 -0
  16. package/dist/_virtual/BuiltInControlTypes.js +4 -0
  17. package/dist/_virtual/ButtonBorderBuiltInControl.js +4 -0
  18. package/dist/_virtual/ButtonColorBuiltInControl.js +4 -0
  19. package/dist/_virtual/ButtonFontColorBuiltInControl.js +4 -0
  20. package/dist/_virtual/ButtonInternalIndentsBuiltInControl.js +4 -0
  21. package/dist/_virtual/ButtonTextBuiltInControl.js +4 -0
  22. package/dist/_virtual/ContextAction.js +4 -0
  23. package/dist/_virtual/ContextActionType.js +4 -0
  24. package/dist/_virtual/Control.js +4 -0
  25. package/dist/_virtual/EditorStatePropertyType.js +4 -0
  26. package/dist/_virtual/Extension.js +4 -0
  27. package/dist/_virtual/ExtensionBuilder.js +4 -0
  28. package/dist/_virtual/FontFamilyBuiltInControl.js +4 -0
  29. package/dist/_virtual/LinkColorBuiltInControl.js +4 -0
  30. package/dist/_virtual/ModificationDescription.js +4 -0
  31. package/dist/_virtual/PanelPosition.js +4 -0
  32. package/dist/_virtual/PreviewDeviceMode.js +4 -0
  33. package/dist/_virtual/SettingsPanelRegistry.js +4 -0
  34. package/dist/_virtual/SettingsPanelTab.js +4 -0
  35. package/dist/_virtual/SettingsTab.js +4 -0
  36. package/dist/_virtual/StructureBorderBuiltInControl.js +4 -0
  37. package/dist/_virtual/StructurePaddingsBuiltInControl.js +4 -0
  38. package/dist/_virtual/TextColorBuiltInControl.js +4 -0
  39. package/dist/_virtual/TextLineSpacingBuiltInControl.js +4 -0
  40. package/dist/_virtual/TextSizeBuiltInControl.js +4 -0
  41. package/dist/_virtual/TextStyleBuiltInControl.js +4 -0
  42. package/dist/_virtual/UIElement.js +4 -0
  43. package/dist/_virtual/UIElementTagRegistry.js +4 -0
  44. package/dist/_virtual/UIElementType.js +4 -0
  45. package/dist/_virtual/UIElementsAttributes.js +4 -0
  46. package/dist/_virtual/index.js +5 -0
  47. package/dist/_virtual/index2.js +4 -0
  48. package/dist/components/Guido.vue.d.ts +15 -2
  49. package/dist/components/Guido.vue.js +1 -1
  50. package/dist/components/Guido.vue2.js +52 -18
  51. package/dist/components/organisms/header/LeftSlot.vue.d.ts +1 -1
  52. package/dist/components/organisms/header/LeftSlot.vue.js +8 -8
  53. package/dist/components/organisms/header/LeftSlot.vue2.js +5 -3
  54. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  55. package/dist/components/organisms/header/MiddleSlot.vue2.js +6 -4
  56. package/dist/components/organisms/header/RightSlot.vue.js +7 -10
  57. package/dist/components/organisms/header/RightSlot.vue2.js +11 -14
  58. package/dist/components/organisms/header/ViewOptions.vue.d.ts +1 -1
  59. package/dist/components/organisms/header/ViewOptions.vue.js +1 -1
  60. package/dist/components/organisms/header/version-history/RestoreButton.vue.d.ts +2 -0
  61. package/dist/components/organisms/header/version-history/RestoreButton.vue.js +19 -0
  62. package/dist/components/organisms/header/version-history/RestoreButton.vue2.js +14 -0
  63. package/dist/components/organisms/header/version-history/VersionHistory.vue.d.ts +13 -1
  64. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +7 -7
  65. package/dist/components/organisms/header/version-history/VersionHistory.vue2.js +13 -10
  66. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.d.ts +1 -1
  67. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.js +1 -1
  68. package/dist/components/organisms/header/version-history/ViewOptions.vue.d.ts +1 -1
  69. package/dist/components/organisms/header/version-history/ViewOptions.vue.js +3 -3
  70. package/dist/composables/useActionsApi.d.ts +1 -0
  71. package/dist/composables/useActionsApi.js +14 -12
  72. package/dist/composables/useCustomInterfaceAppearance.js +45 -9
  73. package/dist/composables/useExport.d.ts +1 -1
  74. package/dist/composables/useExport.js +35 -20
  75. package/dist/composables/useHtmlCompiler.d.ts +4 -0
  76. package/dist/composables/useHtmlCompiler.js +16 -0
  77. package/dist/composables/useHttp.js +84 -0
  78. package/dist/composables/usePartner.d.ts +4 -0
  79. package/dist/composables/usePartner.js +16 -0
  80. package/dist/composables/useStripo.d.ts +2 -2
  81. package/dist/composables/useStripo.js +63 -55
  82. package/dist/composables/useToaster.d.ts +1 -0
  83. package/dist/composables/useToaster.js +24 -16
  84. package/dist/config/compiler/htmlCompilerRules.d.ts +2 -0
  85. package/dist/config/compiler/htmlCompilerRules.js +145 -0
  86. package/dist/config/compiler/outlookCompilerRules.d.ts +0 -0
  87. package/dist/enums/defaults.d.ts +2 -0
  88. package/dist/enums/defaults.js +5 -3
  89. package/dist/enums/displayConditions.d.ts +2 -0
  90. package/dist/enums/displayConditions.js +80 -0
  91. package/dist/extensions/DynamicContent/dynamic-content-modal.d.ts +6 -0
  92. package/dist/extensions/DynamicContent/dynamic-content-modal.js +27 -0
  93. package/dist/extensions/DynamicContent/dynamic-content.css.js +24 -0
  94. package/dist/extensions/DynamicContent/dynamic-content.d.ts +16 -0
  95. package/dist/extensions/DynamicContent/dynamic-content.js +63 -0
  96. package/dist/extensions/DynamicContent/extension.d.ts +2 -0
  97. package/dist/extensions/DynamicContent/extension.js +11 -0
  98. package/dist/guido.css +1 -1
  99. package/dist/mock/api/custom-fonts.d.ts +2 -0
  100. package/dist/mock/api/default-template.d.ts +2 -0
  101. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/Extension.js +51 -0
  102. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js +52 -0
  103. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js +41 -0
  104. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlockRenderer.js +18 -0
  105. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlocksPanel.js +32 -0
  106. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/ContextAction.js +18 -0
  107. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AddCustomFont.js +8 -0
  108. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js +13 -0
  109. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockAttributes.js +34 -0
  110. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js +13 -0
  111. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js +13 -0
  112. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js +104 -0
  113. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js +13 -0
  114. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js +13 -0
  115. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js +13 -0
  116. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js +13 -0
  117. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js +13 -0
  118. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js +13 -0
  119. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js +45 -0
  120. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundColorBuiltInControl.js +43 -0
  121. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundImageBuiltInControl.js +46 -0
  122. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BlockPaddingsBuiltInControl.js +44 -0
  123. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BuiltInControl.js +22 -0
  124. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonBorderBuiltInControl.js +46 -0
  125. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonColorBuiltInControl.js +46 -0
  126. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonFontColorBuiltInControl.js +45 -0
  127. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonInternalIndentsBuiltInControl.js +45 -0
  128. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonTextBuiltInControl.js +45 -0
  129. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js +20 -0
  130. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/FontFamilyBuiltInControl.js +43 -0
  131. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/LinkColorBuiltInControl.js +45 -0
  132. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js +18 -0
  133. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js +32 -0
  134. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructureBorderBuiltInControl.js +46 -0
  135. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructurePaddingsBuiltInControl.js +44 -0
  136. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextColorBuiltInControl.js +43 -0
  137. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextLineSpacingBuiltInControl.js +43 -0
  138. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextSizeBuiltInControl.js +45 -0
  139. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextStyleBuiltInControl.js +43 -0
  140. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/index.js +266 -0
  141. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js +26 -0
  142. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElement.js +22 -0
  143. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElementTagRegistry.js +18 -0
  144. package/dist/services/stripoApi.d.ts +8 -0
  145. package/dist/services/stripoApi.js +40 -0
  146. package/dist/static/styles/base.css.js +11 -0
  147. package/dist/static/styles/components/alert-message.css.js +39 -0
  148. package/dist/static/styles/components/amp-block.css.js +18 -0
  149. package/dist/static/styles/components/base-input.css.js +47 -0
  150. package/dist/static/styles/components/button-group.css.js +54 -0
  151. package/dist/static/styles/components/button.css.js +106 -0
  152. package/dist/static/styles/components/combobox.css.js +49 -0
  153. package/dist/static/styles/components/counter.css.js +42 -0
  154. package/dist/static/styles/components/dropdown-menu.css.js +52 -0
  155. package/dist/static/styles/components/narrow-panel.css.js +38 -0
  156. package/dist/static/styles/components/switcher.css.js +11 -0
  157. package/dist/static/styles/components/tabs.css.js +97 -0
  158. package/dist/static/styles/components/tools.css.js +23 -0
  159. package/dist/static/styles/components/version-history.css.js +30 -0
  160. package/dist/static/styles/components/wide-panel.css.js +135 -0
  161. package/dist/static/styles/variables.css.js +23 -0
  162. package/dist/stores/editor.js +1 -1
  163. package/dist/stores/version-history.js +1 -1
  164. package/dist/utils/htmlCompiler.d.ts +12 -0
  165. package/dist/utils/htmlCompiler.js +70 -0
  166. package/package.json +6 -5
  167. package/dist/composables/useTemplates.d.ts +0 -5
  168. package/dist/composables/useTemplates.js +0 -27
  169. package/dist/node_modules/pinia/dist/pinia.js +0 -317
  170. package/dist/node_modules/pinia/node_modules/vue-demi/lib/index.js +0 -11
  171. package/dist/static/editor.css.js +0 -182
  172. package/dist/static/templates/default/index.html.js +0 -5
  173. package/dist/static/templates/default/style.css.js +0 -119
@@ -1,30 +1,45 @@
1
1
  import { useActionsApi as l } from "./useActionsApi.js";
2
- import { useToaster as m } from "./useToaster.js";
3
- const u = () => {
4
- const a = (r, t, e) => {
5
- const n = new Blob([r], { type: e }), s = URL.createObjectURL(n), o = document.createElement("a");
6
- o.href = s, o.download = t, document.body.appendChild(o), o.click(), document.body.removeChild(o), URL.revokeObjectURL(s);
7
- }, c = (r) => {
8
- const t = /* @__PURE__ */ new Date(), e = String(t.getDate()).padStart(2, "0"), n = String(t.getMonth() + 1).padStart(2, "0"), s = t.getFullYear(), o = String(t.getHours()).padStart(2, "0"), i = String(t.getMinutes()).padStart(2, "0");
9
- return `${r}_${e}-${n}-${s}_${o}-${i}.html`;
2
+ import { useHtmlCompiler as m } from "./useHtmlCompiler.js";
3
+ import { useToaster as d } from "./useToaster.js";
4
+ const h = () => {
5
+ const a = (s, o, r) => {
6
+ const i = new Blob([s], { type: r }), t = URL.createObjectURL(i), e = document.createElement("a");
7
+ e.href = t, e.download = o, document.body.appendChild(e), e.click(), document.body.removeChild(e), URL.revokeObjectURL(t);
8
+ }, c = (s) => {
9
+ const o = /* @__PURE__ */ new Date(), r = String(o.getDate()).padStart(2, "0"), i = String(o.getMonth() + 1).padStart(2, "0"), t = o.getFullYear(), e = String(o.getHours()).padStart(2, "0"), n = String(o.getMinutes()).padStart(2, "0");
10
+ return `${s}_${r}-${i}-${t}_${e}-${n}.html`;
10
11
  };
11
- return { exportHtml: async () => {
12
- const { getCompiledEmail: r } = l(), { showToaster: t } = m();
12
+ return { exportHtml: async (s = !0) => {
13
+ const { getCompiledEmail: o } = l(), { showToaster: r } = d(), { compileHtml: i } = m();
13
14
  try {
14
- const { html: e } = await r();
15
- e ? a(e, c("HTML"), "text/html") : t({
15
+ const { html: t } = await o();
16
+ if (t) {
17
+ let e = t;
18
+ if (s) {
19
+ const n = i(t);
20
+ e = n.compiledHtml, console.debug("HTML Compilation Stats:", {
21
+ originalSize: n.stats.originalSize,
22
+ compiledSize: n.stats.compiledSize,
23
+ reduction: `${n.stats.reductionPercentage.toFixed(2)}%`,
24
+ appliedRules: n.appliedRules,
25
+ executionTime: `${n.stats.executionTime.toFixed(2)}ms`
26
+ });
27
+ }
28
+ a(e, c("HTML"), "text/html");
29
+ } else
30
+ r({
31
+ type: "error",
32
+ message: "No HTML content to download"
33
+ });
34
+ } catch (t) {
35
+ const e = t instanceof Error ? t.message : String(t);
36
+ r({
16
37
  type: "error",
17
- message: "No HTML content to download"
18
- });
19
- } catch (e) {
20
- const n = e instanceof Error ? e.message : String(e);
21
- t({
22
- type: "error",
23
- message: `Error compiling email: ${n}`
38
+ message: `Error compiling email: ${e}`
24
39
  });
25
40
  }
26
41
  } };
27
42
  };
28
43
  export {
29
- u as useExport
44
+ h as useExport
30
45
  };
@@ -0,0 +1,4 @@
1
+ import type { CompilationResult } from '@@/Types/html-compiler';
2
+ export declare const useHtmlCompiler: () => {
3
+ compileHtml: (html: string) => CompilationResult;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { defaultHtmlCompilerRules as r } from "../config/compiler/htmlCompilerRules.js";
2
+ import { createHtmlCompiler as p } from "../utils/htmlCompiler.js";
3
+ const a = () => {
4
+ const e = typeof window < "u" ? window.GuidoConfig : void 0, l = (e == null ? void 0 : e.htmlCompilerRules) || [], t = [
5
+ ...!!(e != null && e.ignoreDefaultHtmlCompilerRules) ? [] : r,
6
+ ...l.map((o, m) => ({
7
+ ...o,
8
+ priority: o.priority + 1e3 + m
9
+ // Ensure additional rules run after default rules
10
+ }))
11
+ ], i = p(t);
12
+ return { compileHtml: (o) => i.compile(o) };
13
+ };
14
+ export {
15
+ a as useHtmlCompiler
16
+ };
@@ -0,0 +1,84 @@
1
+ import { ref as p, computed as v } from "vue";
2
+ const j = (y = {}) => {
3
+ const h = p(!1), a = p(null), u = p(null), E = v(() => h.value), g = v(() => a.value !== null), T = {
4
+ baseURL: "",
5
+ timeout: 1e4,
6
+ retry: 0,
7
+ retryDelay: 1e3,
8
+ headers: {
9
+ "Content-Type": "application/json"
10
+ },
11
+ ...y
12
+ }, w = (e, s) => {
13
+ if (e.startsWith("http://") || e.startsWith("https://"))
14
+ return e;
15
+ const t = s || T.baseURL || "";
16
+ return t.endsWith("/") && e.startsWith("/") ? `${t}${e.slice(1)}` : t.endsWith("/") || e.startsWith("/") ? `${t}${e}` : `${t}/${e}`;
17
+ }, P = (e) => new Promise((s, t) => {
18
+ setTimeout(() => {
19
+ t(new Error("Request timeout"));
20
+ }, e);
21
+ }), x = (e) => new Promise((s) => {
22
+ setTimeout(s, e);
23
+ }), i = async (e, s, t, D = {}) => {
24
+ a.value = null, h.value = !0, u.value = new AbortController();
25
+ const n = { ...T, ...D }, L = w(s, n.baseURL), c = {
26
+ method: e,
27
+ headers: { ...n.headers },
28
+ signal: u.value.signal,
29
+ ...n
30
+ };
31
+ t && ["POST", "PUT", "PATCH"].includes(e) && (t instanceof FormData ? (delete c.headers["Content-Type"], c.body = t) : c.body = JSON.stringify(t));
32
+ const b = async (m = 0) => {
33
+ try {
34
+ const o = [fetch(L, c)];
35
+ n.timeout && o.push(P(n.timeout));
36
+ const r = await Promise.race(o);
37
+ if (!r.ok) {
38
+ const H = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(H);
39
+ throw d.status = r.status, d.statusText = r.statusText, d.response = r, d;
40
+ }
41
+ let f;
42
+ const l = r.headers.get("content-type");
43
+ return l != null && l.includes("application/json") ? f = await r.json() : l != null && l.includes("text/") ? f = await r.text() : f = await r.blob(), {
44
+ data: f,
45
+ status: r.status,
46
+ statusText: r.statusText,
47
+ headers: r.headers
48
+ };
49
+ } catch (o) {
50
+ const r = o instanceof Error && o.name === "AbortError";
51
+ if (m < (n.retry || 0) && !r)
52
+ return await x(n.retryDelay || 1e3), b(m + 1);
53
+ throw o instanceof Error ? o.name === "AbortError" ? a.value = { message: "Request was cancelled" } : a.value = { message: o.message } : a.value = o, o;
54
+ }
55
+ };
56
+ try {
57
+ return await b();
58
+ } finally {
59
+ h.value = !1, u.value = null;
60
+ }
61
+ }, $ = (e, s) => i("GET", e, void 0, s), C = (e, s, t) => i("POST", e, s, t), U = (e, s, t) => i("PUT", e, s, t), A = (e, s, t) => i("PATCH", e, s, t), R = (e, s) => i("DELETE", e, void 0, s), W = (e) => {
62
+ u.value && u.value.abort(e);
63
+ }, q = () => {
64
+ a.value = null;
65
+ };
66
+ return {
67
+ // State
68
+ loading: E,
69
+ error: v(() => a.value),
70
+ hasError: g,
71
+ // Methods
72
+ request: i,
73
+ get: $,
74
+ post: C,
75
+ put: U,
76
+ patch: A,
77
+ delete: R,
78
+ cancel: W,
79
+ clearError: q
80
+ };
81
+ };
82
+ export {
83
+ j as useHttp
84
+ };
@@ -0,0 +1,4 @@
1
+ export declare const usePartner: () => {
2
+ getPartnerName: () => string;
3
+ getProductType: () => string;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { DefaultProductType as o } from "../enums/defaults.js";
2
+ const p = () => {
3
+ const e = {
4
+ email: "newsletter"
5
+ };
6
+ return {
7
+ getPartnerName: () => window.location.hostname.split(".")[0] || "",
8
+ getProductType: () => {
9
+ const t = window.location.pathname.split("/").filter(Boolean)[0] || o;
10
+ return e[t] || t;
11
+ }
12
+ };
13
+ };
14
+ export {
15
+ p as usePartner
16
+ };
@@ -1,4 +1,4 @@
1
- import type { Template } from '@@/Types/stripo';
2
- export declare const useStripo: (emailId: string) => {
1
+ import type { Metadata, Template } from '@@/Types/stripo';
2
+ export declare const useStripo: (metadata: Metadata) => {
3
3
  initPlugin: (template: Template) => Promise<void>;
4
4
  };
@@ -1,83 +1,91 @@
1
- import { useCustomInterfaceAppearance as u } from "./useCustomInterfaceAppearance.js";
2
- import { useEditorStore as a } from "../stores/editor.js";
3
- const g = (s) => {
4
- const c = () => {
5
- const t = new Headers();
6
- t.append("Content-Type", "application/json");
7
- const r = JSON.stringify({
8
- pluginId: void 0,
9
- secretKey: void 0,
10
- role: void 0,
11
- userId: s
12
- });
13
- return fetch("/v2/stripo/get-user-token", {
14
- method: "POST",
15
- headers: t,
16
- body: r,
17
- redirect: "follow"
18
- }).then((o) => o.json());
19
- }, d = (t) => {
20
- const r = a(), i = t.html, o = t.css;
1
+ import { useActionsApi as m } from "./useActionsApi.js";
2
+ import { useCustomInterfaceAppearance as g } from "./useCustomInterfaceAppearance.js";
3
+ import { useToaster as f } from "./useToaster.js";
4
+ import { displayConditions as E } from "../enums/displayConditions.js";
5
+ import S from "../extensions/DynamicContent/extension.js";
6
+ import { useStripoApi as y } from "../services/stripoApi.js";
7
+ import { useEditorStore as C } from "../stores/editor.js";
8
+ const x = (a) => {
9
+ const { handleError: d } = f(), { getToken: c, getCustomFonts: u } = y(), l = (e, r = []) => {
10
+ const i = C(), { html: t, css: s } = e;
21
11
  window.UIEditor.initEditor(
22
12
  document.querySelector("#guido-editor"),
23
13
  {
24
- metadata: {
25
- emailId: s,
26
- userId: "1",
27
- username: "Guido User"
28
- },
29
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
30
- html: i,
31
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
32
- css: o,
14
+ metadata: a,
15
+ html: t,
16
+ css: s,
17
+ forceRecreate: !0,
33
18
  locale: "en",
34
19
  undoButtonSelector: "#guido__undo-button",
35
20
  redoButtonSelector: "#guido__redo-button",
36
21
  mobileViewButtonSelector: ".guido__view-option-selection-mobile",
37
22
  desktopViewButtonSelector: ".guido__view-option-selection-desktop",
38
23
  codeEditorButtonSelector: "#guido__code-button",
39
- async onTokenRefreshRequest(e) {
24
+ customAppearanceMergetags: !0,
25
+ customAppearanceMergetagsBorderColor: "#f1f3fe",
26
+ customAppearanceMergetagsBackgroundColor: "#f1f3fe",
27
+ customViewStyles: `
28
+ .esd-x, .esd-merge-tag {color: #0a2ecc !important; box-shadow: none !important;}
29
+ .esd-merge-tag {border: 1px solid #b5c1f1; border-radius: 4px !important;}
30
+ `,
31
+ conditionsEnabled: !0,
32
+ customConditionsEnabled: !0,
33
+ conditionCategories: E,
34
+ messageSettingsEnabled: !1,
35
+ editorFonts: {
36
+ showDefaultStandardFonts: !0,
37
+ showDefaultNotStandardFonts: !0,
38
+ customFonts: r
39
+ },
40
+ async onTokenRefreshRequest(o) {
40
41
  try {
41
42
  const n = await c();
42
- e(n.token);
43
+ o(n);
43
44
  } catch (n) {
44
- console.error("Failed to refresh token:", n);
45
+ d(n, "Failed to refresh token");
45
46
  }
46
47
  },
47
48
  onTemplateLoaded() {
48
49
  try {
49
- const { importCss: e } = u();
50
- e();
51
- } catch (e) {
52
- console.error("Failed to load custom interface appearance:", e);
50
+ const { importCss: o } = g(), { activateCustomViewStyles: n } = m();
51
+ o(), n();
52
+ } catch (o) {
53
+ d(o, "Failed to load custom interface appearance");
53
54
  }
54
55
  },
55
- onCodeEditorVisibilityChanged(e) {
56
- r.isCodeEditorOpen = e;
56
+ onCodeEditorVisibilityChanged(o) {
57
+ i.isCodeEditorOpen = o;
57
58
  },
58
- onEditorVisualModeChanged(e) {
59
- r.editorVisualMode = e.toLowerCase();
59
+ onEditorVisualModeChanged(o) {
60
+ i.editorVisualMode = o.toLowerCase();
60
61
  },
61
- onVersionHistoryVisibilityChanged(e) {
62
- r.isVersionHistoryOpen = e;
63
- }
62
+ onVersionHistoryVisibilityChanged(o) {
63
+ i.isVersionHistoryOpen = o;
64
+ },
65
+ ignoreClickOutsideSelectors: ["#guido-dynamic-content-modal"],
66
+ extensions: [S]
64
67
  }
65
68
  );
66
- };
67
- return { initPlugin: (t) => new Promise((r, i) => {
69
+ }, p = (e) => new Promise((r, i) => {
68
70
  if (document.getElementById("UiEditorScript")) {
69
- d(t), r();
71
+ e(), r();
70
72
  return;
71
73
  }
72
- const o = document.createElement("script");
73
- o.id = "UiEditorScript", o.type = "module", o.src = "https://plugins.stripo.email/resources/uieditor/latest/UIEditor.js", o.onload = () => {
74
- d(t), r();
75
- }, o.onerror = () => {
76
- const e = new Error("Failed to load Stripo UIEditor script");
77
- i(e);
78
- }, document.body.appendChild(o);
79
- }) };
74
+ const t = document.createElement("script");
75
+ t.id = "UiEditorScript", t.type = "module", t.src = "https://plugins.stripo.email/resources/uieditor/latest/UIEditor.js", t.onload = () => {
76
+ e(), r();
77
+ }, t.onerror = () => {
78
+ const s = new Error("Failed to load Stripo UIEditor script");
79
+ i(s);
80
+ }, document.body.appendChild(t);
81
+ });
82
+ return { initPlugin: async (e) => {
83
+ await p(async () => {
84
+ const r = await u();
85
+ l(e, r);
86
+ });
87
+ } };
80
88
  };
81
89
  export {
82
- g as useStripo
90
+ x as useStripo
83
91
  };
@@ -17,4 +17,5 @@ export declare const useToaster: () => {
17
17
  } | undefined)[]>;
18
18
  showToaster: (options?: ToasterOptions) => void;
19
19
  hideToaster: () => void;
20
+ handleError: (error: unknown, context: string) => void;
20
21
  };
@@ -1,29 +1,37 @@
1
- import { ref as u, watch as f } from "vue";
2
- const T = () => {
3
- const t = u(!1), s = u(""), r = u("success"), o = u([]);
1
+ import { ref as o, watch as T } from "vue";
2
+ const v = () => {
3
+ const t = o(!1), s = o(""), c = o("success"), n = o([]);
4
4
  let a = null;
5
- function l() {
5
+ function i() {
6
6
  a && (clearTimeout(a), a = null);
7
7
  }
8
- function c() {
9
- t.value = !1, o.value = [], s.value = "";
8
+ function u() {
9
+ t.value = !1, n.value = [], s.value = "";
10
10
  }
11
- function n(e = { message: "" }) {
12
- c(), s.value = e.message, r.value = e.type || "success", o.value = e.actionButton ? [e.actionButton] : [], t.value = !0;
11
+ function l(e = { message: "" }) {
12
+ u(), s.value = e.message, c.value = e.type || "success", n.value = e.actionButton ? [e.actionButton] : [], t.value = !0;
13
13
  }
14
- return f([t, s], ([e, i]) => {
15
- l(), e && i && (a = setTimeout(() => {
16
- c();
14
+ function f(e, r) {
15
+ const m = e instanceof Error ? e.message : String(e);
16
+ l({
17
+ type: "error",
18
+ message: `${r}: ${m}`
19
+ });
20
+ }
21
+ return T([t, s], ([e, r]) => {
22
+ i(), e && r && (a = setTimeout(() => {
23
+ u();
17
24
  }, 6e3));
18
25
  }), {
19
26
  isToasterVisible: t,
20
27
  toasterMessage: s,
21
- toasterType: r,
22
- toasterActionButton: o,
23
- showToaster: n,
24
- hideToaster: c
28
+ toasterType: c,
29
+ toasterActionButton: n,
30
+ showToaster: l,
31
+ hideToaster: u,
32
+ handleError: f
25
33
  };
26
34
  };
27
35
  export {
28
- T as useToaster
36
+ v as useToaster
29
37
  };
@@ -0,0 +1,2 @@
1
+ import type { CompilerRule } from '@@/Types/html-compiler';
2
+ export declare const defaultHtmlCompilerRules: CompilerRule[];
@@ -0,0 +1,145 @@
1
+ const a = [
2
+ {
3
+ id: "fix-url-encoding-start",
4
+ description: "Replace {%22 with %7B%22 to fix URL encoding",
5
+ type: "replace",
6
+ search: "{%22",
7
+ replacement: "%7B%22",
8
+ replaceAll: !0,
9
+ priority: 10
10
+ },
11
+ {
12
+ id: "fix-url-encoding-end",
13
+ description: "Replace %22} with %22%7D to fix URL encoding",
14
+ type: "replace",
15
+ search: "%22}",
16
+ replacement: "%22%7D",
17
+ replaceAll: !0,
18
+ priority: 10
19
+ },
20
+ {
21
+ id: "fix-tags-start",
22
+ description: "Replace %7B%7B with {{ to fix URL encoding",
23
+ type: "replace",
24
+ search: "%7B%7B",
25
+ replacement: "{{",
26
+ replaceAll: !0,
27
+ priority: 11
28
+ },
29
+ {
30
+ id: "fix-tags-end",
31
+ description: "Replace %7D%7D with }} to fix URL encoding",
32
+ type: "replace",
33
+ search: "%7D%7D",
34
+ replacement: "}}",
35
+ replaceAll: !0,
36
+ priority: 12
37
+ },
38
+ {
39
+ id: "unescape-inequality-operators-start",
40
+ description: "Replace &lt; with < to fix URL encoding",
41
+ type: "replace",
42
+ search: "&lt;",
43
+ replacement: "<",
44
+ replaceAll: !0,
45
+ priority: 13
46
+ },
47
+ {
48
+ id: "unescape-inequality-operators-end",
49
+ description: "Replace &gt; with > to fix URL encoding",
50
+ type: "replace",
51
+ search: "&gt;",
52
+ replacement: ">",
53
+ replaceAll: !0,
54
+ priority: 14
55
+ },
56
+ {
57
+ id: "remove-apty-iframe",
58
+ description: "Cleanup Apty Iframe Code",
59
+ type: "remove",
60
+ targets: [
61
+ '<iframe src="about:blank" id="letznav-iframe-script" allowtransparency="true" style="width:1px;height:1px"></iframe>',
62
+ 'src="about:blank" id="letznav-iframe-script" allowtransparency="true" style="width:1px;height:1px"></iframe>'
63
+ ],
64
+ priority: 20
65
+ },
66
+ {
67
+ id: "remove-apty-styles",
68
+ description: "Removing Apty Styles",
69
+ type: "regex",
70
+ pattern: '<styles*data-styles="apty_styles"s* type="text/css"s*>((s|.)*?)</style>',
71
+ replacement: "",
72
+ flags: "g",
73
+ priority: 21
74
+ },
75
+ {
76
+ id: "remove-mso-conditions",
77
+ description: "Removing MSO Conditions",
78
+ type: "remove",
79
+ targets: [
80
+ /<!--\[if\s\(mso 16\)\]>\s*<style\s*\S*>\s*a\s*\{\s*text-decoration\s*:\s*none\s*;*\s*\}\s*<\/style>\s*<!\[endif\]-->/g,
81
+ /<!--\[if\sgte mso 9\]>\s*<style\s*\S*>\s*sup\s*\{\s*font-size\s*:\s*100%\s*!important\s*;*\s*\}\s*<\/style>\s*<!\[endif\]-->/g,
82
+ /<!--\[if\sgte mso 9\]>\s*<noscript>\s*<xml>\s*<o:OfficeDocumentSettings>\s*<o:AllowPNG>\s*<\/o:AllowPNG>\s*<o:PixelsPerInch>\d+<\/o:PixelsPerInch>\s*<\/o:OfficeDocumentSettings>\s*<\/xml>\s*<\/noscript>\s*<!\[endif\]-->/g,
83
+ /<!--\[if mso\]>\s*<xml>\s*<w:WordDocument\s+xmlns:w="urn:schemas-microsoft-com:office:word">\s*<w:DontUseAdvancedTypographyReadingMail><\/w:DontUseAdvancedTypographyReadingMail>\s*<\/w:WordDocument>\s*<\/xml>\s*<!\[endif\]-->/g,
84
+ /<\!--\[if \!mso\]><\!--\s*\d*\s*-->\s*<\!--\[if \!mso\]><\!--\s*\d*\s*-->\s*<\!--<!\[endif\]-->/g,
85
+ /<!--\[if\s\!mso\]>\s*<!-- \d -->/g
86
+ ],
87
+ priority: 22
88
+ },
89
+ {
90
+ id: "add-mso-conditions",
91
+ description: "Adding MSO Conditions",
92
+ type: "custom",
93
+ processor: (e) => {
94
+ const t = [
95
+ `<!--[if gte mso 9]>
96
+ <style>sup {
97
+ font-size: 100% !important;
98
+ }</style><![endif]-->`,
99
+ `<!--[if gte mso 9]>
100
+ <noscript>
101
+ <xml>
102
+ <o:OfficeDocumentSettings>
103
+ <o:AllowPNG></o:AllowPNG>
104
+ <o:PixelsPerInch>96</o:PixelsPerInch>
105
+ </o:OfficeDocumentSettings>
106
+ </xml>
107
+ </noscript><![endif]-->`,
108
+ `<!--[if mso]>
109
+ <xml>
110
+ <w:WordDocument xmlns:w="urn:schemas-microsoft-com:office:word">
111
+ <w:DontUseAdvancedTypographyReadingMail></w:DontUseAdvancedTypographyReadingMail>
112
+ </w:WordDocument>
113
+ </xml><![endif]-->`
114
+ ], s = /<head>([\S\s]*)<\/head>/, o = new RegExp(s);
115
+ if (!e.match(o))
116
+ return e;
117
+ let i = e;
118
+ return t.forEach((r) => {
119
+ i = i.replace("</head>", `${r}</head>`);
120
+ }), i;
121
+ },
122
+ priority: 30
123
+ },
124
+ {
125
+ id: "replace-old-image-domain",
126
+ description: "Replacing old image domains",
127
+ type: "replace",
128
+ search: "stripo-editor-image.s3-eu-west-1.amazonaws.com",
129
+ replacement: "email-static.useinsider.com",
130
+ replaceAll: !0,
131
+ priority: 40
132
+ },
133
+ {
134
+ id: "replace-old-v2-image-domain",
135
+ description: "Replacing old image domains",
136
+ type: "replace",
137
+ search: "email.static.useinsider.com",
138
+ replacement: "email-static.useinsider.com",
139
+ replaceAll: !0,
140
+ priority: 41
141
+ }
142
+ ];
143
+ export {
144
+ a as defaultHtmlCompilerRules
145
+ };
File without changes
@@ -1,2 +1,4 @@
1
1
  import type { GuidoConfig } from '@@/Types/generic';
2
2
  export declare const DefaultGuidoConfig: GuidoConfig;
3
+ export declare const DefaultProductType = "newsletter";
4
+ export declare const DefaultUsername = "Guido User";
@@ -1,6 +1,8 @@
1
- const n = {
1
+ const t = {
2
2
  translationsPath: "window.trans.en"
3
- };
3
+ }, e = "newsletter", n = "Guido User";
4
4
  export {
5
- n as DefaultGuidoConfig
5
+ t as DefaultGuidoConfig,
6
+ e as DefaultProductType,
7
+ n as DefaultUsername
6
8
  };
@@ -0,0 +1,2 @@
1
+ import type { ConditionCategories } from '@@/Types/condition-categories';
2
+ export declare const displayConditions: ConditionCategories;