@useinsider/guido 3.19.0 → 3.20.0-beta.05ce01c
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 +22 -3
- package/dist/@types/config/schemas.js +76 -53
- package/dist/components/Guido.vue.js +4 -4
- package/dist/components/Guido.vue2.js +105 -89
- package/dist/components/organisms/AutoSaveController.vue2.js +10 -8
- package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
- package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
- package/dist/components/organisms/base/Toaster.vue2.js +13 -12
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +13 -11
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +78 -57
- package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +18 -0
- package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +25 -0
- package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +28 -42
- package/dist/components/organisms/header/EditorActions.vue.js +2 -2
- package/dist/components/organisms/header/EditorActions.vue2.js +83 -48
- package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
- package/dist/components/organisms/header/LeftSlot.vue2.js +16 -12
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +28 -24
- package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +21 -0
- package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +46 -0
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +47 -0
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +20 -0
- package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +50 -0
- package/dist/components/wrappers/WpDrawer.vue.js +9 -7
- package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
- package/dist/components/wrappers/WpModal.vue.js +1 -1
- package/dist/components/wrappers/WpModal.vue2.js +4 -3
- package/dist/composables/useActionsApi.js +52 -47
- package/dist/composables/useAuthError.js +52 -0
- package/dist/composables/useAutoSave.js +44 -42
- package/dist/composables/useCodeEditorApi.js +23 -9
- package/dist/composables/useCortexBlueprintBridge.js +122 -54
- package/dist/composables/useCustomInterfaceAppearance.js +65 -51
- package/dist/composables/useEmailTemplateApplier.js +111 -50
- package/dist/composables/useHtmlCompiler.js +37 -26
- package/dist/composables/useHtmlValidator.js +89 -82
- package/dist/composables/useHttp.js +64 -54
- package/dist/composables/useLegacyStrategyConversion.js +65 -0
- package/dist/composables/useRecommendation.js +40 -35
- package/dist/composables/useSave.js +93 -45
- package/dist/composables/useSaveValidation.js +284 -0
- package/dist/composables/useSaveValidationRollout.js +20 -0
- package/dist/composables/useStripo.js +43 -39
- package/dist/composables/useToaster.js +18 -22
- package/dist/composables/useTranslations.js +3 -2
- package/dist/composables/useVersionHistoryApi.js +33 -24
- package/dist/composables/validators/useCouponBlockValidator.js +24 -21
- package/dist/composables/validators/useLiquidValidator.js +15 -15
- package/dist/composables/validators/useUnsubscribeBlockValidator.js +34 -27
- package/dist/config/migrator/index.js +14 -13
- package/dist/config/migrator/itemsBlockMigrator.js +236 -248
- package/dist/config/migrator/recommendationMigrator.js +28 -21
- package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
- package/dist/enums/extensions/recommendationBlock.js +51 -34
- package/dist/enums/save-validation.js +4 -0
- package/dist/extensions/Blocks/Items/constants/cardLayout.js +20 -0
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +18 -17
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +114 -105
- package/dist/extensions/Blocks/Items/enums/productEnums.js +14 -9
- package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +11 -9
- package/dist/extensions/Blocks/Items/template.js +219 -204
- package/dist/extensions/Blocks/Recommendation/block.js +65 -45
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +21 -20
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +103 -90
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +150 -52
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +74 -74
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +274 -92
- package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +42 -0
- package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +26 -16
- package/dist/extensions/Blocks/Recommendation/utils/partnerCustomizations.js +3 -1
- package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
- package/dist/extensions/Blocks/Recommendation/utils/strategyCommit.js +24 -0
- package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +21 -12
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +46 -37
- package/dist/services/settingsApi.js +11 -0
- package/dist/src/@types/config/schemas.d.ts +36 -0
- package/dist/src/@types/save-validation.d.ts +19 -0
- package/dist/src/components/Guido.vue.d.ts +17 -1
- package/dist/src/components/organisms/base/AuthErrorModal.vue.d.ts +2 -0
- package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +17 -1
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +17 -1
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +17 -1
- package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +2 -0
- package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
- package/dist/src/components/organisms/validation/ValidationErrorDrawer.vue.d.ts +2 -0
- package/dist/src/components/wrappers/WpDrawer.vue.d.ts +4 -3
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useAuthError.d.ts +12 -0
- package/dist/src/composables/useAutoSave.d.ts +4 -1
- package/dist/src/composables/useConfig.d.ts +8 -0
- package/dist/src/composables/useCortexBlueprintBridge.d.ts +2 -3
- package/dist/src/composables/useEmailTemplateApplier.d.ts +18 -5
- package/dist/src/composables/useGuidoActions.d.ts +2 -0
- package/dist/src/composables/useHtmlValidator.d.ts +21 -0
- package/dist/src/composables/useHttp.d.ts +2 -0
- package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -0
- package/dist/src/composables/useSave.d.ts +6 -1
- package/dist/src/composables/useSaveValidation.d.ts +6 -0
- package/dist/src/composables/useSaveValidationRollout.d.ts +4 -0
- package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
- package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +10 -0
- package/dist/src/config/migrator/index.d.ts +2 -1
- package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
- package/dist/src/enums/extensions/recommendationBlock.d.ts +7 -1
- package/dist/src/enums/save-validation.d.ts +27 -0
- package/dist/src/extensions/Blocks/Items/constants/cardLayout.d.ts +44 -0
- package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +3 -0
- package/dist/src/extensions/Blocks/Items/template.d.ts +19 -0
- package/dist/src/extensions/Blocks/Recommendation/block.d.ts +10 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +1 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +2 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +10 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +7 -2
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +162 -1
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +32 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/strategyCommit.d.ts +14 -0
- package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +4 -0
- package/dist/src/mock/cortexChatStore.d.ts +12 -0
- package/dist/src/services/recommendationApi.d.ts +2 -1
- package/dist/src/services/settingsApi.d.ts +6 -0
- package/dist/src/stores/config.d.ts +374 -0
- package/dist/src/stores/guido-email-editor.d.ts +20 -10
- package/dist/src/stores/onboarding.d.ts +812 -10
- package/dist/src/stores/recommendation.d.ts +5 -0
- package/dist/src/stores/save-validation.d.ts +22 -0
- package/dist/src/stores/setup-settings.d.ts +4 -0
- package/dist/src/utils/dateUtil.d.ts +10 -0
- package/dist/src/utils/genericUtil.d.ts +3 -0
- package/dist/src/utils/stripoEditorApi.d.ts +4 -0
- package/dist/src/utils/templatePreparation.d.ts +30 -0
- package/dist/static/assets/icons/filled-arrow-rising.svg.js +5 -0
- package/dist/static/assets/icons/line-info.svg.js +5 -0
- package/dist/static/styles/components/recommendation-strategy.css.js +113 -9
- package/dist/static/styles/components/skeleton.css.js +23 -0
- package/dist/static/styles/components/version-history.css.js +2 -6
- package/dist/stores/config.js +55 -24
- package/dist/stores/guido-email-editor.js +3 -1
- package/dist/stores/onboarding.js +50 -36
- package/dist/stores/save-validation.js +30 -0
- package/dist/stores/setup-settings.js +10 -0
- package/dist/stores/unsubscribe.js +3 -3
- package/dist/utils/pairProductVariables.js +71 -71
- package/dist/utils/stripoEditorApi.js +11 -0
- package/dist/utils/templatePreparation.js +54 -51
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -95,9 +95,11 @@ import type { GuidoConfigInput } from '@useinsider/guido';
|
|
|
95
95
|
const config: GuidoConfigInput = {
|
|
96
96
|
// Required: Identity
|
|
97
97
|
identity: {
|
|
98
|
-
templateId: string,
|
|
99
|
-
userId: string,
|
|
100
|
-
variationId?: string,
|
|
98
|
+
templateId: string, // Required - Template identifier
|
|
99
|
+
userId: string, // Required - User identifier
|
|
100
|
+
variationId?: string, // Optional - A/B test variation
|
|
101
|
+
campaignId?: string, // Optional - Numeric campaign id; absent for templates/modules
|
|
102
|
+
templateLibraryId?: string, // Optional - Numeric template-library id; absent for campaigns/modules
|
|
101
103
|
},
|
|
102
104
|
|
|
103
105
|
// Required: Partner
|
|
@@ -162,6 +164,7 @@ const config: GuidoConfigInput = {
|
|
|
162
164
|
liquidSyntax?: boolean, // Default: false - Enable Liquid template syntax
|
|
163
165
|
autosave?: boolean, // Default: false - Show the Auto Save toggle in the header. See wiki/AUTOSAVE.md.
|
|
164
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).
|
|
165
168
|
reusableRecommendationStrategy?: boolean, // Default: false - Assign an RRS strategy to recommendation blocks instead of per-block algorithm/filters/shuffle/product-count settings.
|
|
166
169
|
},
|
|
167
170
|
|
|
@@ -184,6 +187,22 @@ const config: GuidoConfigInput = {
|
|
|
184
187
|
};
|
|
185
188
|
```
|
|
186
189
|
|
|
190
|
+
### `identity` ids
|
|
191
|
+
|
|
192
|
+
`templateId` is the editor's **document** identity (a uuid / Stripo doc id) and never addresses a
|
|
193
|
+
backend resource. `campaignId` and `templateLibraryId` are the **numeric** ids of the surface the
|
|
194
|
+
editor was opened on, and they are what Guido uses to resolve host-scoped endpoints — most visibly
|
|
195
|
+
when converting a legacy recommendation block into a reusable strategy.
|
|
196
|
+
|
|
197
|
+
| Surface | `campaignId` | `templateLibraryId` |
|
|
198
|
+
|---------|--------------|---------------------|
|
|
199
|
+
| Campaign editor | the campaign id | absent |
|
|
200
|
+
| Saved template editor | absent | the template-library id |
|
|
201
|
+
| Module editor / unsaved template | absent | absent |
|
|
202
|
+
|
|
203
|
+
Pass only the one that applies. A campaign id takes precedence when both are present, and when
|
|
204
|
+
neither is supplied Guido falls back to campaign scope — so a module keeps working unchanged.
|
|
205
|
+
|
|
187
206
|
### `ready` prop
|
|
188
207
|
|
|
189
208
|
```vue
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModuleFolderDefaults as f } from "../../enums/defaults.js";
|
|
2
|
-
import { object as a, number as
|
|
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,
|
|
@@ -14,31 +14,39 @@ const p = {
|
|
|
14
14
|
UNSUBSCRIBE_PAGES: 97
|
|
15
15
|
}, A = a({
|
|
16
16
|
/** Unique identifier for the template being edited */
|
|
17
|
-
templateId:
|
|
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:
|
|
22
|
+
userId: i(
|
|
23
23
|
t(),
|
|
24
24
|
b(1, "userId is required")
|
|
25
25
|
),
|
|
26
26
|
/** Optional variation ID for A/B testing */
|
|
27
|
-
variationId: e(t())
|
|
27
|
+
variationId: e(t()),
|
|
28
|
+
/** Optional numeric campaign ID of the host campaign; absent for templates and modules */
|
|
29
|
+
campaignId: e(t()),
|
|
30
|
+
/**
|
|
31
|
+
* Optional numeric template-library id of the host template; absent for campaigns and
|
|
32
|
+
* modules. Distinct from `templateId`, which is the editor's document identity (a uuid /
|
|
33
|
+
* Stripo doc id) and is never an endpoint id.
|
|
34
|
+
*/
|
|
35
|
+
templateLibraryId: e(t())
|
|
28
36
|
}), L = a({
|
|
29
37
|
/** Fallback font name (e.g., "Georgia") */
|
|
30
38
|
name: t(),
|
|
31
39
|
/** Fallback font family (e.g., "serif" or "sans-serif") */
|
|
32
40
|
family: t()
|
|
33
|
-
}),
|
|
41
|
+
}), E = a({
|
|
34
42
|
/** Partner/organization name (required) */
|
|
35
|
-
name:
|
|
43
|
+
name: i(
|
|
36
44
|
t(),
|
|
37
45
|
b(1, "partner.name is required")
|
|
38
46
|
),
|
|
39
47
|
/** Product type identifier */
|
|
40
48
|
productType: e(
|
|
41
|
-
|
|
49
|
+
m([
|
|
42
50
|
l.EMAIL,
|
|
43
51
|
l.ARCHITECT,
|
|
44
52
|
l.UNSUBSCRIBE_PAGES
|
|
@@ -47,14 +55,14 @@ const p = {
|
|
|
47
55
|
),
|
|
48
56
|
/** Message type (promotional or transactional) */
|
|
49
57
|
messageType: e(
|
|
50
|
-
|
|
58
|
+
m([p.PROMOTIONAL, p.TRANSACTIONAL]),
|
|
51
59
|
p.PROMOTIONAL
|
|
52
60
|
),
|
|
53
61
|
/** Display name for the current user */
|
|
54
62
|
username: e(t(), "Guido User"),
|
|
55
63
|
/** Fallback font settings from partner settings — used to match backend size calculation */
|
|
56
64
|
fallbackFont: e(L)
|
|
57
|
-
}),
|
|
65
|
+
}), M = a({
|
|
58
66
|
/** Display text for the dynamic content */
|
|
59
67
|
text: t(),
|
|
60
68
|
/** Template variable value (e.g., {{username}}) */
|
|
@@ -68,7 +76,7 @@ const p = {
|
|
|
68
76
|
value: t()
|
|
69
77
|
})
|
|
70
78
|
)
|
|
71
|
-
}), S =
|
|
79
|
+
}), S = T(() => C({
|
|
72
80
|
text: e(t()),
|
|
73
81
|
// eslint-disable-next-line camelcase -- backend field name
|
|
74
82
|
tag_text: e(t()),
|
|
@@ -76,14 +84,14 @@ const p = {
|
|
|
76
84
|
children: e(c(S)),
|
|
77
85
|
// eslint-disable-next-line camelcase -- backend field name
|
|
78
86
|
select_items: e(c(S))
|
|
79
|
-
})), N =
|
|
87
|
+
})), N = g(
|
|
80
88
|
t(),
|
|
81
89
|
R(c(S), [])
|
|
82
|
-
), P =
|
|
90
|
+
), P = C({
|
|
83
91
|
/** Block ID (matches the dictionary key and the legacy HTML element id) */
|
|
84
|
-
id: e(
|
|
92
|
+
id: e(s()),
|
|
85
93
|
/** Decimal places for price display (legacy data may use string or number) */
|
|
86
|
-
decimalCount: e(h([t(),
|
|
94
|
+
decimalCount: e(h([t(), s()])),
|
|
87
95
|
/** Pinned product IDs (empty array when filter-driven) */
|
|
88
96
|
productIds: e(c(r())),
|
|
89
97
|
/** Whether the block requested live products at send time */
|
|
@@ -103,11 +111,11 @@ const p = {
|
|
|
103
111
|
/** Snapshot of products as rendered by the legacy block */
|
|
104
112
|
recommendedProducts: e(c(r())),
|
|
105
113
|
/** Number of product cards per row */
|
|
106
|
-
cardsInRow: e(
|
|
114
|
+
cardsInRow: e(s()),
|
|
107
115
|
/** Mobile-only padding (right) */
|
|
108
|
-
mobileRightPadding: e(
|
|
116
|
+
mobileRightPadding: e(s()),
|
|
109
117
|
/** Mobile-only padding (left) */
|
|
110
|
-
mobileLeftPadding: e(
|
|
118
|
+
mobileLeftPadding: e(s()),
|
|
111
119
|
/** Disable responsive scaling */
|
|
112
120
|
unresponsive: e(o()),
|
|
113
121
|
/** Layout orientation ('vertical' | 'horizontal') */
|
|
@@ -117,7 +125,7 @@ const p = {
|
|
|
117
125
|
/** Block type marker used by some legacy variants */
|
|
118
126
|
blockType: e(t()),
|
|
119
127
|
/** Size variant marker (legacy data may use string or number) */
|
|
120
|
-
size: e(h([t(),
|
|
128
|
+
size: e(h([t(), s()])),
|
|
121
129
|
/** Vertical responsiveness flag (legacy size=1 variants) */
|
|
122
130
|
verticalResponsiveness: e(o()),
|
|
123
131
|
/** Legacy "Move to next line" price placement toggle (cardPricePlacement.js) */
|
|
@@ -132,7 +140,7 @@ const p = {
|
|
|
132
140
|
* strategy, currency, locale, and layout data.
|
|
133
141
|
*/
|
|
134
142
|
recommendationConfigs: e(
|
|
135
|
-
|
|
143
|
+
g(t(), P),
|
|
136
144
|
{}
|
|
137
145
|
)
|
|
138
146
|
}), x = a({
|
|
@@ -142,7 +150,7 @@ const p = {
|
|
|
142
150
|
css: e(t(), ""),
|
|
143
151
|
/** Preselected dynamic content items */
|
|
144
152
|
preselectedDynamicContent: e(
|
|
145
|
-
c(
|
|
153
|
+
c(M),
|
|
146
154
|
[]
|
|
147
155
|
),
|
|
148
156
|
/**
|
|
@@ -155,7 +163,7 @@ const p = {
|
|
|
155
163
|
/** Valid custom field attribute names from the partner's categorized fields */
|
|
156
164
|
customFieldAttributes: e(c(t()), []),
|
|
157
165
|
/** Selected unsubscribe page IDs */
|
|
158
|
-
selectedUnsubscribePages: e(c(
|
|
166
|
+
selectedUnsubscribePages: e(c(s()), []),
|
|
159
167
|
/** Force recreate template in Stripo storage (use true when updating externally modified templates) */
|
|
160
168
|
forceRecreate: e(o(), !1),
|
|
161
169
|
/**
|
|
@@ -166,12 +174,25 @@ const p = {
|
|
|
166
174
|
* mount. Non-numbers still fail, like every other field in this schema.
|
|
167
175
|
*/
|
|
168
176
|
trackIdCounter: e(
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
177
|
+
i(
|
|
178
|
+
s(),
|
|
179
|
+
y((n) => Number.isFinite(n) ? Math.max(0, Math.floor(n)) : 0)
|
|
172
180
|
),
|
|
173
181
|
0
|
|
174
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
|
+
),
|
|
175
196
|
/** Migration-only inputs (legacy block configs) */
|
|
176
197
|
migration: e(v, {})
|
|
177
198
|
}), D = a({
|
|
@@ -185,7 +206,7 @@ const p = {
|
|
|
185
206
|
/** Path to translations object */
|
|
186
207
|
translationsPath: e(t(), "window.trans[Object.keys(window.trans)[0]]"),
|
|
187
208
|
/** Migration date for template compatibility */
|
|
188
|
-
migrationDate: e(
|
|
209
|
+
migrationDate: e(s(), 1759696858),
|
|
189
210
|
/** Email header settings */
|
|
190
211
|
emailHeader: e(D, { senderName: "", subject: "" }),
|
|
191
212
|
/** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
|
|
@@ -220,8 +241,10 @@ const p = {
|
|
|
220
241
|
allowlistEnabled: e(o(), !1),
|
|
221
242
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
222
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),
|
|
223
246
|
reusableRecommendationStrategy: e(o(), !1)
|
|
224
|
-
}),
|
|
247
|
+
}), w = m([
|
|
225
248
|
"amp-accordion",
|
|
226
249
|
"amp-carousel",
|
|
227
250
|
"amp-form-controls",
|
|
@@ -235,7 +258,7 @@ const p = {
|
|
|
235
258
|
"text-block",
|
|
236
259
|
"timer-block",
|
|
237
260
|
"video-block"
|
|
238
|
-
]),
|
|
261
|
+
]), B = m([
|
|
239
262
|
"dynamic-content",
|
|
240
263
|
"checkbox-block",
|
|
241
264
|
"radio-button-block",
|
|
@@ -243,15 +266,15 @@ const p = {
|
|
|
243
266
|
"unsubscribe-block",
|
|
244
267
|
"coupon-block",
|
|
245
268
|
"items-block"
|
|
246
|
-
]),
|
|
269
|
+
]), j = a({
|
|
247
270
|
/** Default blocks to exclude from the editor */
|
|
248
271
|
excludeDefaults: e(
|
|
249
|
-
c(
|
|
272
|
+
c(w),
|
|
250
273
|
[]
|
|
251
274
|
),
|
|
252
275
|
/** Custom blocks to include in the editor */
|
|
253
276
|
includeCustoms: e(
|
|
254
|
-
c(
|
|
277
|
+
c(B),
|
|
255
278
|
[]
|
|
256
279
|
)
|
|
257
280
|
}), d = a({
|
|
@@ -260,8 +283,8 @@ const p = {
|
|
|
260
283
|
/** Human-readable description */
|
|
261
284
|
description: e(t()),
|
|
262
285
|
/** Priority for rule ordering (lower = earlier) */
|
|
263
|
-
priority:
|
|
264
|
-
}),
|
|
286
|
+
priority: s()
|
|
287
|
+
}), H = a({
|
|
265
288
|
...d.entries,
|
|
266
289
|
type: u("replace"),
|
|
267
290
|
/** String to search for */
|
|
@@ -270,7 +293,7 @@ const p = {
|
|
|
270
293
|
replacement: t(),
|
|
271
294
|
/** Replace all occurrences (default: false) */
|
|
272
295
|
replaceAll: e(o())
|
|
273
|
-
}),
|
|
296
|
+
}), _ = a({
|
|
274
297
|
...d.entries,
|
|
275
298
|
type: u("regex"),
|
|
276
299
|
/** Regex pattern string */
|
|
@@ -288,13 +311,13 @@ const p = {
|
|
|
288
311
|
...d.entries,
|
|
289
312
|
type: u("custom"),
|
|
290
313
|
/** Custom processor function */
|
|
291
|
-
processor:
|
|
292
|
-
(
|
|
314
|
+
processor: k(
|
|
315
|
+
(n) => typeof n == "function",
|
|
293
316
|
"processor must be a function"
|
|
294
317
|
)
|
|
295
|
-
}), V =
|
|
318
|
+
}), V = I("type", [
|
|
319
|
+
H,
|
|
296
320
|
_,
|
|
297
|
-
j,
|
|
298
321
|
q,
|
|
299
322
|
G
|
|
300
323
|
]), z = a({
|
|
@@ -302,23 +325,23 @@ const p = {
|
|
|
302
325
|
customRules: e(c(V), []),
|
|
303
326
|
/** Skip default compiler rules */
|
|
304
327
|
ignoreDefaultRules: e(o(), !1)
|
|
305
|
-
}),
|
|
328
|
+
}), W = a({
|
|
306
329
|
/**
|
|
307
330
|
* External validation handler called before save completes.
|
|
308
331
|
* Return false to cancel the save operation.
|
|
309
332
|
*/
|
|
310
333
|
externalValidation: e(
|
|
311
|
-
|
|
312
|
-
(
|
|
334
|
+
k(
|
|
335
|
+
(n) => typeof n == "function",
|
|
313
336
|
"externalValidation must be a function"
|
|
314
337
|
)
|
|
315
338
|
)
|
|
316
|
-
}),
|
|
339
|
+
}), K = a({
|
|
317
340
|
// Required sections
|
|
318
341
|
/** Identity configuration (required) */
|
|
319
342
|
identity: A,
|
|
320
343
|
/** Partner configuration (required) */
|
|
321
|
-
partner:
|
|
344
|
+
partner: E,
|
|
322
345
|
// Optional sections (with defaults)
|
|
323
346
|
/** Template content and presets */
|
|
324
347
|
template: e(x, {}),
|
|
@@ -329,36 +352,36 @@ const p = {
|
|
|
329
352
|
/** Feature toggles */
|
|
330
353
|
features: e(U, {}),
|
|
331
354
|
/** Block configuration */
|
|
332
|
-
blocks: e(
|
|
355
|
+
blocks: e(j, {}),
|
|
333
356
|
/** Compiler configuration */
|
|
334
357
|
compiler: e(z, {}),
|
|
335
358
|
/** Callbacks and event handlers */
|
|
336
|
-
callbacks: e(
|
|
359
|
+
callbacks: e(W, {})
|
|
337
360
|
});
|
|
338
361
|
export {
|
|
339
|
-
|
|
340
|
-
|
|
362
|
+
j as BlocksSchema,
|
|
363
|
+
W as CallbacksSchema,
|
|
341
364
|
V as CompilerRuleSchema,
|
|
342
365
|
z as CompilerSchema,
|
|
343
|
-
|
|
366
|
+
B as CustomBlockTypeSchema,
|
|
344
367
|
G as CustomRuleSchema,
|
|
345
|
-
|
|
368
|
+
w as DefaultBlockTypeSchema,
|
|
346
369
|
N as DynamicContentListSchema,
|
|
347
370
|
S as DynamicContentNodeSchema,
|
|
348
|
-
|
|
371
|
+
M as DynamicContentSchema,
|
|
349
372
|
O as EditorSchema,
|
|
350
373
|
D as EmailHeaderSchema,
|
|
351
374
|
L as FallbackFontSchema,
|
|
352
375
|
U as FeaturesSchema,
|
|
353
|
-
|
|
376
|
+
K as GuidoConfigSchema,
|
|
354
377
|
A as IdentitySchema,
|
|
355
378
|
P as LegacyRecommendationConfigSchema,
|
|
356
379
|
p as MessageType,
|
|
357
|
-
|
|
380
|
+
E as PartnerSchema,
|
|
358
381
|
l as ProductType,
|
|
359
|
-
|
|
382
|
+
_ as RegexRuleSchema,
|
|
360
383
|
q as RemoveRuleSchema,
|
|
361
|
-
|
|
384
|
+
H as ReplaceRuleSchema,
|
|
362
385
|
v as TemplateMigrationSchema,
|
|
363
386
|
x as TemplateSchema,
|
|
364
387
|
F as UISchema
|
|
@@ -3,7 +3,7 @@ import o from "./Guido.vue2.js";
|
|
|
3
3
|
import i from "../_virtual/_plugin-vue2_normalizer.js";
|
|
4
4
|
var t = 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(), r(e.SaveAsTemplateDrawer), 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.isSaveValidationEnabled ? r(e.ValidationErrorDrawer) : a._e(), 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
9
|
}, s = [], n = /* @__PURE__ */ i(
|
|
@@ -12,9 +12,9 @@ var t = function() {
|
|
|
12
12
|
s,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
|
-
"
|
|
15
|
+
"d0a8825a"
|
|
16
16
|
);
|
|
17
|
-
const
|
|
17
|
+
const v = n.exports;
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
v as default
|
|
20
20
|
};
|