@useinsider/guido 3.12.0-beta.40db55d → 3.12.0-beta.840207a
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 +2 -14
- package/dist/@types/config/schemas.js +13 -8
- package/dist/components/Guido.vue.js +6 -6
- package/dist/components/Guido.vue2.js +50 -49
- package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.js +36 -0
- package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue2.js +244 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.js +18 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue2.js +42 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.js +20 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue2.js +18 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.js +20 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue2.js +60 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.js +19 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue2.js +19 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.js +22 -0
- package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue2.js +29 -0
- package/dist/components/organisms/header/ViewOptions.vue.js +3 -3
- package/dist/components/organisms/header/version-history/ViewOptions.vue.js +1 -1
- package/dist/composables/useRecommendation.js +82 -51
- package/dist/composables/useStrategyFilters.js +16 -0
- package/dist/config/migrator/recommendationMigrator.js +7 -4
- package/dist/enums/date.js +4 -3
- package/dist/enums/extensions/filteringV2.js +8 -0
- package/dist/enums/extensions/recommendationBlock.js +28 -22
- package/dist/enums/extensions/strategyDetail.js +148 -0
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +12 -11
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +123 -109
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +146 -0
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +1 -1
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +256 -102
- package/dist/extensions/Blocks/Recommendation/utils/strategyHumanizer.js +97 -0
- package/dist/extensions/Blocks/Recommendation/utils/strategySummary.js +10 -0
- package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +24 -12
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +72 -29
- package/dist/src/@types/config/schemas.d.ts +10 -0
- package/dist/src/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.d.ts +2 -0
- package/dist/src/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.d.ts +43 -0
- package/dist/src/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.d.ts +29 -0
- package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.d.ts +40 -0
- package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.d.ts +38 -0
- package/dist/src/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.d.ts +51 -0
- package/dist/src/composables/useConfig.d.ts +2 -0
- package/dist/src/composables/useRecommendation.d.ts +2 -0
- package/dist/src/composables/useStrategyFilters.d.ts +24 -0
- package/dist/src/enums/extensions/filteringV2.d.ts +72 -0
- package/dist/src/enums/extensions/recommendationBlock.d.ts +10 -0
- package/dist/src/enums/extensions/strategyDetail.d.ts +90 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +3 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +61 -0
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +606 -1
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +7 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/strategyHumanizer.d.ts +50 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/strategySummary.d.ts +34 -0
- package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +3 -1
- package/dist/src/services/recommendationApi.d.ts +7 -1
- package/dist/src/stores/config.d.ts +18 -0
- package/dist/src/utils/genericUtil.d.ts +9 -0
- package/dist/static/styles/base.css.js +15 -0
- package/dist/utils/dateUtil.js +23 -10
- package/dist/utils/genericUtil.js +10 -1
- package/dist/utils/templatePreparation.js +62 -58
- package/package.json +5 -10
package/README.md
CHANGED
|
@@ -20,11 +20,9 @@ npm install @useinsider/guido
|
|
|
20
20
|
|
|
21
21
|
### Prerequisites
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
bundle or install them for you:
|
|
23
|
+
Your project needs:
|
|
25
24
|
- Vue 2.7+
|
|
26
25
|
- Pinia (state management)
|
|
27
|
-
- `@useinsider/design-system-vue` 2.x
|
|
28
26
|
|
|
29
27
|
Add these to your bundler config to optimize dependencies:
|
|
30
28
|
|
|
@@ -33,26 +31,16 @@ Add these to your bundler config to optimize dependencies:
|
|
|
33
31
|
shared: {
|
|
34
32
|
vue: { singleton: true },
|
|
35
33
|
pinia: { singleton: true },
|
|
36
|
-
'@useinsider/design-system-vue': { singleton: true },
|
|
37
34
|
},
|
|
38
35
|
```
|
|
39
36
|
|
|
40
37
|
**Vite** (`vite.config.js`):
|
|
41
38
|
```js
|
|
42
39
|
resolve: {
|
|
43
|
-
dedupe: ['vue', 'pinia'
|
|
40
|
+
dedupe: ['vue', 'pinia'],
|
|
44
41
|
},
|
|
45
42
|
```
|
|
46
43
|
|
|
47
|
-
> A second copy of the design system breaks styling and overlay positioning.
|
|
48
|
-
> If your `.npmrc` sets `legacy-peer-deps=true`, npm will neither install these
|
|
49
|
-
> nor warn you about them — declare them in your own `dependencies`.
|
|
50
|
-
>
|
|
51
|
-
> **Upgrading from Guido 3.11 or earlier?** You used to receive the design system
|
|
52
|
-
> transitively. Add `@useinsider/design-system-vue` `^2.0.0` to your own
|
|
53
|
-
> `dependencies` — an already-hoisted 1.x copy resolves silently and fails at
|
|
54
|
-
> runtime instead of at install.
|
|
55
|
-
|
|
56
44
|
---
|
|
57
45
|
|
|
58
46
|
## Quick Start
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModuleFolderDefaults as y } from "../../enums/defaults.js";
|
|
2
|
-
import { object as a, number as n, optional as e, string as t, picklist as l, pipe as p, minLength as b, custom as
|
|
2
|
+
import { object as a, number as n, optional as e, string as t, picklist as l, pipe as p, minLength as b, custom as h, boolean as o, array as c, record as k, fallback as R, literal as i, looseObject as g, variant as C, union as f, unknown as s, lazy as T } from "../../node_modules/valibot/dist/index.js";
|
|
3
3
|
const d = {
|
|
4
4
|
/** Promotional/marketing emails */
|
|
5
5
|
PROMOTIONAL: 1,
|
|
@@ -78,12 +78,12 @@ const d = {
|
|
|
78
78
|
select_items: e(c(S))
|
|
79
79
|
})), P = k(
|
|
80
80
|
t(),
|
|
81
|
-
|
|
81
|
+
R(c(S), [])
|
|
82
82
|
), D = g({
|
|
83
83
|
/** Block ID (matches the dictionary key and the legacy HTML element id) */
|
|
84
84
|
id: e(n()),
|
|
85
85
|
/** Decimal places for price display (legacy data may use string or number) */
|
|
86
|
-
decimalCount: e(
|
|
86
|
+
decimalCount: e(f([t(), n()])),
|
|
87
87
|
/** Pinned product IDs (empty array when filter-driven) */
|
|
88
88
|
productIds: e(c(s())),
|
|
89
89
|
/** Whether the block requested live products at send time */
|
|
@@ -117,7 +117,7 @@ const d = {
|
|
|
117
117
|
/** Block type marker used by some legacy variants */
|
|
118
118
|
blockType: e(t()),
|
|
119
119
|
/** Size variant marker (legacy data may use string or number) */
|
|
120
|
-
size: e(
|
|
120
|
+
size: e(f([t(), n()])),
|
|
121
121
|
/** Vertical responsiveness flag (legacy size=1 variants) */
|
|
122
122
|
verticalResponsiveness: e(o()),
|
|
123
123
|
/** Legacy "Move to next line" price placement toggle (cardPricePlacement.js) */
|
|
@@ -201,7 +201,12 @@ const d = {
|
|
|
201
201
|
/** Enable Liquid template syntax */
|
|
202
202
|
liquidSyntax: e(o(), !1),
|
|
203
203
|
/** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
|
|
204
|
-
autosave: e(o(), !1)
|
|
204
|
+
autosave: e(o(), !1),
|
|
205
|
+
/**
|
|
206
|
+
* Select a Reusable Recommendation Strategy (RRS) instead of a per-block algorithm.
|
|
207
|
+
* Replaces the algorithm dropdown with a strategy dropdown fed from Smart Recommender.
|
|
208
|
+
*/
|
|
209
|
+
reusableRecommendationStrategy: e(o(), !1)
|
|
205
210
|
}), U = l([
|
|
206
211
|
"amp-accordion",
|
|
207
212
|
"amp-carousel",
|
|
@@ -269,11 +274,11 @@ const d = {
|
|
|
269
274
|
...m.entries,
|
|
270
275
|
type: i("custom"),
|
|
271
276
|
/** Custom processor function */
|
|
272
|
-
processor:
|
|
277
|
+
processor: h(
|
|
273
278
|
(u) => typeof u == "function",
|
|
274
279
|
"processor must be a function"
|
|
275
280
|
)
|
|
276
|
-
}), G =
|
|
281
|
+
}), G = C("type", [
|
|
277
282
|
H,
|
|
278
283
|
_,
|
|
279
284
|
j,
|
|
@@ -289,7 +294,7 @@ const d = {
|
|
|
289
294
|
* Return false to cancel the save operation.
|
|
290
295
|
*/
|
|
291
296
|
externalValidation: e(
|
|
292
|
-
|
|
297
|
+
h(
|
|
293
298
|
(u) => typeof u == "function",
|
|
294
299
|
"externalValidation must be a function"
|
|
295
300
|
)
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from "./Guido.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
3
|
+
import i from "../_virtual/_plugin-vue2_normalizer.js";
|
|
4
4
|
var t = function() {
|
|
5
5
|
var o = this, r = o._self._c, e = o._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) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(p) {
|
|
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) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.StrategyDetailDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(p) {
|
|
7
7
|
return e.emit("onboarding:finished");
|
|
8
8
|
} } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
|
|
9
|
-
}, n = [], s = /* @__PURE__ */
|
|
10
|
-
|
|
9
|
+
}, n = [], s = /* @__PURE__ */ i(
|
|
10
|
+
a,
|
|
11
11
|
t,
|
|
12
12
|
n,
|
|
13
13
|
!1,
|
|
14
14
|
null,
|
|
15
|
-
"
|
|
15
|
+
"f96d1003"
|
|
16
16
|
);
|
|
17
17
|
const l = s.exports;
|
|
18
18
|
export {
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { defineComponent as X, defineAsyncComponent as I, ref as W, computed as x, watch as Y, onMounted as Z, onUnmounted as ee } from "vue";
|
|
2
|
-
import { useCortexBlueprintBridge as
|
|
3
|
-
import { provideGuidoActions as
|
|
2
|
+
import { useCortexBlueprintBridge as te } from "../composables/useCortexBlueprintBridge.js";
|
|
3
|
+
import { provideGuidoActions as oe } from "../composables/useGuidoActions.js";
|
|
4
4
|
import { useGuidoStateBridge as ne } from "../composables/useGuidoStateBridge.js";
|
|
5
5
|
import { usePartner as re } from "../composables/usePartner.js";
|
|
6
6
|
import { useStripo as se } from "../composables/useStripo.js";
|
|
7
7
|
import { useTimerClone as ae } from "../composables/useTimerClone.js";
|
|
8
8
|
import { migrate as G } from "../config/migrator/index.js";
|
|
9
9
|
import { ModuleFolderDefaults as H } from "../enums/defaults.js";
|
|
10
|
-
import { RIBBON_SELECTOR as
|
|
11
|
-
import { useRecommendationExtensionStore as
|
|
10
|
+
import { RIBBON_SELECTOR as ie } from "../enums/onboarding.js";
|
|
11
|
+
import { useRecommendationExtensionStore as ce } from "../extensions/Blocks/Recommendation/store/recommendation.js";
|
|
12
12
|
import me from "./organisms/AutoSaveController.vue.js";
|
|
13
13
|
import de from "./organisms/base/Toaster.vue.js";
|
|
14
14
|
import le from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
15
|
-
import ue from "./organisms/
|
|
16
|
-
import pe from "./organisms/
|
|
17
|
-
import fe from "./organisms/
|
|
18
|
-
import ve from "./organisms/
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
15
|
+
import ue from "./organisms/extensions/recommendation/StrategyDetailDrawer.vue.js";
|
|
16
|
+
import pe from "./organisms/header/HeaderWrapper.vue.js";
|
|
17
|
+
import fe from "./organisms/LoadingWrapper.vue.js";
|
|
18
|
+
import ve from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
19
|
+
import Se from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
20
|
+
import { useStripoApi as ye } from "../services/stripoApi.js";
|
|
21
|
+
import { useConfigStore as ge } from "../stores/config.js";
|
|
21
22
|
import { useDynamicContentStore as he } from "../stores/dynamic-content.js";
|
|
22
23
|
import { useEditorStore as $ } from "../stores/editor.js";
|
|
23
|
-
import { usePreviewStore as
|
|
24
|
-
import { useTemplateStore as
|
|
25
|
-
import { useUnsubscribeStore as
|
|
26
|
-
const
|
|
24
|
+
import { usePreviewStore as be } from "../stores/preview.js";
|
|
25
|
+
import { useTemplateStore as we } from "../stores/template.js";
|
|
26
|
+
import { useUnsubscribeStore as De } from "../stores/unsubscribe.js";
|
|
27
|
+
const Je = /* @__PURE__ */ X({
|
|
27
28
|
__name: "Guido",
|
|
28
29
|
props: {
|
|
29
30
|
config: null
|
|
@@ -34,11 +35,11 @@ const Ve = /* @__PURE__ */ X({
|
|
|
34
35
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
35
36
|
), V = I(
|
|
36
37
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
37
|
-
),
|
|
38
|
-
|
|
39
|
-
const m = $(), j =
|
|
38
|
+
), w = W(), p = W(), f = he(), D = De(), c = ge();
|
|
39
|
+
c.init(b.config);
|
|
40
|
+
const m = $(), j = be(), d = x(() => m.hasChanges), { isTestPartner: J } = re(), E = () => {
|
|
40
41
|
var e;
|
|
41
|
-
return (e =
|
|
42
|
+
return (e = w.value) == null ? void 0 : e.handleSave(!0);
|
|
42
43
|
}, C = (e) => {
|
|
43
44
|
m.loadingStatus = e;
|
|
44
45
|
}, {
|
|
@@ -46,10 +47,10 @@ const Ve = /* @__PURE__ */ X({
|
|
|
46
47
|
userId: T,
|
|
47
48
|
partnerName: L,
|
|
48
49
|
username: k,
|
|
49
|
-
template:
|
|
50
|
+
template: t,
|
|
50
51
|
editor: s
|
|
51
|
-
} =
|
|
52
|
-
|
|
52
|
+
} = c, l = (t == null ? void 0 : t.html) || "", F = (t == null ? void 0 : t.css) || "", S = (t == null ? void 0 : t.preselectedDynamicContent) || [], U = (s == null ? void 0 : s.savedModulesFolderName) || H.SAVED_MODULES, _ = (s == null ? void 0 : s.defaultModulesFolderName) || H.DEFAULT_MODULES;
|
|
53
|
+
te(), ne();
|
|
53
54
|
const y = {
|
|
54
55
|
emailId: v,
|
|
55
56
|
userId: T,
|
|
@@ -62,11 +63,11 @@ const Ve = /* @__PURE__ */ X({
|
|
|
62
63
|
onReady: () => {
|
|
63
64
|
console.debug("guido:ready"), n("ready");
|
|
64
65
|
}
|
|
65
|
-
}, { initPlugin: O } = se(y, M), { getDefaultTemplate: P } =
|
|
66
|
+
}, { initPlugin: O } = se(y, M), { getDefaultTemplate: P } = ye(), { cloneTimersOnSave: R, hasTimerBlocks: A } = ae(), Q = x(() => {
|
|
66
67
|
var e;
|
|
67
|
-
return !((e =
|
|
68
|
+
return !((e = c.ui) != null && e.showHeader);
|
|
68
69
|
});
|
|
69
|
-
|
|
70
|
+
oe({
|
|
70
71
|
onBack: () => {
|
|
71
72
|
console.debug("guido:back"), n("back");
|
|
72
73
|
},
|
|
@@ -74,8 +75,8 @@ const Ve = /* @__PURE__ */ X({
|
|
|
74
75
|
console.debug("guido:save:start"), n("save:start");
|
|
75
76
|
},
|
|
76
77
|
onSaveComplete: (e) => {
|
|
77
|
-
const
|
|
78
|
-
console.debug("guido:save:complete",
|
|
78
|
+
const o = { ...e, metadata: y };
|
|
79
|
+
console.debug("guido:save:complete", o), n("save:complete", o);
|
|
79
80
|
},
|
|
80
81
|
onTestEmailClick: () => {
|
|
81
82
|
console.debug("guido:test-email:click"), n("test-email:click");
|
|
@@ -89,52 +90,52 @@ const Ve = /* @__PURE__ */ X({
|
|
|
89
90
|
Y(() => d.value, () => {
|
|
90
91
|
n("on-change", d.value);
|
|
91
92
|
});
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
console.debug("dynamic-content:open",
|
|
93
|
+
const g = (e) => {
|
|
94
|
+
const o = e, { attribute: u, position: i } = o.detail;
|
|
95
|
+
console.debug("dynamic-content:open", o.detail), n("dynamic-content:open", u, i);
|
|
95
96
|
};
|
|
96
97
|
let a = null;
|
|
97
|
-
const
|
|
98
|
-
var
|
|
99
|
-
const e = document.querySelector(
|
|
100
|
-
(
|
|
98
|
+
const h = () => {
|
|
99
|
+
var o;
|
|
100
|
+
const e = document.querySelector(ie);
|
|
101
|
+
(o = p.value) == null || o.style.setProperty("--ribbon-offset", `${(e == null ? void 0 : e.offsetHeight) ?? 0}px`);
|
|
101
102
|
};
|
|
102
103
|
return Z(async () => {
|
|
103
|
-
var
|
|
104
|
-
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"),
|
|
105
|
-
const e = (
|
|
106
|
-
e && (a = new ResizeObserver(
|
|
104
|
+
var o, u;
|
|
105
|
+
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), ce().$reset(), $().$reset(), m.templateId = v, we().$reset(), h();
|
|
106
|
+
const e = (o = p.value) == null ? void 0 : o.parentElement;
|
|
107
|
+
e && (a = new ResizeObserver(h), a.observe(e));
|
|
107
108
|
try {
|
|
108
|
-
|
|
109
|
-
const
|
|
109
|
+
D.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
|
|
110
|
+
const i = ((u = t == null ? void 0 : t.migration) == null ? void 0 : u.recommendationConfigs) ?? {};
|
|
110
111
|
let r = {
|
|
111
|
-
html: l && await G(l,
|
|
112
|
+
html: l && await G(l, i),
|
|
112
113
|
css: F
|
|
113
114
|
};
|
|
114
|
-
r.html || (r = await P(), r.html = await G(r.html,
|
|
115
|
-
} catch (
|
|
116
|
-
console.error("Failed to initialize Stripo editor:",
|
|
115
|
+
r.html || (r = await P(), r.html = await G(r.html, i)), A(r.html) && (r.html = await R(r.html)), await O(r), f.selectedDynamicContentList = S;
|
|
116
|
+
} catch (i) {
|
|
117
|
+
console.error("Failed to initialize Stripo editor:", i);
|
|
117
118
|
}
|
|
118
|
-
document.addEventListener("dynamic-content:open",
|
|
119
|
+
document.addEventListener("dynamic-content:open", g);
|
|
119
120
|
}), ee(() => {
|
|
120
|
-
a == null || a.disconnect(), document.removeEventListener("dynamic-content:open",
|
|
121
|
+
a == null || a.disconnect(), document.removeEventListener("dynamic-content:open", g);
|
|
121
122
|
try {
|
|
122
123
|
window.UIEditor.removeEditor();
|
|
123
124
|
} catch {
|
|
124
125
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
+
c.reset();
|
|
127
128
|
}), q({
|
|
128
129
|
dynamicContent: {
|
|
129
130
|
insert: B,
|
|
130
131
|
close: N
|
|
131
132
|
},
|
|
132
133
|
hasChanges: d,
|
|
133
|
-
saveSilent:
|
|
134
|
+
saveSilent: E,
|
|
134
135
|
setLoading: C
|
|
135
|
-
}), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, headerWrapperRef:
|
|
136
|
+
}), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, headerWrapperRef: w, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: D, props: b, configStore: c, editorStore: m, previewStore: j, hasChanges: d, isTestPartner: J, saveSilent: E, setLoading: C, templateId: v, userId: T, partnerName: L, username: k, templateConfig: t, editorConfig: s, html: l, css: F, preselectedDynamicContentList: S, savedModulesFolderName: U, defaultModulesFolderName: _, emit: n, metadata: y, options: M, initPlugin: O, getDefaultTemplate: P, cloneTimersOnSave: R, hasTimerBlocks: A, noHeader: Q, insertDynamicContent: B, closeDynamicContent: N, handleDynamicContentOpen: g, ribbonObserver: a, updateRibbonOffset: h, AutoSaveController: me, Toaster: de, FilterSelectionDrawer: le, StrategyDetailDrawer: ue, HeaderWrapper: pe, LoadingWrapper: fe, SaveAsTemplateDrawer: ve, UnsubscribeWrapper: Se };
|
|
136
137
|
}
|
|
137
138
|
});
|
|
138
139
|
export {
|
|
139
|
-
|
|
140
|
+
Je as default
|
|
140
141
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import o from "./StrategyDetailDrawer.vue2.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import l from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var c = function() {
|
|
5
|
+
var i;
|
|
6
|
+
var a = this, s = a._self._c, t = a._self._setupProxy;
|
|
7
|
+
return s(t.InDrawer, { attrs: { id: "recommendation-strategy-detail-drawer", "close-button-status": "", "full-width-content-status": "", "overlay-status": "", size: "medium", state: "default", "description-status": !1, "footer-status": !1, status: t.isOpen, "title-text": ((i = t.strategy) == null ? void 0 : i.name) || "" }, on: { onCloseEvent: t.close }, scopedSlots: a._u([{ key: "headerBottomSlot", fn: function() {
|
|
8
|
+
return [t.strategy ? s(t.InTabs, { staticClass: "p-r z-4 px-5", attrs: { "active-tab": t.activeTab, "add-new-tab-active": !1, draggable: !1, "dropdown-tabs": !1, "tabs-list": t.tabs, "use-router": !1 }, on: { click: function(e) {
|
|
9
|
+
t.activeTab = e;
|
|
10
|
+
} } }) : a._e()];
|
|
11
|
+
}, proxy: !0 }, { key: "contentSlot", fn: function() {
|
|
12
|
+
return [t.strategy ? s("div", [t.activeTab === t.DetailTabs.GENERAL ? s("div", [s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.suitable-page-and-channel-types")) + " ")]), a._l(t.visibleRows(t.pageAndChannelDetails), function(e, r) {
|
|
13
|
+
return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
|
|
14
|
+
})], 2), s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.recommendation-widget-preferences")) + " ")]), a._l(t.visibleRows(t.widgetPreferences), function(e, r) {
|
|
15
|
+
return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
|
|
16
|
+
})], 2), s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.advanced-personalization-criteria")) + " ")]), a._l(t.visibleRows(t.advancedPersonalization), function(e, r) {
|
|
17
|
+
return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
|
|
18
|
+
})], 2), s("div", { staticClass: "px-5 py-5" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.filters")) + " ")]), s(t.FilterHumanizer, { attrs: { filters: t.strategy.filters } })], 1)]) : a._e(), t.activeTab === t.DetailTabs.OTHER ? s("div", [s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1 other-details" }, a._l(t.visibleRows(t.otherDetails), function(e, r) {
|
|
19
|
+
return s(t.InfoDisplayValue, { key: e.title, attrs: { icon: e.icon, "icon-tooltip": e.iconTooltip, "icon-tooltip-after-clicked": e.iconTooltipAfterClicked, index: r, title: e.title, "translate-value": e.translateValue, value: e.value }, on: { iconClick: function(b) {
|
|
20
|
+
var n;
|
|
21
|
+
(n = e.iconClick) == null || n.call(e, e.value);
|
|
22
|
+
} } });
|
|
23
|
+
}), 1), s("div", { staticClass: "px-5 py-5" }, [s(t.CampaignTable, { attrs: { campaigns: t.store.strategyCampaigns, loading: t.store.strategyCampaignsLoading } })], 1)]) : a._e()]) : a._e()];
|
|
24
|
+
}, proxy: !0 }]) });
|
|
25
|
+
}, u = [], v = /* @__PURE__ */ l(
|
|
26
|
+
o,
|
|
27
|
+
c,
|
|
28
|
+
u,
|
|
29
|
+
!1,
|
|
30
|
+
null,
|
|
31
|
+
"008cf324"
|
|
32
|
+
);
|
|
33
|
+
const d = v.exports;
|
|
34
|
+
export {
|
|
35
|
+
d as default
|
|
36
|
+
};
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { defineComponent as ee, ref as te, computed as l, watch as G } from "vue";
|
|
2
|
+
import { useTranslations as ae } from "../../../../composables/useTranslations.js";
|
|
3
|
+
import { DetailTabs as c, EMAIL_CHANNEL as se, PageTypeTranslationKeys as le, TIME as U, COUNT as F } from "../../../../enums/extensions/strategyDetail.js";
|
|
4
|
+
import { useRecommendationExtensionStore as ie } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
|
|
5
|
+
import { getMethodTranslationKey as re, getAlgorithmTranslationKey as ue } from "../../../../extensions/Blocks/Recommendation/utils/strategySummary.js";
|
|
6
|
+
import { formatShortDate as X } from "../../../../utils/dateUtil.js";
|
|
7
|
+
import { parseJsonField as w } from "../../../../utils/genericUtil.js";
|
|
8
|
+
import { InTabs as oe, InDrawer as ne } from "@useinsider/design-system-vue";
|
|
9
|
+
import ce from "./strategy-detail/CampaignTable.vue.js";
|
|
10
|
+
import de from "./strategy-detail/FilterHumanizer.vue.js";
|
|
11
|
+
import ve from "./strategy-detail/InfoDisplayValue.vue.js";
|
|
12
|
+
const Ee = /* @__PURE__ */ ee({
|
|
13
|
+
__name: "StrategyDetailDrawer",
|
|
14
|
+
setup(ye) {
|
|
15
|
+
const f = "MIXED", T = "CHECKOUT_RECOMMENDATION", r = ae(), u = ie(), p = te(c.GENERAL), t = l(() => u.getSelectedStrategy), _ = l(() => u.strategyDetailDrawerStatus), b = l(() => t.value ? String(t.value.strategy_id) : ""), o = l(() => r("campaign-details-modal.none")), J = l(() => [
|
|
16
|
+
{
|
|
17
|
+
value: c.GENERAL,
|
|
18
|
+
path: "",
|
|
19
|
+
text: r("discovery-strategy.recommendation-strategy-details")
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
value: c.OTHER,
|
|
23
|
+
path: "",
|
|
24
|
+
text: r("discovery-strategy.campaign-and-other-details")
|
|
25
|
+
}
|
|
26
|
+
]);
|
|
27
|
+
G(
|
|
28
|
+
() => [_.value, p.value, b.value],
|
|
29
|
+
([e, a, s]) => {
|
|
30
|
+
e && a === c.OTHER && s && u.fetchStrategyCampaigns(s);
|
|
31
|
+
},
|
|
32
|
+
{ immediate: !0 }
|
|
33
|
+
), G(_, (e) => {
|
|
34
|
+
e || (p.value = c.GENERAL);
|
|
35
|
+
});
|
|
36
|
+
const q = () => {
|
|
37
|
+
p.value = c.GENERAL, u.closeStrategyDrawer();
|
|
38
|
+
}, C = l(() => u.strategyCampaigns.filter((e) => e.status === "Active").reduce((e, a) => {
|
|
39
|
+
var s;
|
|
40
|
+
return e + (((s = a.variants) == null ? void 0 : s.length) ?? 0);
|
|
41
|
+
}, 0)), E = l(() => u.strategyCampaigns.filter((e) => e.status !== "Active").reduce((e, a) => {
|
|
42
|
+
var s;
|
|
43
|
+
return e + (((s = a.variants) == null ? void 0 : s.length) ?? 0);
|
|
44
|
+
}, 0)), D = l(() => {
|
|
45
|
+
var a;
|
|
46
|
+
return (((a = t.value) == null ? void 0 : a.suitable_channels) || "").split(",").map((s) => s.trim()).filter(Boolean).map((s) => r(
|
|
47
|
+
s.toLowerCase() === se ? "products.newsletter" : `products.${s.toLowerCase()}`
|
|
48
|
+
)).join(", ");
|
|
49
|
+
}), S = l(() => {
|
|
50
|
+
var s;
|
|
51
|
+
const e = (s = t.value) == null ? void 0 : s.suitable_page_types;
|
|
52
|
+
return e ? (typeof e == "string" ? e.split(",").map((i) => i.trim()) : e).filter(Boolean).map((i) => r(le[i] || i)).join(", ") : "";
|
|
53
|
+
}), Q = l(() => [
|
|
54
|
+
{
|
|
55
|
+
title: "discovery-strategy.channel-types",
|
|
56
|
+
value: D.value || o.value,
|
|
57
|
+
isVisible: !0,
|
|
58
|
+
translateValue: !1
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: "discovery-strategy.page-types",
|
|
62
|
+
value: S.value || o.value,
|
|
63
|
+
isVisible: !0,
|
|
64
|
+
translateValue: !1
|
|
65
|
+
}
|
|
66
|
+
]), m = l(
|
|
67
|
+
() => {
|
|
68
|
+
var e;
|
|
69
|
+
return w((e = t.value) == null ? void 0 : e.base_product, null);
|
|
70
|
+
}
|
|
71
|
+
), V = l(
|
|
72
|
+
() => {
|
|
73
|
+
var e;
|
|
74
|
+
return ((e = t.value) == null ? void 0 : e.algorithm) !== f && m.value !== null;
|
|
75
|
+
}
|
|
76
|
+
), A = l(() => {
|
|
77
|
+
const e = m.value;
|
|
78
|
+
if (!e)
|
|
79
|
+
return "";
|
|
80
|
+
const a = r(`discovery-strategy.base-product-source-${e.source}`);
|
|
81
|
+
return e.source === "page" ? a : `${a} ${r(`discovery-strategy.base-product-count-${e.count}`)}`;
|
|
82
|
+
}), I = l(() => t.value ? t.value.algorithm !== f ? w(t.value.manual_merchandising_products, []).filter(Boolean).join(", ") : w(t.value.mixed_strategies, []).map((e) => e == null ? void 0 : e.productId).filter(Boolean).join(", ") : ""), n = (e) => e ? "common.yes" : "common.no", W = l(() => {
|
|
83
|
+
var e, a, s, i, d, v, y;
|
|
84
|
+
return [
|
|
85
|
+
{
|
|
86
|
+
title: "discovery-strategy.method",
|
|
87
|
+
value: re(((e = t.value) == null ? void 0 : e.algorithm) || ""),
|
|
88
|
+
isVisible: !0,
|
|
89
|
+
translateValue: !0
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: "algorithm-panel.algorithm-header",
|
|
93
|
+
value: (((a = t.value) == null ? void 0 : a.algorithm_used) || "").split(",").map((g) => ue(g.trim())).join(", "),
|
|
94
|
+
isVisible: !0,
|
|
95
|
+
translateValue: !0
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
title: "discovery-strategy.base-product-label",
|
|
99
|
+
value: A.value,
|
|
100
|
+
isVisible: V.value,
|
|
101
|
+
translateValue: !1
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
title: "discovery-strategy.base-product-pin-label",
|
|
105
|
+
value: n((s = m.value) == null ? void 0 : s.pin),
|
|
106
|
+
isVisible: V.value,
|
|
107
|
+
translateValue: !0
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: "discovery-strategy.checkout-recommendation-cart-value",
|
|
111
|
+
value: String(((i = t.value) == null ? void 0 : i.checkout_recommendation_cart_value) ?? ""),
|
|
112
|
+
isVisible: ((d = t.value) == null ? void 0 : d.algorithm_used) === T,
|
|
113
|
+
translateValue: !1
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: "discovery-strategy.number-of-products",
|
|
117
|
+
value: String(((v = t.value) == null ? void 0 : v.size) ?? ""),
|
|
118
|
+
isVisible: !0,
|
|
119
|
+
translateValue: !1
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: "discovery-strategy.manual-merchandising-products",
|
|
123
|
+
value: I.value || o.value,
|
|
124
|
+
isVisible: !0,
|
|
125
|
+
translateValue: !1
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
title: "discovery-strategy.shuffle-recommended-products",
|
|
129
|
+
value: n((y = t.value) == null ? void 0 : y.shuffle),
|
|
130
|
+
isVisible: !0,
|
|
131
|
+
translateValue: !0
|
|
132
|
+
}
|
|
133
|
+
];
|
|
134
|
+
}), h = (e, a) => {
|
|
135
|
+
const s = (a || "").toLowerCase(), i = e === 1 ? `date-time.${s}` : `date-time.${s}s`;
|
|
136
|
+
return `${e ?? ""} ${r(i)}`;
|
|
137
|
+
}, x = (e) => `${e ?? ""} ${r(e === 1 ? "discovery-strategy.item" : "discovery-strategy.items")}`, Y = l(() => {
|
|
138
|
+
var e, a, s, i, d, v, y, g, L, R, $, M, O, B, P, k, H, j, K, z;
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
title: "discovery-strategy.personalize-recommendations-based-on-attribute-affinity",
|
|
142
|
+
value: n((e = t.value) == null ? void 0 : e.attribute_affinity),
|
|
143
|
+
isVisible: !0,
|
|
144
|
+
translateValue: !0
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
title: "discovery-strategy.exclude-recently-view-items",
|
|
148
|
+
value: n((a = t.value) == null ? void 0 : a.exclude_view),
|
|
149
|
+
isVisible: !((s = t.value) != null && s.exclude_view),
|
|
150
|
+
translateValue: !0
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
title: "discovery-strategy.exclude-items-viewed-in-the-last",
|
|
154
|
+
value: h((i = t.value) == null ? void 0 : i.exclude_view_duration, (d = t.value) == null ? void 0 : d.exclude_view_duration_type),
|
|
155
|
+
isVisible: !!((v = t.value) != null && v.exclude_view) && ((y = t.value) == null ? void 0 : y.exclude_view_option) === U,
|
|
156
|
+
translateValue: !1
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: "discovery-strategy.number-of-items-to-exclude-from-recently-viewed",
|
|
160
|
+
value: x((g = t.value) == null ? void 0 : g.exclude_view_item_count),
|
|
161
|
+
isVisible: !!((L = t.value) != null && L.exclude_view) && ((R = t.value) == null ? void 0 : R.exclude_view_option) === F,
|
|
162
|
+
translateValue: !1
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
title: "discovery-strategy.exclude-recently-purchased-items",
|
|
166
|
+
value: n(($ = t.value) == null ? void 0 : $.exclude_purchase),
|
|
167
|
+
isVisible: !((M = t.value) != null && M.exclude_purchase),
|
|
168
|
+
translateValue: !0
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
title: "discovery-strategy.exclude-items-purchase-in-the-last",
|
|
172
|
+
value: h((O = t.value) == null ? void 0 : O.exclude_purchase_duration, (B = t.value) == null ? void 0 : B.exclude_purchase_duration_type),
|
|
173
|
+
isVisible: !!((P = t.value) != null && P.exclude_purchase) && ((k = t.value) == null ? void 0 : k.exclude_purchase_option) === U,
|
|
174
|
+
translateValue: !1
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
title: "discovery-strategy.number-of-items-to-exclude-from-recently-purchased",
|
|
178
|
+
value: x((H = t.value) == null ? void 0 : H.exclude_purchase_item_count),
|
|
179
|
+
isVisible: !!((j = t.value) != null && j.exclude_purchase) && ((K = t.value) == null ? void 0 : K.exclude_purchase_option) === F,
|
|
180
|
+
translateValue: !1
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
title: "discovery-strategy.exclude-recently-added-cart-items",
|
|
184
|
+
value: n((z = t.value) == null ? void 0 : z.exclude_cart),
|
|
185
|
+
isVisible: !0,
|
|
186
|
+
translateValue: !0
|
|
187
|
+
}
|
|
188
|
+
];
|
|
189
|
+
}), N = (e) => {
|
|
190
|
+
var a;
|
|
191
|
+
(a = navigator.clipboard) == null || a.writeText(e).catch(() => {
|
|
192
|
+
console.warn("[StrategyDetailDrawer] Copying the strategy id to the clipboard failed.");
|
|
193
|
+
});
|
|
194
|
+
}, Z = l(() => {
|
|
195
|
+
var e, a, s;
|
|
196
|
+
return [
|
|
197
|
+
{
|
|
198
|
+
title: "discovery-strategy.strategy-id",
|
|
199
|
+
value: b.value,
|
|
200
|
+
isVisible: !0,
|
|
201
|
+
translateValue: !1,
|
|
202
|
+
icon: "line-copy",
|
|
203
|
+
iconTooltip: "discovery-strategy.copy",
|
|
204
|
+
iconTooltipAfterClicked: "discovery-strategy.copied",
|
|
205
|
+
iconClick: N
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
title: "discovery-strategy.last-updated-by",
|
|
209
|
+
value: ((e = t.value) == null ? void 0 : e.last_updated_by) || o.value,
|
|
210
|
+
isVisible: !0,
|
|
211
|
+
translateValue: !1
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
title: "discovery-strategy.last-updated-on",
|
|
215
|
+
value: (a = t.value) != null && a.updated_at ? X(t.value.updated_at) : o.value,
|
|
216
|
+
isVisible: !0,
|
|
217
|
+
translateValue: !1
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
title: "discovery-strategy.created-date",
|
|
221
|
+
value: (s = t.value) != null && s.created_at ? X(t.value.created_at) : o.value,
|
|
222
|
+
isVisible: !0,
|
|
223
|
+
translateValue: !1
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
title: "discovery-strategy.variants-with-live-recommendation-strategies",
|
|
227
|
+
value: String(C.value),
|
|
228
|
+
isVisible: !0,
|
|
229
|
+
translateValue: !1
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
title: "discovery-strategy.variants-with-idle-recommendation-strategies",
|
|
233
|
+
value: String(E.value),
|
|
234
|
+
isVisible: !0,
|
|
235
|
+
translateValue: !1
|
|
236
|
+
}
|
|
237
|
+
];
|
|
238
|
+
});
|
|
239
|
+
return { __sfc: !0, MIXED: f, CHECKOUT_RECOMMENDATION: T, trans: r, store: u, activeTab: p, strategy: t, isOpen: _, strategyId: b, none: o, tabs: J, close: q, liveVariantsCount: C, idleVariantsCount: E, suitableChannelTypes: D, suitablePageTypes: S, pageAndChannelDetails: Q, baseProduct: m, isBaseProductVisible: V, baseProductSourceLabel: A, manualMerchandisingProducts: I, yesNo: n, widgetPreferences: W, durationText: h, itemCountText: x, advancedPersonalization: Y, copyStrategyId: N, otherDetails: Z, visibleRows: (e) => e.filter((a) => a.isVisible), DetailTabs: c, InDrawer: ne, InTabs: oe, CampaignTable: ce, FilterHumanizer: de, InfoDisplayValue: ve };
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
export {
|
|
243
|
+
Ee as default
|
|
244
|
+
};
|
package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import n from "./CampaignTable.vue2.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import i from "../../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var e = function() {
|
|
5
|
+
var a = this, s = a._self._c, t = a._self._setupProxy;
|
|
6
|
+
return s("div", { staticClass: "campaign-table" }, [s("div", { staticClass: "f-w-600 f-s-2 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.used-in-campaigns", { count: a.campaigns.length })) + " ")]), t.hasCampaigns || a.loading ? s(t.InDataTableV2, { attrs: { id: "strategy-campaign-listing-table", "pagination-status": "", "column-options": t.columnOptions, data: a.campaigns, "horizontal-scroll": !1, "in-container-layout": !1, "items-per-page-status": !1, "loading-status": a.loading } }) : s(t.InNoData, { attrs: { "button-status": !1, description: t.trans("discovery-strategy.no-campaigns-description"), title: t.trans("discovery-strategy.no-campaigns"), "visible-icon": !1 } })], 1);
|
|
7
|
+
}, o = [], r = /* @__PURE__ */ i(
|
|
8
|
+
n,
|
|
9
|
+
e,
|
|
10
|
+
o,
|
|
11
|
+
!1,
|
|
12
|
+
null,
|
|
13
|
+
"3ff1b2a9"
|
|
14
|
+
);
|
|
15
|
+
const g = r.exports;
|
|
16
|
+
export {
|
|
17
|
+
g as default
|
|
18
|
+
};
|