@useinsider/guido 3.19.0-beta.0a1f92f → 3.19.0-beta.0b78e99
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 +21 -3
- package/dist/@types/config/schemas.js +71 -51
- package/dist/components/Guido.vue.js +11 -11
- package/dist/components/Guido.vue2.js +90 -90
- package/dist/components/organisms/AutoSaveController.vue2.js +8 -10
- 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/AutoSaveToggle.vue.js +22 -0
- package/dist/components/organisms/header/AutoSaveToggle.vue2.js +19 -0
- package/dist/components/organisms/header/EditorActions.vue.js +13 -13
- package/dist/components/organisms/header/EditorActions.vue2.js +51 -37
- package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -6
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +17 -9
- package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
- package/dist/components/organisms/header/LeftSlot.vue2.js +23 -32
- package/dist/components/organisms/header/MiddleSlot.vue.js +4 -4
- package/dist/components/organisms/header/MiddleSlot.vue2.js +7 -8
- package/dist/components/organisms/header/RightSlot.vue.js +8 -9
- package/dist/components/organisms/header/RightSlot.vue2.js +18 -13
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -12
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +40 -54
- 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/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 +11 -11
- package/dist/composables/useCodeEditorApi.js +23 -9
- package/dist/composables/useCustomInterfaceAppearance.js +65 -52
- package/dist/composables/useHtmlValidator.js +87 -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/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/useLiquidValidator.js +15 -15
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +72 -57
- package/dist/config/i18n/en/labels.json.js +4 -36
- package/dist/config/i18n/en/tooltips.json.js +1 -2
- 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/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 +92 -50
- 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/controls/mobileLayout/cssRules.js +15 -11
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +274 -92
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +16 -16
- package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +91 -87
- 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/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/sprite.svg +0 -6
- package/dist/src/@types/config/schemas.d.ts +32 -2
- package/dist/src/components/organisms/AutoSaveController.vue.d.ts +1 -3
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +3 -1
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +3 -1
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useActionsApi.d.ts +2 -2
- package/dist/src/composables/useAuthError.d.ts +12 -0
- package/dist/src/composables/useConfig.d.ts +6 -2
- package/dist/src/composables/useGuidoActions.d.ts +2 -0
- package/dist/src/composables/useHttp.d.ts +2 -0
- package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -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/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 +11 -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/templates/utils.d.ts +5 -2
- 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/stores/config.d.ts +342 -18
- package/dist/src/stores/editor.d.ts +0 -109
- package/dist/src/stores/onboarding.d.ts +288 -201
- package/dist/src/stores/recommendation.d.ts +5 -0
- package/dist/src/stores/version-history.d.ts +1 -1
- package/dist/src/utils/dateUtil.d.ts +10 -0
- package/dist/src/utils/fluidImageStyle.d.ts +7 -0
- package/dist/src/utils/genericUtil.d.ts +3 -0
- package/dist/src/utils/stripoEditorApi.d.ts +4 -0
- package/dist/src/utils/timeUtil.d.ts +0 -5
- 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/static/styles/variables.css.js +0 -2
- package/dist/stores/config.js +74 -60
- package/dist/stores/editor.js +4 -7
- package/dist/stores/onboarding.js +34 -42
- package/dist/stores/unsubscribe.js +3 -3
- package/dist/utils/fluidImageStyle.js +26 -0
- package/dist/utils/pairProductVariables.js +71 -71
- package/dist/utils/stripoEditorApi.js +11 -0
- package/dist/utils/templatePreparation.js +55 -55
- package/dist/utils/timeUtil.js +17 -6
- package/package.json +2 -1
- package/dist/components/organisms/header/AutoSaveStatus.vue.js +0 -17
- package/dist/components/organisms/header/AutoSaveStatus.vue2.js +0 -25
- package/dist/components/organisms/header/EditorActionsMenu.vue.js +0 -20
- package/dist/components/organisms/header/EditorActionsMenu.vue2.js +0 -98
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue.js +0 -18
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue2.js +0 -37
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue.js +0 -22
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue2.js +0 -48
- package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue.js +0 -19
- package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue2.js +0 -90
- package/dist/composables/useAccessibilityApi.js +0 -35
- package/dist/src/composables/useAccessibilityApi.d.ts +0 -15
- package/dist/static/styles/components/accessibility.css.js +0 -234
- /package/dist/src/components/organisms/{header/AutoSaveStatus.vue.d.ts → base/AuthErrorModal.vue.d.ts} +0 -0
- /package/dist/src/components/organisms/{header/EditorActionsMenu.vue.d.ts → extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts} +0 -0
- /package/dist/src/components/organisms/header/{accessibility/AccessibilityToolbar.vue.d.ts → AutoSaveToggle.vue.d.ts} +0 -0
- /package/dist/src/components/organisms/{header/accessibility/ColorVisionSelect.vue.d.ts → onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts} +0 -0
- /package/dist/src/components/organisms/onboarding/{EditorTabBarOnboarding.vue.d.ts → RecommendationStrategyOnboarding.vue.d.ts} +0 -0
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
|
|
@@ -184,6 +186,22 @@ const config: GuidoConfigInput = {
|
|
|
184
186
|
};
|
|
185
187
|
```
|
|
186
188
|
|
|
189
|
+
### `identity` ids
|
|
190
|
+
|
|
191
|
+
`templateId` is the editor's **document** identity (a uuid / Stripo doc id) and never addresses a
|
|
192
|
+
backend resource. `campaignId` and `templateLibraryId` are the **numeric** ids of the surface the
|
|
193
|
+
editor was opened on, and they are what Guido uses to resolve host-scoped endpoints — most visibly
|
|
194
|
+
when converting a legacy recommendation block into a reusable strategy.
|
|
195
|
+
|
|
196
|
+
| Surface | `campaignId` | `templateLibraryId` |
|
|
197
|
+
|---------|--------------|---------------------|
|
|
198
|
+
| Campaign editor | the campaign id | absent |
|
|
199
|
+
| Saved template editor | absent | the template-library id |
|
|
200
|
+
| Module editor / unsaved template | absent | absent |
|
|
201
|
+
|
|
202
|
+
Pass only the one that applies. A campaign id takes precedence when both are present, and when
|
|
203
|
+
neither is supplied Guido falls back to campaign scope — so a module keeps working unchanged.
|
|
204
|
+
|
|
187
205
|
### `ready` prop
|
|
188
206
|
|
|
189
207
|
```vue
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModuleFolderDefaults as S } 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,17 +14,25 @@ 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(),
|
|
@@ -32,13 +40,13 @@ const p = {
|
|
|
32
40
|
family: t()
|
|
33
41
|
}), M = 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,7 +55,7 @@ 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 */
|
|
@@ -68,7 +76,7 @@ const p = {
|
|
|
68
76
|
value: t()
|
|
69
77
|
})
|
|
70
78
|
)
|
|
71
|
-
}), f =
|
|
79
|
+
}), f = 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(f)),
|
|
77
85
|
// eslint-disable-next-line camelcase -- backend field name
|
|
78
86
|
select_items: e(c(f))
|
|
79
|
-
})), N =
|
|
87
|
+
})), N = g(
|
|
80
88
|
t(),
|
|
81
89
|
R(c(f), [])
|
|
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(
|
|
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,14 +125,14 @@ 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(
|
|
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) */
|
|
124
132
|
isPriceMovedToNextLine: e(o()),
|
|
125
133
|
/** Legacy "Hide if same as discounted" / delete-price-for-zero-sale toggle */
|
|
126
134
|
isPriceDeletedForZeroSale: e(o())
|
|
127
|
-
}),
|
|
135
|
+
}), x = a({
|
|
128
136
|
/**
|
|
129
137
|
* Legacy recommendation block configs keyed by block ID.
|
|
130
138
|
* Pass this when loading a template authored with the v1
|
|
@@ -132,10 +140,10 @@ 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
|
+
}), D = a({
|
|
139
147
|
/** Initial HTML content */
|
|
140
148
|
html: e(t(), ""),
|
|
141
149
|
/** Initial CSS content */
|
|
@@ -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,28 +174,41 @@ 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
|
-
migration: e(
|
|
177
|
-
}),
|
|
197
|
+
migration: e(x, {})
|
|
198
|
+
}), O = a({
|
|
178
199
|
/** Sender display name */
|
|
179
200
|
senderName: e(t(), ""),
|
|
180
201
|
/** Email subject line */
|
|
181
202
|
subject: e(t(), "")
|
|
182
|
-
}),
|
|
203
|
+
}), v = a({
|
|
183
204
|
/** Locale for the editor UI */
|
|
184
205
|
locale: e(t(), "en"),
|
|
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
|
-
emailHeader: e(
|
|
211
|
+
emailHeader: e(O, { senderName: "", subject: "" }),
|
|
191
212
|
/** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
|
|
192
213
|
savedModulesFolderName: e(t(), S.SAVED_MODULES),
|
|
193
214
|
/** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
|
|
@@ -216,13 +237,12 @@ const p = {
|
|
|
216
237
|
liquidSyntax: e(o(), !1),
|
|
217
238
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
218
239
|
autosave: e(o(), !1),
|
|
219
|
-
accessibilityTesting: e(o(), !1),
|
|
220
240
|
/** Enable pre-save domain-allowlist validation (opt-in; Guido self-serves the block toaster) */
|
|
221
241
|
allowlistEnabled: e(o(), !1),
|
|
222
242
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
223
243
|
linkTrackingIds: e(o(), !1),
|
|
224
244
|
reusableRecommendationStrategy: e(o(), !1)
|
|
225
|
-
}), B =
|
|
245
|
+
}), B = m([
|
|
226
246
|
"amp-accordion",
|
|
227
247
|
"amp-carousel",
|
|
228
248
|
"amp-form-controls",
|
|
@@ -236,7 +256,7 @@ const p = {
|
|
|
236
256
|
"text-block",
|
|
237
257
|
"timer-block",
|
|
238
258
|
"video-block"
|
|
239
|
-
]), w =
|
|
259
|
+
]), w = m([
|
|
240
260
|
"dynamic-content",
|
|
241
261
|
"checkbox-block",
|
|
242
262
|
"radio-button-block",
|
|
@@ -244,7 +264,7 @@ const p = {
|
|
|
244
264
|
"unsubscribe-block",
|
|
245
265
|
"coupon-block",
|
|
246
266
|
"items-block"
|
|
247
|
-
]),
|
|
267
|
+
]), j = a({
|
|
248
268
|
/** Default blocks to exclude from the editor */
|
|
249
269
|
excludeDefaults: e(
|
|
250
270
|
c(B),
|
|
@@ -261,8 +281,8 @@ const p = {
|
|
|
261
281
|
/** Human-readable description */
|
|
262
282
|
description: e(t()),
|
|
263
283
|
/** Priority for rule ordering (lower = earlier) */
|
|
264
|
-
priority:
|
|
265
|
-
}),
|
|
284
|
+
priority: s()
|
|
285
|
+
}), H = a({
|
|
266
286
|
...d.entries,
|
|
267
287
|
type: u("replace"),
|
|
268
288
|
/** String to search for */
|
|
@@ -271,7 +291,7 @@ const p = {
|
|
|
271
291
|
replacement: t(),
|
|
272
292
|
/** Replace all occurrences (default: false) */
|
|
273
293
|
replaceAll: e(o())
|
|
274
|
-
}),
|
|
294
|
+
}), _ = a({
|
|
275
295
|
...d.entries,
|
|
276
296
|
type: u("regex"),
|
|
277
297
|
/** Regex pattern string */
|
|
@@ -289,13 +309,13 @@ const p = {
|
|
|
289
309
|
...d.entries,
|
|
290
310
|
type: u("custom"),
|
|
291
311
|
/** Custom processor function */
|
|
292
|
-
processor:
|
|
293
|
-
(
|
|
312
|
+
processor: k(
|
|
313
|
+
(n) => typeof n == "function",
|
|
294
314
|
"processor must be a function"
|
|
295
315
|
)
|
|
296
|
-
}), V =
|
|
316
|
+
}), V = I("type", [
|
|
317
|
+
H,
|
|
297
318
|
_,
|
|
298
|
-
j,
|
|
299
319
|
q,
|
|
300
320
|
G
|
|
301
321
|
]), z = a({
|
|
@@ -309,8 +329,8 @@ const p = {
|
|
|
309
329
|
* Return false to cancel the save operation.
|
|
310
330
|
*/
|
|
311
331
|
externalValidation: e(
|
|
312
|
-
|
|
313
|
-
(
|
|
332
|
+
k(
|
|
333
|
+
(n) => typeof n == "function",
|
|
314
334
|
"externalValidation must be a function"
|
|
315
335
|
)
|
|
316
336
|
)
|
|
@@ -322,22 +342,22 @@ const p = {
|
|
|
322
342
|
partner: M,
|
|
323
343
|
// Optional sections (with defaults)
|
|
324
344
|
/** Template content and presets */
|
|
325
|
-
template: e(
|
|
345
|
+
template: e(D, {}),
|
|
326
346
|
/** Editor settings */
|
|
327
|
-
editor: e(
|
|
347
|
+
editor: e(v, {}),
|
|
328
348
|
/** UI configuration */
|
|
329
349
|
ui: e(F, {}),
|
|
330
350
|
/** Feature toggles */
|
|
331
351
|
features: e(U, {}),
|
|
332
352
|
/** Block configuration */
|
|
333
|
-
blocks: e(
|
|
353
|
+
blocks: e(j, {}),
|
|
334
354
|
/** Compiler configuration */
|
|
335
355
|
compiler: e(z, {}),
|
|
336
356
|
/** Callbacks and event handlers */
|
|
337
357
|
callbacks: e(Z, {})
|
|
338
358
|
});
|
|
339
359
|
export {
|
|
340
|
-
|
|
360
|
+
j as BlocksSchema,
|
|
341
361
|
Z as CallbacksSchema,
|
|
342
362
|
V as CompilerRuleSchema,
|
|
343
363
|
z as CompilerSchema,
|
|
@@ -347,8 +367,8 @@ export {
|
|
|
347
367
|
N as DynamicContentListSchema,
|
|
348
368
|
f as DynamicContentNodeSchema,
|
|
349
369
|
E as DynamicContentSchema,
|
|
350
|
-
|
|
351
|
-
|
|
370
|
+
v as EditorSchema,
|
|
371
|
+
O as EmailHeaderSchema,
|
|
352
372
|
L as FallbackFontSchema,
|
|
353
373
|
U as FeaturesSchema,
|
|
354
374
|
Q as GuidoConfigSchema,
|
|
@@ -357,10 +377,10 @@ export {
|
|
|
357
377
|
p as MessageType,
|
|
358
378
|
M as PartnerSchema,
|
|
359
379
|
l as ProductType,
|
|
360
|
-
|
|
380
|
+
_ as RegexRuleSchema,
|
|
361
381
|
q as RemoveRuleSchema,
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
382
|
+
H as ReplaceRuleSchema,
|
|
383
|
+
x as TemplateMigrationSchema,
|
|
384
|
+
D as TemplateSchema,
|
|
365
385
|
F as UISchema
|
|
366
386
|
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from "./Guido.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper
|
|
3
|
+
import t from "../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var i = function() {
|
|
5
|
+
var a = this, r = a._self._c, e = a._self._setupProxy;
|
|
6
|
+
return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), r(e.AutoSaveController), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : a._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.AuthErrorModal), r(e.FilterSelectionDrawer), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.AssignStrategyDrawer) : a._e(), e.isRrsEnabled || e.hasAssignedStrategy ? r(e.RemoveStrategyModal) : a._e(), e.isRrsEnabled ? r(e.LegacyStrategyUpdatedModal) : a._e(), r(e.SaveAsTemplateDrawer), e.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__ */
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
}, s = [], n = /* @__PURE__ */ t(
|
|
10
|
+
o,
|
|
11
|
+
i,
|
|
12
12
|
s,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
|
-
"
|
|
15
|
+
"926b01f5"
|
|
16
16
|
);
|
|
17
|
-
const
|
|
17
|
+
const f = n.exports;
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
f as default
|
|
20
20
|
};
|
|
@@ -1,62 +1,58 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useCortexBlueprintBridge as
|
|
3
|
-
import { useEditorLock as
|
|
4
|
-
import { provideGuidoActions as
|
|
5
|
-
import { useGuidoStateBridge as
|
|
6
|
-
import { usePartner as
|
|
7
|
-
import { useStripo as
|
|
8
|
-
import { useTimerClone as
|
|
9
|
-
import { migrate as
|
|
1
|
+
import { defineComponent as ae, defineAsyncComponent as m, ref as x, computed as u, watch as W, onMounted as se, onUnmounted as ie } from "vue";
|
|
2
|
+
import { useCortexBlueprintBridge as ce } from "../composables/useCortexBlueprintBridge.js";
|
|
3
|
+
import { useEditorLock as de } from "../composables/useEditorLock.js";
|
|
4
|
+
import { provideGuidoActions as me } from "../composables/useGuidoActions.js";
|
|
5
|
+
import { useGuidoStateBridge as le } from "../composables/useGuidoStateBridge.js";
|
|
6
|
+
import { usePartner as ue } from "../composables/usePartner.js";
|
|
7
|
+
import { useStripo as pe } from "../composables/useStripo.js";
|
|
8
|
+
import { useTimerClone as fe } from "../composables/useTimerClone.js";
|
|
9
|
+
import { migrate as G } from "../config/migrator/index.js";
|
|
10
10
|
import { ModuleFolderDefaults as H } from "../enums/defaults.js";
|
|
11
|
-
import { RIBBON_SELECTOR as
|
|
12
|
-
import { useRecommendationExtensionStore as
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
11
|
+
import { RIBBON_SELECTOR as ye } from "../enums/onboarding.js";
|
|
12
|
+
import { useRecommendationExtensionStore as h } from "../extensions/Blocks/Recommendation/store/recommendation.js";
|
|
13
|
+
import ge from "./organisms/AutoSaveController.vue.js";
|
|
14
|
+
import Se from "./organisms/base/AuthErrorModal.vue.js";
|
|
15
|
+
import ve from "./organisms/base/Toaster.vue.js";
|
|
16
|
+
import be from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
17
|
+
import he from "./organisms/header/HeaderWrapper.vue.js";
|
|
18
|
+
import Ee from "./organisms/LoadingWrapper.vue.js";
|
|
19
|
+
import we from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
20
|
+
import Ce from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
21
|
+
import { useStripoApi as De } from "../services/stripoApi.js";
|
|
22
|
+
import { useConfigStore as ke } from "../stores/config.js";
|
|
23
|
+
import { useDynamicContentStore as Fe } from "../stores/dynamic-content.js";
|
|
24
|
+
import { useEditorStore as $ } from "../stores/editor.js";
|
|
25
|
+
import { usePreviewStore as Me } from "../stores/preview.js";
|
|
26
|
+
import { useTemplateStore as Re } from "../stores/template.js";
|
|
26
27
|
import { useUnsubscribeStore as Te } from "../stores/unsubscribe.js";
|
|
27
|
-
import { readTrackFloor as
|
|
28
|
-
const
|
|
28
|
+
import { readTrackFloor as z } from "../utils/linkTrackingIds.js";
|
|
29
|
+
const rt = /* @__PURE__ */ ae({
|
|
29
30
|
__name: "Guido",
|
|
30
31
|
props: {
|
|
31
32
|
config: null,
|
|
32
33
|
ready: { type: Boolean, default: !0 }
|
|
33
34
|
},
|
|
34
35
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
35
|
-
setup(
|
|
36
|
-
const
|
|
36
|
+
setup(q, { expose: K, emit: r }) {
|
|
37
|
+
const s = q, V = m(
|
|
37
38
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
39
|
+
), j = m(
|
|
39
40
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
),
|
|
41
|
+
), J = m(
|
|
41
42
|
() => import("./organisms/extensions/recommendation/AssignStrategyDrawer.vue.js")
|
|
42
|
-
),
|
|
43
|
+
), Q = m(
|
|
43
44
|
() => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
|
|
44
|
-
),
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
), X = m(
|
|
46
|
+
() => import("./organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js")
|
|
47
|
+
), E = x(), p = x(), f = Fe(), w = Te(), o = ke();
|
|
48
|
+
s.ready && o.init(s.config);
|
|
49
|
+
const c = $(), Y = Me(), l = u(() => c.hasChanges), { isTestPartner: Z } = ue(), C = () => {
|
|
47
50
|
var t;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
isAccessibilityTestingOpen: s.isAccessibilityTestingOpen
|
|
52
|
-
});
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
return (t = h.value) == null ? void 0 : t.saveSilent();
|
|
56
|
-
}, C = (t) => {
|
|
57
|
-
s.loadingStatus = t;
|
|
51
|
+
return (t = E.value) == null ? void 0 : t.handleSave(!0);
|
|
52
|
+
}, D = (t) => {
|
|
53
|
+
c.loadingStatus = t;
|
|
58
54
|
};
|
|
59
|
-
|
|
55
|
+
ce(), le();
|
|
60
56
|
const y = () => {
|
|
61
57
|
var t, e;
|
|
62
58
|
return {
|
|
@@ -67,15 +63,15 @@ const et = /* @__PURE__ */ ne({
|
|
|
67
63
|
savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || H.SAVED_MODULES,
|
|
68
64
|
defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || H.DEFAULT_MODULES
|
|
69
65
|
};
|
|
70
|
-
}, { initPlugin: k, preloadRuntime:
|
|
66
|
+
}, { initPlugin: k, preloadRuntime: F } = pe(), { runExclusive: M, beginMount: R, isCurrentMount: T } = de();
|
|
71
67
|
let g = 0;
|
|
72
|
-
const { getDefaultTemplate: I } =
|
|
68
|
+
const { getDefaultTemplate: I } = De(), { cloneTimersOnSave: L, hasTimerBlocks: U } = fe(), ee = u(() => {
|
|
73
69
|
var t;
|
|
74
70
|
return !((t = o.ui) != null && t.showHeader);
|
|
75
|
-
}),
|
|
76
|
-
() => !!
|
|
71
|
+
}), te = u(() => o.isFeatureEnabled("reusableRecommendationStrategy")), oe = u(
|
|
72
|
+
() => !!h().recommendationConfigs.strategyId
|
|
77
73
|
);
|
|
78
|
-
|
|
74
|
+
me({
|
|
79
75
|
onBack: () => {
|
|
80
76
|
console.debug("guido:back"), r("back");
|
|
81
77
|
},
|
|
@@ -90,80 +86,84 @@ const et = /* @__PURE__ */ ne({
|
|
|
90
86
|
console.debug("guido:test-email:click"), r("test-email:click");
|
|
91
87
|
}
|
|
92
88
|
});
|
|
93
|
-
const
|
|
89
|
+
const A = (t) => {
|
|
94
90
|
console.debug("dynamic-content:close", t), f.setSelectedDynamicContent(t), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: t }));
|
|
95
|
-
},
|
|
91
|
+
}, B = () => {
|
|
96
92
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
97
93
|
};
|
|
98
|
-
|
|
99
|
-
r("on-change",
|
|
94
|
+
W(() => l.value, () => {
|
|
95
|
+
r("on-change", l.value);
|
|
100
96
|
});
|
|
101
|
-
const
|
|
102
|
-
const e = t, { attribute:
|
|
103
|
-
console.debug("dynamic-content:open", e.detail), r("dynamic-content:open",
|
|
97
|
+
const S = (t) => {
|
|
98
|
+
const e = t, { attribute: a, position: d } = e.detail;
|
|
99
|
+
console.debug("dynamic-content:open", e.detail), r("dynamic-content:open", a, d);
|
|
104
100
|
};
|
|
105
|
-
let
|
|
106
|
-
const
|
|
101
|
+
let i = null;
|
|
102
|
+
const v = () => {
|
|
107
103
|
var e;
|
|
108
|
-
const t = document.querySelector(
|
|
104
|
+
const t = document.querySelector(ye);
|
|
109
105
|
(e = p.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
|
|
110
|
-
},
|
|
106
|
+
}, b = async () => {
|
|
111
107
|
var t;
|
|
112
108
|
try {
|
|
113
|
-
o.initialized || o.init(
|
|
114
|
-
const e = o.template,
|
|
115
|
-
|
|
116
|
-
const
|
|
109
|
+
o.initialized || o.init(s.config), c.templateId = o.templateId;
|
|
110
|
+
const e = o.template, a = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", N = (e == null ? void 0 : e.preselectedDynamicContent) || [];
|
|
111
|
+
w.selectedUnsubscribePages = (e == null ? void 0 : e.selectedUnsubscribePages) || [];
|
|
112
|
+
const P = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, _ = o.isFeatureEnabled("linkTrackingIds"), O = {
|
|
113
|
+
partnerName: o.partnerName,
|
|
114
|
+
campaignUrls: e == null ? void 0 : e.recommendationCampaignUrls,
|
|
115
|
+
rrsEnabled: o.isFeatureEnabled("reusableRecommendationStrategy")
|
|
116
|
+
};
|
|
117
117
|
let n = {
|
|
118
|
-
html:
|
|
118
|
+
html: a && await G(a, P, O),
|
|
119
119
|
css: d
|
|
120
120
|
};
|
|
121
|
-
n.html || (n = await I(), n.html = await
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
preselectedDynamicContentList:
|
|
121
|
+
n.html || (n = await I(), n.html = await G(n.html, P, O));
|
|
122
|
+
const ne = _ ? z(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
|
|
123
|
+
U(n.html) && (n.html = await L(n.html)), _ && (c.trackIdSessionFloor = Math.max(ne, z(n.html)));
|
|
124
|
+
const re = {
|
|
125
|
+
preselectedDynamicContentList: N,
|
|
126
126
|
onReady: () => {
|
|
127
127
|
console.debug("guido:ready"), r("ready");
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
|
-
g =
|
|
130
|
+
g = R(), await k(n, y(), re), f.selectedDynamicContentList = N;
|
|
131
131
|
} catch (e) {
|
|
132
132
|
console.error("Failed to initialize Stripo editor:", e);
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
-
return
|
|
135
|
+
return se(async () => {
|
|
136
136
|
var e;
|
|
137
|
-
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"),
|
|
137
|
+
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h().$reset(), $().$reset(), Re().$reset(), v();
|
|
138
138
|
const t = (e = p.value) == null ? void 0 : e.parentElement;
|
|
139
|
-
if (t && (
|
|
140
|
-
await
|
|
139
|
+
if (t && (i = new ResizeObserver(v), i.observe(t)), F(), s.ready)
|
|
140
|
+
await b();
|
|
141
141
|
else {
|
|
142
|
-
const
|
|
143
|
-
d && (
|
|
142
|
+
const a = W(() => s.ready, (d) => {
|
|
143
|
+
d && (a(), b());
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
|
-
document.addEventListener("dynamic-content:open",
|
|
147
|
-
}),
|
|
148
|
-
|
|
149
|
-
if (
|
|
146
|
+
document.addEventListener("dynamic-content:open", S);
|
|
147
|
+
}), ie(() => {
|
|
148
|
+
i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", S), h().disposeStrategyPageReturn(), M(async () => {
|
|
149
|
+
if (T(g))
|
|
150
150
|
try {
|
|
151
151
|
window.UIEditor.removeEditor();
|
|
152
152
|
} catch {
|
|
153
153
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
154
154
|
}
|
|
155
155
|
}), o.reset();
|
|
156
|
-
}),
|
|
156
|
+
}), K({
|
|
157
157
|
dynamicContent: {
|
|
158
|
-
insert:
|
|
159
|
-
close:
|
|
158
|
+
insert: A,
|
|
159
|
+
close: B
|
|
160
160
|
},
|
|
161
|
-
hasChanges:
|
|
162
|
-
saveSilent:
|
|
163
|
-
setLoading:
|
|
164
|
-
}), { __sfc: !0, PreviewContainer:
|
|
161
|
+
hasChanges: l,
|
|
162
|
+
saveSilent: C,
|
|
163
|
+
setLoading: D
|
|
164
|
+
}), { __sfc: !0, PreviewContainer: V, OnboardingWrapper: j, AssignStrategyDrawer: J, RemoveStrategyModal: Q, LegacyStrategyUpdatedModal: X, headerWrapperRef: E, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: w, props: s, configStore: o, editorStore: c, previewStore: Y, hasChanges: l, isTestPartner: Z, saveSilent: C, setLoading: D, emit: r, buildMetadata: y, initPlugin: k, preloadRuntime: F, runExclusive: M, beginMount: R, isCurrentMount: T, mountGeneration: g, getDefaultTemplate: I, cloneTimersOnSave: L, hasTimerBlocks: U, noHeader: ee, isRrsEnabled: te, hasAssignedStrategy: oe, insertDynamicContent: A, closeDynamicContent: B, handleDynamicContentOpen: S, ribbonObserver: i, updateRibbonOffset: v, startEditor: b, AutoSaveController: ge, AuthErrorModal: Se, Toaster: ve, FilterSelectionDrawer: be, HeaderWrapper: he, LoadingWrapper: Ee, SaveAsTemplateDrawer: we, UnsubscribeWrapper: Ce };
|
|
165
165
|
}
|
|
166
166
|
});
|
|
167
167
|
export {
|
|
168
|
-
|
|
168
|
+
rt as default
|
|
169
169
|
};
|