@useinsider/guido 3.19.0-beta.892c3ca → 3.19.0-beta.93d5923

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 (103) hide show
  1. package/README.md +0 -1
  2. package/dist/@types/config/schemas.js +118 -107
  3. package/dist/components/Guido.vue.js +9 -9
  4. package/dist/components/Guido.vue2.js +77 -69
  5. package/dist/components/organisms/AutoSaveController.vue2.js +8 -9
  6. package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
  7. package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
  8. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  9. package/dist/components/organisms/header/EditorActions.vue2.js +55 -90
  10. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  11. package/dist/components/organisms/header/LeftSlot.vue2.js +12 -16
  12. package/dist/components/wrappers/WpDrawer.vue.js +7 -9
  13. package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
  14. package/dist/components/wrappers/WpModal.vue.js +1 -1
  15. package/dist/components/wrappers/WpModal.vue2.js +4 -3
  16. package/dist/composables/useAuthError.js +52 -0
  17. package/dist/composables/useAutoSave.js +11 -11
  18. package/dist/composables/useCortexBlueprintBridge.js +122 -54
  19. package/dist/composables/useEmailTemplateApplier.js +111 -50
  20. package/dist/composables/useHtmlCompiler.js +26 -37
  21. package/dist/composables/useHtmlValidator.js +0 -2
  22. package/dist/composables/useHttp.js +64 -54
  23. package/dist/composables/useLegacyStrategyConversion.js +23 -19
  24. package/dist/composables/useSave.js +45 -90
  25. package/dist/composables/useStripo.js +24 -20
  26. package/dist/composables/useToaster.js +17 -15
  27. package/dist/composables/validators/useCouponBlockValidator.js +21 -24
  28. package/dist/composables/validators/useLiquidValidator.js +15 -15
  29. package/dist/composables/validators/useUnsubscribeBlockValidator.js +27 -34
  30. package/dist/config/compiler/itemsCompilerRules.js +13 -6
  31. package/dist/config/compiler/utils/itemsCompilerUtils.js +34 -17
  32. package/dist/config/migrator/index.js +14 -13
  33. package/dist/config/migrator/itemsBlockMigrator.js +236 -248
  34. package/dist/config/migrator/recommendationMigrator.js +28 -21
  35. package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
  36. package/dist/enums/extensions/recommendationBlock.js +30 -29
  37. package/dist/extensions/Blocks/Items/constants/cardLayout.js +20 -0
  38. package/dist/extensions/Blocks/Items/controls/name/trimming.js +18 -17
  39. package/dist/extensions/Blocks/Items/controls/settingsControl.js +114 -105
  40. package/dist/extensions/Blocks/Items/enums/productEnums.js +14 -9
  41. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +11 -9
  42. package/dist/extensions/Blocks/Items/template.js +219 -204
  43. package/dist/extensions/Blocks/Recommendation/block.js +15 -14
  44. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +45 -38
  45. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -49
  46. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +30 -29
  47. package/dist/extensions/Blocks/Recommendation/utils/partnerCustomizations.js +3 -1
  48. package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
  49. package/dist/guido.css +1 -1
  50. package/dist/src/@types/config/schemas.d.ts +16 -4
  51. package/dist/src/components/Guido.vue.d.ts +1 -17
  52. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -17
  53. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -17
  54. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -17
  55. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +3 -4
  56. package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
  57. package/dist/src/composables/useAuthError.d.ts +12 -0
  58. package/dist/src/composables/useConfig.d.ts +2 -2
  59. package/dist/src/composables/useCortexBlueprintBridge.d.ts +2 -3
  60. package/dist/src/composables/useEmailTemplateApplier.d.ts +18 -5
  61. package/dist/src/composables/useGuidoActions.d.ts +2 -0
  62. package/dist/src/composables/useHtmlValidator.d.ts +0 -21
  63. package/dist/src/composables/useHttp.d.ts +2 -0
  64. package/dist/src/composables/useSave.d.ts +1 -6
  65. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +0 -3
  66. package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +0 -10
  67. package/dist/src/config/compiler/utils/itemsCompilerUtils.d.ts +5 -0
  68. package/dist/src/config/migrator/index.d.ts +2 -1
  69. package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
  70. package/dist/src/enums/extensions/recommendationBlock.d.ts +1 -1
  71. package/dist/src/extensions/Blocks/Items/constants/cardLayout.d.ts +44 -0
  72. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +3 -0
  73. package/dist/src/extensions/Blocks/Items/template.d.ts +19 -0
  74. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
  75. package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
  76. package/dist/src/mock/cortexChatStore.d.ts +12 -0
  77. package/dist/src/stores/config.d.ts +20 -32
  78. package/dist/src/stores/guido-email-editor.d.ts +20 -10
  79. package/dist/src/stores/onboarding.d.ts +4 -0
  80. package/dist/src/stores/recommendation.d.ts +5 -0
  81. package/dist/src/utils/dateUtil.d.ts +10 -0
  82. package/dist/src/utils/genericUtil.d.ts +3 -0
  83. package/dist/src/utils/templatePreparation.d.ts +0 -30
  84. package/dist/static/styles/components/recommendation-strategy.css.js +9 -0
  85. package/dist/static/styles/components/version-history.css.js +2 -6
  86. package/dist/stores/config.js +67 -84
  87. package/dist/stores/guido-email-editor.js +3 -1
  88. package/dist/stores/onboarding.js +4 -0
  89. package/dist/utils/pairProductVariables.js +71 -71
  90. package/dist/utils/templatePreparation.js +36 -39
  91. package/package.json +1 -1
  92. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +0 -20
  93. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +0 -49
  94. package/dist/composables/useSaveValidation.js +0 -282
  95. package/dist/composables/useSaveValidationRollout.js +0 -9
  96. package/dist/enums/save-validation.js +0 -4
  97. package/dist/src/@types/save-validation.d.ts +0 -19
  98. package/dist/src/composables/useSaveValidation.d.ts +0 -6
  99. package/dist/src/composables/useSaveValidationRollout.d.ts +0 -3
  100. package/dist/src/enums/save-validation.d.ts +0 -27
  101. package/dist/src/stores/save-validation.d.ts +0 -22
  102. package/dist/stores/save-validation.js +0 -30
  103. /package/dist/src/components/organisms/{validation/ValidationErrorDrawer.vue.d.ts → base/AuthErrorModal.vue.d.ts} +0 -0
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,5 +1,5 @@
1
- import { ModuleFolderDefaults as f } from "../../enums/defaults.js";
2
- import { object as o, number as n, optional as e, string as t, picklist as i, pipe as m, minLength as b, custom as y, boolean as a, array as c, transform as C, record as k, fallback as R, literal as u, looseObject as g, variant as I, union as h, unknown as r, lazy as T } from "../../node_modules/valibot/dist/index.js";
1
+ import { ModuleFolderDefaults as S } from "../../enums/defaults.js";
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 */
5
5
  PROMOTIONAL: 1,
@@ -12,14 +12,14 @@ const p = {
12
12
  ARCHITECT: 49,
13
13
  /** Unsubscribe page builder */
14
14
  UNSUBSCRIBE_PAGES: 97
15
- }, A = o({
15
+ }, A = a({
16
16
  /** Unique identifier for the template being edited */
17
- templateId: m(
17
+ templateId: i(
18
18
  t(),
19
19
  b(1, "templateId is required")
20
20
  ),
21
21
  /** Unique identifier for the user editing the template */
22
- userId: m(
22
+ userId: i(
23
23
  t(),
24
24
  b(1, "userId is required")
25
25
  ),
@@ -33,20 +33,20 @@ const p = {
33
33
  * Stripo doc id) and is never an endpoint id.
34
34
  */
35
35
  templateLibraryId: e(t())
36
- }), L = o({
36
+ }), L = a({
37
37
  /** Fallback font name (e.g., "Georgia") */
38
38
  name: t(),
39
39
  /** Fallback font family (e.g., "serif" or "sans-serif") */
40
40
  family: t()
41
- }), E = o({
41
+ }), M = a({
42
42
  /** Partner/organization name (required) */
43
- name: m(
43
+ name: i(
44
44
  t(),
45
45
  b(1, "partner.name is required")
46
46
  ),
47
47
  /** Product type identifier */
48
48
  productType: e(
49
- i([
49
+ m([
50
50
  l.EMAIL,
51
51
  l.ARCHITECT,
52
52
  l.UNSUBSCRIBE_PAGES
@@ -55,14 +55,14 @@ const p = {
55
55
  ),
56
56
  /** Message type (promotional or transactional) */
57
57
  messageType: e(
58
- i([p.PROMOTIONAL, p.TRANSACTIONAL]),
58
+ m([p.PROMOTIONAL, p.TRANSACTIONAL]),
59
59
  p.PROMOTIONAL
60
60
  ),
61
61
  /** Display name for the current user */
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
- }), M = o({
65
+ }), E = a({
66
66
  /** Display text for the dynamic content */
67
67
  text: t(),
68
68
  /** Template variable value (e.g., {{username}}) */
@@ -71,33 +71,33 @@ const p = {
71
71
  fallback: e(t()),
72
72
  /** Optional formatting options */
73
73
  format: e(
74
- o({
74
+ a({
75
75
  key: t(),
76
76
  value: t()
77
77
  })
78
78
  )
79
- }), S = T(() => g({
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(S)),
84
+ children: e(c(f)),
85
85
  // eslint-disable-next-line camelcase -- backend field name
86
- select_items: e(c(S))
87
- })), v = k(
86
+ select_items: e(c(f))
87
+ })), N = g(
88
88
  t(),
89
- R(c(S), [])
90
- ), N = g({
89
+ R(c(f), [])
90
+ ), P = C({
91
91
  /** Block ID (matches the dictionary key and the legacy HTML element id) */
92
- id: e(n()),
92
+ id: e(s()),
93
93
  /** Decimal places for price display (legacy data may use string or number) */
94
- decimalCount: e(h([t(), n()])),
94
+ decimalCount: e(h([t(), s()])),
95
95
  /** Pinned product IDs (empty array when filter-driven) */
96
96
  productIds: e(c(r())),
97
97
  /** Whether the block requested live products at send time */
98
- sendProductRequestFlag: e(a()),
98
+ sendProductRequestFlag: e(o()),
99
99
  /** Whether to randomize product order */
100
- shuffleProducts: e(a()),
100
+ shuffleProducts: e(o()),
101
101
  /** Filter rules driving product selection */
102
102
  filters: e(c(r())),
103
103
  /** Currency code (e.g. 'EUR') — sometimes absent in legacy data */
@@ -111,28 +111,28 @@ const p = {
111
111
  /** Snapshot of products as rendered by the legacy block */
112
112
  recommendedProducts: e(c(r())),
113
113
  /** Number of product cards per row */
114
- cardsInRow: e(n()),
114
+ cardsInRow: e(s()),
115
115
  /** Mobile-only padding (right) */
116
- mobileRightPadding: e(n()),
116
+ mobileRightPadding: e(s()),
117
117
  /** Mobile-only padding (left) */
118
- mobileLeftPadding: e(n()),
118
+ mobileLeftPadding: e(s()),
119
119
  /** Disable responsive scaling */
120
- unresponsive: e(a()),
120
+ unresponsive: e(o()),
121
121
  /** Layout orientation ('vertical' | 'horizontal') */
122
122
  orientation: e(t()),
123
123
  /** Whether long text is trimmed */
124
- textTrimming: e(a()),
124
+ textTrimming: e(o()),
125
125
  /** Block type marker used by some legacy variants */
126
126
  blockType: e(t()),
127
127
  /** Size variant marker (legacy data may use string or number) */
128
- size: e(h([t(), n()])),
128
+ size: e(h([t(), s()])),
129
129
  /** Vertical responsiveness flag (legacy size=1 variants) */
130
- verticalResponsiveness: e(a()),
130
+ verticalResponsiveness: e(o()),
131
131
  /** Legacy "Move to next line" price placement toggle (cardPricePlacement.js) */
132
- isPriceMovedToNextLine: e(a()),
132
+ isPriceMovedToNextLine: e(o()),
133
133
  /** Legacy "Hide if same as discounted" / delete-price-for-zero-sale toggle */
134
- isPriceDeletedForZeroSale: e(a())
135
- }), P = o({
134
+ isPriceDeletedForZeroSale: e(o())
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
@@ -140,17 +140,17 @@ const p = {
140
140
  * strategy, currency, locale, and layout data.
141
141
  */
142
142
  recommendationConfigs: e(
143
- k(t(), N),
143
+ g(t(), P),
144
144
  {}
145
145
  )
146
- }), x = o({
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(M),
153
+ c(E),
154
154
  []
155
155
  ),
156
156
  /**
@@ -159,13 +159,13 @@ const p = {
159
159
  * (first) partner's leaf attributes into the label→token map that repairs
160
160
  * label-form placeholders (`{{ Phone Number }}`) in dropped saved modules.
161
161
  */
162
- dynamicContentList: e(v, {}),
162
+ dynamicContentList: e(N, {}),
163
163
  /** Valid custom field attribute names from the partner's categorized fields */
164
164
  customFieldAttributes: e(c(t()), []),
165
165
  /** Selected unsubscribe page IDs */
166
- selectedUnsubscribePages: e(c(n()), []),
166
+ selectedUnsubscribePages: e(c(s()), []),
167
167
  /** Force recreate template in Stripo storage (use true when updating externally modified templates) */
168
- forceRecreate: e(a(), !1),
168
+ forceRecreate: e(o(), !1),
169
169
  /**
170
170
  * Consumer-persisted tracking-id high-water mark (SD-141414). Used as the id floor
171
171
  * during migration so a rolled-back document never re-mints retired tracking ids.
@@ -174,64 +174,75 @@ const p = {
174
174
  * mount. Non-numbers still fail, like every other field in this schema.
175
175
  */
176
176
  trackIdCounter: e(
177
- m(
178
- n(),
179
- C((s) => Number.isFinite(s) ? Math.max(0, Math.floor(s)) : 0)
177
+ i(
178
+ s(),
179
+ y((n) => Number.isFinite(n) ? Math.max(0, Math.floor(n)) : 0)
180
180
  ),
181
181
  0
182
182
  ),
183
+ /**
184
+ * The variation's saved `recommendationCampaignUrls`, keyed by block id. A block
185
+ * that still names a strategy but has no entry here had it dropped by a
186
+ * cross-account duplicate, so Guido resets it on load (SD-151945). Omit it and
187
+ * that check is off, and so is any non-object value such as `null`, because a reset
188
+ * cannot be undone. Hosts send `[]` for an empty map.
189
+ */
190
+ recommendationCampaignUrls: e(
191
+ i(
192
+ r(),
193
+ y((n) => n && typeof n == "object" ? { ...n } : void 0)
194
+ )
195
+ ),
183
196
  /** Migration-only inputs (legacy block configs) */
184
- migration: e(P, {})
185
- }), D = o({
197
+ migration: e(x, {})
198
+ }), O = a({
186
199
  /** Sender display name */
187
200
  senderName: e(t(), ""),
188
201
  /** Email subject line */
189
202
  subject: e(t(), "")
190
- }), O = o({
203
+ }), v = a({
191
204
  /** Locale for the editor UI */
192
205
  locale: e(t(), "en"),
193
206
  /** Path to translations object */
194
207
  translationsPath: e(t(), "window.trans[Object.keys(window.trans)[0]]"),
195
208
  /** Migration date for template compatibility */
196
- migrationDate: e(n(), 1759696858),
209
+ migrationDate: e(s(), 1759696858),
197
210
  /** Email header settings */
198
- emailHeader: e(D, { senderName: "", subject: "" }),
211
+ emailHeader: e(O, { senderName: "", subject: "" }),
199
212
  /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
200
- savedModulesFolderName: e(t(), f.SAVED_MODULES),
213
+ savedModulesFolderName: e(t(), S.SAVED_MODULES),
201
214
  /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
202
- defaultModulesFolderName: e(t(), f.DEFAULT_MODULES)
203
- }), F = o({
215
+ defaultModulesFolderName: e(t(), S.DEFAULT_MODULES)
216
+ }), F = a({
204
217
  /** Whether to show the header bar */
205
- showHeader: e(a(), !0),
218
+ showHeader: e(o(), !0),
206
219
  /** Custom label for back button (if shown) */
207
220
  backButtonLabel: e(t())
208
- }), U = o({
221
+ }), U = a({
209
222
  /** Enable dynamic content insertion */
210
- dynamicContent: e(a(), !0),
223
+ dynamicContent: e(o(), !0),
211
224
  /** Enable save as template functionality */
212
- saveAsTemplate: e(a(), !0),
225
+ saveAsTemplate: e(o(), !0),
213
226
  /** Enable version history */
214
- versionHistory: e(a(), !0),
227
+ versionHistory: e(o(), !0),
215
228
  /** Enable test message sending */
216
- testMessage: e(a(), !0),
229
+ testMessage: e(o(), !0),
217
230
  /** Enable display conditions */
218
- displayConditions: e(a(), !0),
231
+ displayConditions: e(o(), !0),
219
232
  /** Enable unsubscribe block */
220
- unsubscribe: e(a(), !0),
233
+ unsubscribe: e(o(), !0),
221
234
  /** Disable modules panel in the editor */
222
- modulesDisabled: e(a(), !1),
235
+ modulesDisabled: e(o(), !1),
223
236
  /** Enable Liquid template syntax */
224
- liquidSyntax: e(a(), !1),
237
+ liquidSyntax: e(o(), !1),
225
238
  /** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
226
- autosave: e(a(), !1),
239
+ autosave: e(o(), !1),
227
240
  /** Enable pre-save domain-allowlist validation (opt-in; Guido self-serves the block toaster) */
228
- allowlistEnabled: e(a(), !1),
241
+ allowlistEnabled: e(o(), !1),
229
242
  /** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
230
- linkTrackingIds: e(a(), !1),
231
- /** Allow persisting a template that still has validation errors (drawer "Save and Continue" soft-save). Host sets false for transactional + unsubscribe. */
232
- allowSaveWithErrors: e(a(), !0),
233
- reusableRecommendationStrategy: e(a(), !1)
234
- }), w = i([
243
+ linkTrackingIds: e(o(), !1),
244
+ reusableRecommendationStrategy: e(o(), !1)
245
+ }), B = m([
235
246
  "amp-accordion",
236
247
  "amp-carousel",
237
248
  "amp-form-controls",
@@ -245,7 +256,7 @@ const p = {
245
256
  "text-block",
246
257
  "timer-block",
247
258
  "video-block"
248
- ]), B = i([
259
+ ]), w = m([
249
260
  "dynamic-content",
250
261
  "checkbox-block",
251
262
  "radio-button-block",
@@ -253,25 +264,25 @@ const p = {
253
264
  "unsubscribe-block",
254
265
  "coupon-block",
255
266
  "items-block"
256
- ]), H = o({
267
+ ]), j = a({
257
268
  /** Default blocks to exclude from the editor */
258
269
  excludeDefaults: e(
259
- c(w),
270
+ c(B),
260
271
  []
261
272
  ),
262
273
  /** Custom blocks to include in the editor */
263
274
  includeCustoms: e(
264
- c(B),
275
+ c(w),
265
276
  []
266
277
  )
267
- }), d = o({
278
+ }), d = a({
268
279
  /** Unique identifier for the rule */
269
280
  id: t(),
270
281
  /** Human-readable description */
271
282
  description: e(t()),
272
283
  /** Priority for rule ordering (lower = earlier) */
273
- priority: n()
274
- }), _ = o({
284
+ priority: s()
285
+ }), H = a({
275
286
  ...d.entries,
276
287
  type: u("replace"),
277
288
  /** String to search for */
@@ -279,8 +290,8 @@ const p = {
279
290
  /** Replacement string */
280
291
  replacement: t(),
281
292
  /** Replace all occurrences (default: false) */
282
- replaceAll: e(a())
283
- }), j = o({
293
+ replaceAll: e(o())
294
+ }), _ = a({
284
295
  ...d.entries,
285
296
  type: u("regex"),
286
297
  /** Regex pattern string */
@@ -289,87 +300,87 @@ const p = {
289
300
  replacement: t(),
290
301
  /** Regex flags (e.g., 'gi') */
291
302
  flags: e(t())
292
- }), q = o({
303
+ }), q = a({
293
304
  ...d.entries,
294
305
  type: u("remove"),
295
306
  /** Strings or patterns to remove */
296
307
  targets: c(t())
297
- }), G = o({
308
+ }), G = a({
298
309
  ...d.entries,
299
310
  type: u("custom"),
300
311
  /** Custom processor function */
301
- processor: y(
302
- (s) => typeof s == "function",
312
+ processor: k(
313
+ (n) => typeof n == "function",
303
314
  "processor must be a function"
304
315
  )
305
316
  }), V = I("type", [
317
+ H,
306
318
  _,
307
- j,
308
319
  q,
309
320
  G
310
- ]), z = o({
321
+ ]), z = a({
311
322
  /** Custom compiler rules to apply */
312
323
  customRules: e(c(V), []),
313
324
  /** Skip default compiler rules */
314
- ignoreDefaultRules: e(a(), !1)
315
- }), W = o({
325
+ ignoreDefaultRules: e(o(), !1)
326
+ }), Z = a({
316
327
  /**
317
328
  * External validation handler called before save completes.
318
329
  * Return false to cancel the save operation.
319
330
  */
320
331
  externalValidation: e(
321
- y(
322
- (s) => typeof s == "function",
332
+ k(
333
+ (n) => typeof n == "function",
323
334
  "externalValidation must be a function"
324
335
  )
325
336
  )
326
- }), K = o({
337
+ }), Q = a({
327
338
  // Required sections
328
339
  /** Identity configuration (required) */
329
340
  identity: A,
330
341
  /** Partner configuration (required) */
331
- partner: E,
342
+ partner: M,
332
343
  // Optional sections (with defaults)
333
344
  /** Template content and presets */
334
- template: e(x, {}),
345
+ template: e(D, {}),
335
346
  /** Editor settings */
336
- editor: e(O, {}),
347
+ editor: e(v, {}),
337
348
  /** UI configuration */
338
349
  ui: e(F, {}),
339
350
  /** Feature toggles */
340
351
  features: e(U, {}),
341
352
  /** Block configuration */
342
- blocks: e(H, {}),
353
+ blocks: e(j, {}),
343
354
  /** Compiler configuration */
344
355
  compiler: e(z, {}),
345
356
  /** Callbacks and event handlers */
346
- callbacks: e(W, {})
357
+ callbacks: e(Z, {})
347
358
  });
348
359
  export {
349
- H as BlocksSchema,
350
- W as CallbacksSchema,
360
+ j as BlocksSchema,
361
+ Z as CallbacksSchema,
351
362
  V as CompilerRuleSchema,
352
363
  z as CompilerSchema,
353
- B as CustomBlockTypeSchema,
364
+ w as CustomBlockTypeSchema,
354
365
  G as CustomRuleSchema,
355
- w as DefaultBlockTypeSchema,
356
- v as DynamicContentListSchema,
357
- S as DynamicContentNodeSchema,
358
- M as DynamicContentSchema,
359
- O as EditorSchema,
360
- D as EmailHeaderSchema,
366
+ B as DefaultBlockTypeSchema,
367
+ N as DynamicContentListSchema,
368
+ f as DynamicContentNodeSchema,
369
+ E as DynamicContentSchema,
370
+ v as EditorSchema,
371
+ O as EmailHeaderSchema,
361
372
  L as FallbackFontSchema,
362
373
  U as FeaturesSchema,
363
- K as GuidoConfigSchema,
374
+ Q as GuidoConfigSchema,
364
375
  A as IdentitySchema,
365
- N as LegacyRecommendationConfigSchema,
376
+ P as LegacyRecommendationConfigSchema,
366
377
  p as MessageType,
367
- E as PartnerSchema,
378
+ M as PartnerSchema,
368
379
  l as ProductType,
369
- j as RegexRuleSchema,
380
+ _ as RegexRuleSchema,
370
381
  q as RemoveRuleSchema,
371
- _ as ReplaceRuleSchema,
372
- P as TemplateMigrationSchema,
373
- x as TemplateSchema,
382
+ H as ReplaceRuleSchema,
383
+ x as TemplateMigrationSchema,
384
+ D as TemplateSchema,
374
385
  F as UISchema
375
386
  };
@@ -1,20 +1,20 @@
1
- import i from "./Guido.vue2.js";
1
+ import o from "./Guido.vue2.js";
2
2
  /* empty css */
3
- import o from "../_virtual/_plugin-vue2_normalizer.js";
4
- var t = function() {
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.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.isSaveValidationEnabled ? r(e.ValidationErrorDrawer) : a._e(), e.isTestPartner() ? a._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(_) {
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__ */ o(
9
+ }, s = [], n = /* @__PURE__ */ t(
10
+ o,
10
11
  i,
11
- t,
12
12
  s,
13
13
  !1,
14
14
  null,
15
- "aaa8fe47"
15
+ "c404d230"
16
16
  );
17
- const v = n.exports;
17
+ const g = n.exports;
18
18
  export {
19
- v as default
19
+ g as default
20
20
  };