@useinsider/guido 1.0.0-beta.ae55276 → 1.0.0-beta.afdfab7

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 (142) hide show
  1. package/README.md +11 -259
  2. package/dist/@types/generic.d.ts +0 -8
  3. package/dist/App.vue.d.ts +1 -1
  4. package/dist/components/Guido.vue.d.ts +2 -9
  5. package/dist/components/Guido.vue.js +3 -3
  6. package/dist/components/Guido.vue2.js +26 -41
  7. package/dist/components/{wrappers → organisms/base}/ModalWrapper.vue.d.ts +1 -1
  8. package/dist/components/{wrappers → organisms/base}/ModalWrapper.vue.js +1 -1
  9. package/dist/components/{wrappers → organisms/base}/ModalWrapper.vue2.js +1 -1
  10. package/dist/components/organisms/header/MiddleSlot.vue.js +1 -1
  11. package/dist/components/organisms/header/RightSlot.vue.d.ts +1 -1
  12. package/dist/components/organisms/header/RightSlot.vue.js +1 -1
  13. package/dist/components/organisms/header/RightSlot.vue2.js +10 -12
  14. package/dist/components/organisms/header/ViewOptions.vue.d.ts +1 -1
  15. package/dist/components/organisms/header/version-history/RestoreButton.vue.d.ts +1 -1
  16. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.d.ts +1 -1
  17. package/dist/components/organisms/header/version-history/VersionHistoryItem.vue.js +1 -1
  18. package/dist/components/organisms/header/version-history/ViewOptions.vue.d.ts +1 -1
  19. package/dist/components/organisms/save-template/SaveTemplateModal.vue.d.ts +3 -3
  20. package/dist/components/organisms/save-template/SaveTemplateModal.vue.js +11 -9
  21. package/dist/components/organisms/save-template/SaveTemplateModal.vue2.js +67 -59
  22. package/dist/composables/useActionsApi.d.ts +1 -3
  23. package/dist/composables/useActionsApi.js +34 -46
  24. package/dist/composables/useExport.d.ts +1 -1
  25. package/dist/composables/useExport.js +20 -35
  26. package/dist/composables/useHttp.js +21 -23
  27. package/dist/composables/useSaveAsTemplate.d.ts +12 -2
  28. package/dist/composables/useSaveAsTemplate.js +15 -22
  29. package/dist/composables/useStripo.js +28 -39
  30. package/dist/composables/useTemplateCategories.d.ts +35 -0
  31. package/dist/composables/useTemplateCategories.js +78 -0
  32. package/dist/composables/useTemplateNameValidation.d.ts +12 -6
  33. package/dist/composables/useTemplateNameValidation.js +52 -28
  34. package/dist/guido.css +1 -1
  35. package/dist/utils/base64.d.ts +0 -1
  36. package/package.json +7 -6
  37. package/dist/_virtual/AddCustomFont.js +0 -4
  38. package/dist/_virtual/AiAssistantValueType.js +0 -4
  39. package/dist/_virtual/BackgroundColorBuiltInControl.js +0 -4
  40. package/dist/_virtual/BackgroundImageBuiltInControl.js +0 -4
  41. package/dist/_virtual/Block.js +0 -4
  42. package/dist/_virtual/BlockAttributes.js +0 -4
  43. package/dist/_virtual/BlockCompositionType.js +0 -4
  44. package/dist/_virtual/BlockPaddingsBuiltInControl.js +0 -4
  45. package/dist/_virtual/BlockRenderer.js +0 -4
  46. package/dist/_virtual/BlockType.js +0 -4
  47. package/dist/_virtual/BlocksPanel.js +0 -4
  48. package/dist/_virtual/BuiltInControl.js +0 -4
  49. package/dist/_virtual/BuiltInControlTypes.js +0 -4
  50. package/dist/_virtual/ButtonBorderBuiltInControl.js +0 -4
  51. package/dist/_virtual/ButtonColorBuiltInControl.js +0 -4
  52. package/dist/_virtual/ButtonFontColorBuiltInControl.js +0 -4
  53. package/dist/_virtual/ButtonInternalIndentsBuiltInControl.js +0 -4
  54. package/dist/_virtual/ButtonTextBuiltInControl.js +0 -4
  55. package/dist/_virtual/ContextAction.js +0 -4
  56. package/dist/_virtual/ContextActionType.js +0 -4
  57. package/dist/_virtual/Control.js +0 -4
  58. package/dist/_virtual/EditorStatePropertyType.js +0 -4
  59. package/dist/_virtual/Extension.js +0 -4
  60. package/dist/_virtual/ExtensionBuilder.js +0 -4
  61. package/dist/_virtual/FontFamilyBuiltInControl.js +0 -4
  62. package/dist/_virtual/LinkColorBuiltInControl.js +0 -4
  63. package/dist/_virtual/ModificationDescription.js +0 -4
  64. package/dist/_virtual/PanelPosition.js +0 -4
  65. package/dist/_virtual/PreviewDeviceMode.js +0 -4
  66. package/dist/_virtual/SettingsPanelRegistry.js +0 -4
  67. package/dist/_virtual/SettingsPanelTab.js +0 -4
  68. package/dist/_virtual/SettingsTab.js +0 -4
  69. package/dist/_virtual/StructureBorderBuiltInControl.js +0 -4
  70. package/dist/_virtual/StructurePaddingsBuiltInControl.js +0 -4
  71. package/dist/_virtual/TextColorBuiltInControl.js +0 -4
  72. package/dist/_virtual/TextLineSpacingBuiltInControl.js +0 -4
  73. package/dist/_virtual/TextSizeBuiltInControl.js +0 -4
  74. package/dist/_virtual/TextStyleBuiltInControl.js +0 -4
  75. package/dist/_virtual/UIElement.js +0 -4
  76. package/dist/_virtual/UIElementTagRegistry.js +0 -4
  77. package/dist/_virtual/UIElementType.js +0 -4
  78. package/dist/_virtual/UIElementsAttributes.js +0 -4
  79. package/dist/_virtual/index.js +0 -5
  80. package/dist/_virtual/index2.js +0 -4
  81. package/dist/composables/useHtmlCompiler.d.ts +0 -4
  82. package/dist/composables/useHtmlCompiler.js +0 -16
  83. package/dist/config/compiler/htmlCompilerRules.d.ts +0 -2
  84. package/dist/config/compiler/htmlCompilerRules.js +0 -145
  85. package/dist/config/compiler/outlookCompilerRules.d.ts +0 -0
  86. package/dist/extensions/DynamicContent/dynamic-content-modal.d.ts +0 -6
  87. package/dist/extensions/DynamicContent/dynamic-content-modal.js +0 -27
  88. package/dist/extensions/DynamicContent/dynamic-content.css.js +0 -24
  89. package/dist/extensions/DynamicContent/dynamic-content.d.ts +0 -16
  90. package/dist/extensions/DynamicContent/dynamic-content.js +0 -63
  91. package/dist/extensions/DynamicContent/extension.d.ts +0 -2
  92. package/dist/extensions/DynamicContent/extension.js +0 -11
  93. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/Extension.js +0 -51
  94. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js +0 -52
  95. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js +0 -41
  96. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlockRenderer.js +0 -18
  97. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/BlocksPanel.js +0 -32
  98. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/ContextAction.js +0 -18
  99. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AddCustomFont.js +0 -8
  100. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js +0 -13
  101. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockAttributes.js +0 -34
  102. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js +0 -13
  103. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js +0 -13
  104. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js +0 -104
  105. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js +0 -13
  106. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js +0 -13
  107. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js +0 -13
  108. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js +0 -13
  109. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js +0 -13
  110. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js +0 -13
  111. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js +0 -45
  112. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundColorBuiltInControl.js +0 -43
  113. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BackgroundImageBuiltInControl.js +0 -46
  114. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BlockPaddingsBuiltInControl.js +0 -44
  115. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/BuiltInControl.js +0 -22
  116. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonBorderBuiltInControl.js +0 -46
  117. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonColorBuiltInControl.js +0 -46
  118. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonFontColorBuiltInControl.js +0 -45
  119. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonInternalIndentsBuiltInControl.js +0 -45
  120. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/ButtonTextBuiltInControl.js +0 -45
  121. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js +0 -20
  122. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/FontFamilyBuiltInControl.js +0 -43
  123. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/LinkColorBuiltInControl.js +0 -45
  124. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js +0 -18
  125. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js +0 -32
  126. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructureBorderBuiltInControl.js +0 -46
  127. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/StructurePaddingsBuiltInControl.js +0 -44
  128. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextColorBuiltInControl.js +0 -43
  129. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextLineSpacingBuiltInControl.js +0 -43
  130. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextSizeBuiltInControl.js +0 -45
  131. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/TextStyleBuiltInControl.js +0 -43
  132. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/index.js +0 -266
  133. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js +0 -26
  134. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElement.js +0 -22
  135. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElementTagRegistry.js +0 -18
  136. package/dist/stores/template-categories.d.ts +0 -41
  137. package/dist/stores/template-categories.js +0 -91
  138. package/dist/utils/generic.d.ts +0 -1
  139. package/dist/utils/generic.js +0 -7
  140. package/dist/utils/htmlCompiler.d.ts +0 -12
  141. package/dist/utils/htmlCompiler.js +0 -70
  142. package/dist/utils/textUtil.d.ts +0 -2
@@ -1,20 +1,22 @@
1
1
  import s from "./SaveTemplateModal.vue2.js";
2
- import r from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var o = function() {
4
- var a = this, t = a._self._c, e = a._self._setupProxy;
5
- return t(e.ModalWrapper, { attrs: { "cancel-button-text": e.trans("products.cancel"), description: e.trans("newsletter.save-template-description"), "is-open": e.props.isOpen, "primary-button-loading": e.saveState.saving, "primary-button-text": e.trans(e.saveState.saving ? "newsletter.saving" : "products.save"), title: e.trans("products.save-template") }, on: { cancel: e.closeModal, close: e.closeModal, save: e.saveTemplate } }, [t(e.InBasicTextInput, { staticClass: "mb-5 w-1", attrs: { id: "template-name-input", name: "templateName", "character-counter-status": !1, "disabled-status": e.saveState.saving, "label-text": e.trans("products.template-name"), "placeholder-text": e.trans("newsletter.enter-template-name"), "state-message": e.getValidationMessage(), states: e.hasError() ? "error" : "", "tooltip-status": !1, value: e.templateName }, on: { input: e.templateNameInputHandler } }), t(e.InMultiSelect, { staticClass: "template-category-dropdown mb-5 w-1", attrs: { "create-option-status": "", "search-status": "", "button-status": !1, "character-limit-validation-text": e.trans("validation-v2.duration-value", {
2
+ import l from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var n = function() {
4
+ var r = this, e = r._self._c, t = r._self._setupProxy;
5
+ return e(t.ModalWrapper, { attrs: { "cancel-button-text": t.trans("products.cancel"), description: t.trans("newsletter.save-template-description"), "is-open": t.props.isOpen, "primary-button-loading": t.saveState.saving || t.isLoadingHtml, "primary-button-text": t.trans("products.save"), title: t.trans("products.save-template") }, on: { cancel: t.closeModal, close: t.closeModal, save: t.saveTemplate } }, [e(t.InTextInput, { staticClass: "mb-5 w-1", attrs: { id: "template-name-input", "with-label": "", name: "templateName", invalid: !!t.validationError, "invalid-message": t.validationError, label: t.trans("products.template-name"), placeholder: t.trans("newsletter.enter-template-name") }, model: { value: t.templateNameInput, callback: function(a) {
6
+ t.templateNameInput = typeof a == "string" ? a.trim() : a;
7
+ }, expression: "templateNameInput" } }), e(t.InMultiSelect, { staticClass: "template-category-dropdown mb-5 w-1", attrs: { "create-option-status": "", "search-status": "", "button-status": !1, "character-limit-validation-text": t.trans("validation-v2.duration-value", {
6
8
  min: 1,
7
- max: e.templateCategorySearchInputLimit
8
- }), "create-button-label": e.trans("products.create-new-category"), "disabled-status": e.saveState.saving, "label-text": e.trans("products.template-category"), "loading-state": e.categoriesStore.loading || e.categoriesStore.loadingCreate, "max-character-limit": e.templateCategorySearchInputLimit, options: e.categoriesStore.mappedCategories, "placeholder-text": e.trans("products.select-template-category"), value: e.categoriesStore.selectedCategories }, on: { addOption: e.addOption, change: e.categoriesStore.setSelectedCategories, resetAllOptions: e.categoriesStore.setSelectedCategories, selectAllOptions: e.categoriesStore.setSelectedCategories } })], 1);
9
- }, n = [], l = /* @__PURE__ */ r(
9
+ max: t.templateCategorySearchInputLimit
10
+ }), "create-button-label": t.trans("products.create-new-category"), "label-text": t.trans("products.template-category"), "loading-state": t.categoriesData.loading || t.categoriesData.loadingCreate, "max-character-limit": t.templateCategorySearchInputLimit, options: t.categoriesData.mappedCategories, "placeholder-text": t.trans("products.select-template-category"), value: t.categoriesData.selectedCategories }, on: { addOption: t.addOption, change: t.setSelectedCategories, resetAllOptions: t.setSelectedCategories, selectAllOptions: t.setSelectedCategories } })], 1);
11
+ }, o = [], i = /* @__PURE__ */ l(
10
12
  s,
11
- o,
12
13
  n,
14
+ o,
13
15
  !1,
14
16
  null,
15
17
  null
16
18
  );
17
- const d = l.exports;
19
+ const d = i.exports;
18
20
  export {
19
21
  d as default
20
22
  };
@@ -1,78 +1,86 @@
1
- import { defineComponent as b, ref as u, computed as A, watch as H } from "vue";
2
- import L from "../../wrappers/ModalWrapper.vue.js";
3
- import { useActionsApi as N } from "../../../composables/useActionsApi.js";
4
- import { useToaster as V } from "../../../composables/useToaster.js";
5
- import { useTranslations as j } from "../../../composables/useTranslations.js";
6
- import { useTemplateCategoriesStore as x } from "../../../stores/template-categories.js";
7
- import { InMultiSelect as B, InBasicTextInput as P } from "@useinsider/design-system-vue";
8
- import { useSaveAsTemplate as E } from "../../../composables/useSaveAsTemplate.js";
9
- import { useTemplateNameValidation as R } from "../../../composables/useTemplateNameValidation.js";
10
- const U = /* @__PURE__ */ b({
1
+ import { defineComponent as N, ref as o, watch as C } from "vue";
2
+ import { useActionsApi as O } from "../../../composables/useActionsApi.js";
3
+ import { useTemplateCategories as j } from "../../../composables/useTemplateCategories.js";
4
+ import { useToaster as x } from "../../../composables/useToaster.js";
5
+ import { useTranslations as E } from "../../../composables/useTranslations.js";
6
+ import H from "../base/ModalWrapper.vue.js";
7
+ import { InMultiSelect as R, InTextInput as V } from "@useinsider/design-system-vue";
8
+ import { useSaveAsTemplate as B } from "../../../composables/useSaveAsTemplate.js";
9
+ import { useTemplateNameValidation as P } from "../../../composables/useTemplateNameValidation.js";
10
+ const X = /* @__PURE__ */ N({
11
11
  __name: "SaveTemplateModal",
12
12
  props: {
13
13
  isOpen: { type: Boolean }
14
14
  },
15
15
  emits: ["close"],
16
- setup(S, { emit: p }) {
17
- const v = S, n = j(), { showToaster: c } = V(), { getRawTemplateData: f } = N(), a = x(), {
18
- state: t,
19
- saveTemplate: d
20
- } = E(), {
21
- templateName: s,
22
- getValidationMessage: I,
23
- hasError: w,
24
- validateInputs: g,
25
- resetValidation: i
26
- } = R(), l = u(!1), o = u(""), r = u(""), C = 40, y = A(() => t.saving || l.value || a.loading || a.loadingCreate), m = () => {
27
- s.value = "", o.value = "", r.value = "", a.resetSelection(), i();
28
- }, M = (e) => {
29
- s.value = e, i();
30
- }, T = () => {
31
- m(), p("close");
32
- }, _ = async () => {
33
- if (!y.value) {
34
- if (t.saving = !0, !await g()) {
35
- t.saving = !1;
16
+ setup(I, { emit: u }) {
17
+ const p = I, l = E(), { showToaster: r } = x(), { getCompiledEmail: v } = O(), {
18
+ data: w,
19
+ fetchCategories: f,
20
+ createCategory: d,
21
+ setSelectedCategories: _,
22
+ resetSelection: y,
23
+ getSelectedCategoryIds: g
24
+ } = j(), {
25
+ state: M,
26
+ saveTemplate: T
27
+ } = B(), {
28
+ validationError: b,
29
+ validateTemplateName: n,
30
+ clearValidation: i
31
+ } = P(), t = o(""), a = o(!1), c = o(!1), s = o(""), A = 40, m = () => {
32
+ t.value = "", s.value = "", y(), i();
33
+ }, h = () => {
34
+ m(), u("close");
35
+ }, D = async () => {
36
+ a.value = !0;
37
+ try {
38
+ if (!(await n(t.value)).isValid) {
39
+ a.value = !1;
36
40
  return;
37
41
  }
38
- try {
39
- await d({
40
- name: s.value,
41
- htmlContent: o.value,
42
- categoryIds: a.getSelectedCategoryIds,
43
- css: r.value
44
- }) && (t.saving = !1, c({
45
- message: n("journey-builder.template-saved-successfully", { name: s.value }),
46
- type: "success"
47
- }), T());
48
- } catch {
49
- t.saving = !1, c({
50
- message: n("journey-builder.template-save-error", { name: s.value }),
51
- type: "error"
52
- });
53
- }
42
+ await T({
43
+ name: t.value,
44
+ htmlContent: s.value,
45
+ categoryIds: g.value
46
+ }) && (r({
47
+ message: l(
48
+ "journey-builder.template-saved-successfully",
49
+ { name: t.value }
50
+ ),
51
+ type: "success"
52
+ }), h(), a.value = !1);
53
+ } catch {
54
+ r({
55
+ message: l("journey-builder.template-save-error", { name: t.value }),
56
+ type: "error"
57
+ }), a.value = !1;
54
58
  }
55
- }, h = async () => {
56
- l.value = !0;
59
+ };
60
+ C(t, (e) => {
61
+ e.trim() ? n(e) : i();
62
+ });
63
+ const S = async () => {
64
+ c.value = !0;
57
65
  try {
58
- const { html: e, css: O } = await f();
59
- r.value = O || "", o.value = e || "";
66
+ const { html: e } = await v();
67
+ s.value = e || "";
60
68
  } catch {
61
- o.value = "", r.value = "";
69
+ s.value = "";
62
70
  } finally {
63
- l.value = !1;
71
+ c.value = !1;
64
72
  }
65
- }, D = async (e) => {
66
- await a.createCategory(e);
73
+ }, L = async (e) => {
74
+ await d(e);
67
75
  };
68
- return H(() => v.isOpen, async (e) => {
76
+ return C(() => p.isOpen, async (e) => {
69
77
  e ? await Promise.all([
70
- h(),
71
- a.fetchCategories()
78
+ S(),
79
+ f()
72
80
  ]) : m();
73
- }), { __sfc: !0, props: v, emit: p, trans: n, showToaster: c, getRawTemplateData: f, categoriesStore: a, saveState: t, saveTemplateToLibrary: d, templateName: s, getValidationMessage: I, hasError: w, validateInputs: g, resetValidation: i, isLoadingHtml: l, htmlData: o, cssData: r, templateCategorySearchInputLimit: C, isOperationInProgress: y, resetModalState: m, templateNameInputHandler: M, closeModal: T, saveTemplate: _, fetchHtmlData: h, addOption: D, ModalWrapper: L, InBasicTextInput: P, InMultiSelect: B };
81
+ }), { __sfc: !0, props: p, emit: u, trans: l, showToaster: r, getCompiledEmail: v, categoriesData: w, fetchCategories: f, createCategory: d, setSelectedCategories: _, resetSelection: y, getSelectedCategoryIds: g, saveState: M, saveTemplateToLibrary: T, validationError: b, validateTemplateName: n, clearValidation: i, templateNameInput: t, isSaving: a, isLoadingHtml: c, htmlData: s, templateCategorySearchInputLimit: A, resetModalState: m, closeModal: h, saveTemplate: D, fetchHtmlData: S, addOption: L, ModalWrapper: H, InTextInput: V, InMultiSelect: R };
74
82
  }
75
83
  });
76
84
  export {
77
- U as default
85
+ X as default
78
86
  };
@@ -1,6 +1,4 @@
1
- import { GetCompiledEmailOptions, CompiledEmailResult, TemplateDataResult } from '@@/Types/actions-api';
1
+ import { GetCompiledEmailOptions, CompiledEmailResult } from '@@/Types/actions-api';
2
2
  export declare const useActionsApi: () => {
3
3
  getCompiledEmail: (options?: GetCompiledEmailOptions) => Promise<CompiledEmailResult>;
4
- getRawTemplateData: () => Promise<TemplateDataResult>;
5
- activateCustomViewStyles: (isActive?: boolean) => void;
6
4
  };
@@ -1,48 +1,36 @@
1
- const g = () => ({
2
- getCompiledEmail: (t = {}) => new Promise((e, a) => {
3
- const o = {
4
- ...{ ...{
5
- minimize: !0,
6
- utmEntity: {
7
- utmSource: "",
8
- utmMedium: "",
9
- utmCampaign: "",
10
- utmContent: "",
11
- utmTerm: "",
12
- customUtms: [
13
- {
14
- name1: "val1",
15
- name2: "val2"
16
- }
17
- ]
18
- },
19
- mergeTags: ["Tag1", "Tag2"],
20
- forseAmp: !1,
21
- resetDataSavedFlag: !1,
22
- disableLineHeightsReplace: !0
23
- }, ...t },
24
- callback: (i, s, m, n, l) => {
25
- i ? a(i) : e({
26
- html: s,
27
- ampHtml: m,
28
- ampErrors: n,
29
- displayConditions: l
30
- });
31
- }
32
- };
33
- window.StripoEditorApi.actionsApi.compileEmail(o);
34
- }),
35
- getRawTemplateData: () => new Promise((t) => {
36
- window.StripoEditorApi.actionsApi.getTemplateData(
37
- (e) => {
38
- t(e);
39
- }
40
- );
41
- }),
42
- activateCustomViewStyles: (t = !0) => {
43
- window.StripoEditorApi.actionsApi.activateCustomViewStyles(t);
44
- }
45
- });
1
+ const d = () => ({ getCompiledEmail: (t = {}) => new Promise((a, i) => {
2
+ const m = { ...{
3
+ minimize: !0,
4
+ utmEntity: {
5
+ utmSource: "",
6
+ utmMedium: "",
7
+ utmCampaign: "",
8
+ utmContent: "",
9
+ utmTerm: "",
10
+ customUtms: [
11
+ {
12
+ name1: "val1",
13
+ name2: "val2"
14
+ }
15
+ ]
16
+ },
17
+ mergeTags: ["Tag1", "Tag2"],
18
+ forseAmp: !1,
19
+ resetDataSavedFlag: !1,
20
+ disableLineHeightsReplace: !0
21
+ }, ...t }, s = {
22
+ callback: (e, l, n, o, c) => {
23
+ e ? i(e) : a({
24
+ html: l,
25
+ ampHtml: n,
26
+ ampErrors: o,
27
+ displayConditions: c
28
+ });
29
+ },
30
+ ...m
31
+ };
32
+ window.StripoEditorApi.actionsApi.compileEmail(s);
33
+ }) });
46
34
  export {
47
- g as useActionsApi
35
+ d as useActionsApi
48
36
  };
@@ -1,3 +1,3 @@
1
1
  export declare const useExport: () => {
2
- exportHtml: (compile?: boolean) => Promise<void>;
2
+ exportHtml: () => Promise<void>;
3
3
  };
@@ -1,45 +1,30 @@
1
1
  import { useActionsApi as l } from "./useActionsApi.js";
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`;
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`;
11
10
  };
12
- return { exportHtml: async (s = !0) => {
13
- const { getCompiledEmail: o } = l(), { showToaster: r } = d(), { compileHtml: i } = m();
11
+ return { exportHtml: async () => {
12
+ const { getCompiledEmail: r } = l(), { showToaster: t } = m();
14
13
  try {
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({
14
+ const { html: e } = await r();
15
+ e ? a(e, c("HTML"), "text/html") : t({
37
16
  type: "error",
38
- message: `Error compiling email: ${e}`
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}`
39
24
  });
40
25
  }
41
26
  } };
42
27
  };
43
28
  export {
44
- h as useExport
29
+ u as useExport
45
30
  };
@@ -1,20 +1,18 @@
1
- import { ref as p, computed as T } from "vue";
2
- import { getCsrfToken as H } from "../utils/generic.js";
3
- const k = (b = {}) => {
4
- const h = p(!1), a = p(null), u = p(null), g = T(() => h.value), y = T(() => a.value !== null), v = {
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 = {
5
4
  baseURL: "",
6
5
  timeout: 1e4,
7
6
  retry: 0,
8
7
  retryDelay: 1e3,
9
8
  headers: {
10
- "Content-Type": "application/json",
11
- "X-CSRF-TOKEN": H()
9
+ "Content-Type": "application/json"
12
10
  },
13
- ...b
11
+ ...y
14
12
  }, w = (e, s) => {
15
13
  if (e.startsWith("http://") || e.startsWith("https://"))
16
14
  return e;
17
- const t = s || v.baseURL || "";
15
+ const t = s || T.baseURL || "";
18
16
  return t.endsWith("/") && e.startsWith("/") ? `${t}${e.slice(1)}` : t.endsWith("/") || e.startsWith("/") ? `${t}${e}` : `${t}/${e}`;
19
17
  }, P = (e) => new Promise((s, t) => {
20
18
  setTimeout(() => {
@@ -24,20 +22,20 @@ const k = (b = {}) => {
24
22
  setTimeout(s, e);
25
23
  }), i = async (e, s, t, D = {}) => {
26
24
  a.value = null, h.value = !0, u.value = new AbortController();
27
- const n = { ...v, ...D }, L = w(s, n.baseURL), c = {
25
+ const n = { ...T, ...D }, L = w(s, n.baseURL), c = {
28
26
  method: e,
29
27
  headers: { ...n.headers },
30
28
  signal: u.value.signal,
31
29
  ...n
32
30
  };
33
31
  t && ["POST", "PUT", "PATCH"].includes(e) && (t instanceof FormData ? (delete c.headers["Content-Type"], c.body = t) : c.body = JSON.stringify(t));
34
- const E = async (m = 0) => {
32
+ const b = async (m = 0) => {
35
33
  try {
36
34
  const o = [fetch(L, c)];
37
35
  n.timeout && o.push(P(n.timeout));
38
36
  const r = await Promise.race(o);
39
37
  if (!r.ok) {
40
- const O = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(O);
38
+ const H = `HTTP Error: ${r.status} ${r.statusText}`, d = new Error(H);
41
39
  throw d.status = r.status, d.statusText = r.statusText, d.response = r, d;
42
40
  }
43
41
  let f;
@@ -51,36 +49,36 @@ const k = (b = {}) => {
51
49
  } catch (o) {
52
50
  const r = o instanceof Error && o.name === "AbortError";
53
51
  if (m < (n.retry || 0) && !r)
54
- return await x(n.retryDelay || 1e3), E(m + 1);
52
+ return await x(n.retryDelay || 1e3), b(m + 1);
55
53
  throw o instanceof Error ? o.name === "AbortError" ? a.value = { message: "Request was cancelled" } : a.value = { message: o.message } : a.value = o, o;
56
54
  }
57
55
  };
58
56
  try {
59
- return await E();
57
+ return await b();
60
58
  } finally {
61
59
  h.value = !1, u.value = null;
62
60
  }
63
- }, C = (e, s) => i("GET", e, void 0, s), $ = (e, s, t) => i("POST", e, s, t), R = (e, s, t) => i("PUT", e, s, t), U = (e, s, t) => i("PATCH", e, s, t), A = (e, s) => i("DELETE", e, void 0, s), W = (e) => {
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) => {
64
62
  u.value && u.value.abort(e);
65
63
  }, q = () => {
66
64
  a.value = null;
67
65
  };
68
66
  return {
69
67
  // State
70
- loading: g,
71
- error: T(() => a.value),
72
- hasError: y,
68
+ loading: E,
69
+ error: v(() => a.value),
70
+ hasError: g,
73
71
  // Methods
74
72
  request: i,
75
- get: C,
76
- post: $,
77
- put: R,
78
- patch: U,
79
- delete: A,
73
+ get: $,
74
+ post: C,
75
+ put: U,
76
+ patch: A,
77
+ delete: R,
80
78
  cancel: W,
81
79
  clearError: q
82
80
  };
83
81
  };
84
82
  export {
85
- k as useHttp
83
+ j as useHttp
86
84
  };
@@ -1,7 +1,17 @@
1
- import type { SaveTemplatePayload } from '@@/Types/save-as-template';
1
+ import type { StripoConfig, RecommendationConfig, RecommendationCampaignUrls } from '@@/Types/template-save';
2
+ interface SaveTemplateData {
3
+ name: string;
4
+ htmlContent: string;
5
+ categoryIds: number[];
6
+ css?: string;
7
+ stripoConfig?: StripoConfig;
8
+ recommendationConfigs?: RecommendationConfig;
9
+ recommendationCampaignUrls?: RecommendationCampaignUrls;
10
+ }
2
11
  export declare const useSaveAsTemplate: () => {
3
12
  state: {
4
13
  saving: boolean;
5
14
  };
6
- saveTemplate: (data: SaveTemplatePayload) => Promise<boolean>;
15
+ saveTemplate: (data: SaveTemplateData) => Promise<boolean>;
7
16
  };
17
+ export {};
@@ -1,51 +1,44 @@
1
- import { useHttp as m } from "./useHttp.js";
2
- import { base64EncodeWithSpecialChars as t } from "../utils/base64.js";
1
+ import { useHttp as o } from "./useHttp.js";
2
+ import { base64EncodeWithSpecialChars as n } from "../utils/base64.js";
3
3
  import { reactive as a } from "vue";
4
- const u = () => {
5
- const { post: o } = m(), n = a({
4
+ const l = () => {
5
+ const { post: i } = o(), s = a({
6
6
  saving: !1
7
7
  });
8
8
  return {
9
- state: n,
9
+ state: s,
10
10
  saveTemplate: async (e) => {
11
- n.saving = !0;
12
- const i = {
13
- editor: "stripo",
14
- html: t(e.htmlContent),
15
- css: t(e.css)
16
- }, c = t(JSON.stringify(i ?? ""));
11
+ s.saving = !0;
17
12
  try {
18
- const s = {
13
+ const t = {
19
14
  name: e.name,
20
15
  categories: e.categoryIds,
21
16
  productId: 60,
22
17
  editorType: 2,
23
- messageType: 2,
24
- stripoConfig: c,
25
- content: t(e.htmlContent),
18
+ content: n(e.htmlContent),
26
19
  unsubscriptionPreferencePages: [],
27
20
  unsubscriptionPreferencePageStatus: !1
28
21
  };
29
- e.css && (s.css = t(e.css)), e.stripoConfig && (s.stripoConfig = t(
22
+ e.css && (t.css = n(e.css)), e.stripoConfig && (t.stripoConfig = n(
30
23
  JSON.stringify(e.stripoConfig)
31
- )), e.recommendationConfigs && (s.recommendationConfigs = t(
24
+ )), e.recommendationConfigs && (t.recommendationConfigs = n(
32
25
  JSON.stringify(e.recommendationConfigs)
33
- )), e.recommendationCampaignUrls && (s.recommendationCampaignUrls = t(
26
+ )), e.recommendationCampaignUrls && (t.recommendationCampaignUrls = n(
34
27
  JSON.stringify(e.recommendationCampaignUrls)
35
28
  ));
36
- const r = await o(
29
+ const r = await i(
37
30
  "/newsletter/template-library/create-template",
38
- s
31
+ t
39
32
  );
40
33
  return !(!r.data || r.data.type === "error");
41
34
  } catch {
42
35
  return !1;
43
36
  } finally {
44
- n.saving = !1;
37
+ s.saving = !1;
45
38
  }
46
39
  }
47
40
  };
48
41
  };
49
42
  export {
50
- u as useSaveAsTemplate
43
+ l as useSaveAsTemplate
51
44
  };