@useinsider/guido 3.2.0-beta.8e8f902 → 3.2.0-beta.8f147c3

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 (72) hide show
  1. package/README.md +1 -25
  2. package/dist/@types/config/schemas.js +163 -109
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +77 -77
  5. package/dist/components/organisms/header/RightSlot.vue.js +8 -8
  6. package/dist/components/organisms/header/RightSlot.vue2.js +8 -9
  7. package/dist/composables/useSave.js +15 -15
  8. package/dist/config/migrator/index.js +9 -9
  9. package/dist/config/migrator/recommendation/compositionMapper.js +98 -0
  10. package/dist/config/migrator/recommendation/extractors.js +27 -0
  11. package/dist/config/migrator/recommendation/htmlBuilder.js +486 -0
  12. package/dist/config/migrator/recommendation/parseLegacyConfig.js +33 -0
  13. package/dist/config/migrator/recommendation/settingsMapper.js +78 -0
  14. package/dist/config/migrator/recommendation/themeMapper.js +93 -0
  15. package/dist/config/migrator/recommendationMigrator.js +60 -290
  16. package/dist/enums/extensions/recommendationBlock.js +2 -1
  17. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +5 -5
  18. package/dist/extensions/Blocks/Recommendation/services/configService.js +65 -29
  19. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +8 -8
  20. package/dist/extensions/Blocks/Recommendation/templates/utils.js +1 -1
  21. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +13 -22
  22. package/dist/guido.css +1 -1
  23. package/dist/node_modules/valibot/dist/index.js +450 -235
  24. package/dist/services/templateLibraryApi.js +4 -5
  25. package/dist/src/@types/config/defaults.d.ts +5 -1
  26. package/dist/src/@types/config/index.d.ts +3 -3
  27. package/dist/src/@types/config/schemas.d.ts +213 -4
  28. package/dist/src/@types/config/types.d.ts +9 -1
  29. package/dist/src/components/Guido.vue.d.ts +1 -1
  30. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  31. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  32. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  33. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  34. package/dist/src/composables/useConfig.d.ts +56 -2
  35. package/dist/src/composables/useSave.d.ts +1 -1
  36. package/dist/src/config/migrator/index.d.ts +2 -1
  37. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +2 -0
  38. package/dist/src/config/migrator/recommendation/compositionMapper.test.d.ts +1 -0
  39. package/dist/src/config/migrator/recommendation/extractors.d.ts +7 -0
  40. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +11 -0
  41. package/dist/src/config/migrator/recommendation/parseLegacyConfig.d.ts +15 -0
  42. package/dist/src/config/migrator/recommendation/parseLegacyConfig.test.d.ts +1 -0
  43. package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +7 -0
  44. package/dist/src/config/migrator/recommendation/settingsMapper.test.d.ts +1 -0
  45. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +5 -0
  46. package/dist/src/config/migrator/recommendation/themeMapper.test.d.ts +1 -0
  47. package/dist/src/config/migrator/recommendation/types.d.ts +205 -0
  48. package/dist/src/config/migrator/recommendationMigrator.d.ts +13 -1
  49. package/dist/src/config/migrator/recommendationMigrator.test.d.ts +1 -0
  50. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +10 -0
  51. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +1 -1
  52. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -3
  53. package/dist/src/stores/config.d.ts +504 -18
  54. package/dist/src/stores/editor.d.ts +0 -23
  55. package/dist/src/utils/htmlEscape.d.ts +5 -0
  56. package/dist/stores/editor.js +1 -3
  57. package/dist/utils/htmlEscape.js +13 -0
  58. package/dist/utils/pairProductVariables.js +88 -89
  59. package/package.json +5 -1
  60. package/dist/components/organisms/AutoSaveController.vue.js +0 -17
  61. package/dist/components/organisms/AutoSaveController.vue2.js +0 -13
  62. package/dist/components/organisms/header/AutoSaveToggle.vue.js +0 -22
  63. package/dist/components/organisms/header/AutoSaveToggle.vue2.js +0 -19
  64. package/dist/composables/useAutoSave.js +0 -71
  65. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  66. package/dist/src/components/organisms/AutoSaveController.vue.d.ts +0 -2
  67. package/dist/src/components/organisms/header/AutoSaveToggle.vue.d.ts +0 -2
  68. package/dist/src/composables/useAutoSave.d.ts +0 -3
  69. package/dist/src/stores/autosave.d.ts +0 -12
  70. package/dist/src/utils/timeUtil.d.ts +0 -8
  71. package/dist/stores/autosave.js +0 -17
  72. package/dist/utils/timeUtil.js +0 -19
package/README.md CHANGED
@@ -143,8 +143,7 @@ const config: GuidoConfigInput = {
143
143
  displayConditions?: boolean, // Default: true
144
144
  unsubscribe?: boolean, // Default: true
145
145
  modulesDisabled?: boolean, // Default: false - Disable modules panel
146
- liquidSyntax?: boolean, // Default: false - Enable Liquid template syntax
147
- autosave?: boolean, // Default: false - Show the Auto Save toggle in the header. See wiki/AUTOSAVE.md.
146
+ liquidSyntax?: boolean, // Default: false - Enable Liquid template syntax
148
147
  },
149
148
 
150
149
  // Optional: Callbacks
@@ -203,7 +202,6 @@ interface SavedTemplateDetails {
203
202
  config: number[];
204
203
  };
205
204
  metadata: Metadata;
206
- silent: boolean; // true when triggered by autosave, false when user clicked Save
207
205
  }
208
206
 
209
207
  interface Metadata {
@@ -329,28 +327,6 @@ const config: GuidoConfigInput = {
329
327
 
330
328
  ---
331
329
 
332
- ## Autosave
333
-
334
- Guido ships an opt-in **autosave** that saves on a 3-minute interval and when the user leaves the tab. Enable it with the `features.autosave` feature flag — this **shows an "Auto Save" toggle in the editor header**; the end user switches autosave on per session.
335
-
336
- ```typescript
337
- const config: GuidoConfigInput = {
338
- identity: { templateId: 'tpl-123', userId: 'user-456' },
339
- partner: { name: 'partner' },
340
- features: {
341
- autosave: true, // Default: false — shows the Auto Save toggle in the header
342
- },
343
- };
344
- ```
345
-
346
- - Default is `false` — integrations see no change unless they opt in.
347
- - Autosave reuses the same save pipeline as the Save button, so your existing `@save:complete` handler receives autosave output identically to a manual save. No new events or callbacks.
348
- - Toggle state is **session-only** (Pinia) — resets to OFF on reload.
349
-
350
- For a deep dive on triggers, guards, and limitations, see **[wiki/AUTOSAVE.md](wiki/AUTOSAVE.md)**.
351
-
352
- ---
353
-
354
330
  ## HTML Compiler Rules
355
331
 
356
332
  Add custom rules to transform HTML during export:
@@ -1,60 +1,60 @@
1
- import { ModuleFolderDefaults as b } from "../../enums/defaults.js";
2
- import { object as a, number as p, optional as e, string as t, pipe as u, picklist as n, minLength as d, custom as S, boolean as o, array as c, literal as l, variant as k } from "../../node_modules/valibot/dist/index.js";
3
- const m = {
1
+ import { ModuleFolderDefaults as S } from "../../enums/defaults.js";
2
+ import { object as o, number as n, optional as e, string as t, pipe as p, picklist as l, minLength as b, custom as h, boolean as a, array as c, record as k, looseObject as y, literal as i, variant as g, union as f, unknown as s } from "../../node_modules/valibot/dist/index.js";
3
+ const d = {
4
4
  /** Promotional/marketing emails */
5
5
  PROMOTIONAL: 1,
6
6
  /** Transactional/system emails */
7
7
  TRANSACTIONAL: 2
8
- }, s = {
8
+ }, r = {
9
9
  /** Standard email campaigns */
10
10
  EMAIL: 60,
11
11
  /** Architect journey builder */
12
12
  ARCHITECT: 49,
13
13
  /** Unsubscribe page builder */
14
14
  UNSUBSCRIBE_PAGES: 97
15
- }, h = a({
15
+ }, R = o({
16
16
  /** Unique identifier for the template being edited */
17
- templateId: u(
17
+ templateId: p(
18
18
  t(),
19
- d(1, "templateId is required")
19
+ b(1, "templateId is required")
20
20
  ),
21
21
  /** Unique identifier for the user editing the template */
22
- userId: u(
22
+ userId: p(
23
23
  t(),
24
- d(1, "userId is required")
24
+ b(1, "userId is required")
25
25
  ),
26
26
  /** Optional variation ID for A/B testing */
27
27
  variationId: e(t())
28
- }), f = a({
28
+ }), C = o({
29
29
  /** Fallback font name (e.g., "Georgia") */
30
30
  name: t(),
31
31
  /** Fallback font family (e.g., "serif" or "sans-serif") */
32
32
  family: t()
33
- }), y = a({
33
+ }), T = o({
34
34
  /** Partner/organization name (required) */
35
- name: u(
35
+ name: p(
36
36
  t(),
37
- d(1, "partner.name is required")
37
+ b(1, "partner.name is required")
38
38
  ),
39
39
  /** Product type identifier */
40
40
  productType: e(
41
- n([
42
- s.EMAIL,
43
- s.ARCHITECT,
44
- s.UNSUBSCRIBE_PAGES
41
+ l([
42
+ r.EMAIL,
43
+ r.ARCHITECT,
44
+ r.UNSUBSCRIBE_PAGES
45
45
  ]),
46
- s.EMAIL
46
+ r.EMAIL
47
47
  ),
48
48
  /** Message type (promotional or transactional) */
49
49
  messageType: e(
50
- n([m.PROMOTIONAL, m.TRANSACTIONAL]),
51
- m.PROMOTIONAL
50
+ l([d.PROMOTIONAL, d.TRANSACTIONAL]),
51
+ d.PROMOTIONAL
52
52
  ),
53
53
  /** Display name for the current user */
54
54
  username: e(t(), "Guido User"),
55
55
  /** Fallback font settings from partner settings — used to match backend size calculation */
56
- fallbackFont: e(f)
57
- }), A = a({
56
+ fallbackFont: e(C)
57
+ }), A = o({
58
58
  /** Display text for the dynamic content */
59
59
  text: t(),
60
60
  /** Template variable value (e.g., {{username}}) */
@@ -63,12 +63,64 @@ const m = {
63
63
  fallback: e(t()),
64
64
  /** Optional formatting options */
65
65
  format: e(
66
- a({
66
+ o({
67
67
  key: t(),
68
68
  value: t()
69
69
  })
70
70
  )
71
- }), R = a({
71
+ }), I = y({
72
+ /** Block ID (matches the dictionary key and the legacy HTML element id) */
73
+ id: e(n()),
74
+ /** Decimal places for price display (legacy data may use string or number) */
75
+ decimalCount: e(f([t(), n()])),
76
+ /** Pinned product IDs (empty array when filter-driven) */
77
+ productIds: e(c(s())),
78
+ /** Whether the block requested live products at send time */
79
+ sendProductRequestFlag: e(a()),
80
+ /** Whether to randomize product order */
81
+ shuffleProducts: e(a()),
82
+ /** Filter rules driving product selection */
83
+ filters: e(c(s())),
84
+ /** Currency code (e.g. 'EUR') — sometimes absent in legacy data */
85
+ currency: e(t()),
86
+ /** Currency display settings (separators, alignment, decimals) */
87
+ currencySettings: e(s()),
88
+ /** Locale (e.g. 'nl_NL') */
89
+ language: e(t()),
90
+ /** Recommendation strategy key (e.g. 'newArrivals') */
91
+ strategy: e(t()),
92
+ /** Snapshot of products as rendered by the legacy block */
93
+ recommendedProducts: e(c(s())),
94
+ /** Number of product cards per row */
95
+ cardsInRow: e(n()),
96
+ /** Mobile-only padding (right) */
97
+ mobileRightPadding: e(n()),
98
+ /** Mobile-only padding (left) */
99
+ mobileLeftPadding: e(n()),
100
+ /** Disable responsive scaling */
101
+ unresponsive: e(a()),
102
+ /** Layout orientation ('vertical' | 'horizontal') */
103
+ orientation: e(t()),
104
+ /** Whether long text is trimmed */
105
+ textTrimming: e(a()),
106
+ /** Block type marker used by some legacy variants */
107
+ blockType: e(t()),
108
+ /** Size variant marker (legacy data may use string or number) */
109
+ size: e(f([t(), n()])),
110
+ /** Vertical responsiveness flag (legacy size=1 variants) */
111
+ verticalResponsiveness: e(a())
112
+ }), E = o({
113
+ /**
114
+ * Legacy recommendation block configs keyed by block ID.
115
+ * Pass this when loading a template authored with the v1
116
+ * recommendation block so the migrator can preserve filters,
117
+ * strategy, currency, locale, and layout data.
118
+ */
119
+ recommendationConfigs: e(
120
+ k(t(), I),
121
+ {}
122
+ )
123
+ }), L = o({
72
124
  /** Initial HTML content */
73
125
  html: e(t(), ""),
74
126
  /** Initial CSS content */
@@ -81,52 +133,52 @@ const m = {
81
133
  /** Valid custom field attribute names from the partner's categorized fields */
82
134
  customFieldAttributes: e(c(t()), []),
83
135
  /** Selected unsubscribe page IDs */
84
- selectedUnsubscribePages: e(c(p()), []),
136
+ selectedUnsubscribePages: e(c(n()), []),
85
137
  /** Force recreate template in Stripo storage (use true when updating externally modified templates) */
86
- forceRecreate: e(o(), !1)
87
- }), C = a({
138
+ forceRecreate: e(a(), !1),
139
+ /** Migration-only inputs (legacy block configs) */
140
+ migration: e(E, {})
141
+ }), O = o({
88
142
  /** Sender display name */
89
143
  senderName: e(t(), ""),
90
144
  /** Email subject line */
91
145
  subject: e(t(), "")
92
- }), T = a({
146
+ }), M = o({
93
147
  /** Locale for the editor UI */
94
148
  locale: e(t(), "en"),
95
149
  /** Path to translations object */
96
150
  translationsPath: e(t(), "window.trans[Object.keys(window.trans)[0]]"),
97
151
  /** Migration date for template compatibility */
98
- migrationDate: e(p(), 1759696858),
152
+ migrationDate: e(n(), 1759696858),
99
153
  /** Email header settings */
100
- emailHeader: e(C, { senderName: "", subject: "" }),
154
+ emailHeader: e(O, { senderName: "", subject: "" }),
101
155
  /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
102
- savedModulesFolderName: e(t(), b.SAVED_MODULES),
156
+ savedModulesFolderName: e(t(), S.SAVED_MODULES),
103
157
  /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
104
- defaultModulesFolderName: e(t(), b.DEFAULT_MODULES)
105
- }), I = a({
158
+ defaultModulesFolderName: e(t(), S.DEFAULT_MODULES)
159
+ }), P = o({
106
160
  /** Whether to show the header bar */
107
- showHeader: e(o(), !0),
161
+ showHeader: e(a(), !0),
108
162
  /** Custom label for back button (if shown) */
109
163
  backButtonLabel: e(t())
110
- }), E = a({
164
+ }), v = o({
111
165
  /** Enable dynamic content insertion */
112
- dynamicContent: e(o(), !0),
166
+ dynamicContent: e(a(), !0),
113
167
  /** Enable save as template functionality */
114
- saveAsTemplate: e(o(), !0),
168
+ saveAsTemplate: e(a(), !0),
115
169
  /** Enable version history */
116
- versionHistory: e(o(), !0),
170
+ versionHistory: e(a(), !0),
117
171
  /** Enable test message sending */
118
- testMessage: e(o(), !0),
172
+ testMessage: e(a(), !0),
119
173
  /** Enable display conditions */
120
- displayConditions: e(o(), !0),
174
+ displayConditions: e(a(), !0),
121
175
  /** Enable unsubscribe block */
122
- unsubscribe: e(o(), !0),
176
+ unsubscribe: e(a(), !0),
123
177
  /** Disable modules panel in the editor */
124
- modulesDisabled: e(o(), !1),
178
+ modulesDisabled: e(a(), !1),
125
179
  /** Enable Liquid template syntax */
126
- liquidSyntax: e(o(), !1),
127
- /** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
128
- autosave: e(o(), !1)
129
- }), g = n([
180
+ liquidSyntax: e(a(), !1)
181
+ }), N = l([
130
182
  "amp-accordion",
131
183
  "amp-carousel",
132
184
  "amp-form-controls",
@@ -140,7 +192,7 @@ const m = {
140
192
  "text-block",
141
193
  "timer-block",
142
194
  "video-block"
143
- ]), O = n([
195
+ ]), D = l([
144
196
  "dynamic-content",
145
197
  "checkbox-block",
146
198
  "radio-button-block",
@@ -148,119 +200,121 @@ const m = {
148
200
  "unsubscribe-block",
149
201
  "coupon-block",
150
202
  "items-block"
151
- ]), L = a({
203
+ ]), x = o({
152
204
  /** Default blocks to exclude from the editor */
153
205
  excludeDefaults: e(
154
- c(g),
206
+ c(N),
155
207
  []
156
208
  ),
157
209
  /** Custom blocks to include in the editor */
158
210
  includeCustoms: e(
159
- c(O),
211
+ c(D),
160
212
  []
161
213
  )
162
- }), r = a({
214
+ }), m = o({
163
215
  /** Unique identifier for the rule */
164
216
  id: t(),
165
217
  /** Human-readable description */
166
218
  description: e(t()),
167
219
  /** Priority for rule ordering (lower = earlier) */
168
- priority: p()
169
- }), M = a({
170
- ...r.entries,
171
- type: l("replace"),
220
+ priority: n()
221
+ }), F = o({
222
+ ...m.entries,
223
+ type: i("replace"),
172
224
  /** String to search for */
173
225
  search: t(),
174
226
  /** Replacement string */
175
227
  replacement: t(),
176
228
  /** Replace all occurrences (default: false) */
177
- replaceAll: e(o())
178
- }), N = a({
179
- ...r.entries,
180
- type: l("regex"),
229
+ replaceAll: e(a())
230
+ }), U = o({
231
+ ...m.entries,
232
+ type: i("regex"),
181
233
  /** Regex pattern string */
182
234
  pattern: t(),
183
235
  /** Replacement string (supports $1, $2, etc.) */
184
236
  replacement: t(),
185
237
  /** Regex flags (e.g., 'gi') */
186
238
  flags: e(t())
187
- }), D = a({
188
- ...r.entries,
189
- type: l("remove"),
239
+ }), B = o({
240
+ ...m.entries,
241
+ type: i("remove"),
190
242
  /** Strings or patterns to remove */
191
243
  targets: c(t())
192
- }), v = a({
193
- ...r.entries,
194
- type: l("custom"),
244
+ }), w = o({
245
+ ...m.entries,
246
+ type: i("custom"),
195
247
  /** Custom processor function */
196
- processor: S(
197
- (i) => typeof i == "function",
248
+ processor: h(
249
+ (u) => typeof u == "function",
198
250
  "processor must be a function"
199
251
  )
200
- }), x = k("type", [
201
- M,
202
- N,
203
- D,
204
- v
205
- ]), U = a({
252
+ }), H = g("type", [
253
+ F,
254
+ U,
255
+ B,
256
+ w
257
+ ]), j = o({
206
258
  /** Custom compiler rules to apply */
207
- customRules: e(c(x), []),
259
+ customRules: e(c(H), []),
208
260
  /** Skip default compiler rules */
209
- ignoreDefaultRules: e(o(), !1)
210
- }), B = a({
261
+ ignoreDefaultRules: e(a(), !1)
262
+ }), q = o({
211
263
  /**
212
264
  * External validation handler called before save completes.
213
265
  * Return false to cancel the save operation.
214
266
  */
215
267
  externalValidation: e(
216
- S(
217
- (i) => typeof i == "function",
268
+ h(
269
+ (u) => typeof u == "function",
218
270
  "externalValidation must be a function"
219
271
  )
220
272
  )
221
- }), H = a({
273
+ }), V = o({
222
274
  // Required sections
223
275
  /** Identity configuration (required) */
224
- identity: h,
276
+ identity: R,
225
277
  /** Partner configuration (required) */
226
- partner: y,
278
+ partner: T,
227
279
  // Optional sections (with defaults)
228
280
  /** Template content and presets */
229
- template: e(R, {}),
281
+ template: e(L, {}),
230
282
  /** Editor settings */
231
- editor: e(T, {}),
283
+ editor: e(M, {}),
232
284
  /** UI configuration */
233
- ui: e(I, {}),
285
+ ui: e(P, {}),
234
286
  /** Feature toggles */
235
- features: e(E, {}),
287
+ features: e(v, {}),
236
288
  /** Block configuration */
237
- blocks: e(L, {}),
289
+ blocks: e(x, {}),
238
290
  /** Compiler configuration */
239
- compiler: e(U, {}),
291
+ compiler: e(j, {}),
240
292
  /** Callbacks and event handlers */
241
- callbacks: e(B, {})
293
+ callbacks: e(q, {})
242
294
  });
243
295
  export {
244
- L as BlocksSchema,
245
- B as CallbacksSchema,
246
- x as CompilerRuleSchema,
247
- U as CompilerSchema,
248
- O as CustomBlockTypeSchema,
249
- v as CustomRuleSchema,
250
- g as DefaultBlockTypeSchema,
296
+ x as BlocksSchema,
297
+ q as CallbacksSchema,
298
+ H as CompilerRuleSchema,
299
+ j as CompilerSchema,
300
+ D as CustomBlockTypeSchema,
301
+ w as CustomRuleSchema,
302
+ N as DefaultBlockTypeSchema,
251
303
  A as DynamicContentSchema,
252
- T as EditorSchema,
253
- C as EmailHeaderSchema,
254
- f as FallbackFontSchema,
255
- E as FeaturesSchema,
256
- H as GuidoConfigSchema,
257
- h as IdentitySchema,
258
- m as MessageType,
259
- y as PartnerSchema,
260
- s as ProductType,
261
- N as RegexRuleSchema,
262
- D as RemoveRuleSchema,
263
- M as ReplaceRuleSchema,
264
- R as TemplateSchema,
265
- I as UISchema
304
+ M as EditorSchema,
305
+ O as EmailHeaderSchema,
306
+ C as FallbackFontSchema,
307
+ v as FeaturesSchema,
308
+ V as GuidoConfigSchema,
309
+ R as IdentitySchema,
310
+ I as LegacyRecommendationConfigSchema,
311
+ d as MessageType,
312
+ T as PartnerSchema,
313
+ r as ProductType,
314
+ U as RegexRuleSchema,
315
+ B as RemoveRuleSchema,
316
+ F as ReplaceRuleSchema,
317
+ E as TemplateMigrationSchema,
318
+ L as TemplateSchema,
319
+ P as UISchema
266
320
  };
@@ -3,7 +3,7 @@ import i from "./Guido.vue2.js";
3
3
  import a from "../_virtual/_plugin-vue2_normalizer.js";
4
4
  var t = function() {
5
5
  var o = this, r = o._self._c, e = o._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) : o._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.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(p) {
6
+ return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._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.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(p) {
7
7
  return e.emit("onboarding:finished");
8
8
  } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
9
  }, n = [], s = /* @__PURE__ */ a(
@@ -12,9 +12,9 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "fffc13d6"
15
+ "428c209a"
16
16
  );
17
- const l = s.exports;
17
+ const u = s.exports;
18
18
  export {
19
- l as default
19
+ u as default
20
20
  };