@useinsider/guido 3.19.0-beta.f05f865 → 3.19.0-beta.f0d5980
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.
- package/README.md +0 -1
- package/dist/@types/config/schemas.js +37 -39
- package/dist/components/Guido.vue.js +8 -8
- package/dist/components/Guido.vue2.js +53 -56
- package/dist/components/organisms/AutoSaveController.vue2.js +8 -9
- package/dist/components/organisms/header/EditorActions.vue.js +2 -2
- package/dist/components/organisms/header/EditorActions.vue2.js +55 -90
- package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
- package/dist/components/organisms/header/LeftSlot.vue2.js +12 -16
- package/dist/components/wrappers/WpDrawer.vue.js +7 -9
- package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
- package/dist/composables/useHtmlCompiler.js +26 -37
- package/dist/composables/useHtmlValidator.js +0 -2
- package/dist/composables/useSave.js +45 -90
- package/dist/composables/validators/useCouponBlockValidator.js +21 -24
- package/dist/composables/validators/useUnsubscribeBlockValidator.js +27 -34
- package/dist/guido.css +1 -1
- package/dist/src/@types/config/schemas.d.ts +0 -4
- package/dist/src/components/Guido.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -17
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -17
- package/dist/src/components/wrappers/WpDrawer.vue.d.ts +3 -4
- package/dist/src/composables/useConfig.d.ts +0 -2
- package/dist/src/composables/useHtmlValidator.d.ts +0 -21
- package/dist/src/composables/useSave.d.ts +1 -6
- package/dist/src/composables/validators/useCouponBlockValidator.d.ts +0 -3
- package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +0 -10
- package/dist/src/stores/config.d.ts +0 -32
- package/dist/src/utils/templatePreparation.d.ts +0 -30
- package/dist/stores/config.js +67 -84
- package/dist/utils/templatePreparation.js +36 -39
- package/package.json +1 -1
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +0 -20
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +0 -49
- package/dist/composables/useSaveValidation.js +0 -282
- package/dist/composables/useSaveValidationRollout.js +0 -9
- package/dist/enums/save-validation.js +0 -4
- package/dist/src/@types/save-validation.d.ts +0 -19
- package/dist/src/components/organisms/validation/ValidationErrorDrawer.vue.d.ts +0 -2
- package/dist/src/composables/useSaveValidation.d.ts +0 -6
- package/dist/src/composables/useSaveValidationRollout.d.ts +0 -3
- package/dist/src/enums/save-validation.d.ts +0 -27
- package/dist/src/stores/save-validation.d.ts +0 -22
- package/dist/stores/save-validation.js +0 -30
package/README.md
CHANGED
|
@@ -164,7 +164,6 @@ const config: GuidoConfigInput = {
|
|
|
164
164
|
liquidSyntax?: boolean, // Default: false - Enable Liquid template syntax
|
|
165
165
|
autosave?: boolean, // Default: false - Show the Auto Save toggle in the header. See wiki/AUTOSAVE.md.
|
|
166
166
|
allowlistEnabled?: boolean, // Default: false - Pre-save domain-allowlist check (opt-in). Guido self-serves the block toaster (role lookup, deep-link, copy from window.trans).
|
|
167
|
-
allowSaveWithErrors?: boolean, // Default: true - Allow the validation drawer's "Save and Continue" soft-save. Set false to hard-block invalid saves (transactional + unsubscribe pages).
|
|
168
167
|
reusableRecommendationStrategy?: boolean, // Default: false - Assign an RRS strategy to recommendation blocks instead of per-block algorithm/filters/shuffle/product-count settings.
|
|
169
168
|
},
|
|
170
169
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModuleFolderDefaults as
|
|
1
|
+
import { ModuleFolderDefaults as S } from "../../enums/defaults.js";
|
|
2
2
|
import { object as a, number as s, optional as e, string as t, picklist as m, pipe as i, minLength as b, custom as k, boolean as o, array as c, transform as y, unknown as r, record as g, fallback as R, literal as u, looseObject as C, variant as I, union as h, lazy as T } from "../../node_modules/valibot/dist/index.js";
|
|
3
3
|
const p = {
|
|
4
4
|
/** Promotional/marketing emails */
|
|
@@ -38,7 +38,7 @@ const p = {
|
|
|
38
38
|
name: t(),
|
|
39
39
|
/** Fallback font family (e.g., "serif" or "sans-serif") */
|
|
40
40
|
family: t()
|
|
41
|
-
}),
|
|
41
|
+
}), M = a({
|
|
42
42
|
/** Partner/organization name (required) */
|
|
43
43
|
name: i(
|
|
44
44
|
t(),
|
|
@@ -62,7 +62,7 @@ const p = {
|
|
|
62
62
|
username: e(t(), "Guido User"),
|
|
63
63
|
/** Fallback font settings from partner settings — used to match backend size calculation */
|
|
64
64
|
fallbackFont: e(L)
|
|
65
|
-
}),
|
|
65
|
+
}), E = a({
|
|
66
66
|
/** Display text for the dynamic content */
|
|
67
67
|
text: t(),
|
|
68
68
|
/** Template variable value (e.g., {{username}}) */
|
|
@@ -76,17 +76,17 @@ const p = {
|
|
|
76
76
|
value: t()
|
|
77
77
|
})
|
|
78
78
|
)
|
|
79
|
-
}),
|
|
79
|
+
}), f = T(() => C({
|
|
80
80
|
text: e(t()),
|
|
81
81
|
// eslint-disable-next-line camelcase -- backend field name
|
|
82
82
|
tag_text: e(t()),
|
|
83
83
|
value: e(t()),
|
|
84
|
-
children: e(c(
|
|
84
|
+
children: e(c(f)),
|
|
85
85
|
// eslint-disable-next-line camelcase -- backend field name
|
|
86
|
-
select_items: e(c(
|
|
86
|
+
select_items: e(c(f))
|
|
87
87
|
})), N = g(
|
|
88
88
|
t(),
|
|
89
|
-
R(c(
|
|
89
|
+
R(c(f), [])
|
|
90
90
|
), P = C({
|
|
91
91
|
/** Block ID (matches the dictionary key and the legacy HTML element id) */
|
|
92
92
|
id: e(s()),
|
|
@@ -132,7 +132,7 @@ const p = {
|
|
|
132
132
|
isPriceMovedToNextLine: e(o()),
|
|
133
133
|
/** Legacy "Hide if same as discounted" / delete-price-for-zero-sale toggle */
|
|
134
134
|
isPriceDeletedForZeroSale: e(o())
|
|
135
|
-
}),
|
|
135
|
+
}), x = a({
|
|
136
136
|
/**
|
|
137
137
|
* Legacy recommendation block configs keyed by block ID.
|
|
138
138
|
* Pass this when loading a template authored with the v1
|
|
@@ -143,14 +143,14 @@ const p = {
|
|
|
143
143
|
g(t(), P),
|
|
144
144
|
{}
|
|
145
145
|
)
|
|
146
|
-
}),
|
|
146
|
+
}), D = a({
|
|
147
147
|
/** Initial HTML content */
|
|
148
148
|
html: e(t(), ""),
|
|
149
149
|
/** Initial CSS content */
|
|
150
150
|
css: e(t(), ""),
|
|
151
151
|
/** Preselected dynamic content items */
|
|
152
152
|
preselectedDynamicContent: e(
|
|
153
|
-
c(
|
|
153
|
+
c(E),
|
|
154
154
|
[]
|
|
155
155
|
),
|
|
156
156
|
/**
|
|
@@ -194,13 +194,13 @@ const p = {
|
|
|
194
194
|
)
|
|
195
195
|
),
|
|
196
196
|
/** Migration-only inputs (legacy block configs) */
|
|
197
|
-
migration: e(
|
|
198
|
-
}),
|
|
197
|
+
migration: e(x, {})
|
|
198
|
+
}), O = a({
|
|
199
199
|
/** Sender display name */
|
|
200
200
|
senderName: e(t(), ""),
|
|
201
201
|
/** Email subject line */
|
|
202
202
|
subject: e(t(), "")
|
|
203
|
-
}),
|
|
203
|
+
}), v = a({
|
|
204
204
|
/** Locale for the editor UI */
|
|
205
205
|
locale: e(t(), "en"),
|
|
206
206
|
/** Path to translations object */
|
|
@@ -208,11 +208,11 @@ const p = {
|
|
|
208
208
|
/** Migration date for template compatibility */
|
|
209
209
|
migrationDate: e(s(), 1759696858),
|
|
210
210
|
/** Email header settings */
|
|
211
|
-
emailHeader: e(
|
|
211
|
+
emailHeader: e(O, { senderName: "", subject: "" }),
|
|
212
212
|
/** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
|
|
213
|
-
savedModulesFolderName: e(t(),
|
|
213
|
+
savedModulesFolderName: e(t(), S.SAVED_MODULES),
|
|
214
214
|
/** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
|
|
215
|
-
defaultModulesFolderName: e(t(),
|
|
215
|
+
defaultModulesFolderName: e(t(), S.DEFAULT_MODULES)
|
|
216
216
|
}), F = a({
|
|
217
217
|
/** Whether to show the header bar */
|
|
218
218
|
showHeader: e(o(), !0),
|
|
@@ -241,10 +241,8 @@ const p = {
|
|
|
241
241
|
allowlistEnabled: e(o(), !1),
|
|
242
242
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
243
243
|
linkTrackingIds: e(o(), !1),
|
|
244
|
-
/** Allow persisting a template that still has validation errors (drawer "Save and Continue" soft-save). Host sets false for transactional + unsubscribe. */
|
|
245
|
-
allowSaveWithErrors: e(o(), !0),
|
|
246
244
|
reusableRecommendationStrategy: e(o(), !1)
|
|
247
|
-
}),
|
|
245
|
+
}), B = m([
|
|
248
246
|
"amp-accordion",
|
|
249
247
|
"amp-carousel",
|
|
250
248
|
"amp-form-controls",
|
|
@@ -258,7 +256,7 @@ const p = {
|
|
|
258
256
|
"text-block",
|
|
259
257
|
"timer-block",
|
|
260
258
|
"video-block"
|
|
261
|
-
]),
|
|
259
|
+
]), w = m([
|
|
262
260
|
"dynamic-content",
|
|
263
261
|
"checkbox-block",
|
|
264
262
|
"radio-button-block",
|
|
@@ -269,12 +267,12 @@ const p = {
|
|
|
269
267
|
]), j = a({
|
|
270
268
|
/** Default blocks to exclude from the editor */
|
|
271
269
|
excludeDefaults: e(
|
|
272
|
-
c(
|
|
270
|
+
c(B),
|
|
273
271
|
[]
|
|
274
272
|
),
|
|
275
273
|
/** Custom blocks to include in the editor */
|
|
276
274
|
includeCustoms: e(
|
|
277
|
-
c(
|
|
275
|
+
c(w),
|
|
278
276
|
[]
|
|
279
277
|
)
|
|
280
278
|
}), d = a({
|
|
@@ -325,7 +323,7 @@ const p = {
|
|
|
325
323
|
customRules: e(c(V), []),
|
|
326
324
|
/** Skip default compiler rules */
|
|
327
325
|
ignoreDefaultRules: e(o(), !1)
|
|
328
|
-
}),
|
|
326
|
+
}), Z = a({
|
|
329
327
|
/**
|
|
330
328
|
* External validation handler called before save completes.
|
|
331
329
|
* Return false to cancel the save operation.
|
|
@@ -336,17 +334,17 @@ const p = {
|
|
|
336
334
|
"externalValidation must be a function"
|
|
337
335
|
)
|
|
338
336
|
)
|
|
339
|
-
}),
|
|
337
|
+
}), Q = a({
|
|
340
338
|
// Required sections
|
|
341
339
|
/** Identity configuration (required) */
|
|
342
340
|
identity: A,
|
|
343
341
|
/** Partner configuration (required) */
|
|
344
|
-
partner:
|
|
342
|
+
partner: M,
|
|
345
343
|
// Optional sections (with defaults)
|
|
346
344
|
/** Template content and presets */
|
|
347
|
-
template: e(
|
|
345
|
+
template: e(D, {}),
|
|
348
346
|
/** Editor settings */
|
|
349
|
-
editor: e(
|
|
347
|
+
editor: e(v, {}),
|
|
350
348
|
/** UI configuration */
|
|
351
349
|
ui: e(F, {}),
|
|
352
350
|
/** Feature toggles */
|
|
@@ -356,33 +354,33 @@ const p = {
|
|
|
356
354
|
/** Compiler configuration */
|
|
357
355
|
compiler: e(z, {}),
|
|
358
356
|
/** Callbacks and event handlers */
|
|
359
|
-
callbacks: e(
|
|
357
|
+
callbacks: e(Z, {})
|
|
360
358
|
});
|
|
361
359
|
export {
|
|
362
360
|
j as BlocksSchema,
|
|
363
|
-
|
|
361
|
+
Z as CallbacksSchema,
|
|
364
362
|
V as CompilerRuleSchema,
|
|
365
363
|
z as CompilerSchema,
|
|
366
|
-
|
|
364
|
+
w as CustomBlockTypeSchema,
|
|
367
365
|
G as CustomRuleSchema,
|
|
368
|
-
|
|
366
|
+
B as DefaultBlockTypeSchema,
|
|
369
367
|
N as DynamicContentListSchema,
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
368
|
+
f as DynamicContentNodeSchema,
|
|
369
|
+
E as DynamicContentSchema,
|
|
370
|
+
v as EditorSchema,
|
|
371
|
+
O as EmailHeaderSchema,
|
|
374
372
|
L as FallbackFontSchema,
|
|
375
373
|
U as FeaturesSchema,
|
|
376
|
-
|
|
374
|
+
Q as GuidoConfigSchema,
|
|
377
375
|
A as IdentitySchema,
|
|
378
376
|
P as LegacyRecommendationConfigSchema,
|
|
379
377
|
p as MessageType,
|
|
380
|
-
|
|
378
|
+
M as PartnerSchema,
|
|
381
379
|
l as ProductType,
|
|
382
380
|
_ as RegexRuleSchema,
|
|
383
381
|
q as RemoveRuleSchema,
|
|
384
382
|
H as ReplaceRuleSchema,
|
|
385
|
-
|
|
386
|
-
|
|
383
|
+
x as TemplateMigrationSchema,
|
|
384
|
+
D as TemplateSchema,
|
|
387
385
|
F as UISchema
|
|
388
386
|
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import o from "./Guido.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
3
|
+
import t from "../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var i = function() {
|
|
5
5
|
var a = this, r = a._self._c, e = a._self._setupProxy;
|
|
6
|
-
return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), r(e.AutoSaveController), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : a._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.AuthErrorModal), r(e.FilterSelectionDrawer), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.AssignStrategyDrawer) : a._e(), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.RemoveStrategyModal) : a._e(), e.isRrsEnabled ? r(e.LegacyStrategyUpdatedModal) : a._e(), r(e.SaveAsTemplateDrawer), e.
|
|
6
|
+
return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), r(e.AutoSaveController), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : a._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.AuthErrorModal), r(e.FilterSelectionDrawer), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.AssignStrategyDrawer) : a._e(), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.RemoveStrategyModal) : a._e(), e.isRrsEnabled ? r(e.LegacyStrategyUpdatedModal) : a._e(), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? a._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(_) {
|
|
7
7
|
return e.emit("onboarding:finished");
|
|
8
8
|
} } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
|
|
9
|
-
}, s = [], n = /* @__PURE__ */
|
|
9
|
+
}, s = [], n = /* @__PURE__ */ t(
|
|
10
10
|
o,
|
|
11
|
-
|
|
11
|
+
i,
|
|
12
12
|
s,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
|
-
"
|
|
15
|
+
"926b01f5"
|
|
16
16
|
);
|
|
17
|
-
const
|
|
17
|
+
const f = n.exports;
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
f as default
|
|
20
20
|
};
|
|
@@ -1,43 +1,40 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useCortexBlueprintBridge as
|
|
3
|
-
import { useEditorLock as
|
|
4
|
-
import { provideGuidoActions as
|
|
5
|
-
import { useGuidoStateBridge as
|
|
6
|
-
import { usePartner as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { useTimerClone as ge } from "../composables/useTimerClone.js";
|
|
1
|
+
import { defineComponent as ae, defineAsyncComponent as m, ref as x, computed as u, watch as W, onMounted as se, onUnmounted as ie } from "vue";
|
|
2
|
+
import { useCortexBlueprintBridge as ce } from "../composables/useCortexBlueprintBridge.js";
|
|
3
|
+
import { useEditorLock as de } from "../composables/useEditorLock.js";
|
|
4
|
+
import { provideGuidoActions as me } from "../composables/useGuidoActions.js";
|
|
5
|
+
import { useGuidoStateBridge as le } from "../composables/useGuidoStateBridge.js";
|
|
6
|
+
import { usePartner as ue } from "../composables/usePartner.js";
|
|
7
|
+
import { useStripo as pe } from "../composables/useStripo.js";
|
|
8
|
+
import { useTimerClone as fe } from "../composables/useTimerClone.js";
|
|
10
9
|
import { migrate as G } from "../config/migrator/index.js";
|
|
11
|
-
import { ModuleFolderDefaults as
|
|
12
|
-
import { RIBBON_SELECTOR as
|
|
10
|
+
import { ModuleFolderDefaults as H } from "../enums/defaults.js";
|
|
11
|
+
import { RIBBON_SELECTOR as ye } from "../enums/onboarding.js";
|
|
13
12
|
import { useRecommendationExtensionStore as h } from "../extensions/Blocks/Recommendation/store/recommendation.js";
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import { useDynamicContentStore as Te } from "../stores/dynamic-content.js";
|
|
13
|
+
import ge from "./organisms/AutoSaveController.vue.js";
|
|
14
|
+
import Se from "./organisms/base/AuthErrorModal.vue.js";
|
|
15
|
+
import ve from "./organisms/base/Toaster.vue.js";
|
|
16
|
+
import be from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
17
|
+
import he from "./organisms/header/HeaderWrapper.vue.js";
|
|
18
|
+
import Ee from "./organisms/LoadingWrapper.vue.js";
|
|
19
|
+
import we from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
20
|
+
import Ce from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
21
|
+
import { useStripoApi as De } from "../services/stripoApi.js";
|
|
22
|
+
import { useConfigStore as ke } from "../stores/config.js";
|
|
23
|
+
import { useDynamicContentStore as Fe } from "../stores/dynamic-content.js";
|
|
26
24
|
import { useEditorStore as $ } from "../stores/editor.js";
|
|
27
|
-
import { usePreviewStore as
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
|
|
32
|
-
const lt = /* @__PURE__ */ se({
|
|
25
|
+
import { usePreviewStore as Me } from "../stores/preview.js";
|
|
26
|
+
import { useTemplateStore as Re } from "../stores/template.js";
|
|
27
|
+
import { useUnsubscribeStore as Te } from "../stores/unsubscribe.js";
|
|
28
|
+
import { readTrackFloor as z } from "../utils/linkTrackingIds.js";
|
|
29
|
+
const rt = /* @__PURE__ */ ae({
|
|
33
30
|
__name: "Guido",
|
|
34
31
|
props: {
|
|
35
32
|
config: null,
|
|
36
33
|
ready: { type: Boolean, default: !0 }
|
|
37
34
|
},
|
|
38
35
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
39
|
-
setup(
|
|
40
|
-
const s =
|
|
36
|
+
setup(q, { expose: K, emit: r }) {
|
|
37
|
+
const s = q, V = m(
|
|
41
38
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
42
39
|
), j = m(
|
|
43
40
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
@@ -47,15 +44,15 @@ const lt = /* @__PURE__ */ se({
|
|
|
47
44
|
() => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
|
|
48
45
|
), X = m(
|
|
49
46
|
() => import("./organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js")
|
|
50
|
-
), E = x(), p = x(), f =
|
|
47
|
+
), E = x(), p = x(), f = Fe(), w = Te(), o = ke();
|
|
51
48
|
s.ready && o.init(s.config);
|
|
52
|
-
const c = $(), Y =
|
|
49
|
+
const c = $(), Y = Me(), l = u(() => c.hasChanges), { isTestPartner: Z } = ue(), C = () => {
|
|
53
50
|
var t;
|
|
54
51
|
return (t = E.value) == null ? void 0 : t.handleSave(!0);
|
|
55
|
-
},
|
|
52
|
+
}, D = (t) => {
|
|
56
53
|
c.loadingStatus = t;
|
|
57
54
|
};
|
|
58
|
-
|
|
55
|
+
ce(), le();
|
|
59
56
|
const y = () => {
|
|
60
57
|
var t, e;
|
|
61
58
|
return {
|
|
@@ -63,18 +60,18 @@ const lt = /* @__PURE__ */ se({
|
|
|
63
60
|
userId: o.userId,
|
|
64
61
|
username: o.username,
|
|
65
62
|
partnerName: o.partnerName,
|
|
66
|
-
savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) ||
|
|
67
|
-
defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) ||
|
|
63
|
+
savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || H.SAVED_MODULES,
|
|
64
|
+
defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || H.DEFAULT_MODULES
|
|
68
65
|
};
|
|
69
|
-
}, { initPlugin: k, preloadRuntime:
|
|
66
|
+
}, { initPlugin: k, preloadRuntime: F } = pe(), { runExclusive: M, beginMount: R, isCurrentMount: T } = de();
|
|
70
67
|
let g = 0;
|
|
71
|
-
const { getDefaultTemplate: I } =
|
|
68
|
+
const { getDefaultTemplate: I } = De(), { cloneTimersOnSave: L, hasTimerBlocks: U } = fe(), ee = u(() => {
|
|
72
69
|
var t;
|
|
73
70
|
return !((t = o.ui) != null && t.showHeader);
|
|
74
|
-
}),
|
|
71
|
+
}), te = u(() => o.isFeatureEnabled("reusableRecommendationStrategy")), oe = u(
|
|
75
72
|
() => !!h().recommendationConfigs.strategyId
|
|
76
73
|
);
|
|
77
|
-
|
|
74
|
+
me({
|
|
78
75
|
onBack: () => {
|
|
79
76
|
console.debug("guido:back"), r("back");
|
|
80
77
|
},
|
|
@@ -104,7 +101,7 @@ const lt = /* @__PURE__ */ se({
|
|
|
104
101
|
let i = null;
|
|
105
102
|
const v = () => {
|
|
106
103
|
var e;
|
|
107
|
-
const t = document.querySelector(
|
|
104
|
+
const t = document.querySelector(ye);
|
|
108
105
|
(e = p.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
|
|
109
106
|
}, b = async () => {
|
|
110
107
|
var t;
|
|
@@ -122,24 +119,24 @@ const lt = /* @__PURE__ */ se({
|
|
|
122
119
|
css: d
|
|
123
120
|
};
|
|
124
121
|
n.html || (n = await I(), n.html = await G(n.html, P, O));
|
|
125
|
-
const
|
|
126
|
-
U(n.html) && (n.html = await L(n.html)), _ && (c.trackIdSessionFloor = Math.max(
|
|
127
|
-
const
|
|
122
|
+
const ne = _ ? z(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
|
|
123
|
+
U(n.html) && (n.html = await L(n.html)), _ && (c.trackIdSessionFloor = Math.max(ne, z(n.html)));
|
|
124
|
+
const re = {
|
|
128
125
|
preselectedDynamicContentList: N,
|
|
129
126
|
onReady: () => {
|
|
130
127
|
console.debug("guido:ready"), r("ready");
|
|
131
128
|
}
|
|
132
129
|
};
|
|
133
|
-
g =
|
|
130
|
+
g = R(), await k(n, y(), re), f.selectedDynamicContentList = N;
|
|
134
131
|
} catch (e) {
|
|
135
132
|
console.error("Failed to initialize Stripo editor:", e);
|
|
136
133
|
}
|
|
137
134
|
};
|
|
138
|
-
return
|
|
135
|
+
return se(async () => {
|
|
139
136
|
var e;
|
|
140
|
-
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h().$reset(), $().$reset(),
|
|
137
|
+
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h().$reset(), $().$reset(), Re().$reset(), v();
|
|
141
138
|
const t = (e = p.value) == null ? void 0 : e.parentElement;
|
|
142
|
-
if (t && (i = new ResizeObserver(v), i.observe(t)),
|
|
139
|
+
if (t && (i = new ResizeObserver(v), i.observe(t)), F(), s.ready)
|
|
143
140
|
await b();
|
|
144
141
|
else {
|
|
145
142
|
const a = W(() => s.ready, (d) => {
|
|
@@ -147,8 +144,8 @@ const lt = /* @__PURE__ */ se({
|
|
|
147
144
|
});
|
|
148
145
|
}
|
|
149
146
|
document.addEventListener("dynamic-content:open", S);
|
|
150
|
-
}),
|
|
151
|
-
i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", S), h().disposeStrategyPageReturn(),
|
|
147
|
+
}), ie(() => {
|
|
148
|
+
i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", S), h().disposeStrategyPageReturn(), M(async () => {
|
|
152
149
|
if (T(g))
|
|
153
150
|
try {
|
|
154
151
|
window.UIEditor.removeEditor();
|
|
@@ -156,17 +153,17 @@ const lt = /* @__PURE__ */ se({
|
|
|
156
153
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
157
154
|
}
|
|
158
155
|
}), o.reset();
|
|
159
|
-
}),
|
|
156
|
+
}), K({
|
|
160
157
|
dynamicContent: {
|
|
161
158
|
insert: A,
|
|
162
159
|
close: B
|
|
163
160
|
},
|
|
164
161
|
hasChanges: l,
|
|
165
|
-
saveSilent:
|
|
166
|
-
setLoading:
|
|
167
|
-
}), { __sfc: !0, PreviewContainer:
|
|
162
|
+
saveSilent: C,
|
|
163
|
+
setLoading: D
|
|
164
|
+
}), { __sfc: !0, PreviewContainer: V, OnboardingWrapper: j, AssignStrategyDrawer: J, RemoveStrategyModal: Q, LegacyStrategyUpdatedModal: X, headerWrapperRef: E, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: w, props: s, configStore: o, editorStore: c, previewStore: Y, hasChanges: l, isTestPartner: Z, saveSilent: C, setLoading: D, emit: r, buildMetadata: y, initPlugin: k, preloadRuntime: F, runExclusive: M, beginMount: R, isCurrentMount: T, mountGeneration: g, getDefaultTemplate: I, cloneTimersOnSave: L, hasTimerBlocks: U, noHeader: ee, isRrsEnabled: te, hasAssignedStrategy: oe, insertDynamicContent: A, closeDynamicContent: B, handleDynamicContentOpen: S, ribbonObserver: i, updateRibbonOffset: v, startEditor: b, AutoSaveController: ge, AuthErrorModal: Se, Toaster: ve, FilterSelectionDrawer: be, HeaderWrapper: he, LoadingWrapper: Ee, SaveAsTemplateDrawer: we, UnsubscribeWrapper: Ce };
|
|
168
165
|
}
|
|
169
166
|
});
|
|
170
167
|
export {
|
|
171
|
-
|
|
168
|
+
rt as default
|
|
172
169
|
};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useAutoSave as
|
|
3
|
-
import { useSave as
|
|
4
|
-
|
|
5
|
-
const v = /* @__PURE__ */ r({
|
|
1
|
+
import { defineComponent as t } from "vue";
|
|
2
|
+
import { useAutoSave as r } from "../../composables/useAutoSave.js";
|
|
3
|
+
import { useSave as s } from "../../composables/useSave.js";
|
|
4
|
+
const f = /* @__PURE__ */ t({
|
|
6
5
|
__name: "AutoSaveController",
|
|
7
|
-
setup(
|
|
8
|
-
const { save: e
|
|
9
|
-
return
|
|
6
|
+
setup(a) {
|
|
7
|
+
const { save: e } = s(), o = () => e(!1, !0);
|
|
8
|
+
return r(o), { __sfc: !0, save: e, backgroundSave: o };
|
|
10
9
|
}
|
|
11
10
|
});
|
|
12
11
|
export {
|
|
13
|
-
|
|
12
|
+
f as default
|
|
14
13
|
};
|
|
@@ -4,7 +4,7 @@ import d from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
|
4
4
|
var u = function() {
|
|
5
5
|
var s, i, n, a;
|
|
6
6
|
var o = this, e = o._self._c, t = o._self._setupProxy;
|
|
7
|
-
return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.handleTestEmail } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._e() : e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "
|
|
7
|
+
return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.handleTestEmail } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._e() : e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(r) {
|
|
8
8
|
return t.handleSave(!1);
|
|
9
9
|
} } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
|
|
10
10
|
return t.executeSave(!1);
|
|
@@ -15,7 +15,7 @@ var u = function() {
|
|
|
15
15
|
c,
|
|
16
16
|
!1,
|
|
17
17
|
null,
|
|
18
|
-
"
|
|
18
|
+
"c61cc8ea"
|
|
19
19
|
);
|
|
20
20
|
const v = p.exports;
|
|
21
21
|
export {
|