@useinsider/guido 3.2.0-beta.739a669 → 3.2.0-beta.803b92e

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 (69) hide show
  1. package/README.md +25 -1
  2. package/dist/@types/config/schemas.js +38 -36
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +35 -34
  5. package/dist/components/organisms/AutoSaveController.vue.js +17 -0
  6. package/dist/components/organisms/AutoSaveController.vue2.js +13 -0
  7. package/dist/components/organisms/header/AutoSaveToggle.vue.js +22 -0
  8. package/dist/components/organisms/header/AutoSaveToggle.vue2.js +19 -0
  9. package/dist/components/organisms/header/RightSlot.vue.js +8 -8
  10. package/dist/components/organisms/header/RightSlot.vue2.js +9 -8
  11. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +31 -51
  12. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  13. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +22 -23
  14. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  15. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +39 -37
  16. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  17. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +41 -30
  18. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +14 -15
  19. package/dist/composables/useAutoSave.js +68 -0
  20. package/dist/composables/useFullStoryBridge.js +14 -0
  21. package/dist/composables/useSave.js +15 -15
  22. package/dist/composables/useStripo.js +44 -42
  23. package/dist/config/compiler/utils/recommendationCompilerUtils.js +33 -30
  24. package/dist/config/migrator/recommendationMigrator.js +1 -1
  25. package/dist/enums/onboarding.js +2 -7
  26. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  27. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +21 -18
  28. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +99 -0
  29. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +6 -6
  30. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +3 -1
  31. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +27 -57
  32. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +14 -0
  33. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +18 -17
  34. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +29 -25
  35. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +11 -11
  36. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +17 -14
  37. package/dist/guido.css +1 -1
  38. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +324 -218
  39. package/dist/package.json.js +1 -1
  40. package/dist/src/@types/config/schemas.d.ts +4 -0
  41. package/dist/src/components/Guido.vue.d.ts +1 -1
  42. package/dist/src/components/organisms/AutoSaveController.vue.d.ts +2 -0
  43. package/dist/src/components/organisms/header/AutoSaveToggle.vue.d.ts +2 -0
  44. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  45. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  46. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  47. package/dist/src/composables/useAutoSave.d.ts +3 -0
  48. package/dist/src/composables/useConfig.d.ts +2 -0
  49. package/dist/src/composables/useFullStoryBridge.d.ts +11 -0
  50. package/dist/src/composables/useSave.d.ts +1 -1
  51. package/dist/src/enums/onboarding.d.ts +0 -6
  52. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  53. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +3 -0
  54. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +35 -0
  55. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +3 -20
  56. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +29 -0
  57. package/dist/src/stores/autosave.d.ts +6 -0
  58. package/dist/src/stores/config.d.ts +18 -0
  59. package/dist/src/stores/onboarding.d.ts +0 -4
  60. package/dist/src/utils/timeUtil.d.ts +8 -0
  61. package/dist/static/styles/components/button.css.js +16 -9
  62. package/dist/static/styles/components/loader.css.js +4 -0
  63. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  64. package/dist/stores/autosave.js +11 -0
  65. package/dist/stores/onboarding.js +0 -4
  66. package/dist/utils/timeUtil.js +19 -0
  67. package/package.json +3 -3
  68. package/dist/composables/useRibbonOffset.js +0 -21
  69. package/dist/src/composables/useRibbonOffset.d.ts +0 -4
@@ -1,24 +1,23 @@
1
- import { defineComponent as l, computed as r, watch as m } from "vue";
2
- import { useRibbonOffset as x } from "../../../composables/useRibbonOffset.js";
3
- import { useTranslations as f } from "../../../composables/useTranslations.js";
4
- import { SERVICE_HOVER_SELECTORS as k } from "../../../enums/onboarding.js";
5
- import { useOnboardingStore as B } from "../../../stores/onboarding.js";
6
- import { InOnboard as C } from "@useinsider/design-system-vue";
7
- const y = /* @__PURE__ */ l({
1
+ import { defineComponent as l, computed as i, watch as b } from "vue";
2
+ import { useTranslations as x } from "../../../composables/useTranslations.js";
3
+ import { SERVICE_HOVER_SELECTORS as m } from "../../../enums/onboarding.js";
4
+ import { useOnboardingStore as k } from "../../../stores/onboarding.js";
5
+ import { InOnboard as f } from "@useinsider/design-system-vue";
6
+ const S = /* @__PURE__ */ l({
8
7
  __name: "GenericOnboarding",
9
- setup(T) {
10
- const e = f(), o = B(), { getTopPosition: i } = x(), s = r(() => `${window.innerWidth / 2 - 146}px`), c = () => {
8
+ setup(B) {
9
+ const e = x(), o = k(), r = i(() => `${window.innerWidth / 2 - 160}px`), c = () => {
11
10
  const t = document.querySelector("ui-editor");
12
- t != null && t.shadowRoot && k.forEach((n) => {
13
- var g;
14
- const d = (g = t.shadowRoot) == null ? void 0 : g.querySelector(n);
15
- d && d.classList.add("hover");
11
+ t != null && t.shadowRoot && m.forEach((n) => {
12
+ var d;
13
+ const a = (d = t.shadowRoot) == null ? void 0 : d.querySelector(n);
14
+ a && a.classList.add("hover");
16
15
  });
17
- }, a = r(() => [
16
+ }, s = i(() => [
18
17
  {
19
18
  classes: "guido-onboarding-blocks",
20
19
  left: "90px",
21
- top: i(90),
20
+ top: "90px",
22
21
  position: "Left Top",
23
22
  title: e("email-editor.onboarding-blocks-title"),
24
23
  description: e("email-editor.onboarding-blocks-description"),
@@ -52,8 +51,8 @@ const y = /* @__PURE__ */ l({
52
51
  },
53
52
  {
54
53
  classes: "guido-onboarding-preview",
55
- left: s.value,
56
- top: i(68),
54
+ left: r.value,
55
+ top: "90px",
57
56
  position: "Top Center",
58
57
  title: e("email-editor.onboarding-preview-title"),
59
58
  description: e("email-editor.onboarding-preview-description"),
@@ -67,18 +66,18 @@ const y = /* @__PURE__ */ l({
67
66
  o.close("genericOnboarding");
68
67
  }
69
68
  }
70
- ]), p = r(() => o.onboardings.genericOnboarding.config.length > 0 && o.onboardings.genericOnboarding.isActive), u = () => {
69
+ ]), g = i(() => o.onboardings.genericOnboarding.config.length > 0 && o.onboardings.genericOnboarding.isActive), p = () => {
71
70
  var t, n;
72
71
  (n = (t = o.getGenericCurrentCard) == null ? void 0 : t.nextButtonClick) == null || n.call(t);
73
- }, b = () => {
72
+ }, u = () => {
74
73
  var t, n;
75
74
  (n = (t = o.getGenericCurrentCard) == null ? void 0 : t.backButtonClick) == null || n.call(t);
76
75
  };
77
- return m(() => o.onboardings.genericOnboarding.isActive, (t) => {
78
- t && o.setConfig("genericOnboarding", a.value);
79
- }, { immediate: !0 }), { __sfc: !0, trans: e, onboardingStore: o, getTopPosition: i, centerLeft: s, addHoverToServiceElements: c, onboardingCardsConfig: a, isVisible: p, handleNext: u, handleBack: b, InOnboard: C };
76
+ return b(() => o.onboardings.genericOnboarding.isActive, (t) => {
77
+ t && o.setConfig("genericOnboarding", s.value);
78
+ }, { immediate: !0 }), { __sfc: !0, trans: e, onboardingStore: o, centerLeft: r, addHoverToServiceElements: c, onboardingCardsConfig: s, isVisible: g, handleNext: p, handleBack: u, InOnboard: f };
80
79
  }
81
80
  });
82
81
  export {
83
- y as default
82
+ S as default
84
83
  };
@@ -13,7 +13,7 @@ var l = function() {
13
13
  c,
14
14
  !1,
15
15
  null,
16
- "796d193b"
16
+ "dd1a237a"
17
17
  );
18
18
  const I = p.exports;
19
19
  export {
@@ -1,31 +1,33 @@
1
- import { defineComponent as b, computed as d, watch as m } from "vue";
2
- import { useRibbonOffset as l } from "../../../composables/useRibbonOffset.js";
1
+ import { defineComponent as l, computed as a, watch as u } from "vue";
3
2
  import { useTranslations as x } from "../../../composables/useTranslations.js";
4
- import { UI_EDITOR_SELECTOR as T, CARD_COMPOSITION_TAB_SELECTOR as O, SETTINGS_TAB_SELECTOR as f } from "../../../enums/onboarding.js";
5
- import { useOnboardingStore as k } from "../../../stores/onboarding.js";
6
- import { InOnboard as B } from "@useinsider/design-system-vue";
7
- const E = /* @__PURE__ */ b({
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({
8
7
  __name: "ItemsOnboarding",
9
- setup(C) {
10
- const i = x(), o = k(), { getTopPosition: n } = l(), r = (t) => {
11
- const e = document.querySelector(T);
12
- if (!(e != null && e.shadowRoot))
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))
13
15
  return;
14
- const { shadowRoot: s } = e, c = s.querySelector(t);
15
- c && c.click();
16
- }, a = d(() => [
16
+ const { shadowRoot: s } = i, m = s.querySelector(t);
17
+ m && m.click();
18
+ }, d = a(() => [
17
19
  {
18
20
  classes: "guido-items-onboarding-card-1",
19
21
  right: "426px",
20
22
  top: n(90),
21
23
  position: "Right Top",
22
- title: i("email-editor.onboarding-items-title"),
23
- description: i("email-editor.onboarding-items-description"),
24
+ title: e("email-editor.onboarding-items-title"),
25
+ description: e("email-editor.onboarding-items-description"),
24
26
  imageSource: "",
25
27
  backButtonClick: () => {
26
28
  },
27
29
  nextButtonType: "text",
28
- nextButtonText: i("products.next"),
30
+ nextButtonText: e("products.next"),
29
31
  nextButtonClick: () => {
30
32
  o.next("itemsOnboarding");
31
33
  }
@@ -35,16 +37,16 @@ const E = /* @__PURE__ */ b({
35
37
  right: "426px",
36
38
  top: n(218),
37
39
  position: "Right Top",
38
- title: i("email-editor.onboarding-items-item-type-title"),
39
- description: i("email-editor.onboarding-items-item-type-description"),
40
+ title: e("email-editor.onboarding-items-item-type-title"),
41
+ description: e("email-editor.onboarding-items-item-type-description"),
40
42
  imageSource: "",
41
43
  backButtonType: "text",
42
- backButtonText: i("ds-steps.back"),
44
+ backButtonText: e("ds-steps.back"),
43
45
  backButtonClick: () => {
44
46
  o.previous("itemsOnboarding");
45
47
  },
46
48
  nextButtonType: "text",
47
- nextButtonText: i("products.next"),
49
+ nextButtonText: e("products.next"),
48
50
  nextButtonClick: () => {
49
51
  o.next("itemsOnboarding");
50
52
  }
@@ -54,42 +56,42 @@ const E = /* @__PURE__ */ b({
54
56
  right: "426px",
55
57
  top: n(140),
56
58
  position: "Right Top",
57
- title: i("email-editor.onboarding-items-composition-title"),
58
- description: i("email-editor.onboarding-items-composition-description"),
59
+ title: e("email-editor.onboarding-items-composition-title"),
60
+ description: e("email-editor.onboarding-items-composition-description"),
59
61
  imageSource: "",
60
62
  backButtonType: "text",
61
- backButtonText: i("ds-steps.back"),
63
+ backButtonText: e("ds-steps.back"),
62
64
  backButtonClick: () => {
63
65
  o.previous("itemsOnboarding");
64
66
  },
65
67
  nextButtonType: "text",
66
- nextButtonText: i("action-builder.ok"),
68
+ nextButtonText: e("action-builder.ok"),
67
69
  nextButtonClick: () => {
68
70
  o.close("itemsOnboarding");
69
71
  }
70
72
  }
71
- ]), g = d(() => o.onboardings.itemsOnboarding.config.length > 0 && o.onboardings.itemsOnboarding.isActive), p = () => {
72
- var t, e;
73
- (e = (t = o.getItemsCurrentCard) == null ? void 0 : t.nextButtonClick) == null || e.call(t);
74
- }, u = () => {
75
- var t, e;
76
- (e = (t = o.getItemsCurrentCard) == null ? void 0 : t.backButtonClick) == null || e.call(t);
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);
77
79
  };
78
- return m(
80
+ return u(
79
81
  () => o.isActive("itemsOnboarding"),
80
82
  (t) => {
81
- t && o.setConfig("itemsOnboarding", a.value);
83
+ t && o.setConfig("itemsOnboarding", d.value);
82
84
  },
83
85
  { immediate: !0 }
84
- ), m(
86
+ ), u(
85
87
  () => o.onboardings.itemsOnboarding.cardIndex,
86
- (t, e) => {
88
+ (t, i) => {
87
89
  if (!o.isActive("itemsOnboarding"))
88
90
  return;
89
- const s = `${e}-${t}`;
90
- s === "1-2" && r(O), s === "2-1" && r(f);
91
+ const s = `${i}-${t}`;
92
+ s === "1-2" && r(B), s === "2-1" && r(f);
91
93
  }
92
- ), { __sfc: !0, trans: i, onboardingStore: o, getTopPosition: n, switchTab: r, onboardingCardsConfig: a, isVisible: g, handleNext: p, handleBack: u, InOnboard: B };
94
+ ), { __sfc: !0, trans: e, onboardingStore: o, ribbonOffset: c, getTopPosition: n, switchTab: r, onboardingCardsConfig: d, isVisible: g, handleNext: p, handleBack: b, InOnboard: k };
93
95
  }
94
96
  });
95
97
  export {
@@ -13,9 +13,9 @@ var g = function() {
13
13
  b,
14
14
  !1,
15
15
  null,
16
- "cadfc82d"
16
+ "d073b1dc"
17
17
  );
18
- const C = p.exports;
18
+ const f = p.exports;
19
19
  export {
20
- C as default
20
+ f as default
21
21
  };
@@ -1,63 +1,74 @@
1
- import { defineComponent as l, computed as c, watch as g } from "vue";
2
- import { useRibbonOffset as b } from "../../../composables/useRibbonOffset.js";
3
- import { useTranslations as x } from "../../../composables/useTranslations.js";
4
- import { useOnboardingStore as u } from "../../../stores/onboarding.js";
5
- import { InOnboard as p } from "@useinsider/design-system-vue";
6
- const O = /* @__PURE__ */ l({
1
+ import { defineComponent as u, computed as a, watch as b } from "vue";
2
+ import { useTranslations as m } from "../../../composables/useTranslations.js";
3
+ import { useOnboardingStore as k } from "../../../stores/onboarding.js";
4
+ import { InOnboard as B } from "@useinsider/design-system-vue";
5
+ const y = /* @__PURE__ */ u({
7
6
  __name: "TextBlockOnboarding",
8
- setup(k) {
9
- const n = x(), o = u(), { getTopPosition: i } = b(), r = c(() => [
7
+ setup(h) {
8
+ const i = m(), o = k(), e = a(() => {
9
+ const n = window.innerHeight - 128, r = Math.max(90, n * 0.15), s = Math.max(490, n * 0.71), d = 200, g = 40;
10
+ return {
11
+ settings: {
12
+ top: `${r}px`,
13
+ position: r + d + g > n ? "Right Bottom" : "Right Top"
14
+ },
15
+ dynamic: {
16
+ top: `${s}px`,
17
+ position: s + d + g > n ? "Right Bottom" : "Right Top"
18
+ }
19
+ };
20
+ }), c = a(() => [
10
21
  {
11
22
  classes: "guido-text-block-onboarding-settings",
12
23
  right: "426px",
13
- top: i(90),
14
- position: "Right Top",
15
- title: n("email-editor.onboarding-text-block-title"),
16
- description: n("email-editor.onboarding-text-block-description"),
24
+ top: e.value.settings.top,
25
+ position: e.value.settings.position,
26
+ title: i("email-editor.onboarding-text-block-title"),
27
+ description: i("email-editor.onboarding-text-block-description"),
17
28
  imageSource: "",
18
29
  backButtonClick: () => {
19
30
  },
20
31
  nextButtonType: "text",
21
- nextButtonText: n("products.next"),
32
+ nextButtonText: i("products.next"),
22
33
  nextButtonClick: () => {
23
34
  o.next("textBlockOnboarding");
24
35
  }
25
36
  },
26
37
  {
27
38
  classes: "guido-text-block-onboarding-dynamic",
28
- right: "409px",
29
- top: i(607),
30
- position: "Right Top",
31
- title: n("email-editor.onboarding-dynamic-content-title"),
32
- description: n("email-editor.onboarding-dynamic-content-description"),
39
+ right: "426px",
40
+ top: e.value.dynamic.top,
41
+ position: e.value.dynamic.position,
42
+ title: i("email-editor.onboarding-dynamic-content-title"),
43
+ description: i("email-editor.onboarding-dynamic-content-description"),
33
44
  imageSource: "",
34
45
  backButtonType: "text",
35
- backButtonText: n("ds-steps.back"),
46
+ backButtonText: i("ds-steps.back"),
36
47
  backButtonClick: () => {
37
48
  o.previous("textBlockOnboarding");
38
49
  },
39
50
  nextButtonType: "text",
40
- nextButtonText: n("action-builder.ok"),
51
+ nextButtonText: i("action-builder.ok"),
41
52
  nextButtonClick: () => {
42
53
  o.close("textBlockOnboarding");
43
54
  }
44
55
  }
45
- ]), a = c(() => o.onboardings.textBlockOnboarding.config.length > 0 && o.onboardings.textBlockOnboarding.isActive), s = () => {
46
- var t, e;
47
- (e = (t = o.getTextBlockCurrentCard) == null ? void 0 : t.nextButtonClick) == null || e.call(t);
48
- }, d = () => {
49
- var t, e;
50
- (e = (t = o.getTextBlockCurrentCard) == null ? void 0 : t.backButtonClick) == null || e.call(t);
56
+ ]), l = a(() => o.onboardings.textBlockOnboarding.config.length > 0 && o.onboardings.textBlockOnboarding.isActive), p = () => {
57
+ var t, n;
58
+ (n = (t = o.getTextBlockCurrentCard) == null ? void 0 : t.nextButtonClick) == null || n.call(t);
59
+ }, x = () => {
60
+ var t, n;
61
+ (n = (t = o.getTextBlockCurrentCard) == null ? void 0 : t.backButtonClick) == null || n.call(t);
51
62
  };
52
- return g(
63
+ return b(
53
64
  () => o.isActive("textBlockOnboarding"),
54
65
  (t) => {
55
- t && o.setConfig("textBlockOnboarding", r.value);
66
+ t && o.setConfig("textBlockOnboarding", c.value);
56
67
  },
57
68
  { immediate: !0 }
58
- ), { __sfc: !0, trans: n, onboardingStore: o, getTopPosition: i, onboardingCardsConfig: r, isVisible: a, handleNext: s, handleBack: d, InOnboard: p };
69
+ ), { __sfc: !0, trans: i, onboardingStore: o, dynamicPosition: e, onboardingCardsConfig: c, isVisible: l, handleNext: p, handleBack: x, InOnboard: B };
59
70
  }
60
71
  });
61
72
  export {
62
- O as default
73
+ y as default
63
74
  };
@@ -1,16 +1,15 @@
1
- import { defineComponent as g, computed as s, watch as b } from "vue";
2
- import { useRibbonOffset as u } from "../../../composables/useRibbonOffset.js";
3
- import { useTranslations as l } from "../../../composables/useTranslations.js";
4
- import { useOnboardingStore as m } from "../../../stores/onboarding.js";
5
- import { InOnboard as p } from "@useinsider/design-system-vue";
6
- const k = /* @__PURE__ */ g({
1
+ import { defineComponent as c, computed as e, watch as g } from "vue";
2
+ import { useTranslations as b } from "../../../composables/useTranslations.js";
3
+ import { useOnboardingStore as u } from "../../../stores/onboarding.js";
4
+ import { InOnboard as l } from "@useinsider/design-system-vue";
5
+ const C = /* @__PURE__ */ c({
7
6
  __name: "VersionHistoryOnboarding",
8
- setup(f) {
9
- const t = l(), n = m(), { getTopPosition: r } = u(), e = s(() => [
7
+ setup(p) {
8
+ const t = b(), n = u(), r = e(() => [
10
9
  {
11
10
  classes: "guido-version-history-onboarding",
12
11
  left: "409px",
13
- top: r(192),
12
+ top: "192px",
14
13
  position: "Left Top",
15
14
  title: t("email-editor.onboarding-version-history-title"),
16
15
  description: t("email-editor.onboarding-version-history-description"),
@@ -21,18 +20,18 @@ const k = /* @__PURE__ */ g({
21
20
  nextButtonText: t("action-builder.ok"),
22
21
  nextButtonClick: () => void n.close("versionHistoryOnboarding")
23
22
  }
24
- ]), a = s(() => n.onboardings.versionHistoryOnboarding.config.length > 0 && n.onboardings.versionHistoryOnboarding.isActive), d = () => {
23
+ ]), s = e(() => n.onboardings.versionHistoryOnboarding.config.length > 0 && n.onboardings.versionHistoryOnboarding.isActive), a = () => {
25
24
  var o, i;
26
25
  (i = (o = n.getVersionHistoryCurrentCard) == null ? void 0 : o.nextButtonClick) == null || i.call(o);
27
- }, c = () => {
26
+ }, d = () => {
28
27
  var o, i;
29
28
  (i = (o = n.getVersionHistoryCurrentCard) == null ? void 0 : o.backButtonClick) == null || i.call(o);
30
29
  };
31
- return b(() => n.onboardings.versionHistoryOnboarding.isActive, (o) => {
32
- o && n.setConfig("versionHistoryOnboarding", e.value);
33
- }, { immediate: !0 }), { __sfc: !0, trans: t, onboardingStore: n, getTopPosition: r, onboardingCardsConfig: e, isVisible: a, handleNext: d, handleBack: c, InOnboard: p };
30
+ return g(() => n.onboardings.versionHistoryOnboarding.isActive, (o) => {
31
+ o && n.setConfig("versionHistoryOnboarding", r.value);
32
+ }, { immediate: !0 }), { __sfc: !0, trans: t, onboardingStore: n, onboardingCardsConfig: r, isVisible: s, handleNext: a, handleBack: d, InOnboard: l };
34
33
  }
35
34
  });
36
35
  export {
37
- k as default
36
+ C as default
38
37
  };
@@ -0,0 +1,68 @@
1
+ import { useConfig as m } from "./useConfig.js";
2
+ import { useAutosaveStore as p } from "../stores/autosave.js";
3
+ import { useEditorStore as S } from "../stores/editor.js";
4
+ import { computed as E, watch as f, onUnmounted as y } from "vue";
5
+ const A = 18e4, c = 6e4, O = (l) => {
6
+ const { isFeatureEnabled: b } = m(), s = S(), t = p();
7
+ let o = null, u = 0;
8
+ const n = E(
9
+ () => b("autosave") && t.isOn
10
+ ), g = () => s.hasChanges && !s.isSaveButtonDisabled && !s.isCodeEditorOpen, h = () => ({
11
+ hasChanges: s.hasChanges,
12
+ isSaveButtonDisabled: s.isSaveButtonDisabled,
13
+ isCodeEditorOpen: s.isCodeEditorOpen
14
+ }), r = async (e) => {
15
+ if (!n.value) {
16
+ console.debug("guido:autosave:skipped", { trigger: e, reason: "not-active" });
17
+ return;
18
+ }
19
+ if (!g()) {
20
+ console.debug("guido:autosave:skipped", { trigger: e, reason: "gates-blocked", gates: h() });
21
+ return;
22
+ }
23
+ if (t.status === "saving") {
24
+ console.debug("guido:autosave:skipped", { trigger: e, reason: "already-saving" });
25
+ return;
26
+ }
27
+ console.debug("guido:autosave:save-start", { trigger: e }), t.status = "saving";
28
+ try {
29
+ await l(), s.hasChanges = !1, t.status = "saved", t.lastSavedAt = /* @__PURE__ */ new Date(), console.debug("guido:autosave:save-complete", { trigger: e, at: t.lastSavedAt });
30
+ } catch (i) {
31
+ console.debug("guido:autosave:error", { trigger: e, error: i }), t.status = "error";
32
+ }
33
+ }, a = () => {
34
+ const { visibilityState: e } = document;
35
+ if (console.debug("guido:autosave:visibility-change", {
36
+ visibilityState: e,
37
+ isActive: n.value
38
+ }), e !== "hidden")
39
+ return;
40
+ const i = Date.now() - u;
41
+ if (i < c) {
42
+ console.debug("guido:autosave:visibility-debounced", {
43
+ sinceLastMs: i,
44
+ debounceMs: c
45
+ });
46
+ return;
47
+ }
48
+ u = Date.now(), r("visibility");
49
+ }, d = () => {
50
+ o && (clearInterval(o), o = null);
51
+ }, v = () => {
52
+ document.removeEventListener("visibilitychange", a), window.removeEventListener("pagehide", a);
53
+ };
54
+ f(
55
+ n,
56
+ (e) => {
57
+ console.debug("guido:autosave:active-changed", { active: e }), e ? (d(), o = setInterval(() => {
58
+ console.debug("guido:autosave:interval-tick"), r("interval");
59
+ }, A), document.addEventListener("visibilitychange", a), window.addEventListener("pagehide", a)) : (d(), v(), t.status = "idle");
60
+ },
61
+ { immediate: !0 }
62
+ ), y(() => {
63
+ d(), v();
64
+ });
65
+ };
66
+ export {
67
+ O as useAutoSave
68
+ };
@@ -0,0 +1,14 @@
1
+ const c = "https://email-static.useinsider.com/guido/guido-fs.js", u = () => ({ injectFullStory: () => {
2
+ var n;
3
+ const s = window;
4
+ if (typeof s._fs_org != "string" || !s._fs_org)
5
+ return;
6
+ const r = document.querySelector("ui-editor"), o = (n = r == null ? void 0 : r.shadowRoot) == null ? void 0 : n.querySelector("iframe"), e = o == null ? void 0 : o.contentDocument;
7
+ if (!e || e.querySelector('script[data-fullstory-bridge="true"]'))
8
+ return;
9
+ const t = e.createElement("script");
10
+ t.src = c, t.async = !0, t.crossOrigin = "anonymous", t.dataset.fullstoryBridge = "true", e.head.appendChild(t);
11
+ } });
12
+ export {
13
+ u as useFullStoryBridge
14
+ };
@@ -1,17 +1,17 @@
1
- import { useActionsApi as S } from "./useActionsApi.js";
2
- import { useConfig as V } from "./useConfig.js";
3
- import { useSaveStart as x, useSaveComplete as y } from "./useGuidoActions.js";
4
- import { useSyncModuleExtractor as w } from "./useSyncModuleExtractor.js";
5
- import { useStripoApi as b } from "../services/stripoApi.js";
6
- import { useTemplatePreparation as q } from "../utils/templatePreparation.js";
7
- import { useHtmlValidator as H } from "./useHtmlValidator.js";
8
- import { useLiquidValidator as L } from "./validators/useLiquidValidator.js";
9
- const F = () => {
10
- const o = x(), s = y(), { validateHtml: r } = H(), { validateLiquidSyntax: n } = L(), { callbacks: a, isFeatureEnabled: l } = V(), { extractSyncModuleData: d } = w(), { setSyncModuleUnsubscriptionPages: u } = b(), { editorSave: c } = S();
11
- return { save: async (m = !1) => {
1
+ import { useActionsApi as V } from "./useActionsApi.js";
2
+ import { useConfig as x } from "./useConfig.js";
3
+ import { useSaveStart as y, useSaveComplete as w } from "./useGuidoActions.js";
4
+ import { useSyncModuleExtractor as b } from "./useSyncModuleExtractor.js";
5
+ import { useStripoApi as q } from "../services/stripoApi.js";
6
+ import { useTemplatePreparation as H } from "../utils/templatePreparation.js";
7
+ import { useHtmlValidator as L } from "./useHtmlValidator.js";
8
+ import { useLiquidValidator as P } from "./validators/useLiquidValidator.js";
9
+ const U = () => {
10
+ const o = y(), s = w(), { validateHtml: r } = L(), { validateLiquidSyntax: n } = P(), { callbacks: a, isFeatureEnabled: l } = x(), { extractSyncModuleData: d } = b(), { setSyncModuleUnsubscriptionPages: u } = q(), { editorSave: c } = V();
11
+ return { save: async (m = !1, p = !1) => {
12
12
  var i;
13
13
  o();
14
- const { prepareTemplateDetails: p } = q(), t = await p();
14
+ const { prepareTemplateDetails: f } = H(), t = await f();
15
15
  if (l("liquidSyntax")) {
16
16
  if (!await n(t.compiledHtml))
17
17
  return;
@@ -20,10 +20,10 @@ const F = () => {
20
20
  if ((i = a.value) != null && i.externalValidation && !await a.value.externalValidation(t))
21
21
  return;
22
22
  await c();
23
- const { unsubscribePayload: f, stripoModules: v } = d(t.rawHtml);
24
- return await u(f), t.modules = v, m || s(t), t;
23
+ const { unsubscribePayload: v, stripoModules: S } = d(t.rawHtml);
24
+ return await u(v), t.modules = S, m || s({ ...t, silent: p }), t;
25
25
  } };
26
26
  };
27
27
  export {
28
- F as useSave
28
+ U as useSave
29
29
  };