@useinsider/guido 3.19.0-beta.80b64cf → 3.19.0-beta.84c97db
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/dist/@types/config/schemas.js +9 -8
- package/dist/components/Guido.vue.js +8 -8
- package/dist/components/Guido.vue2.js +104 -86
- package/dist/components/organisms/AutoSaveController.vue2.js +18 -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/header/AutoSaveStatus.vue.js +17 -0
- package/dist/components/organisms/header/AutoSaveStatus.vue2.js +25 -0
- package/dist/components/organisms/header/EditorActions.vue.js +13 -13
- package/dist/components/organisms/header/EditorActions.vue2.js +37 -52
- package/dist/components/organisms/header/EditorActionsMenu.vue.js +20 -0
- package/dist/components/organisms/header/EditorActionsMenu.vue2.js +98 -0
- package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -6
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +9 -17
- package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
- package/dist/components/organisms/header/LeftSlot.vue2.js +32 -23
- package/dist/components/organisms/header/MiddleSlot.vue.js +4 -4
- package/dist/components/organisms/header/MiddleSlot.vue2.js +8 -7
- package/dist/components/organisms/header/RightSlot.vue.js +9 -8
- package/dist/components/organisms/header/RightSlot.vue2.js +13 -18
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue.js +18 -0
- package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue2.js +37 -0
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue.js +22 -0
- package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue2.js +48 -0
- package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue.js +19 -0
- package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue2.js +90 -0
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -12
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +56 -38
- package/dist/components/wrappers/WpModal.vue.js +1 -1
- package/dist/components/wrappers/WpModal.vue2.js +4 -3
- package/dist/composables/useAccessibilityApi.js +45 -0
- package/dist/composables/useAuthError.js +52 -0
- package/dist/composables/useAutoSave.js +11 -11
- package/dist/composables/useCortexBlueprintBridge.js +122 -54
- package/dist/composables/useCustomInterfaceAppearance.js +42 -41
- package/dist/composables/useEmailTemplateApplier.js +111 -50
- package/dist/composables/useHttp.js +64 -54
- package/dist/composables/useLegacyStrategyConversion.js +23 -19
- package/dist/composables/useStripo.js +24 -20
- package/dist/composables/useToaster.js +17 -15
- package/dist/composables/validators/useLiquidValidator.js +15 -15
- package/dist/config/i18n/en/labels.json.js +36 -4
- package/dist/config/i18n/en/tooltips.json.js +2 -1
- 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 +30 -29
- 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 +54 -88
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +32 -51
- package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +11 -12
- package/dist/guido.css +1 -1
- package/dist/sprite.svg +10 -0
- package/dist/src/@types/config/schemas.d.ts +2 -0
- package/dist/src/components/organisms/AutoSaveController.vue.d.ts +3 -1
- package/dist/src/components/organisms/header/AutoSaveStatus.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/EditorActionsMenu.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -3
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -3
- package/dist/src/components/organisms/header/accessibility/AccessibilityToolbar.vue.d.ts +2 -0
- package/dist/src/components/organisms/header/accessibility/ColorVisionSelect.vue.d.ts +2 -0
- package/dist/src/components/organisms/onboarding/EditorTabBarOnboarding.vue.d.ts +2 -0
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useAccessibilityApi.d.ts +13 -0
- 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 +2 -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/useHttp.d.ts +2 -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 +1 -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 +0 -6
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +13 -7
- package/dist/src/mock/cortexChatStore.d.ts +12 -0
- package/dist/src/stores/autosave.d.ts +73 -1
- package/dist/src/stores/config.d.ts +20 -0
- package/dist/src/stores/editor.d.ts +109 -0
- package/dist/src/stores/guido-email-editor.d.ts +20 -10
- package/dist/src/stores/onboarding.d.ts +956 -21
- 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/genericUtil.d.ts +3 -0
- package/dist/src/utils/timeUtil.d.ts +5 -0
- package/dist/static/styles/components/accessibility.css.js +234 -0
- package/dist/static/styles/components/version-history.css.js +2 -6
- package/dist/static/styles/variables.css.js +2 -0
- package/dist/stores/autosave.js +12 -7
- package/dist/stores/editor.js +7 -4
- package/dist/stores/guido-email-editor.js +3 -1
- package/dist/stores/onboarding.js +47 -21
- package/dist/utils/pairProductVariables.js +71 -71
- package/dist/utils/timeUtil.js +6 -17
- package/package.json +2 -1
- package/dist/components/organisms/header/AutoSaveToggle.vue.js +0 -22
- package/dist/components/organisms/header/AutoSaveToggle.vue2.js +0 -19
- /package/dist/src/components/organisms/{header/AutoSaveToggle.vue.d.ts → base/AuthErrorModal.vue.d.ts} +0 -0
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { useConfig as
|
|
5
|
-
import { BlockId as
|
|
6
|
-
import { getMigrationBannerHtml as
|
|
7
|
-
import { Block as
|
|
8
|
-
import { CURRENT_CONFIG_VERSION as
|
|
9
|
-
import { RECOMMENDATION_ID_ATTR as
|
|
10
|
-
import { regenerateMobileProductRows as
|
|
11
|
-
import { ensureMobileCssRulesExist as
|
|
1
|
+
var y = Object.defineProperty;
|
|
2
|
+
var A = (l, c, t) => c in l ? y(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
|
|
3
|
+
var h = (l, c, t) => A(l, typeof c != "symbol" ? c + "" : c, t);
|
|
4
|
+
import { useConfig as d } from "../../../composables/useConfig.js";
|
|
5
|
+
import { BlockId as D } from "../../../enums/block.js";
|
|
6
|
+
import { getMigrationBannerHtml as C } from "../../../utils/migrationBannerHtml.js";
|
|
7
|
+
import { Block as E, BlockCompositionType as S, ModificationDescription as p } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
8
|
+
import { CURRENT_CONFIG_VERSION as N, PRE_RRS_CONFIG_VERSION as O } from "./constants/defaultConfig.js";
|
|
9
|
+
import { RECOMMENDATION_ID_ATTR as m } from "./constants/selectors.js";
|
|
10
|
+
import { regenerateMobileProductRows as M } from "./controls/main/utils.js";
|
|
11
|
+
import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as w } from "./controls/mobileLayout/cssRules.js";
|
|
12
12
|
import { RecommendationConfigService as s } from "./services/configService.js";
|
|
13
|
-
import { useRecommendationExtensionStore as
|
|
14
|
-
import { getDefaultTemplate as
|
|
15
|
-
import { useRecommendationBlockWarning as
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
let E = !1;
|
|
20
|
-
class at extends O {
|
|
13
|
+
import { useRecommendationExtensionStore as g } from "./store/recommendation.js";
|
|
14
|
+
import { getDefaultTemplate as T } from "./templates/grid/template.js";
|
|
15
|
+
import { useRecommendationBlockWarning as v } from "./useRecommendationBlockWarning.js";
|
|
16
|
+
const k = D.Recommendation, u = "recommendation-block-v2", B = "hide-price";
|
|
17
|
+
let b = !1;
|
|
18
|
+
class j extends E {
|
|
21
19
|
constructor() {
|
|
22
20
|
super();
|
|
23
21
|
/**
|
|
24
22
|
* Stores the ID generated in getTemplate() so onCreated() can reuse it.
|
|
25
23
|
* This avoids generating a new (different) ID in onCreated().
|
|
26
24
|
*/
|
|
27
|
-
|
|
25
|
+
h(this, "_pendingBlockId", null);
|
|
28
26
|
/** Ids already reset under their new name, so the deferred pass skips their stale snapshot. */
|
|
29
|
-
|
|
27
|
+
h(this, "_resetSourceIds", /* @__PURE__ */ new Set());
|
|
30
28
|
}
|
|
31
29
|
getId() {
|
|
32
|
-
return
|
|
30
|
+
return k;
|
|
33
31
|
}
|
|
34
32
|
getIcon() {
|
|
35
33
|
return "recommendation-icon";
|
|
36
34
|
}
|
|
37
35
|
getBlockCompositionType() {
|
|
38
|
-
return
|
|
36
|
+
return S.CONTAINER;
|
|
39
37
|
}
|
|
40
38
|
getName() {
|
|
41
39
|
return this.api.translate("Recommendation Block");
|
|
@@ -46,8 +44,8 @@ class at extends O {
|
|
|
46
44
|
);
|
|
47
45
|
}
|
|
48
46
|
getSettingsPanelTitleHtml() {
|
|
49
|
-
return
|
|
50
|
-
|
|
47
|
+
return C(
|
|
48
|
+
k,
|
|
51
49
|
this.api.translate("Recommendation Block"),
|
|
52
50
|
this.api.translate("This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.")
|
|
53
51
|
);
|
|
@@ -70,7 +68,7 @@ class at extends O {
|
|
|
70
68
|
*/
|
|
71
69
|
getTemplate() {
|
|
72
70
|
const t = this._generateNextId();
|
|
73
|
-
return this._pendingBlockId = t,
|
|
71
|
+
return this._pendingBlockId = t, T(t);
|
|
74
72
|
}
|
|
75
73
|
/**
|
|
76
74
|
* Called when a new block is dropped into the template
|
|
@@ -93,28 +91,28 @@ class at extends O {
|
|
|
93
91
|
}
|
|
94
92
|
const i = this._pendingBlockId ?? this._generateNextId();
|
|
95
93
|
this._pendingBlockId = null, this._assignRecommendationId(t, i);
|
|
96
|
-
const n =
|
|
94
|
+
const n = d().isFeatureEnabled("reusableRecommendationStrategy"), o = n && !s.hasConfig(t), { config: r, wasFreshDrop: a } = s.initializeConfig(
|
|
97
95
|
this.api,
|
|
98
96
|
t,
|
|
99
97
|
{
|
|
100
98
|
recommendationId: i,
|
|
101
|
-
configVersion: n ?
|
|
102
|
-
...o ? { partnerName:
|
|
99
|
+
configVersion: n ? N : O,
|
|
100
|
+
...o ? { partnerName: d().partnerName.value } : {},
|
|
103
101
|
// An RRS block picks a strategy, not an algorithm, and its algorithm control is
|
|
104
102
|
// hidden. Keeping the `mostPopular` default would bake a most-popular feed URL
|
|
105
103
|
// at save for a block the user never configured.
|
|
106
104
|
...o ? { strategy: "" } : {}
|
|
107
105
|
}
|
|
108
|
-
),
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
106
|
+
), f = g();
|
|
107
|
+
if (f.setCurrentBlock(i), this._stampHidePrice(t, r.priceHideIfSameAsDiscounted), a) {
|
|
108
|
+
I(this.api);
|
|
109
|
+
const _ = this._getBlockElement(t);
|
|
110
|
+
_ && (R(this.api, _, !0), M({
|
|
113
111
|
currentNode: t,
|
|
114
112
|
documentModifier: this.api.getDocumentModifier()
|
|
115
113
|
}));
|
|
116
114
|
}
|
|
117
|
-
|
|
115
|
+
f.patchCurrentBlockConfig({ language: r.language }, { triggerRefetch: !1 }), this._warnIfMultipleBlocks();
|
|
118
116
|
}
|
|
119
117
|
/**
|
|
120
118
|
* Called when the document changes or template is loaded
|
|
@@ -134,13 +132,13 @@ class at extends O {
|
|
|
134
132
|
"Assign recommendation ID to legacy block"
|
|
135
133
|
);
|
|
136
134
|
}
|
|
137
|
-
this._healLingeringDuplicate(t), s.needsMigration(t) && this._migrateFromLegacy(t), this._healHidePriceAttr(t)
|
|
135
|
+
this._healLingeringDuplicate(t), s.needsMigration(t) && this._migrateFromLegacy(t), this._healHidePriceAttr(t);
|
|
138
136
|
try {
|
|
139
|
-
|
|
137
|
+
b || (I(this.api), b = !0);
|
|
140
138
|
const e = s.getConfig(t), i = this._getBlockElement(t);
|
|
141
139
|
if (i) {
|
|
142
140
|
const n = !e.mobileLayoutEnabled;
|
|
143
|
-
|
|
141
|
+
w(i) !== n && R(this.api, i, n);
|
|
144
142
|
}
|
|
145
143
|
} catch {
|
|
146
144
|
}
|
|
@@ -154,7 +152,7 @@ class at extends O {
|
|
|
154
152
|
*/
|
|
155
153
|
onDelete(t) {
|
|
156
154
|
const e = this._getRecommendationId(t);
|
|
157
|
-
e &&
|
|
155
|
+
e && g().removeBlockState(e);
|
|
158
156
|
}
|
|
159
157
|
/**
|
|
160
158
|
* Warns (dark advisory toaster) when the design holds more than one live
|
|
@@ -170,7 +168,7 @@ class at extends O {
|
|
|
170
168
|
*/
|
|
171
169
|
_warnIfMultipleBlocks() {
|
|
172
170
|
try {
|
|
173
|
-
|
|
171
|
+
v().warnIfMultipleBlocks(this.api.getDocumentRootHtmlNode());
|
|
174
172
|
} catch {
|
|
175
173
|
}
|
|
176
174
|
}
|
|
@@ -182,9 +180,9 @@ class at extends O {
|
|
|
182
180
|
let t = 0;
|
|
183
181
|
try {
|
|
184
182
|
const e = this.api.getDocumentRoot();
|
|
185
|
-
e && "querySelectorAll" in e && e.querySelectorAll(`.${
|
|
183
|
+
e && "querySelectorAll" in e && e.querySelectorAll(`.${u}`).forEach((n) => {
|
|
186
184
|
if ("getAttribute" in n) {
|
|
187
|
-
const o = n.getAttribute(
|
|
185
|
+
const o = n.getAttribute(m), r = o ? parseInt(o) : 0;
|
|
188
186
|
r > t && (t = r);
|
|
189
187
|
}
|
|
190
188
|
});
|
|
@@ -200,9 +198,9 @@ class at extends O {
|
|
|
200
198
|
* the renamed one depending on where the module was dropped (SD-149916).
|
|
201
199
|
*/
|
|
202
200
|
_scheduleArrivalReset(t) {
|
|
203
|
-
|
|
201
|
+
d().isFeatureEnabled("reusableRecommendationStrategy") && setTimeout(() => {
|
|
204
202
|
const e = this._getRecommendationId(t);
|
|
205
|
-
e !== null && e > 0 && !this._resetSourceIds.delete(e) &&
|
|
203
|
+
e !== null && e > 0 && !this._resetSourceIds.delete(e) && g().resetArrivedBlock(e);
|
|
206
204
|
}, 0);
|
|
207
205
|
}
|
|
208
206
|
/**
|
|
@@ -225,7 +223,7 @@ class at extends O {
|
|
|
225
223
|
if (!i || !("querySelectorAll" in i))
|
|
226
224
|
return;
|
|
227
225
|
const n = i.querySelectorAll(
|
|
228
|
-
`.${
|
|
226
|
+
`.${u}[${m}="${e}"]`
|
|
229
227
|
);
|
|
230
228
|
if (n.length <= 1)
|
|
231
229
|
return;
|
|
@@ -250,7 +248,7 @@ class at extends O {
|
|
|
250
248
|
const e = this.api.getDocumentRoot();
|
|
251
249
|
if (e && "querySelectorAll" in e)
|
|
252
250
|
return e.querySelectorAll(
|
|
253
|
-
`.${
|
|
251
|
+
`.${u}[${m}="${t}"]`
|
|
254
252
|
).length > 1;
|
|
255
253
|
} catch {
|
|
256
254
|
}
|
|
@@ -258,8 +256,8 @@ class at extends O {
|
|
|
258
256
|
}
|
|
259
257
|
/** Assigns a fresh id to a duplicated block and syncs DOM, node config and store. */
|
|
260
258
|
_handleDuplicate(t, e) {
|
|
261
|
-
const i = this._reassignDuplicateId(t, e), n =
|
|
262
|
-
n.cloneBlockState(e, i), n.setCurrentBlock(i),
|
|
259
|
+
const i = this._reassignDuplicateId(t, e), n = g();
|
|
260
|
+
n.cloneBlockState(e, i), n.setCurrentBlock(i), d().isFeatureEnabled("reusableRecommendationStrategy") && (this._resetSourceIds.add(e), n.resetArrivedBlock(i)), this._warnIfMultipleBlocks();
|
|
263
261
|
}
|
|
264
262
|
/**
|
|
265
263
|
* Core id-reassignment for a duplicated block: rewrites the DOM
|
|
@@ -292,7 +290,7 @@ class at extends O {
|
|
|
292
290
|
if (!("getAttribute" in t))
|
|
293
291
|
return;
|
|
294
292
|
const n = `ins-recommendation-v3-block-${e}`, o = `ins-recommendation-v3-block-${i}`, r = this.api.getDocumentModifier();
|
|
295
|
-
r.modifyHtml(t).removeClass(n).setClass(o), r.apply(new
|
|
293
|
+
r.modifyHtml(t).removeClass(n).setClass(o), r.apply(new p(
|
|
296
294
|
`Reassign recommendation instance class ${n} -> ${o}`
|
|
297
295
|
));
|
|
298
296
|
}
|
|
@@ -307,7 +305,7 @@ class at extends O {
|
|
|
307
305
|
if (!i)
|
|
308
306
|
return;
|
|
309
307
|
const n = this.api.getDocumentModifier();
|
|
310
|
-
n.modifyHtml(i).setAttribute(
|
|
308
|
+
n.modifyHtml(i).setAttribute(m, e.toString()), n.apply(new p(`Assign recommendation ID ${e}`));
|
|
311
309
|
}
|
|
312
310
|
/**
|
|
313
311
|
* Stamps the `hide-price` attribute (read by email-service at send time) on
|
|
@@ -315,7 +313,7 @@ class at extends O {
|
|
|
315
313
|
*/
|
|
316
314
|
_stampHidePrice(t, e) {
|
|
317
315
|
const i = this._getBlockElement(t);
|
|
318
|
-
i && this.api.getDocumentModifier().modifyHtml(i).setAttribute(B, String(e)).apply(new
|
|
316
|
+
i && this.api.getDocumentModifier().modifyHtml(i).setAttribute(B, String(e)).apply(new p("Stamp hide-price"));
|
|
319
317
|
}
|
|
320
318
|
/**
|
|
321
319
|
* Stamps `hide-price` from config only when the block lacks the attribute —
|
|
@@ -328,38 +326,6 @@ class at extends O {
|
|
|
328
326
|
const { priceHideIfSameAsDiscounted: i } = s.getConfig(t);
|
|
329
327
|
this._stampHidePrice(t, i);
|
|
330
328
|
}
|
|
331
|
-
/**
|
|
332
|
-
* Empties a block copied in from another account: its strategy and attribute types
|
|
333
|
-
* are account-scoped and would not resolve here (SD-151945). Layout, locale and
|
|
334
|
-
* currency stay. The write stamps the current account, so the next pass is a no-op.
|
|
335
|
-
*/
|
|
336
|
-
_resetForeignPartnerConfig(t) {
|
|
337
|
-
var I, R;
|
|
338
|
-
const e = this._getRecommendationId(t), i = this._getBlockElement(t);
|
|
339
|
-
if (e === null || !i || !s.hasConfig(t))
|
|
340
|
-
return;
|
|
341
|
-
const { partnerName: n, template: o } = g(), r = s.getConfig(t);
|
|
342
|
-
if (!W({
|
|
343
|
-
config: r,
|
|
344
|
-
blockId: e,
|
|
345
|
-
partnerName: n.value,
|
|
346
|
-
campaignUrls: (I = o.value) == null ? void 0 : I.recommendationCampaignUrls,
|
|
347
|
-
loadedIds: K(((R = o.value) == null ? void 0 : R.html) ?? "")
|
|
348
|
-
}))
|
|
349
|
-
return;
|
|
350
|
-
const u = z(r.composition), l = this.api.getDocumentModifier();
|
|
351
|
-
i.querySelectorAll(F).forEach((k) => {
|
|
352
|
-
var A;
|
|
353
|
-
(A = V(k)) != null && A.startsWith(H) && l.modifyHtml(k).delete();
|
|
354
|
-
}), l.modifyHtml(i).setAttribute(P, u.join(",")).setAttribute(x, "[]"), s.stageConfig(l, t, {
|
|
355
|
-
strategyId: "",
|
|
356
|
-
strategy: "",
|
|
357
|
-
filters: [],
|
|
358
|
-
productIds: [],
|
|
359
|
-
composition: u,
|
|
360
|
-
partnerName: n.value
|
|
361
|
-
}), l.apply(new h("Reset recommendation block copied from another account")), p().resetPartnerScopedConfig(e);
|
|
362
|
-
}
|
|
363
329
|
/**
|
|
364
330
|
* Gets the recommendation-id from a block node
|
|
365
331
|
*/
|
|
@@ -367,7 +333,7 @@ class at extends O {
|
|
|
367
333
|
const e = this._getBlockElement(t);
|
|
368
334
|
if (!e || !("getAttribute" in e))
|
|
369
335
|
return null;
|
|
370
|
-
const i = e.getAttribute(
|
|
336
|
+
const i = e.getAttribute(m);
|
|
371
337
|
if (!i)
|
|
372
338
|
return null;
|
|
373
339
|
const n = parseInt(i);
|
|
@@ -379,10 +345,10 @@ class at extends O {
|
|
|
379
345
|
_getBlockElement(t) {
|
|
380
346
|
if ("getAttribute" in t) {
|
|
381
347
|
const e = t.getAttribute("class");
|
|
382
|
-
if (e && e.includes(
|
|
348
|
+
if (e && e.includes(u))
|
|
383
349
|
return t;
|
|
384
350
|
}
|
|
385
|
-
return "querySelector" in t ? t.querySelector(`.${
|
|
351
|
+
return "querySelector" in t ? t.querySelector(`.${u}`) ?? null : null;
|
|
386
352
|
}
|
|
387
353
|
/**
|
|
388
354
|
* Migrate configuration from legacy format
|
|
@@ -392,6 +358,6 @@ class at extends O {
|
|
|
392
358
|
}
|
|
393
359
|
}
|
|
394
360
|
export {
|
|
395
|
-
|
|
396
|
-
|
|
361
|
+
k as BLOCK_ID,
|
|
362
|
+
j as RecommendationBlock
|
|
397
363
|
};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { useToaster as
|
|
1
|
+
import { useToaster as _ } from "../../../../composables/useToaster.js";
|
|
2
2
|
import { useTranslations as L } from "../../../../composables/useTranslations.js";
|
|
3
|
-
import { getRecommendationFeedSourceMaps as F, strategyEditPath as U,
|
|
4
|
-
import { ToasterTypeOptions as
|
|
5
|
-
import { useRecommendationApi as
|
|
3
|
+
import { getRecommendationFeedSourceMaps as F, strategyEditPath as U, strategyCreatePath as N, getOperatorOptions as M, PriceAttributes as E } from "../../../../enums/extensions/recommendationBlock.js";
|
|
4
|
+
import { ToasterTypeOptions as B } from "../../../../enums/toaster.js";
|
|
5
|
+
import { useRecommendationApi as z } from "../../../../services/recommendationApi.js";
|
|
6
6
|
import { useConfigStore as R } from "../../../../stores/config.js";
|
|
7
|
-
import { defineStore as
|
|
7
|
+
import { defineStore as A } from "pinia";
|
|
8
8
|
import "../constants/selectors.js";
|
|
9
|
-
import { DEFAULT_MOBILE_CARDS_IN_ROW as O, DEFAULT_CARDS_IN_ROW as
|
|
10
|
-
import { CURRENT_CONFIG_VERSION as C, DEFAULT_NODE_CONFIG as
|
|
9
|
+
import { DEFAULT_MOBILE_CARDS_IN_ROW as O, DEFAULT_CARDS_IN_ROW as x } from "../constants/layout.js";
|
|
10
|
+
import { CURRENT_CONFIG_VERSION as C, DEFAULT_NODE_CONFIG as T, EXCLUDED_ALGORITHM_IDS as V } from "../constants/defaultConfig.js";
|
|
11
11
|
import { getDefaultProducts as w } from "../templates/utils.js";
|
|
12
12
|
import { generateCompleteFilterQuery as P } from "../utils/filterUtil.js";
|
|
13
13
|
import { isLegacyStrategyConfig as j } from "../utils/legacyStrategyMigration.js";
|
|
14
14
|
import { getPartnerRecommendationParams as $ } from "../utils/partnerCustomizations.js";
|
|
15
|
-
import { sanitizeProductIds as
|
|
16
|
-
import { isFilterValid as
|
|
15
|
+
import { sanitizeProductIds as q } from "../utils/productIds.js";
|
|
16
|
+
import { isFilterValid as K } from "../validation/filterSchema.js";
|
|
17
17
|
import { getInvalidFields as H, isConfigValid as J } from "../validation/requiredFields.js";
|
|
18
|
-
const m =
|
|
19
|
-
let S = null, p = null, y = null,
|
|
18
|
+
const m = z();
|
|
19
|
+
let S = null, p = null, y = null, I = "", k = null, b = 0;
|
|
20
20
|
const g = /* @__PURE__ */ new Map();
|
|
21
21
|
let l = null;
|
|
22
|
-
function
|
|
22
|
+
function D() {
|
|
23
23
|
return {
|
|
24
|
-
cardsInRow:
|
|
24
|
+
cardsInRow: x,
|
|
25
25
|
currencySettings: {
|
|
26
26
|
name: "USD",
|
|
27
27
|
value: "USD",
|
|
@@ -58,7 +58,7 @@ function _() {
|
|
|
58
58
|
}
|
|
59
59
|
function G() {
|
|
60
60
|
return {
|
|
61
|
-
recommendationConfigs:
|
|
61
|
+
recommendationConfigs: D(),
|
|
62
62
|
recommendationProducts: [],
|
|
63
63
|
filterStatus: !1,
|
|
64
64
|
filterSelectionDrawerStatus: !1,
|
|
@@ -87,7 +87,7 @@ const Q = () => ({
|
|
|
87
87
|
currentRecommendationId: null,
|
|
88
88
|
strategyPanelOpen: !1,
|
|
89
89
|
configVersion: 0
|
|
90
|
-
}), ft =
|
|
90
|
+
}), ft = A("guidoRecommendationExtension", {
|
|
91
91
|
state: () => Q(),
|
|
92
92
|
getters: {
|
|
93
93
|
// ====================================================================
|
|
@@ -98,7 +98,7 @@ const Q = () => ({
|
|
|
98
98
|
* This allows all existing code that reads `store.recommendationConfigs` to work unchanged.
|
|
99
99
|
*/
|
|
100
100
|
recommendationConfigs(t) {
|
|
101
|
-
return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].recommendationConfigs :
|
|
101
|
+
return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].recommendationConfigs : D();
|
|
102
102
|
},
|
|
103
103
|
/**
|
|
104
104
|
* Proxy getter: delegates to blockStates[currentRecommendationId].recommendationProducts
|
|
@@ -181,7 +181,7 @@ const Q = () => ({
|
|
|
181
181
|
getFilterList() {
|
|
182
182
|
return Object.values(this.filterList).filter((t) => t.isFilterable !== 0 && t.isFilterable !== !1).map((t) => {
|
|
183
183
|
let e;
|
|
184
|
-
return t.type === "productAttribute" ? e = `product_attributes.${t.attributeName}` :
|
|
184
|
+
return t.type === "productAttribute" ? e = `product_attributes.${t.attributeName}` : E.includes(t.attributeName) ? e = `${t.attributeName}.${this.recommendationConfigs.currencySettings.value}` : e = t.attributeName, {
|
|
185
185
|
text: t.displayName,
|
|
186
186
|
value: e,
|
|
187
187
|
type: t.attributeType
|
|
@@ -314,7 +314,7 @@ const Q = () => ({
|
|
|
314
314
|
* Creates a filter with the first available attribute and operator pre-selected.
|
|
315
315
|
*/
|
|
316
316
|
createDefaultFilter(t, e) {
|
|
317
|
-
const [r] = this.getFilterList, [n] =
|
|
317
|
+
const [r] = this.getFilterList, [n] = M(r == null ? void 0 : r.type);
|
|
318
318
|
return {
|
|
319
319
|
type: "standardFilter",
|
|
320
320
|
attribute: (r == null ? void 0 : r.value) ?? "",
|
|
@@ -387,15 +387,15 @@ const Q = () => ({
|
|
|
387
387
|
}
|
|
388
388
|
if (this.strategiesFetched)
|
|
389
389
|
return;
|
|
390
|
-
const t =
|
|
390
|
+
const t = b, e = (async () => {
|
|
391
391
|
this.strategiesLoading = !0;
|
|
392
392
|
try {
|
|
393
393
|
const r = await m.fetchRecommendationStrategies();
|
|
394
|
-
if (t !==
|
|
394
|
+
if (t !== b)
|
|
395
395
|
return;
|
|
396
396
|
this.strategies = r, this.strategiesFetched = !0;
|
|
397
397
|
} finally {
|
|
398
|
-
this.strategiesLoading = !1, t ===
|
|
398
|
+
this.strategiesLoading = !1, t === b && (this.strategiesSettled = !0);
|
|
399
399
|
}
|
|
400
400
|
})();
|
|
401
401
|
k = e;
|
|
@@ -405,25 +405,6 @@ const Q = () => ({
|
|
|
405
405
|
k = null;
|
|
406
406
|
}
|
|
407
407
|
},
|
|
408
|
-
/**
|
|
409
|
-
* Drops what the store still holds for a block whose account-scoped config was just
|
|
410
|
-
* reset in the document (SD-151945), so the panel re-seeds from the emptied node.
|
|
411
|
-
*/
|
|
412
|
-
resetPartnerScopedConfig(t) {
|
|
413
|
-
const e = t.toString();
|
|
414
|
-
if (this.recommendationCampaignUrls[e] !== void 0) {
|
|
415
|
-
const n = { ...this.recommendationCampaignUrls };
|
|
416
|
-
delete n[e], this.recommendationCampaignUrls = n;
|
|
417
|
-
}
|
|
418
|
-
const r = this.blockStates[t];
|
|
419
|
-
r && (r.recommendationConfigs = {
|
|
420
|
-
...r.recommendationConfigs,
|
|
421
|
-
strategyId: "",
|
|
422
|
-
strategy: "",
|
|
423
|
-
filters: [],
|
|
424
|
-
productIds: []
|
|
425
|
-
}, r.isInitialized = !1, r.syncedConfigFingerprint = null, this.currentRecommendationId === t && this.configVersion++);
|
|
426
|
-
},
|
|
427
408
|
/**
|
|
428
409
|
* Clears what a block inherited from the id it arrived holding, so the panel fetches for it.
|
|
429
410
|
* A re-dropped saved module can keep the source's id — and its "already fetched" entry —
|
|
@@ -435,7 +416,7 @@ const Q = () => ({
|
|
|
435
416
|
}));
|
|
436
417
|
},
|
|
437
418
|
invalidateStrategies() {
|
|
438
|
-
this.strategiesFetched = !1, this.strategiesSettled = !1,
|
|
419
|
+
this.strategiesFetched = !1, this.strategiesSettled = !1, b += 1;
|
|
439
420
|
},
|
|
440
421
|
/**
|
|
441
422
|
* Opens a Smart Recommender strategy page in a new tab and refreshes the list every time
|
|
@@ -453,8 +434,8 @@ const Q = () => ({
|
|
|
453
434
|
_armStrategyPageReturn(t) {
|
|
454
435
|
const e = window.open(t, "_blank");
|
|
455
436
|
if (!e)
|
|
456
|
-
return
|
|
457
|
-
type:
|
|
437
|
+
return _().showToaster({
|
|
438
|
+
type: B.Error,
|
|
458
439
|
message: L()("discovery-strategy.error-description")
|
|
459
440
|
}), !1;
|
|
460
441
|
e.opener = null, l == null || l();
|
|
@@ -490,7 +471,7 @@ const Q = () => ({
|
|
|
490
471
|
* new strategy is offered; the user picks it themselves.
|
|
491
472
|
*/
|
|
492
473
|
openStrategyCreation() {
|
|
493
|
-
return this._armStrategyPageReturn(
|
|
474
|
+
return this._armStrategyPageReturn(N());
|
|
494
475
|
},
|
|
495
476
|
/**
|
|
496
477
|
* Opens the strategy's edit page. Every return refreshes the list so the block reflects the
|
|
@@ -552,7 +533,7 @@ const Q = () => ({
|
|
|
552
533
|
this.patchCurrentBlockConfig({
|
|
553
534
|
strategyId: "",
|
|
554
535
|
strategy: "",
|
|
555
|
-
size:
|
|
536
|
+
size: T.size,
|
|
556
537
|
nodeConfigVersion: C
|
|
557
538
|
});
|
|
558
539
|
},
|
|
@@ -626,7 +607,7 @@ const Q = () => ({
|
|
|
626
607
|
const n = [...e.recommendationConfigs.filters];
|
|
627
608
|
n[r] = {
|
|
628
609
|
...t,
|
|
629
|
-
isValid:
|
|
610
|
+
isValid: K(t)
|
|
630
611
|
}, e.recommendationConfigs.filters = n;
|
|
631
612
|
}
|
|
632
613
|
},
|
|
@@ -690,17 +671,17 @@ const Q = () => ({
|
|
|
690
671
|
const t = [
|
|
691
672
|
this.currentRecommendationId,
|
|
692
673
|
this.configVersion,
|
|
693
|
-
|
|
674
|
+
b
|
|
694
675
|
].join(":");
|
|
695
|
-
if (y &&
|
|
676
|
+
if (y && I === t) {
|
|
696
677
|
await y;
|
|
697
678
|
return;
|
|
698
679
|
}
|
|
699
|
-
|
|
680
|
+
I = t, y = this._doFetchProducts();
|
|
700
681
|
try {
|
|
701
682
|
await y;
|
|
702
683
|
} finally {
|
|
703
|
-
|
|
684
|
+
I === t && (y = null, I = "");
|
|
704
685
|
}
|
|
705
686
|
},
|
|
706
687
|
async _doFetchProducts() {
|
|
@@ -725,7 +706,7 @@ const Q = () => ({
|
|
|
725
706
|
details: !0,
|
|
726
707
|
campaignId: n.variationId
|
|
727
708
|
};
|
|
728
|
-
r.strategy === "manualMerchandising" ? c.productId =
|
|
709
|
+
r.strategy === "manualMerchandising" ? c.productId = q(r.productIds) : r.strategy === "similarViewed" && (c.productId = "{itemId}"), r.strategy === "userBased" && (c.userId = "{user_id}"), a && (c.filter = a), r.shuffleProducts && (c.shuffle = !0), Object.assign(
|
|
729
710
|
c,
|
|
730
711
|
$(n.partnerName, r.strategy)
|
|
731
712
|
);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ATTR_CUSTOM_PREFIX as f
|
|
2
|
-
|
|
3
|
-
function u(t) {
|
|
1
|
+
import { ATTR_CUSTOM_PREFIX as f } from "../constants/selectors.js";
|
|
2
|
+
function o(t) {
|
|
4
3
|
if (typeof t == "string")
|
|
5
4
|
return t.trim() !== "";
|
|
6
5
|
if (t && typeof t == "object" && "strategyId" in t) {
|
|
@@ -9,18 +8,18 @@ function u(t) {
|
|
|
9
8
|
}
|
|
10
9
|
return !1;
|
|
11
10
|
}
|
|
12
|
-
function
|
|
13
|
-
return
|
|
11
|
+
function u({ config: t, blockId: r, partnerName: e, campaignUrls: n, rrsEnabled: i }) {
|
|
12
|
+
return e ? t.partnerName ? t.partnerName !== e : !i || !t.strategyId || !n ? !1 : !o(n[String(r)]) : !1;
|
|
14
13
|
}
|
|
15
|
-
function
|
|
16
|
-
return
|
|
14
|
+
function a({ config: t, campaignUrls: r, rrsEnabled: e }) {
|
|
15
|
+
return !t.strategyId || e && !!r;
|
|
17
16
|
}
|
|
18
|
-
function
|
|
17
|
+
function g(t) {
|
|
19
18
|
return t.filter((r) => !r.startsWith(f));
|
|
20
19
|
}
|
|
21
20
|
export {
|
|
22
|
-
|
|
23
|
-
u as
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
a as canJudgeUnstampedBlock,
|
|
22
|
+
u as carriesForeignPartnerConfig,
|
|
23
|
+
o as isDefinedCampaignUrl,
|
|
24
|
+
g as withoutCustomAttributes
|
|
26
25
|
};
|
package/dist/guido.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-
|
|
1
|
+
@charset "UTF-8";.auth-error-modal[data-v-b4d7ae51]{position:relative;z-index:145}.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-15610de9] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.color-vision-select__dropdown[data-v-64cb50da]{z-index:20;width:387px}.accessibility-toolbar[data-v-391019bc]{gap:16px}.accessibility-toolbar[data-v-391019bc] .in-segments-wrapper__button svg{margin-right:0}.accessibility-toolbar[data-v-391019bc] .in-segments-wrapper__button .clearfix:after{content:none}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-actions-menu__dropdown[data-v-d0e6b57a]{z-index:20;width:222px}.editor-actions[data-v-23b54db0]{gap:16px}.editor-actions__divider[data-v-23b54db0]{width:1px;height:40px;background-color:#e1e1e1}.right-slot[data-v-efc32e0d]{gap:16px}.header-wrapper[data-v-3c713746]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-ecfaf815]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-ecfaf815]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-ecfaf815]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.guido-tab-bar-onboarding[data-v-42f02a1f]{z-index:21}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-19d8cb42] .vueperslides__bullets,[data-v-ec2027ff] .vueperslides__bullets,[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd]{width:100%;max-width:none}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-skeleton{width:100%!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-dropdown-box__container{width:413px}.assign-strategy-drawer .spaced-dot-sep{background-image:linear-gradient(90deg,#91949f 20%,#fff0 0);background-position:center bottom;background-repeat:repeat-x;background-size:5px 1px}.assign-strategy-drawer .spaced-dot-sep--top{background-position:center top}.assign-strategy-drawer .spaced-dot-sep--fc-n:first-child{background:none}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}
|
package/dist/sprite.svg
CHANGED
|
@@ -3107,6 +3107,12 @@
|
|
|
3107
3107
|
<symbol viewBox="0 0 24 24" data-token-name="line-replace-dynamic-content" id="line-replace-dynamic-content">
|
|
3108
3108
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8327 5.42341C11.2222 5.81502 11.221 6.44877 10.8301 6.83894C10.8013 6.86765 10.7712 6.89425 10.74 6.91873L8.70549 8.95706C8.31533 9.34795 7.68275 9.34795 7.29259 8.95706C6.90243 8.56617 6.90243 7.93242 7.29259 7.54153L7.73664 7.09666L7.00053 7.09662C6.44823 7.0966 6.00049 7.54432 6.00049 8.09662V10.0001C6.00049 10.5524 5.55277 11.0001 5.00049 11.0001C4.4482 11.0001 4.00049 10.5524 4.00049 10.0001V8.09662C4.00049 6.43972 5.34372 5.09655 7.00062 5.09662L7.6872 5.09665L7.30179 4.70909C6.91235 4.31748 6.91353 3.68372 7.30442 3.29356C7.69531 2.9034 8.32788 2.90458 8.71732 3.29619L10.8327 5.42341ZM12 6.00024C12 4.89567 12.8954 4.00024 14 4.00024H18C19.1046 4.00024 20 4.89567 20 6.00024V10.0002C20 11.1048 19.1046 12.0002 18 12.0002H14C12.8954 12.0002 12 11.1048 12 10.0002V6.00024ZM14 6.00024H18V10.0002H14V6.00024ZM4 14.0002C4 12.8957 4.89543 12.0002 6 12.0002H10C11.1046 12.0002 12 12.8957 12 14.0002V18.0002C12 19.1048 11.1046 20.0002 10 20.0002H6C4.89543 20.0002 4 19.1048 4 18.0002V14.0002ZM6 14.0002H10V18.0002H6V14.0002ZM13.2939 17.1612C12.9031 17.5513 12.9019 18.1851 13.2913 18.5767L15.4067 20.7039C15.7961 21.0955 16.4287 21.0967 16.8196 20.7065C17.2105 20.3164 17.2117 19.6826 16.8222 19.291L16.4368 18.9034L17.1234 18.9035C18.7803 18.9035 20.1235 17.5604 20.1235 15.9035V14C20.1235 13.4477 19.6758 13 19.1235 13C18.5713 13 18.1235 13.4477 18.1235 14L18.1235 15.9035C18.1235 16.4558 17.6758 16.9035 17.1235 16.9035L16.3874 16.9034L16.8314 16.4586C17.2216 16.0677 17.2216 15.4339 16.8314 15.043C16.4413 14.6522 15.8087 14.6522 15.4185 15.043L13.384 17.0814C13.3528 17.1058 13.3227 17.1324 13.2939 17.1612Z"/>
|
|
3109
3109
|
</symbol>
|
|
3110
|
+
<symbol viewBox="0 0 24 24" id="line-accessibility">
|
|
3111
|
+
<g transform="translate(2 2)">
|
|
3112
|
+
<rect x="1" y="1" width="18" height="18" rx="9" fill="none" stroke="currentColor" stroke-width="2"/>
|
|
3113
|
+
<path fill="currentColor" d="M14.8125 6.08473C15.332 5.94828 15.6875 6.47668 15.6875 6.95875C15.6873 7.44052 15.2498 7.66778 14.8125 7.8318C14.798 7.83727 14.7826 7.84147 14.7676 7.84547L12.3262 8.69898C12.013 8.81663 11.8784 8.93913 11.8486 8.99391C11.848 8.99533 11.8475 8.9975 11.8467 8.99879C11.8153 9.05489 11.7235 9.29227 11.8379 10.0076L11.9961 11.238L12.8887 16.0154C12.8969 16.0521 12.9036 16.0895 12.9092 16.1267C12.9741 16.5696 12.6498 16.9997 12.0342 16.9998C11.4983 16.9998 11.2617 16.63 11.1592 16.1267C11.1592 16.1267 10.3701 11.8181 9.9873 11.8181C9.60444 11.8205 8.94137 15.6235 8.83887 16.1267C8.7363 16.63 8.49971 16.9998 7.96387 16.9998C7.34999 16.9996 7.02548 16.5711 7.08887 16.1296L7.0957 16.0955C7.09789 16.0818 7.09981 16.0676 7.10254 16.0545L7.9834 11.2371L8.1416 10.0066C8.17359 9.80644 8.26392 9.23379 8.15137 8.9441C8.11665 8.85389 8.0452 8.7492 7.7793 8.64723L5.17962 7.83495C5.17734 7.83424 5.17578 7.83212 5.17578 7.82972C5.17578 7.82745 5.17437 7.82541 5.17224 7.8246C4.74007 7.66146 4.31254 7.43412 4.3125 6.95777C4.31258 6.47553 4.66813 5.9482 5.1875 6.08473C5.26161 6.10405 5.33481 6.12744 5.40625 6.15504C6.12486 6.3593 8.37146 6.9607 9.98828 6.9607C11.7281 6.96068 14.1981 6.26431 14.707 6.115C14.7342 6.10658 14.7619 6.09917 14.7891 6.09156L14.7998 6.08766L14.8125 6.08473ZM9.70117 3.02906C9.99821 2.96998 10.3061 3.00106 10.5859 3.11695C10.8657 3.23286 11.1052 3.42866 11.2734 3.68043C11.4416 3.93217 11.5312 4.22828 11.5312 4.53101C11.5308 4.93693 11.369 5.326 11.082 5.61305C10.795 5.9001 10.406 6.06183 10 6.06226C9.69721 6.06226 9.40119 5.97264 9.14941 5.80445C8.89762 5.63621 8.70086 5.39673 8.58496 5.11695C8.46918 4.83725 8.439 4.52909 8.49805 4.23219C8.55716 3.93526 8.70292 3.6621 8.91699 3.44801C9.13112 3.23391 9.4042 3.08814 9.70117 3.02906Z"/>
|
|
3114
|
+
</g>
|
|
3115
|
+
</symbol>
|
|
3110
3116
|
<svg viewBox="0 0 24 24" data-token-name="line-advanced-settings" id="line-advanced-settings">
|
|
3111
3117
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 3C15.4477 3 15 3.44772 15 4V6V8C15 8.55228 15.4477 9 16 9C16.5523 9 17 8.55228 17 8V7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5H17V4C17 3.44772 16.5523 3 16 3ZM3 6C3 5.44772 3.44772 5 4 5H12C12.5523 5 13 5.44772 13 6C13 6.55228 12.5523 7 12 7H4C3.44772 7 3 6.55228 3 6ZM16 15C15.4477 15 15 15.4477 15 16V18V20C15 20.5523 15.4477 21 16 21C16.5523 21 17 20.5523 17 20V19H20C20.5523 19 21 18.5523 21 18C21 17.4477 20.5523 17 20 17H17V16C17 15.4477 16.5523 15 16 15ZM3 18C3 17.4477 3.44772 17 4 17H12C12.5523 17 13 17.4477 13 18C13 18.5523 12.5523 19 12 19H4C3.44772 19 3 18.5523 3 18ZM7 10C7 9.44772 7.44772 9 8 9C8.55228 9 9 9.44772 9 10V12V14C9 14.5523 8.55228 15 8 15C7.44772 15 7 14.5523 7 14V13H4C3.44772 13 3 12.5523 3 12C3 11.4477 3.44772 11 4 11H7V10ZM12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13H20C20.5523 13 21 12.5523 21 12C21 11.4477 20.5523 11 20 11H12Z"/>
|
|
3112
3118
|
</svg>
|
|
@@ -3130,4 +3136,8 @@
|
|
|
3130
3136
|
</clipPath>
|
|
3131
3137
|
</defs>
|
|
3132
3138
|
</svg>
|
|
3139
|
+
<symbol viewBox="0 0 24 24" id="line-no-image-v2">
|
|
3140
|
+
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M19.9062 4.1875C20.1565 3.9376 20.5624 3.93741 20.8125 4.1875C21.0626 4.4376 21.0624 4.84353 20.8125 5.09375L19.9062 6L20.8125 6.90625C21.0624 7.15645 21.0626 7.56238 20.8125 7.8125C20.5624 8.06262 20.1565 8.06246 19.9062 7.8125L19 6.90625L18.0938 7.8125C17.8435 8.06241 17.4376 8.0626 17.1875 7.8125C16.9374 7.5624 16.9376 7.15647 17.1875 6.90625L18.0938 6L17.1875 5.09375C16.9376 4.84352 16.9374 4.43759 17.1875 4.1875C17.4376 3.93746 17.8435 3.93766 18.0938 4.1875L19 5.09375L19.9062 4.1875ZM14 4C14.5523 4 15 4.44772 15 5C15 5.55228 14.5523 6 14 6C13.4477 6 13 5.55228 13 5C13 4.44772 13.4477 4 14 4Z"/>
|
|
3141
|
+
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M14 6H5V18H6.43652L10.2764 12.6182C10.8633 11.8405 11.9837 11.7886 12.6357 12.5088L14.6504 14.7734L18.3545 10.3965L18.4424 10.3008C19.3653 9.37025 21 10.0117 21 11.3652V18C21 19.1046 20.1046 20 19 20H5C3.89543 20 3 19.1046 3 18V6C3 4.89543 3.89543 4 5 4H14V6ZM9.00098 18H14.7109L11.5371 14.4268L9.00098 18ZM15.9932 16.2822L17.5205 18H19V12.7295L15.9932 16.2822ZM8.5 8C9.32843 8 10 8.67157 10 9.5C10 10.3284 9.32843 11 8.5 11C7.67157 11 7 10.3284 7 9.5C7 8.67157 7.67157 8 8.5 8Z"/>
|
|
3142
|
+
</symbol>
|
|
3133
3143
|
</svg>
|
|
@@ -407,6 +407,7 @@ export declare const FeaturesSchema: v.ObjectSchema<{
|
|
|
407
407
|
readonly liquidSyntax: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
408
408
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
409
409
|
readonly autosave: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
410
|
+
readonly accessibilityTesting: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
410
411
|
/** Enable pre-save domain-allowlist validation (opt-in; Guido self-serves the block toaster) */
|
|
411
412
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
412
413
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
@@ -823,6 +824,7 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
823
824
|
readonly liquidSyntax: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
824
825
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
825
826
|
readonly autosave: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
827
|
+
readonly accessibilityTesting: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
826
828
|
/** Enable pre-save domain-allowlist validation (opt-in; Guido self-serves the block toaster) */
|
|
827
829
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
828
830
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
declare const _default: import("vue").DefineComponent<{}, {
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {
|
|
2
|
+
saveSilent: () => Promise<Omit<import("../../@types/stripo").SavedTemplateDetails, "metadata" | "silent"> | undefined>;
|
|
3
|
+
}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
2
4
|
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
|
2
|
+
export default _default;
|