@useinsider/guido 3.21.2-beta.cfc5be2 → 3.21.2-beta.d2a272e

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 (78) hide show
  1. package/README.md +35 -5
  2. package/dist/@types/config/schemas.js +39 -41
  3. package/dist/components/Guido.vue.js +6 -6
  4. package/dist/components/Guido.vue2.js +107 -99
  5. package/dist/composables/useBlocksConfig.js +24 -32
  6. package/dist/composables/useEditorOpenMetrics.js +167 -0
  7. package/dist/composables/useSave.js +75 -68
  8. package/dist/composables/useStripo.js +93 -82
  9. package/dist/composables/validators/useHtmlDocumentCountValidator.js +22 -0
  10. package/dist/enums/academy.js +0 -1
  11. package/dist/guido.css +1 -1
  12. package/dist/library.js +12 -10
  13. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +92 -93
  14. package/dist/node_modules/valibot/dist/index.js +261 -297
  15. package/dist/package.json.js +6 -4
  16. package/dist/public/prefetchRuntime.js +4 -0
  17. package/dist/services/templateLibraryApi.js +36 -31
  18. package/dist/src/@types/config/schemas.d.ts +0 -4
  19. package/dist/src/composables/useConfig.d.ts +0 -2
  20. package/dist/src/composables/useEditorOpenMetrics.d.ts +27 -0
  21. package/dist/src/composables/useStripo.d.ts +2 -1
  22. package/dist/src/composables/validators/useHtmlDocumentCountValidator.d.ts +3 -0
  23. package/dist/src/enums/academy.d.ts +0 -1
  24. package/dist/src/library.d.ts +1 -0
  25. package/dist/src/public/prefetchRuntime.d.ts +1 -0
  26. package/dist/src/stores/config.d.ts +0 -166
  27. package/dist/src/utils/runtimePrefetch.d.ts +4 -0
  28. package/dist/src/utils/stripoRuntime.d.ts +3 -0
  29. package/dist/src/utils/templatePreparation.d.ts +2 -1
  30. package/dist/static/stripo-runtime-manifest.json.js +9 -0
  31. package/dist/stores/config.js +6 -13
  32. package/dist/utils/pairProductVariables.js +98 -91
  33. package/dist/utils/runtimePrefetch.js +26 -0
  34. package/dist/utils/stripoRuntime.js +13 -0
  35. package/dist/utils/templatePreparation.js +30 -30
  36. package/package.json +6 -1
  37. package/dist/@types/display-condition.js +0 -25
  38. package/dist/components/organisms/display-conditions/CodeEditorField.vue.js +0 -20
  39. package/dist/components/organisms/display-conditions/CodeEditorField.vue2.js +0 -30
  40. package/dist/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue.js +0 -30
  41. package/dist/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue2.js +0 -71
  42. package/dist/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue.js +0 -34
  43. package/dist/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue2.js +0 -57
  44. package/dist/components/organisms/display-conditions/DisplayConditionsHost.vue.js +0 -17
  45. package/dist/components/organisms/display-conditions/DisplayConditionsHost.vue2.js +0 -22
  46. package/dist/composables/useDisplayConditions.js +0 -102
  47. package/dist/enums/display-condition.js +0 -12
  48. package/dist/extensions/DisplayConditions/bridge.js +0 -17
  49. package/dist/extensions/DisplayConditions/constants.js +0 -17
  50. package/dist/extensions/DisplayConditions/control.js +0 -178
  51. package/dist/extensions/DisplayConditions/display-conditions.css.js +0 -201
  52. package/dist/extensions/DisplayConditions/extension.js +0 -28
  53. package/dist/extensions/DisplayConditions/iconsRegistry.js +0 -20
  54. package/dist/extensions/DisplayConditions/library.js +0 -27
  55. package/dist/extensions/DisplayConditions/settingsPanel.js +0 -17
  56. package/dist/services/displayConditionApi.js +0 -39
  57. package/dist/src/@types/display-condition.d.ts +0 -59
  58. package/dist/src/components/organisms/display-conditions/CodeEditorField.vue.d.ts +0 -43
  59. package/dist/src/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue.d.ts +0 -2
  60. package/dist/src/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue.d.ts +0 -2
  61. package/dist/src/components/organisms/display-conditions/DisplayConditionsHost.vue.d.ts +0 -2
  62. package/dist/src/composables/useDisplayConditions.d.ts +0 -16
  63. package/dist/src/enums/display-condition.d.ts +0 -15
  64. package/dist/src/extensions/DisplayConditions/bridge.d.ts +0 -6
  65. package/dist/src/extensions/DisplayConditions/constants.d.ts +0 -14
  66. package/dist/src/extensions/DisplayConditions/control.d.ts +0 -23
  67. package/dist/src/extensions/DisplayConditions/extension.d.ts +0 -2
  68. package/dist/src/extensions/DisplayConditions/iconsRegistry.d.ts +0 -4
  69. package/dist/src/extensions/DisplayConditions/library.d.ts +0 -8
  70. package/dist/src/extensions/DisplayConditions/settingsPanel.d.ts +0 -5
  71. package/dist/src/mock/api/display-conditions.d.ts +0 -2
  72. package/dist/src/services/displayConditionApi.d.ts +0 -8
  73. package/dist/src/stores/display-condition.d.ts +0 -81
  74. package/dist/src/utils/displayCondition.d.ts +0 -10
  75. package/dist/src/utils/protectTableText.d.ts +0 -2
  76. package/dist/stores/display-condition.js +0 -28
  77. package/dist/utils/displayCondition.js +0 -26
  78. package/dist/utils/protectTableText.js +0 -22
@@ -1,44 +1,54 @@
1
- import { useActionsApi as L } from "./useActionsApi.js";
2
- import { useBlocksConfig as O } from "./useBlocksConfig.js";
3
- import { useConfig as H } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as w } from "./useCustomInterfaceAppearance.js";
5
- import { useFullStoryBridge as N } from "./useFullStoryBridge.js";
6
- import { useModuleRepair as j } from "./useModuleRepair.js";
7
- import { useStripoEventHandler as z } from "./useStripoEventHandler.js";
8
- import { useStripoNotifications as $ } from "./useStripoNotifications.js";
9
- import { useToaster as G } from "./useToaster.js";
10
- import { localePatch as J } from "../config/i18n/index.js";
11
- import { en as b } from "../config/i18n/en/index.js";
12
- import { ToasterTypeOptions as X } from "../enums/toaster.js";
13
- import { useStripoApi as K } from "../services/stripoApi.js";
14
- import Q from "../static/styles/customEditorStyle.css.js";
15
- import { useEditorStore as k } from "../stores/editor.js";
16
- import { buildMergeTagEntries as W, flattenDynamicContentList as Y } from "../utils/genericUtil.js";
17
- import Z from "../package.json.js";
18
- let n = null;
19
- const he = () => {
20
- const { features: c, template: u, isFeatureEnabled: p } = H(), { handleError: m, showToaster: v } = G(), { getToken: B, getCustomFonts: M, getSyncModulesStatus: T } = K(), { handleEvent: F } = z(), { handleModuleAdd: A } = j(), { getStripoBlocksConfig: V } = O(), { getStripoNotifications: _ } = $(), f = () => n || (n = new Promise((r, s) => {
21
- var d;
1
+ import { useActionsApi as M } from "./useActionsApi.js";
2
+ import { useBlocksConfig as N } from "./useBlocksConfig.js";
3
+ import { useConfig as j } from "./useConfig.js";
4
+ import { useCustomInterfaceAppearance as _ } from "./useCustomInterfaceAppearance.js";
5
+ import { useFullStoryBridge as z } from "./useFullStoryBridge.js";
6
+ import { useModuleRepair as $ } from "./useModuleRepair.js";
7
+ import { useStripoEventHandler as G } from "./useStripoEventHandler.js";
8
+ import { useStripoNotifications as X } from "./useStripoNotifications.js";
9
+ import { useToaster as J } from "./useToaster.js";
10
+ import { localePatch as K } from "../config/i18n/index.js";
11
+ import { en as B } from "../config/i18n/en/index.js";
12
+ import { ToasterTypeOptions as Q } from "../enums/toaster.js";
13
+ import { useStripoApi as W } from "../services/stripoApi.js";
14
+ import Y from "../static/styles/customEditorStyle.css.js";
15
+ import { useEditorStore as v } from "../stores/editor.js";
16
+ import { buildMergeTagEntries as Z, flattenDynamicContentList as ee } from "../utils/genericUtil.js";
17
+ import { getStripoRuntimeBaseUrl as te } from "../utils/stripoRuntime.js";
18
+ let d = null, T = !1;
19
+ const we = (e) => {
20
+ const { features: u, template: m, isFeatureEnabled: p } = j(), { handleError: f, showToaster: F } = J(), { getToken: A, getCustomFonts: P, getSyncModulesStatus: R } = W(), { handleEvent: U } = G(), { handleModuleAdd: V } = $(), { getStripoBlocksConfig: D } = N(), { getStripoNotifications: I } = X(), g = () => d || (d = new Promise((a, s) => {
22
21
  if (document.getElementById("UiEditorScript")) {
23
- r();
22
+ a();
24
23
  return;
25
24
  }
26
- const o = Z.guido, i = `https://email-static.useinsider.com/guido/${(d = o == null ? void 0 : o.stripo) == null ? void 0 : d.version}/UIEditor.js`, e = document.createElement("script");
27
- e.id = "UiEditorScript", e.type = "module", e.src = i, e.onload = () => r(), e.onerror = () => {
28
- e.remove(), s(new Error(`Failed to load Stripo UIEditor script from S3: ${i}`));
29
- }, document.body.appendChild(e);
30
- }), n.catch(() => {
31
- n = null;
32
- }), n), D = async (r, s, o, a = [], i = !1) => {
33
- var y, E, h, C;
34
- const e = k(), { html: d, css: P } = r, { baseBlocks: g, extensions: R } = await V(), S = ((y = c.value) == null ? void 0 : y.displayConditions) ?? !0, U = ((E = c.value) == null ? void 0 : E.modulesDisabled) ?? !1, I = !!d || (((h = u.value) == null ? void 0 : h.forceRecreate) ?? !1), q = "https://email-static.useinsider.com https://edge.fullstory.com https://rs.fullstory.com";
35
- w().importCss(), await window.UIEditor.initEditor(
25
+ const i = te();
26
+ if (!i) {
27
+ s(
28
+ new Error("guido.stripo.version is not set in package.json. Please configure the Stripo version.")
29
+ );
30
+ return;
31
+ }
32
+ const n = `${i}UIEditor.js`, t = document.createElement("script");
33
+ t.id = "UiEditorScript", t.type = "module", t.src = n, t.onload = () => {
34
+ T = !0, a();
35
+ }, t.onerror = () => {
36
+ t.remove(), s(new Error(`Failed to load Stripo UIEditor script from S3: ${n}`));
37
+ }, document.body.appendChild(t);
38
+ }), d.catch(() => {
39
+ d = null;
40
+ }), d), L = async (a, s, i, n = [], t = !1) => {
41
+ var C, w, k, b;
42
+ const o = v(), { html: c, css: S } = a, { baseBlocks: y, extensions: q } = await D();
43
+ e.mark("blocks_config_ready");
44
+ const E = ((C = u.value) == null ? void 0 : C.displayConditions) ?? !0, x = ((w = u.value) == null ? void 0 : w.modulesDisabled) ?? !1, h = !!c || (((k = m.value) == null ? void 0 : k.forceRecreate) ?? !1), O = "https://email-static.useinsider.com https://edge.fullstory.com https://rs.fullstory.com";
45
+ e.setTemplate({ html: c, css: S, forceRecreate: h }), _().importCss(), e.mark("init_editor"), await window.UIEditor.initEditor(
36
46
  document.querySelector("#guido-editor"),
37
47
  {
38
48
  metadata: s,
39
- html: d,
40
- css: P,
41
- forceRecreate: I,
49
+ html: c,
50
+ css: S,
51
+ forceRecreate: h,
42
52
  locale: "en",
43
53
  undoButtonSelector: "#guido__undo-button",
44
54
  redoButtonSelector: "#guido__redo-button",
@@ -48,12 +58,12 @@ const he = () => {
48
58
  customAppearanceMergetags: !p("liquidSyntax"),
49
59
  customAppearanceMergetagsBorderColor: "#f1f3fe",
50
60
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
51
- customViewStyles: Q,
52
- conditionsEnabled: S,
53
- customConditionsEnabled: S,
61
+ customViewStyles: Y,
62
+ conditionsEnabled: E,
63
+ customConditionsEnabled: E,
54
64
  enableXSSSecurity: !0,
55
- modulesDisabled: U,
56
- syncModulesEnabled: i,
65
+ modulesDisabled: x,
66
+ syncModulesEnabled: t,
57
67
  messageSettingsEnabled: !0,
58
68
  displayGmailAnnotations: !0,
59
69
  displayHiddenPreheader: !1,
@@ -63,55 +73,56 @@ const he = () => {
63
73
  copyPasteEnabled: !1,
64
74
  selectElementAfterDrop: !0,
65
75
  sameFontSizeForOutlook: !0,
66
- allowedScriptSourceDomains: q,
67
- ...g ? { baseBlocks: g } : {},
76
+ allowedScriptSourceDomains: O,
77
+ ...y ? { baseBlocks: y } : {},
68
78
  editorFonts: {
69
79
  showDefaultStandardFonts: !0,
70
80
  showDefaultNotStandardFonts: !0,
71
- customFonts: a
81
+ customFonts: n
72
82
  },
73
83
  mergeTags: [
74
84
  {
75
- entries: W(
76
- o.preselectedDynamicContentList,
77
- Y((C = u.value) == null ? void 0 : C.dynamicContentList),
85
+ entries: Z(
86
+ i.preselectedDynamicContentList,
87
+ ee((b = m.value) == null ? void 0 : b.dynamicContentList),
78
88
  p("liquidSyntax")
79
89
  )
80
90
  }
81
91
  ],
82
- async onTokenRefreshRequest(t) {
92
+ async onTokenRefreshRequest(r) {
83
93
  try {
84
- const l = await B();
85
- t(l);
94
+ e.mark("token_start");
95
+ const l = await A();
96
+ e.mark("token_end"), r(l);
86
97
  } catch (l) {
87
- m(l, "Failed to refresh token");
98
+ f(l, "Failed to refresh token");
88
99
  }
89
100
  },
90
101
  onTemplateLoaded() {
91
102
  try {
92
- const { activateCustomViewStyles: t, updateTimerInClonedTemplate: l } = L(), { injectFullStory: x } = N();
93
- w().importCss(), t(), x(), l(), o.onReady(), e.isStripoInitialized = !0, e.loadingStatus = !1, setTimeout(() => {
94
- e.hasChanges = !1;
95
- }, 1e3);
96
- } catch (t) {
97
- m(t, "Failed to load custom interface appearance");
103
+ const { activateCustomViewStyles: r, updateTimerInClonedTemplate: l } = M(), { injectFullStory: H } = z();
104
+ _().importCss(), r(), H(), l(), i.onReady(), o.isStripoInitialized = !0, o.loadingStatus = !1, setTimeout(() => {
105
+ o.hasChanges = !1;
106
+ }, 1e3), e.markReady();
107
+ } catch (r) {
108
+ f(r, "Failed to load custom interface appearance");
98
109
  }
99
110
  },
100
- onCodeEditorVisibilityChanged(t) {
101
- e.isCodeEditorOpen = t;
111
+ onCodeEditorVisibilityChanged(r) {
112
+ o.isCodeEditorOpen = r;
102
113
  },
103
- onEditorVisualModeChanged(t) {
104
- e.editorVisualMode = t.toLowerCase();
114
+ onEditorVisualModeChanged(r) {
115
+ o.editorVisualMode = r.toLowerCase();
105
116
  },
106
- onVersionHistoryVisibilityChanged(t) {
107
- e.isVersionHistoryOpen = t;
117
+ onVersionHistoryVisibilityChanged(r) {
118
+ o.isVersionHistoryOpen = r;
108
119
  },
109
120
  onDataChanged() {
110
- e.hasChanges = !0, e.changeSeq += 1;
121
+ o.hasChanges = !0, o.changeSeq += 1;
111
122
  },
112
- onEvent: F,
113
- onModuleAdd: A,
114
- notifications: _(),
123
+ onEvent: U,
124
+ onModuleAdd: V,
125
+ notifications: I(),
115
126
  // Stripo deselects the block on any click outside the canvas, so every surface
116
127
  // that belongs to the block's own flow has to be listed here (SD-153273).
117
128
  ignoreClickOutsideSelectors: [
@@ -121,35 +132,35 @@ const he = () => {
121
132
  ".in-modal-v2-wrapper",
122
133
  ".in-toasts-wrapper"
123
134
  ],
124
- extensions: R,
125
- localePatch: J
135
+ extensions: q,
136
+ localePatch: K
126
137
  }
127
138
  );
128
139
  };
129
- return { initPlugin: async (r, s, o) => {
130
- const a = k();
140
+ return { initPlugin: async (a, s, i) => {
141
+ const n = v();
131
142
  try {
132
- await f();
133
- const [i, e] = await Promise.all([
134
- M(),
135
- T()
143
+ e.mark("plugin_start"), e.setScriptPreloaded(T), await g(), e.mark("script_ready");
144
+ const [t, o] = await Promise.all([
145
+ P(),
146
+ R()
136
147
  ]);
137
- a.syncModulesEnabled = e, await D(r, s, o, i, e);
148
+ e.mark("fonts_sync_ready"), n.syncModulesEnabled = o, await L(a, s, i, t, o);
138
149
  } catch {
139
- a.loadingStatus = !1, v({
140
- type: X.Error,
141
- message: b["An error has occurred. Please report the error code to support."],
150
+ n.loadingStatus = !1, F({
151
+ type: Q.Error,
152
+ message: B["An error has occurred. Please report the error code to support."],
142
153
  actionButton: {
143
- text: b["Reload page"],
154
+ text: B["Reload page"],
144
155
  onClick: () => window.location.reload()
145
156
  }
146
- });
157
+ }), e.markFailed();
147
158
  }
148
159
  }, preloadRuntime: () => {
149
- f().catch(() => {
160
+ g().catch(() => {
150
161
  });
151
162
  } };
152
163
  };
153
164
  export {
154
- he as useStripo
165
+ we as useStripo
155
166
  };
@@ -0,0 +1,22 @@
1
+ import { useToaster as i } from "../useToaster.js";
2
+ import { useTranslations as m } from "../useTranslations.js";
3
+ import { ToasterTypeOptions as c } from "../../enums/toaster.js";
4
+ const u = "newsletter.multiple-html-designs-detected", r = `(?:[^>"']|"[^"]*"|'[^']*')*`, a = "style|script|noscript|xmp|iframe|noembed|noframes|textarea|title", T = /<html(?=[\s>/])/gi, A = new RegExp(
5
+ `<!--[\\s\\S]*?-->|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|<(${a})(?=[\\s/>])${r}>[\\s\\S]*?</\\1\\s*>|<([a-zA-Z][\\w:-]*)${r}>`,
6
+ "gi"
7
+ ), p = (e) => Array.from(e.matchAll(A)).filter(([, , t]) => (t == null ? void 0 : t.toLowerCase()) === "html").length, g = () => {
8
+ const { showToaster: e } = i(), t = m();
9
+ return { validateSingleHtmlDocument: (o, l = !1) => {
10
+ var n;
11
+ if ((((n = o.match(T)) == null ? void 0 : n.length) ?? 0) < 2)
12
+ return !0;
13
+ const s = p(o);
14
+ return s <= 1 ? !0 : (console.debug("guido:save:blocked", { reason: "multiple-html-documents", htmlRootCount: s }), l || e({
15
+ type: c.Warning,
16
+ message: t(u)
17
+ }), !1);
18
+ } };
19
+ };
20
+ export {
21
+ g as useHtmlDocumentCountValidator
22
+ };
@@ -2,7 +2,6 @@ const e = "https://academy.insiderone.com", o = {
2
2
  EMAIL_EDITOR: `${e}/docs/email-drag-and-drop-editor`,
3
3
  GLOBAL_UNSUBSCRIBE: `${e}/docs/global-unsubscribe-preference-center`,
4
4
  AMP_FOR_EMAILS: `${e}/docs/amp-for-emails`,
5
- EMAIL_DISPLAY_CONDITIONS: `${e}/docs/new-editor-add-display-conditions-to-an-email`,
6
5
  EMAIL_RECOMMENDATION_BLOCK: `${e}/docs/new-editor-email-recommendation-block`
7
6
  };
8
7
  export {
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.auth-error-modal[data-v-b4d7ae51]{position:relative;z-index:145}.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-b8f24f34] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-baf7a5dd]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-e48cebe9]{gap:16px}.validation-error-row[data-v-e48cebe9]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-e48cebe9]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-e48cebe9]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-5d5e32de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-5d5e32de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-5d5e32de]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-19d8cb42] .vueperslides__bullets,[data-v-ec2027ff] .vueperslides__bullets,[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd]{width:100%;max-width:none}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-skeleton{width:100%!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-dropdown-box__container{width:413px}.assign-strategy-drawer .spaced-dot-sep{background-image:linear-gradient(90deg,#91949f 20%,#fff0 0);background-position:center bottom;background-repeat:repeat-x;background-size:5px 1px}.assign-strategy-drawer .spaced-dot-sep--top{background-position:center top}.assign-strategy-drawer .spaced-dot-sep--fc-n:first-child{background:none}.guido-code-editor-field__label[data-v-e96c7aa3]{margin:0 0 8px;color:#2c3546;font-size:13px;line-height:16px}[data-v-a4b2ccb9] .guido-display-condition-academy{color:#0a2ecc;text-decoration:underline}[data-v-a4b2ccb9] .guido-display-condition-create__optional{color:#666}.guido-display-condition-create__separator[data-v-a4b2ccb9]{height:1px;margin:0 0 24px;background-image:linear-gradient(to right,#91949F 1px,transparent 1px);background-size:5px 1px}.guido-display-condition-create__method-title[data-v-a4b2ccb9]{margin:0 0 24px;color:#292929;font-size:13px;font-weight:600;letter-spacing:1.2px;line-height:20px;text-transform:uppercase}.guido-display-condition-create__methods[data-v-a4b2ccb9]{display:flex;gap:16px;margin-bottom:24px}[data-v-10ac7a13] .guido-display-condition-academy{color:#0a2ecc;text-decoration:underline}.guido-display-condition-select-root[data-v-10ac7a13] .in-drawer__footer{justify-content:flex-start}.guido-display-condition-select__delete-modal[data-v-10ac7a13]{position:relative;z-index:145}.guido-display-condition-select__delete-modal[data-v-10ac7a13] .in-modal-v2-wrapper__header-title{margin-bottom:0}.guido-display-condition-select__delete-text[data-v-10ac7a13]{margin:0;color:#292929}.guido-display-condition-select__list[data-v-10ac7a13]{display:flex;flex-direction:column;gap:24px;margin:0;padding:0;list-style:none}.guido-display-condition-card[data-v-10ac7a13]{border:1px solid #E1E1E1;border-radius:4px;background-color:#fff}.guido-display-condition-card__header[data-v-10ac7a13]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px}.guido-display-condition-card__text[data-v-10ac7a13]{min-width:0}.guido-display-condition-card__name[data-v-10ac7a13]{margin:0;overflow:hidden;color:#292929;font-size:16px;font-weight:600;line-height:24px;text-overflow:ellipsis;white-space:nowrap}.guido-display-condition-card__description[data-v-10ac7a13]{margin:4px 0 0;overflow:hidden;color:#666;font-size:13px;line-height:16px;text-overflow:ellipsis;white-space:nowrap}.guido-display-condition-card__actions[data-v-10ac7a13]{display:flex;flex-shrink:0;align-items:center;gap:16px}.guido-display-condition-card__split[data-v-10ac7a13]{position:relative;display:flex;gap:1px}.guido-display-condition-card__menu[data-v-10ac7a13]{position:absolute;z-index:2;top:calc(100% + 2px);right:0;min-width:115px;padding:4px 0;border-radius:4px;background-color:#fff;box-shadow:0 4px 16px #22293829}.guido-display-condition-card__menu-item[data-v-10ac7a13]{width:100%;padding:8px 16px;border:0;background:none;color:#222938;cursor:pointer;font-size:14px;line-height:24px;text-align:left}.guido-display-condition-card__menu-item[data-v-10ac7a13]:hover,.guido-display-condition-card__menu-item[data-v-10ac7a13]:focus-visible{background-color:#eff2f4}.guido-display-condition-card__divider[data-v-10ac7a13]{width:1px;height:24px;background-color:#dcdee6}.guido-display-condition-card__expand[data-v-10ac7a13]{display:flex;padding:0;border:0;background:none;cursor:pointer}.guido-display-condition-card__code[data-v-10ac7a13]{margin:1px 15px 15px;padding:8px;border:1px solid #E1E1E1;border-radius:4px;background-color:#fff;color:#101727;font-family:inherit;font-size:15px;line-height:24px;white-space:pre-wrap;word-break:break-word}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}
1
+ @charset "UTF-8";.auth-error-modal[data-v-b4d7ae51]{position:relative;z-index:145}.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-b8f24f34] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-baf7a5dd]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-e48cebe9]{gap:16px}.validation-error-row[data-v-e48cebe9]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-e48cebe9]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-e48cebe9]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-f2154cb6]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-f2154cb6]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-f2154cb6]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-19d8cb42] .vueperslides__bullets,[data-v-ec2027ff] .vueperslides__bullets,[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd]{width:100%;max-width:none}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-skeleton{width:100%!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-dropdown-box__container{width:413px}.assign-strategy-drawer .spaced-dot-sep{background-image:linear-gradient(90deg,#91949f 20%,#fff0 0);background-position:center bottom;background-repeat:repeat-x;background-size:5px 1px}.assign-strategy-drawer .spaced-dot-sep--top{background-position:center top}.assign-strategy-drawer .spaced-dot-sep--fc-n:first-child{background:none}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}
package/dist/library.js CHANGED
@@ -1,20 +1,22 @@
1
1
  import { default as a } from "./components/Guido.vue.js";
2
- import { MessageType as t, ProductType as d } from "./@types/config/schemas.js";
2
+ import { MessageType as t, ProductType as f } from "./@types/config/schemas.js";
3
3
  import "./@types/config/defaults.js";
4
- import { getValidationErrors as s, isValidConfig as p, parseConfig as g, parseConfigSafe as m, validateConfig as n } from "./@types/config/validator.js";
5
- import { assignTrackingIds as u, readTrackFloor as x, readTrackSeq as T } from "./utils/linkTrackingIds.js";
4
+ import { getValidationErrors as p, isValidConfig as s, parseConfig as m, parseConfigSafe as g, validateConfig as n } from "./@types/config/validator.js";
5
+ import { assignTrackingIds as l, readTrackFloor as x, readTrackSeq as c } from "./utils/linkTrackingIds.js";
6
6
  import { useGuidoEmailEditorStore as C } from "./stores/guido-email-editor.js";
7
+ import { prefetchGuidoRuntime as E } from "./utils/runtimePrefetch.js";
7
8
  export {
8
9
  a as Guido,
9
10
  t as MessageType,
10
- d as ProductType,
11
- u as assignTrackingIds,
12
- s as getValidationErrors,
13
- p as isValidConfig,
14
- g as parseConfig,
15
- m as parseConfigSafe,
11
+ f as ProductType,
12
+ l as assignTrackingIds,
13
+ p as getValidationErrors,
14
+ s as isValidConfig,
15
+ m as parseConfig,
16
+ g as parseConfigSafe,
17
+ E as prefetchGuidoRuntime,
16
18
  x as readTrackFloor,
17
- T as readTrackSeq,
19
+ c as readTrackSeq,
18
20
  C as useGuidoEmailEditorStore,
19
21
  n as validateConfig
20
22
  };