@useinsider/guido 1.0.3-beta.45db97c → 1.0.3-beta.46b1cdf
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 +3 -140
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +73 -79
- package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
- package/dist/components/organisms/header/LeftSlot.vue2.js +15 -16
- package/dist/components/organisms/header/RightSlot.vue.js +11 -11
- package/dist/components/organisms/header/RightSlot.vue2.js +22 -23
- package/dist/composables/useGuidoActions.js +9 -19
- package/dist/composables/useStripo.js +58 -49
- package/dist/config/compiler/unsubscribeCompilerRules.js +28 -33
- package/dist/config/migrator/radioButtonMigrator.js +5 -5
- package/dist/enums/defaults.js +9 -16
- package/dist/enums/unsubscribe.js +25 -27
- package/dist/extensions/Blocks/Checkbox/control.js +14 -15
- package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
- package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
- package/dist/extensions/Blocks/RadioButton/control.js +17 -18
- package/dist/extensions/Blocks/RadioButton/template.js +4 -4
- package/dist/extensions/Blocks/Recommendation/extension.js +4 -4
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +4 -4
- package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
- package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
- package/dist/guido.css +1 -1
- package/dist/package.json.js +1 -1
- package/dist/services/stripoApi.js +1 -1
- package/dist/src/@types/generic.d.ts +6 -36
- package/dist/src/components/Guido.vue.d.ts +2 -3
- package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
- package/dist/src/composables/useGuidoActions.d.ts +0 -9
- package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
- package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
- package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
- package/dist/src/stores/config.d.ts +2 -9
- package/dist/src/stores/dynamic-content.d.ts +3 -3
- package/dist/src/stores/editor.d.ts +1 -1
- package/dist/src/stores/onboarding.d.ts +1 -1
- package/dist/src/stores/preview.d.ts +1 -1
- package/dist/src/stores/recommendation.d.ts +1 -1
- package/dist/src/stores/save-as-template.d.ts +1 -1
- package/dist/src/stores/toaster.d.ts +1 -1
- package/dist/src/stores/unsubscribe.d.ts +1 -1
- package/dist/src/stores/version-history.d.ts +1 -1
- package/dist/src/utils/genericUtil.d.ts +0 -1
- package/dist/static/styles/components/narrow-panel.css.js +0 -10
- package/dist/stores/config.js +5 -5
- package/dist/stores/dynamic-content.js +2 -2
- package/dist/stores/editor.js +1 -1
- package/dist/stores/onboarding.js +27 -27
- package/dist/stores/preview.js +1 -1
- package/dist/stores/recommendation.js +3 -3
- package/dist/stores/save-as-template.js +2 -2
- package/dist/stores/toaster.js +1 -1
- package/dist/stores/unsubscribe.js +1 -1
- package/dist/stores/version-history.js +4 -4
- package/dist/utils/genericUtil.js +9 -20
- package/package.json +2 -2
- package/dist/composables/useBlocksConfig.js +0 -49
- package/dist/src/composables/useBlocksConfig.d.ts +0 -11
- package/dist/src/utils/environmentUtil.d.ts +0 -5
- package/dist/utils/environmentUtil.js +0 -4
package/README.md
CHANGED
|
@@ -82,12 +82,10 @@ export default {
|
|
|
82
82
|
translationsPath: 'window.trans.en',
|
|
83
83
|
htmlCompilerRules: [],
|
|
84
84
|
ignoreDefaultHtmlCompilerRules: false,
|
|
85
|
-
backButtonLabel?: "Back to Design",
|
|
86
85
|
features: {
|
|
87
86
|
dynamicContent: true,
|
|
88
87
|
saveAsTemplate: true,
|
|
89
|
-
versionHistory: true
|
|
90
|
-
testMessage: true
|
|
88
|
+
versionHistory: true
|
|
91
89
|
}
|
|
92
90
|
},
|
|
93
91
|
dynamicContentModalVisible: false
|
|
@@ -167,7 +165,6 @@ export default {
|
|
|
167
165
|
| `on-change` | void | It Fires once for managing leave modal etc. |
|
|
168
166
|
| `ready` | void | Fired when the editor is ready and template is loaded |
|
|
169
167
|
| `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
|
|
170
|
-
| `test-email:click` | - | Fired when user clicks the test email button in the header |
|
|
171
168
|
|
|
172
169
|
### Guido Exposed Methods
|
|
173
170
|
```typescript
|
|
@@ -197,12 +194,6 @@ interface GuidoConfig {
|
|
|
197
194
|
dynamicContent: boolean;
|
|
198
195
|
saveAsTemplate: boolean;
|
|
199
196
|
versionHistory: boolean;
|
|
200
|
-
testMessage: boolean;
|
|
201
|
-
displayConditions: boolean;
|
|
202
|
-
};
|
|
203
|
-
blocks?: {
|
|
204
|
-
excludeDefaults?: GuidoBlockType[];
|
|
205
|
-
includeCustoms?: GuidoCustomBlockType[];
|
|
206
197
|
};
|
|
207
198
|
}
|
|
208
199
|
```
|
|
@@ -217,10 +208,6 @@ interface GuidoConfig {
|
|
|
217
208
|
| `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
|
|
218
209
|
| `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
|
|
219
210
|
| `features.versionHistory` | `boolean` | `true` | Enable version history feature |
|
|
220
|
-
| `features.displayConditions` | `boolean` | `true` | Enable display conditions |
|
|
221
|
-
| `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
|
|
222
|
-
| `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
|
|
223
|
-
| `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
|
|
224
211
|
|
|
225
212
|
```typescript
|
|
226
213
|
interface DynamicContent {
|
|
@@ -237,128 +224,6 @@ interface DynamicContent {
|
|
|
237
224
|
| `text` | `string` | '' | Visible value of the dynamic content |
|
|
238
225
|
| `fallback?` | `string` | '' | Fallback value of the dynamic content. Optional |
|
|
239
226
|
|
|
240
|
-
## 🧱 Blocks Configuration
|
|
241
|
-
|
|
242
|
-
Guido allows you to customize which blocks are available in the editor. You can exclude default Stripo blocks and selectively include custom blocks to create tailored editing experiences for different product types.
|
|
243
|
-
|
|
244
|
-
### Block Types
|
|
245
|
-
|
|
246
|
-
#### Default Blocks (GuidoBlockType)
|
|
247
|
-
|
|
248
|
-
These are the standard Stripo email editor blocks that can be excluded:
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
type GuidoBlockType =
|
|
252
|
-
| 'amp-accordion' // AMP accordion component
|
|
253
|
-
| 'amp-carousel' // AMP image carousel
|
|
254
|
-
| 'amp-form-controls' // AMP form elements
|
|
255
|
-
| 'banner-block' // Banner/hero section
|
|
256
|
-
| 'button-block' // Call-to-action buttons
|
|
257
|
-
| 'html-block' // Custom HTML
|
|
258
|
-
| 'image-block' // Image elements
|
|
259
|
-
| 'menu-block' // Navigation menu
|
|
260
|
-
| 'social-block' // Social media links
|
|
261
|
-
| 'spacer-block' // Vertical spacing
|
|
262
|
-
| 'text-block' // Text content
|
|
263
|
-
| 'timer-block' // Countdown timer
|
|
264
|
-
| 'video-block' // Video embeds
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
#### Custom Blocks (GuidoCustomBlockType)
|
|
268
|
-
|
|
269
|
-
These are custom blocks that can be selectively included:
|
|
270
|
-
|
|
271
|
-
```typescript
|
|
272
|
-
type GuidoCustomBlockType =
|
|
273
|
-
| 'dynamic-content' // Dynamic content merge tags
|
|
274
|
-
| 'checkbox-block' // Checkbox form input
|
|
275
|
-
| 'radio-button-block' // Radio button form input
|
|
276
|
-
| 'recommendation-block' // Product recommendations
|
|
277
|
-
| 'unsubscribe-block' // Unsubscribe link
|
|
278
|
-
| 'coupon-block' // Coupon/promo code
|
|
279
|
-
| 'items-block' // Cart items display
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
### Configuration Examples
|
|
283
|
-
|
|
284
|
-
#### Example 1: Exclude Specific Default Blocks
|
|
285
|
-
|
|
286
|
-
Disable button, image, and video blocks while keeping all custom blocks:
|
|
287
|
-
|
|
288
|
-
```typescript
|
|
289
|
-
const guidoConfig = {
|
|
290
|
-
translationsPath: 'window.trans.en',
|
|
291
|
-
features: {
|
|
292
|
-
dynamicContent: true,
|
|
293
|
-
saveAsTemplate: true,
|
|
294
|
-
versionHistory: true,
|
|
295
|
-
testMessage: true
|
|
296
|
-
},
|
|
297
|
-
blocks: {
|
|
298
|
-
excludeDefaults: ['button-block', 'image-block', 'video-block']
|
|
299
|
-
}
|
|
300
|
-
};
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
**Result:**
|
|
304
|
-
- Button, Image, Video blocks disabled
|
|
305
|
-
- All other default blocks enabled
|
|
306
|
-
- All custom blocks are disabled.
|
|
307
|
-
|
|
308
|
-
#### Example 2: Include Only Specific Custom Blocks
|
|
309
|
-
|
|
310
|
-
Enable only coupon and recommendation blocks:
|
|
311
|
-
|
|
312
|
-
```typescript
|
|
313
|
-
const guidoConfig = {
|
|
314
|
-
translationsPath: 'window.trans.en',
|
|
315
|
-
features: {
|
|
316
|
-
dynamicContent: true,
|
|
317
|
-
saveAsTemplate: true,
|
|
318
|
-
versionHistory: true,
|
|
319
|
-
testMessage: true
|
|
320
|
-
},
|
|
321
|
-
blocks: {
|
|
322
|
-
includeCustoms: ['coupon-block', 'recommendation-block']
|
|
323
|
-
}
|
|
324
|
-
};
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
**Result:**
|
|
328
|
-
- All default blocks enabled
|
|
329
|
-
- Only Coupon and Recommendation extensions enabled.
|
|
330
|
-
- Other custom blocks are disabled
|
|
331
|
-
|
|
332
|
-
### Default Behavior
|
|
333
|
-
|
|
334
|
-
When `blocks` is not provided or is `undefined`:
|
|
335
|
-
|
|
336
|
-
```typescript
|
|
337
|
-
const guidoConfig = {
|
|
338
|
-
translationsPath: 'window.trans.en',
|
|
339
|
-
features: {
|
|
340
|
-
dynamicContent: true,
|
|
341
|
-
saveAsTemplate: true,
|
|
342
|
-
versionHistory: true,
|
|
343
|
-
testMessage: true
|
|
344
|
-
},
|
|
345
|
-
// No blocks config
|
|
346
|
-
};
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
**Result:**
|
|
350
|
-
- All 13 default Stripo blocks enabled
|
|
351
|
-
- All custom blocks are disabled.
|
|
352
|
-
|
|
353
|
-
### Block Configuration Interface
|
|
354
|
-
|
|
355
|
-
```typescript
|
|
356
|
-
interface BlocksConfig {
|
|
357
|
-
excludeDefaults?: GuidoBlockType[];
|
|
358
|
-
includeCustoms?: GuidoCustomBlockType[];
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
227
|
### TypeScript Types
|
|
363
228
|
|
|
364
229
|
The library exports the following TypeScript types:
|
|
@@ -453,8 +318,7 @@ const guidoConfig = {
|
|
|
453
318
|
features: {
|
|
454
319
|
dynamicContent: true,
|
|
455
320
|
saveAsTemplate: true,
|
|
456
|
-
versionHistory: false
|
|
457
|
-
testMessage: true
|
|
321
|
+
versionHistory: false // Disable version history
|
|
458
322
|
},
|
|
459
323
|
htmlCompilerRules: [
|
|
460
324
|
{
|
|
@@ -487,8 +351,7 @@ const guidoConfig = {
|
|
|
487
351
|
features: {
|
|
488
352
|
dynamicContent: true,
|
|
489
353
|
saveAsTemplate: true,
|
|
490
|
-
versionHistory: true
|
|
491
|
-
testMessage: true
|
|
354
|
+
versionHistory: true
|
|
492
355
|
},
|
|
493
356
|
ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
|
|
494
357
|
htmlCompilerRules: [
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { migrate as
|
|
6
|
-
import { DefaultUsername as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { useStripoApi as
|
|
14
|
-
import { useConfigStore as
|
|
15
|
-
import { useDynamicContentStore as
|
|
16
|
-
import { useEditorStore as
|
|
17
|
-
import { usePreviewStore as
|
|
18
|
-
import { useUnsubscribeStore as
|
|
19
|
-
import
|
|
20
|
-
const
|
|
1
|
+
import { defineComponent as R, defineAsyncComponent as I, ref as x, computed as U, watch as M, onMounted as z, onUnmounted as B } from "vue";
|
|
2
|
+
import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as O } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as j } from "../composables/useStripo.js";
|
|
5
|
+
import { migrate as W } from "../config/migrator/index.js";
|
|
6
|
+
import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
|
|
7
|
+
import V from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import X from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import Y from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import Z from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import $ from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as oe } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as te } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as re } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ae } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as ie } from "../stores/unsubscribe.js";
|
|
19
|
+
import se from "../node_modules/lodash-es/merge.js";
|
|
20
|
+
const Ge = /* @__PURE__ */ R({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
23
|
templateId: null,
|
|
@@ -31,104 +31,98 @@ const Ue = /* @__PURE__ */ O({
|
|
|
31
31
|
guidoConfig: null,
|
|
32
32
|
templateConfig: null
|
|
33
33
|
},
|
|
34
|
-
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"
|
|
35
|
-
setup(
|
|
36
|
-
const u =
|
|
34
|
+
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
|
|
35
|
+
setup(_, { expose: L, emit: t }) {
|
|
36
|
+
const u = _, k = I(
|
|
37
37
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
38
|
+
), A = I(
|
|
39
39
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
),
|
|
40
|
+
), l = x(), a = ne(), p = ie(), g = te(), i = re(), N = ae(), n = U(() => i.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
|
|
41
41
|
var e;
|
|
42
|
-
return (e =
|
|
42
|
+
return (e = l.value) == null ? void 0 : e.handleSave(!0);
|
|
43
43
|
}, {
|
|
44
|
-
templateId:
|
|
45
|
-
userId:
|
|
46
|
-
guidoConfig:
|
|
47
|
-
templateConfig:
|
|
44
|
+
templateId: s,
|
|
45
|
+
userId: b,
|
|
46
|
+
guidoConfig: C,
|
|
47
|
+
templateConfig: o,
|
|
48
48
|
html: r = "",
|
|
49
|
-
css:
|
|
50
|
-
partnerName: c =
|
|
51
|
-
productType:
|
|
52
|
-
messageType:
|
|
53
|
-
username:
|
|
54
|
-
} = u,
|
|
55
|
-
|
|
49
|
+
css: h = "",
|
|
50
|
+
partnerName: c = f(),
|
|
51
|
+
productType: d = y(),
|
|
52
|
+
messageType: S = J,
|
|
53
|
+
username: w = q
|
|
54
|
+
} = u, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
|
|
55
|
+
i.templateId = s, window.GuidoConfig = se(Q, C), window.GuidoConfig.partner = {
|
|
56
56
|
partnerName: c,
|
|
57
|
-
productType:
|
|
58
|
-
messageType:
|
|
59
|
-
},
|
|
60
|
-
const { initPlugin:
|
|
61
|
-
emailId:
|
|
62
|
-
userId:
|
|
63
|
-
username:
|
|
57
|
+
productType: d,
|
|
58
|
+
messageType: S
|
|
59
|
+
}, g.templateConfig = o;
|
|
60
|
+
const { initPlugin: D } = j({
|
|
61
|
+
emailId: s,
|
|
62
|
+
userId: b,
|
|
63
|
+
username: w,
|
|
64
64
|
partnerName: c,
|
|
65
|
-
productType:
|
|
66
|
-
preselectedDynamicContentList:
|
|
65
|
+
productType: d,
|
|
66
|
+
preselectedDynamicContentList: m,
|
|
67
67
|
onReady: () => {
|
|
68
|
-
console.debug("guido:ready"),
|
|
68
|
+
console.debug("guido:ready"), t("ready");
|
|
69
69
|
}
|
|
70
|
-
}), { getDefaultTemplate: T } =
|
|
70
|
+
}), { getDefaultTemplate: T } = oe(), H = U(() => {
|
|
71
71
|
var e;
|
|
72
72
|
return !((e = window.GuidoConfig) != null && e.useHeader);
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
K({
|
|
75
75
|
onBack: () => {
|
|
76
|
-
console.debug("guido:back"),
|
|
76
|
+
console.debug("guido:back"), t("back");
|
|
77
77
|
},
|
|
78
78
|
onSaveStart: () => {
|
|
79
|
-
console.debug("guido:save:start"),
|
|
79
|
+
console.debug("guido:save:start"), t("save:start");
|
|
80
80
|
},
|
|
81
81
|
onSaveComplete: (e) => {
|
|
82
|
-
console.debug("guido:save:complete", e),
|
|
83
|
-
},
|
|
84
|
-
onTestEmailClick: () => {
|
|
85
|
-
console.debug("guido:test-email:click"), o("test-email:click");
|
|
82
|
+
console.debug("guido:save:complete", e), t("save:complete", e);
|
|
86
83
|
}
|
|
87
84
|
});
|
|
88
|
-
const
|
|
89
|
-
console.debug("dynamic-content:close", e),
|
|
90
|
-
},
|
|
85
|
+
const E = (e) => {
|
|
86
|
+
console.debug("dynamic-content:close", e), a.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
87
|
+
}, P = () => {
|
|
91
88
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
92
89
|
};
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
})
|
|
96
|
-
const l = (e) => {
|
|
97
|
-
const G = e, { attribute: x, position: M } = G.detail;
|
|
98
|
-
console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
|
|
99
|
-
};
|
|
100
|
-
return K(async () => {
|
|
90
|
+
return M(() => n.value, () => {
|
|
91
|
+
t("on-change", n.value);
|
|
92
|
+
}), z(async () => {
|
|
101
93
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
102
94
|
try {
|
|
103
|
-
|
|
95
|
+
p.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
104
96
|
let e = {
|
|
105
|
-
html: r && await
|
|
106
|
-
css:
|
|
97
|
+
html: r && await W(r),
|
|
98
|
+
css: h,
|
|
107
99
|
forceRecreate: !0
|
|
108
100
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
109
101
|
};
|
|
110
|
-
e.html || (e = await T(), e.html = await
|
|
102
|
+
e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = m;
|
|
111
103
|
} catch (e) {
|
|
112
104
|
console.error("Failed to initialize Stripo editor:", e);
|
|
113
105
|
}
|
|
114
|
-
document.addEventListener("dynamic-content:open",
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
document.addEventListener("dynamic-content:open", (e) => {
|
|
107
|
+
const G = e;
|
|
108
|
+
console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
|
|
109
|
+
});
|
|
110
|
+
}), B(() => {
|
|
117
111
|
try {
|
|
118
112
|
window.UIEditor.removeEditor();
|
|
119
113
|
} catch {
|
|
120
114
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
121
115
|
}
|
|
122
|
-
}),
|
|
116
|
+
}), L({
|
|
123
117
|
dynamicContent: {
|
|
124
|
-
insert:
|
|
125
|
-
close:
|
|
118
|
+
insert: E,
|
|
119
|
+
close: P
|
|
126
120
|
},
|
|
127
121
|
hasChanges: n,
|
|
128
|
-
saveSilent:
|
|
129
|
-
}), { __sfc: !0, PreviewContainer:
|
|
122
|
+
saveSilent: v
|
|
123
|
+
}), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: i, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: s, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
|
|
130
124
|
}
|
|
131
125
|
});
|
|
132
126
|
export {
|
|
133
|
-
|
|
127
|
+
Ge as default
|
|
134
128
|
};
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { usePreviewMode as f } from "../../../composables/usePreviewMode.js";
|
|
1
|
+
import { defineComponent as s, computed as c } from "vue";
|
|
2
|
+
import { useBack as m } from "../../../composables/useGuidoActions.js";
|
|
3
|
+
import { usePreviewMode as a } from "../../../composables/usePreviewMode.js";
|
|
5
4
|
import { useTranslations as p } from "../../../composables/useTranslations.js";
|
|
6
|
-
import { useVersionHistoryApi as
|
|
7
|
-
import { useEditorStore as
|
|
8
|
-
import { InButtonV2 as
|
|
9
|
-
import
|
|
10
|
-
const
|
|
5
|
+
import { useVersionHistoryApi as u } from "../../../composables/useVersionHistoryApi.js";
|
|
6
|
+
import { useEditorStore as d } from "../../../stores/editor.js";
|
|
7
|
+
import { InButtonV2 as f } from "@useinsider/design-system-vue";
|
|
8
|
+
import l from "./version-history/RestoreButton.vue.js";
|
|
9
|
+
const O = /* @__PURE__ */ s({
|
|
11
10
|
__name: "LeftSlot",
|
|
12
|
-
setup(
|
|
13
|
-
const o =
|
|
14
|
-
return { __sfc: !0, editorStore: o, handleBack: r, closeVersionHistory:
|
|
11
|
+
setup(k) {
|
|
12
|
+
const o = d(), r = m(), { closeVersionHistory: t } = u(), { closePreviewMode: i } = a(), e = p(), n = c(() => o.isVersionHistoryOpen || o.isPreviewModeOpen ? e("email-editor.back-to-editor") : e("email-editor.back-to-design"));
|
|
13
|
+
return { __sfc: !0, editorStore: o, handleBack: r, closeVersionHistory: t, closePreviewMode: i, trans: e, backButtonLabel: n, handleBackClick: () => {
|
|
15
14
|
if (o.isVersionHistoryOpen) {
|
|
16
|
-
|
|
15
|
+
t();
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
18
|
if (o.isPreviewModeOpen) {
|
|
20
|
-
|
|
19
|
+
i();
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
22
|
r();
|
|
24
|
-
}, InButtonV2:
|
|
23
|
+
}, InButtonV2: f, RestoreButton: l };
|
|
25
24
|
}
|
|
26
25
|
});
|
|
27
26
|
export {
|
|
28
|
-
|
|
27
|
+
O as default
|
|
29
28
|
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
return e("div", { staticClass: "d-f" }, [(
|
|
1
|
+
import n from "./RightSlot.vue2.js";
|
|
2
|
+
import a from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
3
|
+
var l = function() {
|
|
4
|
+
var s, i;
|
|
5
|
+
var o = this, e = o._self._c, t = o._self._setupProxy;
|
|
6
|
+
return e("div", { staticClass: "d-f" }, [(s = t.config.features) != null && s.versionHistory ? 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 = t.config.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(), 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"), "tooltip-text": t.trans("newsletter.test-email") } }), 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(p) {
|
|
7
7
|
return t.handleSave(!1);
|
|
8
8
|
} } })], 1);
|
|
9
|
-
},
|
|
10
|
-
|
|
9
|
+
}, r = [], d = /* @__PURE__ */ a(
|
|
10
|
+
n,
|
|
11
|
+
l,
|
|
11
12
|
r,
|
|
12
|
-
u,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
15
|
null
|
|
16
16
|
);
|
|
17
|
-
const
|
|
17
|
+
const g = d.exports;
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
g as default
|
|
20
20
|
};
|
|
@@ -1,36 +1,35 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useConfig as
|
|
3
|
-
import { useExport as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { useTranslations as T } from "../../../composables/useTranslations.js";
|
|
1
|
+
import { defineComponent as g, ref as l, computed as H } from "vue";
|
|
2
|
+
import { useConfig as _ } from "../../../composables/useConfig.js";
|
|
3
|
+
import { useExport as h } from "../../../composables/useExport.js";
|
|
4
|
+
import { useSave as V } from "../../../composables/useSave.js";
|
|
5
|
+
import { useTranslations as x } from "../../../composables/useTranslations.js";
|
|
7
6
|
import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
|
|
8
|
-
import { useEditorStore as
|
|
9
|
-
import { getTooltipOptions as
|
|
10
|
-
import { InButtonV2 as
|
|
11
|
-
const
|
|
7
|
+
import { useEditorStore as T } from "../../../stores/editor.js";
|
|
8
|
+
import { getTooltipOptions as E } from "../../../utils/tooltipUtils.js";
|
|
9
|
+
import { InButtonV2 as O } from "@useinsider/design-system-vue";
|
|
10
|
+
const z = /* @__PURE__ */ g({
|
|
12
11
|
__name: "RightSlot",
|
|
13
|
-
setup(
|
|
14
|
-
const { config:
|
|
15
|
-
if (
|
|
12
|
+
setup(A, { expose: m }) {
|
|
13
|
+
const { config: u } = _(), { exportHtml: r } = h(), { save: n } = V(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = T(), t = x(), e = l(!1), s = l(!1), c = () => {
|
|
14
|
+
if (o.isVersionHistoryOpen) {
|
|
16
15
|
a();
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
18
|
i();
|
|
20
|
-
},
|
|
19
|
+
}, f = async () => {
|
|
21
20
|
e.value = !0, await r(), e.value = !1;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
s.value = !0,
|
|
26
|
-
const
|
|
27
|
-
return s.value = !1,
|
|
21
|
+
}, v = () => {
|
|
22
|
+
o.isSaveAsTemplateDrawerOpen = !0;
|
|
23
|
+
}, d = H(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (y) => {
|
|
24
|
+
s.value = !0, o.loadingStatus = !0;
|
|
25
|
+
const S = await n(y);
|
|
26
|
+
return s.value = !1, o.loadingStatus = !1, S;
|
|
28
27
|
};
|
|
29
28
|
return m({
|
|
30
|
-
handleSave:
|
|
31
|
-
}), { __sfc: !0, config:
|
|
29
|
+
handleSave: p
|
|
30
|
+
}), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: c, handleExport: f, handleSaveAs: v, versionHistoryTooltipText: d, handleSave: p, getTooltipOptions: E, InButtonV2: O };
|
|
32
31
|
}
|
|
33
32
|
});
|
|
34
33
|
export {
|
|
35
|
-
|
|
34
|
+
z as default
|
|
36
35
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { provideValue as o, useInjectedValue as t } from "./useProvideInject.js";
|
|
2
|
-
const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"),
|
|
3
|
-
o(r, e.onBack), o(n, e.onSaveStart), o(
|
|
2
|
+
const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symbol.for("guido.save.complete"), s = (e) => {
|
|
3
|
+
o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
|
|
4
4
|
}, u = () => {
|
|
5
5
|
try {
|
|
6
6
|
return t(r);
|
|
@@ -9,7 +9,7 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
|
|
|
9
9
|
"useBack: No back handler provided. Make sure Guido component is in the component tree."
|
|
10
10
|
);
|
|
11
11
|
}
|
|
12
|
-
},
|
|
12
|
+
}, d = () => {
|
|
13
13
|
try {
|
|
14
14
|
return t(n);
|
|
15
15
|
} catch {
|
|
@@ -17,31 +17,21 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
|
|
|
17
17
|
"useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
|
-
},
|
|
21
|
-
try {
|
|
22
|
-
return t(c);
|
|
23
|
-
} catch {
|
|
24
|
-
throw new Error(
|
|
25
|
-
"useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
}, m = () => {
|
|
20
|
+
}, i = () => {
|
|
29
21
|
try {
|
|
30
22
|
return t(a);
|
|
31
23
|
} catch {
|
|
32
24
|
throw new Error(
|
|
33
|
-
"
|
|
25
|
+
"useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
|
|
34
26
|
);
|
|
35
27
|
}
|
|
36
28
|
};
|
|
37
29
|
export {
|
|
38
30
|
r as BACK_KEY,
|
|
39
|
-
|
|
31
|
+
a as SAVE_COMPLETE_KEY,
|
|
40
32
|
n as SAVE_START_KEY,
|
|
41
|
-
|
|
42
|
-
i as provideGuidoActions,
|
|
33
|
+
s as provideGuidoActions,
|
|
43
34
|
u as useBack,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
m as useTestEmailClick
|
|
35
|
+
i as useSaveComplete,
|
|
36
|
+
d as useSaveStart
|
|
47
37
|
};
|