@useinsider/guido 3.19.0-beta.cac604e → 3.19.0-beta.cc48fee
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/components/Guido.vue.js +6 -6
- package/dist/components/Guido.vue2.js +96 -85
- package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
- package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
- package/dist/components/wrappers/WpModal.vue.js +1 -1
- package/dist/components/wrappers/WpModal.vue2.js +4 -3
- package/dist/composables/useAuthError.js +52 -0
- package/dist/composables/useAutoSave.js +11 -11
- package/dist/composables/useCortexBlueprintBridge.js +122 -54
- 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/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/partnerCustomizations.js +3 -1
- package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +11 -12
- package/dist/guido.css +1 -1
- package/dist/src/components/organisms/base/AuthErrorModal.vue.d.ts +2 -0
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useAuthError.d.ts +12 -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/guido-email-editor.d.ts +20 -10
- package/dist/src/stores/onboarding.d.ts +4 -0
- package/dist/src/stores/recommendation.d.ts +5 -0
- package/dist/src/utils/dateUtil.d.ts +10 -0
- package/dist/src/utils/genericUtil.d.ts +3 -0
- package/dist/static/styles/components/version-history.css.js +2 -6
- package/dist/stores/guido-email-editor.js +3 -1
- package/dist/stores/onboarding.js +4 -0
- package/dist/utils/pairProductVariables.js +71 -71
- package/package.json +2 -2
|
@@ -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
|
);
|
|
@@ -10,7 +10,9 @@ const i = [
|
|
|
10
10
|
"iboodde",
|
|
11
11
|
"iboodfr",
|
|
12
12
|
"iboodnl",
|
|
13
|
-
"iboodpl"
|
|
13
|
+
"iboodpl",
|
|
14
|
+
"marionnaudaustria",
|
|
15
|
+
"marionnaudfrance"
|
|
14
16
|
], r = ["interencheres", "interencherespreprod"], d = ["lodenfrey", "lodenfreyuat"], c = "manualMerchandising";
|
|
15
17
|
function s(e, n) {
|
|
16
18
|
const o = {};
|
|
@@ -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-73199fa4] .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}.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}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-c61cc8ea]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[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-73199fa4] .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}.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}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-c61cc8ea]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-c404d230]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-c404d230]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-c404d230]{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}[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}
|
|
@@ -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;
|
|
@@ -3,6 +3,7 @@ type __VLS_Props = {
|
|
|
3
3
|
id: string;
|
|
4
4
|
title: string;
|
|
5
5
|
description?: string;
|
|
6
|
+
state?: 'default' | 'primary' | 'warning' | 'danger';
|
|
6
7
|
size?: 'X-small' | 'small' | 'medium' | 'large';
|
|
7
8
|
footerButtonOptions?: FooterButtonGroup;
|
|
8
9
|
closeButtonStatus?: boolean;
|
|
@@ -15,6 +16,7 @@ type __VLS_Slots = {} & {
|
|
|
15
16
|
};
|
|
16
17
|
declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
17
18
|
description: string;
|
|
19
|
+
state: string;
|
|
18
20
|
size: string;
|
|
19
21
|
footerButtonOptions: undefined;
|
|
20
22
|
closeButtonStatus: boolean;
|
|
@@ -26,6 +28,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
|
|
|
26
28
|
"secondary-action": () => void;
|
|
27
29
|
}, string, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
28
30
|
description: string;
|
|
31
|
+
state: string;
|
|
29
32
|
size: string;
|
|
30
33
|
footerButtonOptions: undefined;
|
|
31
34
|
closeButtonStatus: boolean;
|
|
@@ -34,9 +37,10 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
|
|
|
34
37
|
}>>>, {
|
|
35
38
|
size: "X-small" | "small" | "medium" | "large";
|
|
36
39
|
description: string;
|
|
37
|
-
|
|
40
|
+
state: "default" | "primary" | "warning" | "danger";
|
|
38
41
|
footerButtonOptions: FooterButtonGroup;
|
|
39
42
|
closeButtonStatus: boolean;
|
|
43
|
+
closeOnOutsideClick: boolean;
|
|
40
44
|
footerStatus: boolean;
|
|
41
45
|
}>;
|
|
42
46
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface AuthErrorState {
|
|
2
|
+
status: number;
|
|
3
|
+
data: Record<string, unknown> | null;
|
|
4
|
+
}
|
|
5
|
+
export declare const isPanelOrigin: (url: string) => boolean;
|
|
6
|
+
export declare const reportAuthError: (status: number, body: string, url: string) => void;
|
|
7
|
+
export declare const useAuthError: () => {
|
|
8
|
+
authError: import("vue").Ref<{
|
|
9
|
+
status: number;
|
|
10
|
+
data: Record<string, unknown> | null;
|
|
11
|
+
} | null>;
|
|
12
|
+
};
|
|
@@ -17,12 +17,11 @@
|
|
|
17
17
|
* - `error` segments (and message-level `isError` / `isCancelled`) trigger
|
|
18
18
|
* a localized toaster.
|
|
19
19
|
*
|
|
20
|
+
* Every apply settles into a terminal `applyAcks` entry, so cortex moves its button on the write, not the click.
|
|
21
|
+
*
|
|
20
22
|
* In dev (`import.meta.env.DEV`) every observed segment + message-level flag
|
|
21
23
|
* change is also `console.debug`-logged with the prefix `[guido:cortex]` so a
|
|
22
24
|
* developer can watch the agent stream in real time. In production this is
|
|
23
25
|
* gated behind `localStorage.guido:debug:ai === '1'`.
|
|
24
|
-
*
|
|
25
|
-
* If cortex-fe isn't loaded the chat store is undefined and the bridge is a
|
|
26
|
-
* no-op (intentional — Guido must still work standalone).
|
|
27
26
|
*/
|
|
28
27
|
export declare const useCortexBlueprintBridge: () => void;
|