@useinsider/guido 3.1.1-beta.dee5e9c → 3.1.1-beta.e00a22b

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 (62) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +69 -59
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +81 -91
  5. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +7 -7
  6. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +12 -20
  7. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  8. package/dist/components/organisms/header/EditorActions.vue2.js +45 -35
  9. package/dist/components/organisms/header/RightSlot.vue.js +10 -10
  10. package/dist/components/organisms/header/RightSlot.vue2.js +16 -13
  11. package/dist/composables/useHtmlCompiler.js +23 -21
  12. package/dist/composables/usePreviewMode.js +20 -16
  13. package/dist/composables/useSave.js +23 -15
  14. package/dist/composables/useStripo.js +44 -41
  15. package/dist/composables/validators/useLiquidValidator.js +42 -0
  16. package/dist/config/compiler/liquidCompilerRules.js +15 -0
  17. package/dist/config/migrator/checkboxMigrator.js +5 -3
  18. package/dist/config/migrator/radioButtonMigrator.js +14 -12
  19. package/dist/extensions/Blocks/CouponBlock/template.js +24 -13
  20. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +27 -11
  21. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +185 -172
  22. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +94 -92
  23. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +31 -31
  24. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +7 -5
  25. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +30 -29
  26. package/dist/extensions/Blocks/Recommendation/templates/index.js +7 -7
  27. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +3 -1
  28. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +20 -20
  29. package/dist/extensions/Blocks/Recommendation/templates/utils.js +57 -50
  30. package/dist/extensions/DynamicContent/dynamic-content.js +17 -12
  31. package/dist/guido.css +1 -1
  32. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +218 -324
  33. package/dist/package.json.js +1 -1
  34. package/dist/services/recommendationApi.js +13 -11
  35. package/dist/src/@types/config/index.d.ts +1 -1
  36. package/dist/src/@types/config/schemas.d.ts +24 -0
  37. package/dist/src/@types/config/types.d.ts +3 -1
  38. package/dist/src/@types/generic.d.ts +0 -1
  39. package/dist/src/composables/useConfig.d.ts +10 -0
  40. package/dist/src/composables/validators/useLiquidValidator.d.ts +3 -0
  41. package/dist/src/config/compiler/liquidCompilerRules.d.ts +2 -0
  42. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +2 -0
  43. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  44. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +5 -0
  45. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +5 -0
  46. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +4 -4
  47. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +3 -3
  48. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +20 -3
  49. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +3 -3
  50. package/dist/src/stores/config.d.ts +90 -0
  51. package/dist/src/stores/preview.d.ts +3 -0
  52. package/dist/src/utils/genericUtil.d.ts +1 -1
  53. package/dist/src/utils/htmlCompiler.d.ts +2 -1
  54. package/dist/static/styles/base.css.js +2 -7
  55. package/dist/static/styles/components/button.css.js +7 -13
  56. package/dist/static/styles/components/narrow-panel.css.js +0 -52
  57. package/dist/stores/preview.js +4 -3
  58. package/dist/utils/genericUtil.js +42 -20
  59. package/dist/utils/htmlCompiler.js +48 -41
  60. package/dist/utils/templatePreparation.js +20 -20
  61. package/dist/utils/tooltipUtils.js +4 -5
  62. package/package.json +5 -4
@@ -1,70 +1,77 @@
1
- var y = Object.defineProperty;
2
- var g = (p, e, r) => e in p ? y(p, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : p[e] = r;
3
- var u = (p, e, r) => g(p, typeof e != "symbol" ? e + "" : e, r);
4
- import { useToaster as m } from "../composables/useToaster.js";
5
- class d {
1
+ var h = Object.defineProperty;
2
+ var f = (o, e, t) => e in o ? h(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+ var m = (o, e, t) => f(o, typeof e != "symbol" ? e + "" : e, t);
4
+ import { useToaster as x } from "../composables/useToaster.js";
5
+ const E = /font-family\s*:[^;}"']+/gi;
6
+ class T {
6
7
  constructor(e = []) {
7
- u(this, "rules");
8
+ m(this, "rules");
8
9
  this.rules = e;
9
10
  }
10
- compile(e, r) {
11
- const l = performance.now(), t = e, o = e.length;
11
+ compile(e, t, r) {
12
+ const n = performance.now(), l = e, c = e.length;
12
13
  let s = e;
13
- const a = [];
14
- (r || this.rules).sort((n, c) => n.priority - c.priority).forEach((n) => {
15
- const c = s.length;
16
- s = this.applyRule(s, n), s.length !== c && a.push(n.id);
14
+ const i = [];
15
+ (t || this.rules).sort((p, a) => p.priority - a.priority).forEach((p) => {
16
+ const a = s.length;
17
+ s = this.applyRule(s, p), s.length !== a && i.push(p.id);
17
18
  });
18
- const i = s.length, R = o > 0 ? (o - i) / o * 100 : 0;
19
+ const u = s.length, R = c > 0 ? (c - u) / c * 100 : 0, d = new TextEncoder().encode(s).byteLength;
20
+ let y = 0;
21
+ if (r && r.name && r.family) {
22
+ const p = (s.match(E) || []).length, a = `, ${r.name}, ${r.family}`;
23
+ y = p * new TextEncoder().encode(a).byteLength;
24
+ }
25
+ const g = Math.round((d + y) / 1024);
19
26
  return {
20
- originalHtml: t,
27
+ originalHtml: l,
21
28
  compiledHtml: s,
22
- appliedRules: a,
23
- // TODO: We can use stats for monitoring in the future
29
+ appliedRules: i,
30
+ estimatedSizeKB: g,
24
31
  stats: {
25
- originalSize: o,
26
- compiledSize: i,
32
+ originalSize: c,
33
+ compiledSize: u,
27
34
  reductionPercentage: R,
28
- executionTime: performance.now() - l
35
+ executionTime: performance.now() - n
29
36
  }
30
37
  };
31
38
  }
32
- applyRule(e, r) {
39
+ applyRule(e, t) {
33
40
  try {
34
- switch (r.type) {
41
+ switch (t.type) {
35
42
  case "replace":
36
- return this.applyReplaceRule(e, r);
43
+ return this.applyReplaceRule(e, t);
37
44
  case "regex":
38
- return this.applyRegexRule(e, r);
45
+ return this.applyRegexRule(e, t);
39
46
  case "remove":
40
- return this.applyRemoveRule(e, r);
47
+ return this.applyRemoveRule(e, t);
41
48
  case "custom":
42
- return this.applyCustomRule(e, r);
49
+ return this.applyCustomRule(e, t);
43
50
  default:
44
51
  return e;
45
52
  }
46
- } catch (l) {
47
- const { handleError: t } = m();
48
- return t(l, `Failed to apply rule ${r.id}:`), e;
53
+ } catch (r) {
54
+ const { handleError: n } = x();
55
+ return n(r, `Failed to apply rule ${t.id}:`), e;
49
56
  }
50
57
  }
51
- applyReplaceRule(e, r) {
52
- const { search: l, replacement: t, replaceAll: o = !0 } = r;
53
- return o ? e.replaceAll(l, t) : e.replace(l, t);
58
+ applyReplaceRule(e, t) {
59
+ const { search: r, replacement: n, replaceAll: l = !0 } = t;
60
+ return l ? e.replaceAll(r, n) : e.replace(r, n);
54
61
  }
55
- applyRegexRule(e, r) {
56
- const { pattern: l, replacement: t, flags: o = "g" } = r, s = new RegExp(l, o);
57
- return e.replace(s, t);
62
+ applyRegexRule(e, t) {
63
+ const { pattern: r, replacement: n, flags: l = "g" } = t, c = new RegExp(r, l);
64
+ return e.replace(c, n);
58
65
  }
59
- applyRemoveRule(e, r) {
60
- return r.targets.reduce((l, t) => t instanceof RegExp ? l.replace(t, "") : l.replaceAll(t, ""), e);
66
+ applyRemoveRule(e, t) {
67
+ return t.targets.reduce((r, n) => n instanceof RegExp ? r.replace(n, "") : r.replaceAll(n, ""), e);
61
68
  }
62
- applyCustomRule(e, r) {
63
- return r.processor(e);
69
+ applyCustomRule(e, t) {
70
+ return t.processor(e);
64
71
  }
65
72
  }
66
- const A = (p = []) => new d(p);
73
+ const H = (o = []) => new T(o);
67
74
  export {
68
- d as HtmlCompilerEngine,
69
- A as createHtmlCompiler
75
+ T as HtmlCompilerEngine,
76
+ H as createHtmlCompiler
70
77
  };
@@ -1,32 +1,32 @@
1
- import { useActionsApi as f } from "../composables/useActionsApi.js";
2
- import { useHtmlCompiler as C } from "../composables/useHtmlCompiler.js";
3
- import { useRecommendationExtensionStore as T } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
- import { useDynamicContentStore as x } from "../stores/dynamic-content.js";
5
- import { useUnsubscribeStore as y } from "../stores/unsubscribe.js";
6
- const w = () => {
7
- const o = x(), e = y(), { getCompiledEmail: i, getTemplateData: s, editorSave: n } = f(), { compileHtml: a } = C();
1
+ import { useActionsApi as S } from "../composables/useActionsApi.js";
2
+ import { useHtmlCompiler as f } from "../composables/useHtmlCompiler.js";
3
+ import { useRecommendationExtensionStore as C } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
+ import { useDynamicContentStore as T } from "../stores/dynamic-content.js";
5
+ import { useUnsubscribeStore as x } from "../stores/unsubscribe.js";
6
+ const h = () => {
7
+ const o = T(), e = x(), { getCompiledEmail: i, getTemplateData: s } = S(), { compileHtml: n } = f();
8
8
  return {
9
9
  prepareTemplateDetails: async () => {
10
- const { html: m, ampHtml: r = "", ampErrors: c = [] } = await i({
10
+ const { html: a, ampHtml: m = "", ampErrors: r = [] } = await i({
11
11
  minimize: !0,
12
12
  resetDataSavedFlag: !1
13
- }), { html: l, css: p, syncModulesIds: u = [] } = await s();
13
+ }), { html: c, css: l, syncModulesIds: p = [] } = await s();
14
14
  e.selectedUnsubscribePages.length && await e.fetchTemplates();
15
- const { compiledHtml: d, stats: t, appliedRules: g } = a(m), S = o.getSelectedDynamicContentList, b = T();
16
- return n(), console.debug("HTML Compilation Stats:", {
15
+ const { compiledHtml: u, stats: t, appliedRules: d } = n(a), g = o.getSelectedDynamicContentList, b = C();
16
+ return console.debug("HTML Compilation Stats:", {
17
17
  originalSize: t.originalSize,
18
18
  compiledSize: t.compiledSize,
19
19
  reduction: `${t.reductionPercentage.toFixed(2)}%`,
20
- appliedRules: g,
20
+ appliedRules: d,
21
21
  executionTime: `${t.executionTime.toFixed(2)}ms`
22
22
  }), {
23
- dynamicContentList: S,
24
- compiledHtml: d,
25
- rawHtml: l,
26
- css: p,
27
- ampHtml: r,
28
- ampErrors: c,
29
- modules: u.map(Number),
23
+ dynamicContentList: g,
24
+ compiledHtml: u,
25
+ rawHtml: c,
26
+ css: l,
27
+ ampHtml: m,
28
+ ampErrors: r,
29
+ modules: p.map(Number),
30
30
  recommendation: {
31
31
  campaignUrls: b.recommendationCampaignUrls,
32
32
  configs: {}
@@ -40,5 +40,5 @@ const w = () => {
40
40
  };
41
41
  };
42
42
  export {
43
- w as useTemplatePreparation
43
+ h as useTemplatePreparation
44
44
  };
@@ -1,11 +1,10 @@
1
- const e = (s, t = {}) => ({
2
- id: s,
1
+ const o = (i, t = {}) => ({
2
+ id: i,
3
3
  dynamicPosition: t.dynamicPosition ?? !1,
4
4
  staticPosition: t.staticPosition ?? "bottom center",
5
5
  iconStatus: t.iconStatus ?? !1,
6
- offset: t.offset,
7
- preventXss: t.preventXss
6
+ offset: t.offset
8
7
  });
9
8
  export {
10
- e as getTooltipOptions
9
+ o as getTooltipOptions
11
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.1.1-beta.dee5e9c",
3
+ "version": "3.1.1-beta.e00a22b",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -32,8 +32,9 @@
32
32
  "author": "",
33
33
  "license": "ISC",
34
34
  "dependencies": {
35
- "@stripoinc/ui-editor-extensions": "3.7.0",
36
- "@useinsider/design-system-vue": "0.14.28",
35
+ "@stripoinc/ui-editor-extensions": "3.5.0",
36
+ "@useinsider/design-system-vue": "1.1.0-beta.73ec2fa",
37
+ "@useinsider/guido": "3.1.1-beta.22d798c",
37
38
  "@vueuse/core": "11.3.0",
38
39
  "lodash-es": "4.17.21",
39
40
  "pinia": "2.3.1",
@@ -86,7 +87,7 @@
86
87
  },
87
88
  "guido": {
88
89
  "stripo": {
89
- "version": "2.59.0"
90
+ "version": "2.54.0"
90
91
  }
91
92
  }
92
93
  }