@useinsider/guido 3.12.0-beta.d2745e7 → 3.12.0-beta.d77b0d2

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.
Files changed (73) hide show
  1. package/dist/@types/config/schemas.js +9 -4
  2. package/dist/components/Guido.vue.js +6 -6
  3. package/dist/components/Guido.vue2.js +50 -49
  4. package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.js +38 -0
  5. package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue2.js +271 -0
  6. package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.js +18 -0
  7. package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue2.js +42 -0
  8. package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.js +20 -0
  9. package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue2.js +18 -0
  10. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.js +20 -0
  11. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue2.js +60 -0
  12. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.js +19 -0
  13. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue2.js +19 -0
  14. package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.js +22 -0
  15. package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue2.js +29 -0
  16. package/dist/composables/useHtmlValidator.js +68 -60
  17. package/dist/composables/useHttp.js +61 -52
  18. package/dist/composables/useRecommendation.js +56 -40
  19. package/dist/composables/useSave.js +22 -22
  20. package/dist/composables/useStrategyFilters.js +16 -0
  21. package/dist/config/migrator/recommendationMigrator.js +7 -4
  22. package/dist/enums/date.js +4 -3
  23. package/dist/enums/extensions/filteringV2.js +1024 -0
  24. package/dist/enums/extensions/recommendationBlock.js +45 -24
  25. package/dist/enums/extensions/strategyDetail.js +149 -0
  26. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +12 -11
  27. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +141 -123
  28. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +297 -0
  29. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +16 -2
  30. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +137 -0
  31. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +549 -165
  32. package/dist/extensions/Blocks/Recommendation/utils/strategyHumanizer.js +97 -0
  33. package/dist/extensions/Blocks/Recommendation/utils/strategyNavigation.js +8 -0
  34. package/dist/extensions/Blocks/Recommendation/utils/strategySummary.js +95 -0
  35. package/dist/extensions/Blocks/Recommendation/utils/strategyUrl.js +43 -0
  36. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +24 -10
  37. package/dist/extensions/Blocks/common-control.js +37 -35
  38. package/dist/guido.css +1 -1
  39. package/dist/services/recommendationApi.js +127 -33
  40. package/dist/services/stripoApi.js +18 -18
  41. package/dist/src/@types/config/schemas.d.ts +10 -0
  42. package/dist/src/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.d.ts +2 -0
  43. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.d.ts +43 -0
  44. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.d.ts +29 -0
  45. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.d.ts +40 -0
  46. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.d.ts +38 -0
  47. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.d.ts +51 -0
  48. package/dist/src/composables/useConfig.d.ts +2 -0
  49. package/dist/src/composables/useHtmlValidator.d.ts +2 -0
  50. package/dist/src/composables/useRecommendation.d.ts +2 -0
  51. package/dist/src/composables/useStrategyFilters.d.ts +24 -0
  52. package/dist/src/enums/extensions/filteringV2.d.ts +72 -0
  53. package/dist/src/enums/extensions/recommendationBlock.d.ts +33 -0
  54. package/dist/src/enums/extensions/strategyDetail.d.ts +90 -0
  55. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +10 -4
  56. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +118 -0
  57. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +958 -1
  58. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +7 -0
  59. package/dist/src/extensions/Blocks/Recommendation/utils/strategyHumanizer.d.ts +50 -0
  60. package/dist/src/extensions/Blocks/Recommendation/utils/strategyNavigation.d.ts +10 -0
  61. package/dist/src/extensions/Blocks/Recommendation/utils/strategySummary.d.ts +34 -0
  62. package/dist/src/extensions/Blocks/Recommendation/utils/strategyUrl.d.ts +51 -0
  63. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +8 -1
  64. package/dist/src/extensions/Blocks/common-control.d.ts +5 -2
  65. package/dist/src/mock/api/recommendation-strategies.d.ts +2 -0
  66. package/dist/src/services/recommendationApi.d.ts +9 -1
  67. package/dist/src/stores/config.d.ts +18 -0
  68. package/dist/src/utils/genericUtil.d.ts +9 -0
  69. package/dist/static/styles/components/base-input.css.js +6 -7
  70. package/dist/utils/dateUtil.js +23 -10
  71. package/dist/utils/genericUtil.js +10 -1
  72. package/dist/utils/templatePreparation.js +70 -57
  73. package/package.json +1 -1
@@ -0,0 +1,97 @@
1
+ import { FilterTypeNames as f, OperatorAbbreviations as N, UserEvents as y, UserEventKeys as d } from "../../../../enums/extensions/strategyDetail.js";
2
+ import { formatShortDate as p } from "../../../../utils/dateUtil.js";
3
+ const L = /* @__PURE__ */ new Set([
4
+ d.CURRENTLY_VIEWED_ITEM,
5
+ d.LEGACY_CURRENTLY_VIEWED_ITEM
6
+ ]), g = /^(\d+)([whd])$/, h = (t) => t ? t.charAt(0).toUpperCase() + t.slice(1) : "", v = (t, e) => {
7
+ const r = y.find((n) => n.value === t);
8
+ return r ? e(r.text) : t;
9
+ }, C = (t, e) => {
10
+ if (t.userAttribute)
11
+ return t.userAttribute;
12
+ if (!t.userEvent)
13
+ return "";
14
+ const r = v(t.userEvent, e);
15
+ if (L.has(t.userEvent))
16
+ return r;
17
+ const n = t.userEventCount ?? 0;
18
+ if (n <= 0)
19
+ return r;
20
+ const a = e(
21
+ n === 1 ? "discovery-strategy-filtering.item" : "discovery-strategy-filtering.items"
22
+ );
23
+ return `${r} ${n} ${a}`;
24
+ }, O = [
25
+ f.USER_ATTRIBUTE_FILTER,
26
+ f.USER_EVENT_FILTER,
27
+ f.USER_CONTEXT_FILTER
28
+ ], V = (t) => O.includes(t ?? ""), S = (t, e, r) => {
29
+ if (!t)
30
+ return "";
31
+ const n = g.exec(t);
32
+ if (!n)
33
+ return "";
34
+ const [, a, c] = n, s = e.find((T) => T.value === c), $ = s ? s.text.toLowerCase() : c;
35
+ return ` ${r("purchase-history.in-last")} ${a} ${$}`;
36
+ }, R = (t, e) => t.map((r) => `[${r}]`).join(` ${e} `), b = (t) => {
37
+ let e;
38
+ try {
39
+ e = JSON.parse(t);
40
+ } catch {
41
+ return t.split(",");
42
+ }
43
+ return Array.isArray(e) ? e.map((r) => String(r)) : [String(e)];
44
+ };
45
+ function w(t) {
46
+ const {
47
+ condition: e,
48
+ selectedOperator: r,
49
+ filterValue: n,
50
+ timeUnit: a,
51
+ inBetweenValues: c,
52
+ timeUnitOptions: s,
53
+ isDateAttribute: $,
54
+ isMultiSelect: T,
55
+ isInOrNotInOperator: U,
56
+ trans: E
57
+ } = t, { IN_LAST: A, IN_BETWEEN: _ } = N.OPERATOR, l = E("action-builder.and");
58
+ if (V(e.type)) {
59
+ const i = C(e, E);
60
+ if (i)
61
+ return `${i}${S(e.duration, s, E)}`;
62
+ }
63
+ const u = e.type === f.EVENT_BASED_FILTER ? S(e.duration, s, E) : "";
64
+ if (e.time && r !== _)
65
+ return `${p(e.time)}${u}`;
66
+ if (r === A) {
67
+ const [i] = n.match(/\d+/g) || [];
68
+ if (!i)
69
+ return n;
70
+ const o = s.find((m) => m.value === a);
71
+ return `${i} ${h((o == null ? void 0 : o.text) ?? "")}`.trimEnd();
72
+ }
73
+ if (r === _) {
74
+ if ($() && e.time) {
75
+ const [m = "", I = ""] = e.time.split(":");
76
+ return `${p(m)} ${l} ${p(I)}${u}`;
77
+ }
78
+ const [i = "", o = ""] = c ?? [];
79
+ return `${i} ${l} ${o}${u}`;
80
+ }
81
+ if (T())
82
+ return `${R(b(n), l)}${u}`;
83
+ if (U()) {
84
+ const i = n.split(",");
85
+ return `${i.length > 1 ? R(i, l) : n}${u}`;
86
+ }
87
+ return `${n}${u}`;
88
+ }
89
+ export {
90
+ R as bracketJoin,
91
+ h as capitalizeFirstLetter,
92
+ S as getDurationSuffix,
93
+ w as getSuitableValue,
94
+ C as getUserContextValue,
95
+ v as getUserEventLabel,
96
+ b as parseMultiSelectValue
97
+ };
@@ -0,0 +1,8 @@
1
+ import { STRATEGY_PAGES as a } from "../../../../enums/extensions/recommendationBlock.js";
2
+ const o = (t) => {
3
+ window.location.assign(t);
4
+ }, e = (t) => a.EDIT.replace("{{id}}", String(t));
5
+ export {
6
+ e as buildStrategyEditPath,
7
+ o as navigateToStrategyPage
8
+ };
@@ -0,0 +1,95 @@
1
+ import { TimeAbbreviations as g, Operators as y, OperatorNames as c, OperatorAbbreviations as I, DataTypes as O, MultiSelectDataTypes as E } from "../../../../enums/extensions/filteringV2.js";
2
+ import { capitalizeFirstLetter as d, bracketJoin as T, parseMultiSelectValue as v } from "./strategyHumanizer.js";
3
+ import { formatShortDate as f } from "../../../../utils/dateUtil.js";
4
+ import { parseJsonField as b } from "../../../../utils/genericUtil.js";
5
+ const S = "CHEF", _ = "MIXED", M = [S, _], N = 2, h = 4, A = (e) => `recommendation-algorithm-names.${(e || "").replaceAll("_", "-").toLowerCase()}`, x = (e) => ({
6
+ [S]: "discovery-strategy.chef",
7
+ [_]: "discovery-strategy.mixed-algorithm"
8
+ })[e] ?? "discovery-strategy.single-algorithm", L = (e, t) => {
9
+ if (!M.includes(e.algorithm))
10
+ return t(A(e.algorithm));
11
+ const o = t(x(e.algorithm)), i = (e.algorithm_used || "").split(",").map((r) => r.trim()).filter(Boolean).map((r) => t(A(r))), n = [...new Set(i)];
12
+ if (n.length > 1) {
13
+ const r = t("strategy-info-box-content.and-more", { count: n.length - 1 });
14
+ return `${o} - ${n[0]} ${r}`;
15
+ }
16
+ return `${o} - ${n.join(", ")}`;
17
+ }, C = (e, t) => {
18
+ const o = [
19
+ e.exclude_view && "viewed",
20
+ e.exclude_purchase && "purchased",
21
+ e.exclude_cart && "cart"
22
+ ].filter(Boolean);
23
+ return o.length ? o.map((n, r) => {
24
+ if (r === 0)
25
+ return t(`recommendation-strategy.recently_${n}`) + (o.length > 2 ? "," : "");
26
+ const s = t(`recommendation-strategy.${n}`);
27
+ return r === o.length - 1 ? `${t("ds-condition.and")} ${s}` : s;
28
+ }).join(" ") : t("recommendation-strategy.none");
29
+ }, D = (e, t) => {
30
+ var n;
31
+ const i = (y[((n = e.attribute) == null ? void 0 : n.attributeType) ?? ""] || []).find((r) => r.value === e.selectedOperator);
32
+ return i ? t(i.text) : "";
33
+ }, w = ({ attribute: e }) => (e == null ? void 0 : e.attributeType) === O.DATE, R = (e) => {
34
+ var r;
35
+ const t = ((r = e.attribute) == null ? void 0 : r.attributeType) ?? "", o = e.selectedOperator ?? "";
36
+ if (!E.includes(t) || [c.CONTAINS, c.NOT_CONTAINS].includes(o))
37
+ return !1;
38
+ const i = [c.IS_EXACTLY, c.IS_NOT_EXACTLY].includes(o);
39
+ return !((e.isHierarchyCategory || t === O.STRING) && i);
40
+ }, j = (e, t, o) => {
41
+ const i = e.value ?? "", n = t("action-builder.and"), { IN_LAST: r, IN_BETWEEN: s } = I.OPERATOR;
42
+ if (e.time && e.selectedOperator !== s)
43
+ return f(e.time);
44
+ if (e.selectedOperator === r) {
45
+ const [a] = i.match(/\d+/g) || [], l = o[e.timeUnit ?? ""];
46
+ return a && l ? `${a} ${l}` : i;
47
+ }
48
+ if (e.selectedOperator === s) {
49
+ if (w(e)) {
50
+ const [m = "", u = ""] = (e.time ?? "").split(":");
51
+ return `${f(m)} ${n} ${f(u)}`;
52
+ }
53
+ const [a = "", l = ""] = e.inBetweenValues ?? [];
54
+ return `${a} ${n} ${l}`;
55
+ }
56
+ if (R(e))
57
+ return T(v(i), n);
58
+ if ([c.IN, c.NOT_IN].includes(e.selectedOperator)) {
59
+ const a = i.split(",");
60
+ return a.length > 1 ? T(a, n) : i;
61
+ }
62
+ return i;
63
+ }, F = (e, t) => {
64
+ var $;
65
+ const o = b(e.filters, {}), n = Object.values(o).slice(0, N).flatMap((p) => (p == null ? void 0 : p.conditionList) ?? []), [r] = n;
66
+ if (!r)
67
+ return t("recommendation-strategy.none");
68
+ const s = {
69
+ [g.WEEK]: d(t("journey-builder.weeks")),
70
+ [g.DAY]: d(t("settings.day-s")),
71
+ [g.HOUR]: d(t("settings.hour-s"))
72
+ }, a = d((($ = r.attribute) == null ? void 0 : $.text) ?? ""), l = D(r, t), m = j(r, t, s), u = `${a} ${t("input.value")} ${l} ${m}`;
73
+ return n.length > 1 ? `${u} ${t("strategy-info-box-content.and-more", { count: n.length - 1 })}` : u;
74
+ }, H = (e, t) => {
75
+ const o = b(e.manual_merchandising_products, []), i = b(e.mixed_strategies, []), n = (Array.isArray(i) ? i : []).map((s) => s == null ? void 0 : s.productId).filter(Boolean), r = [.../* @__PURE__ */ new Set([...Array.isArray(o) ? o : [], ...n])];
76
+ if (!r.length)
77
+ return t("recommendation-strategy.none");
78
+ if (r.length > h) {
79
+ const s = t("strategy-info-box-content.and-more", {
80
+ count: r.length - h
81
+ });
82
+ return `${r.slice(0, h).join(", ")} ${s}`;
83
+ }
84
+ return r.join(", ");
85
+ }, V = (e, t) => [
86
+ { title: t("gpt-app-builder.algorithms-and-method"), value: L(e, t) },
87
+ { title: t("gpt-app-builder.exclusions"), value: C(e, t) },
88
+ { title: t("gpt-app-builder.filters"), value: F(e, t) },
89
+ { title: t("gpt-app-builder.manual-merchandising"), value: H(e, t) }
90
+ ];
91
+ export {
92
+ V as buildStrategySummary,
93
+ A as getAlgorithmTranslationKey,
94
+ x as getMethodTranslationKey
95
+ };
@@ -0,0 +1,43 @@
1
+ import { useConfigStore as I } from "../../../../stores/config.js";
2
+ const l = {
3
+ LOCALE: ["{locale}", "{language}"],
4
+ CURRENCY: ["{currency}"],
5
+ CAMPAIGN_ID: ["{campaignId}"],
6
+ STRATEGY_ID: ["{strategyId}"],
7
+ CLIENT_ID: ["{clientId}"],
8
+ PARTNER_NAME: ["{partnerName}", "{partnerId}"],
9
+ SIZE: ["{size}"]
10
+ }, d = {
11
+ // Both spellings are in use: the legacy email templates say `{user_id}`,
12
+ // the web runtime's say `{userId}`.
13
+ USER_ID: ["{userId}", "{user_id}"]
14
+ }, E = (e, r, s) => r.reduce((t, n) => t.replaceAll(n, s), e), u = (e) => {
15
+ const r = e.indexOf("?");
16
+ if (r === -1)
17
+ return e;
18
+ const s = e.slice(0, r), t = e.slice(r + 1), n = t.indexOf("#"), i = n === -1 ? t : t.slice(0, n), c = n === -1 ? "" : t.slice(n), a = i.split("&").filter((o) => !/\{[^}]*\}/.test(o.slice(o.indexOf("=") + 1)));
19
+ return a.length ? `${s}?${a.join("&")}${c}` : `${s}${c}`;
20
+ }, A = (e) => {
21
+ const r = I();
22
+ return {
23
+ LOCALE: e.language,
24
+ CURRENCY: e.currencyCode,
25
+ CAMPAIGN_ID: r.variationId,
26
+ STRATEGY_ID: e.strategyId,
27
+ CLIENT_ID: "6KcLM9TwheVB1mgK",
28
+ PARTNER_NAME: r.partnerName,
29
+ SIZE: e.size
30
+ };
31
+ }, C = (e, r, s) => {
32
+ if (!e)
33
+ return "";
34
+ const t = Object.entries(l).reduce(
35
+ (n, [i, c]) => E(n, c, r[i]),
36
+ e
37
+ );
38
+ return s === "preview" ? u(t) : E(t, d.USER_ID, "{user_id}");
39
+ };
40
+ export {
41
+ A as buildStrategyUrlValues,
42
+ C as resolveStrategyUrl
43
+ };
@@ -1,4 +1,4 @@
1
- const l = [
1
+ const u = [
2
2
  {
3
3
  key: "locale",
4
4
  getValue: (e) => e.language,
@@ -9,25 +9,39 @@ const l = [
9
9
  getValue: (e) => e.currencySettings.value,
10
10
  getAvailableOptions: (e) => e.currencyList.map((n) => n.text),
11
11
  canBeEmpty: !0
12
+ },
13
+ {
14
+ // Only a *deleted* strategy blocks the save (SD-145578 AC-4). An empty
15
+ // strategyId is legitimate: blocks saved before RRS keep running on their
16
+ // algorithm URL, and with the flag on by default those templates must stay
17
+ // saveable.
18
+ //
19
+ // `canValidateStrategy` gates the whole check — mid-fetch the listing is
20
+ // empty and every assigned id would look deleted.
21
+ key: "strategy",
22
+ optional: !0,
23
+ getValue: (e) => e.strategyId,
24
+ getAvailableOptions: (e) => e.strategyIds,
25
+ condition: (e, n) => n.isRrsEnabled && n.canValidateStrategy
12
26
  }
13
27
  ], o = "newsletter.recommendation-fill-required-fields";
14
- function c(e, n, i = l) {
15
- return i.filter((t) => {
16
- var u;
17
- if (t.condition && !t.condition(e))
28
+ function c(e, n, l = u) {
29
+ return l.filter((t) => {
30
+ var i;
31
+ if (t.condition && !t.condition(e, n))
18
32
  return !1;
19
- const r = (u = t.getAvailableOptions) == null ? void 0 : u.call(t, n);
20
- if (t.canBeEmpty && (r == null ? void 0 : r.length) === 0)
33
+ const a = (i = t.getAvailableOptions) == null ? void 0 : i.call(t, n);
34
+ if (t.canBeEmpty && (a == null ? void 0 : a.length) === 0)
21
35
  return !1;
22
- const a = t.getValue(e);
23
- return a ? r !== void 0 && !r.includes(a) : !0;
36
+ const r = t.getValue(e);
37
+ return r ? a !== void 0 && !a.includes(r) : !t.optional;
24
38
  }).map((t) => t.key);
25
39
  }
26
40
  function s(e, n) {
27
41
  return c(e, n).length === 0;
28
42
  }
29
43
  export {
30
- l as REQUIRED_RECOMMENDATION_FIELDS,
44
+ u as REQUIRED_RECOMMENDATION_FIELDS,
31
45
  o as RecommendationRequiredFieldsKey,
32
46
  c as getInvalidFields,
33
47
  s as isConfigValid
@@ -47,15 +47,15 @@ class d extends I {
47
47
  const t = this.getBlockInstanceId();
48
48
  if (!t)
49
49
  return !1;
50
- const o = t !== this.lastBlockInstanceId;
51
- return e(), o && (this.lastBlockInstanceId = t), o;
50
+ const E = t !== this.lastBlockInstanceId;
51
+ return e(), E && (this.lastBlockInstanceId = t), E;
52
52
  }
53
- _GuLabel({ text: e, name: t = "", hint: o }) {
53
+ _GuLabel({ text: e, name: t = "", hint: E }) {
54
54
  return `
55
55
  <${n.LABEL}
56
56
  ${$.LABEL.text}="${e}"
57
57
  ${$.LABEL.name}="${t || `${e} Label`}"
58
- ${o ? `${$.LABEL.hint}="${o}"` : ""}>
58
+ ${E ? `${$.LABEL.hint}="${E}"` : ""}>
59
59
  </${n.LABEL}>
60
60
  `;
61
61
  }
@@ -73,7 +73,7 @@ class d extends I {
73
73
  * Use in getTemplate() — the icon is registered in a hidden store so Stripo initializes it.
74
74
  * Pair with _setInfoMessageValue() in onRender() to set the text content.
75
75
  */
76
- _GuOnPageMessage({ name: e, icon: t = "not-found", type: o = "info" }) {
76
+ _GuOnPageMessage({ name: e, icon: t = "not-found", type: E = "info" }) {
77
77
  return `
78
78
  <div data-info-message="${e}" style="display: none; padding: 16px 16px 0;">
79
79
  <div class="icon-store" style="display: none;">
@@ -81,7 +81,7 @@ class d extends I {
81
81
  ${this._GuIcon({ src: t, className: "icon" })}
82
82
  </div>
83
83
  </div>
84
- ${this._GuMessage({ name: e, type: o })}
84
+ ${this._GuMessage({ name: e, type: E })}
85
85
  </div>
86
86
  `;
87
87
  }
@@ -91,7 +91,7 @@ class d extends I {
91
91
  * and combines it with the text in Stripo's alert-message layout.
92
92
  */
93
93
  _setInfoMessageValue(e, t) {
94
- const o = this.getContainer(), E = o.querySelector(`[data-icon-key="${e}"]`), a = E == null ? void 0 : E.querySelector("ue-icon-component"), l = (a == null ? void 0 : a.outerHTML) ?? "";
94
+ const E = this.getContainer(), o = E.querySelector(`[data-icon-key="${e}"]`), a = o == null ? void 0 : o.querySelector("ue-icon-component"), l = (a == null ? void 0 : a.outerHTML) ?? "";
95
95
  this.api.setUIEAttribute(
96
96
  e,
97
97
  "value",
@@ -104,7 +104,7 @@ class d extends I {
104
104
  </div>
105
105
  `
106
106
  );
107
- const T = o.querySelector(`[data-info-message="${e}"]`);
107
+ const T = E.querySelector(`[data-info-message="${e}"]`);
108
108
  T && (T.style.display = "");
109
109
  }
110
110
  _GuToggle(e) {
@@ -121,59 +121,60 @@ class d extends I {
121
121
  ${$.SELECT_ITEM.value}="${t}">
122
122
  </${n.SELECT_ITEM}>`;
123
123
  }
124
- _GuSelect({ name: e, placeholder: t, options: o, className: E = "es-180w" }) {
124
+ _GuSelect({ name: e, placeholder: t, options: E, className: o = "es-180w", searchable: a = !1 }) {
125
125
  return `
126
126
  <${n.SELECTPICKER}
127
- class="${E}"
127
+ class="${o}"
128
128
  ${$.SELECTPICKER.name}="${e}"
129
+ ${a ? `${$.SELECTPICKER.searchable}="true"` : ""}
129
130
  ${$.SELECTPICKER.placeholder}="${t}">
130
- ${o.map((a) => this._GuSelectItem(a)).join("")}
131
+ ${E.map((l) => this._GuSelectItem(l)).join("")}
131
132
  </${n.SELECTPICKER}>
132
133
  `;
133
134
  }
134
- _GuTextInput({ name: e, placeholder: t, className: o = "", disabled: E = !1 }) {
135
+ _GuTextInput({ name: e, placeholder: t, className: E = "", disabled: o = !1 }) {
135
136
  return `
136
137
  <${n.TEXT}
137
- class=${o}
138
+ class=${E}
138
139
  ${$.TEXT.name}="${e}"
139
140
  placeholder="${t || e}"
140
- ${E ? `${$.TEXT.disabled}="true"` : ""}>
141
+ ${o ? `${$.TEXT.disabled}="true"` : ""}>
141
142
  </${n.TEXT}>
142
143
  `;
143
144
  }
144
- _GuCounter({ name: e, maxValue: t, minValue: o = 1, step: E = 1 }) {
145
+ _GuCounter({ name: e, maxValue: t, minValue: E = 1, step: o = 1 }) {
145
146
  return `
146
147
  <${n.COUNTER}
147
148
  ${$.COUNTER.name}="${e}"
148
- ${$.COUNTER.minValue}="${o}"
149
+ ${$.COUNTER.minValue}="${E}"
149
150
  ${$.COUNTER.maxValue}="${t}"
150
- ${$.COUNTER.step}="${E}">
151
+ ${$.COUNTER.step}="${o}">
151
152
  </${n.COUNTER}>
152
153
  `;
153
154
  }
154
- _GuRadioButtonItem({ text: e, value: t, icon: o }) {
155
+ _GuRadioButtonItem({ text: e, value: t, icon: E }) {
155
156
  return `
156
157
  <${n.RADIO_ITEM}
157
158
  ${$.RADIO_ITEM.value}="${t}"
158
159
  ${e ? `${$.RADIO_ITEM.text}="${e}"` : ""}
159
- ${o ? `${$.RADIO_ITEM.icon}="${o}"` : ""}>
160
+ ${E ? `${$.RADIO_ITEM.icon}="${E}"` : ""}>
160
161
  </${n.RADIO_ITEM}>
161
162
  `;
162
163
  }
163
- _GuRadioButton({ name: e, buttons: t, id: o = "" }) {
164
+ _GuRadioButton({ name: e, buttons: t, id: E = "" }) {
164
165
  return `
165
166
  <${n.RADIO_BUTTONS}
166
- ${o ? `id="${o}"` : ""}
167
+ ${E ? `id="${E}"` : ""}
167
168
  ${$.RADIO_BUTTONS.name}="${e}">
168
- ${t.map((E) => this._GuRadioButtonItem(E)).join("")}
169
+ ${t.map((o) => this._GuRadioButtonItem(o)).join("")}
169
170
  </${n.RADIO_BUTTONS}>
170
171
  `;
171
172
  }
172
- _GuButton({ name: e, label: t, id: o = "" }) {
173
+ _GuButton({ name: e, label: t, id: E = "" }) {
173
174
  return `
174
175
  <${n.BUTTON}
175
176
  ${$.BUTTON.name}="${e}"
176
- ${o ? `id="${o}"` : ""}
177
+ ${E ? `id="${E}"` : ""}
177
178
  ${$.BUTTON.caption}="${t}"}>
178
179
  </${n.BUTTON}>
179
180
  `;
@@ -191,10 +192,11 @@ class d extends I {
191
192
  * @param param0
192
193
  * @returns It returns a button with an icon.
193
194
  */
194
- _GuIconButton({ name: e, icon: t, className: o = "" }) {
195
+ _GuIconButton({ name: e, icon: t, className: E = "", id: o = "" }) {
195
196
  return `
196
197
  <${n.BUTTON}
197
- class="${o}"
198
+ class="${E}"
199
+ ${o ? `id="${o}"` : ""}
198
200
  ${$.BUTTON.name}="${e}"
199
201
  ${$.BUTTON.icon}="${t}">
200
202
  </${n.BUTTON}>
@@ -222,19 +224,19 @@ class d extends I {
222
224
  * @returns HTML string for the orderable control
223
225
  */
224
226
  _GuOrderable(e, t) {
225
- let o = "";
227
+ let E = "";
226
228
  t.forEach((a) => {
227
229
  const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
228
- o += `
230
+ E += `
229
231
  <${n.ORDERABLE_ITEM} ${l}="${a.key}">
230
232
  ${a.content}
231
233
  </${n.ORDERABLE_ITEM}>
232
234
  `;
233
235
  });
234
- const E = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
236
+ const o = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
235
237
  return `
236
- <${n.ORDERABLE} ${E}="${e}">
237
- ${o}
238
+ <${n.ORDERABLE} ${o}="${e}">
239
+ ${E}
238
240
  </${n.ORDERABLE}>
239
241
  `;
240
242
  }
@@ -275,16 +277,16 @@ class d extends I {
275
277
  `;
276
278
  }
277
279
  _GuRadioButtons(e, t) {
278
- const o = t.map((E) => `
280
+ const E = t.map((o) => `
279
281
  <${n.RADIO_ITEM}
280
- ${$.RADIO_ITEM.text}="${E.text}"
281
- ${$.RADIO_ITEM.value}="${E.value}">
282
+ ${$.RADIO_ITEM.text}="${o.text}"
283
+ ${$.RADIO_ITEM.value}="${o.value}">
282
284
  </${n.RADIO_ITEM}>
283
285
  `).join("");
284
286
  return `
285
287
  <${n.RADIO_BUTTONS}
286
288
  ${$.RADIO_BUTTONS.name}="${e}">
287
- ${o}
289
+ ${E}
288
290
  </${n.RADIO_BUTTONS}>
289
291
  `;
290
292
  }
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .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-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__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-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__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-6e711fd7]{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-50dac6de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-50dac6de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-50dac6de]{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-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}
1
+ .gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-3ff1b2a9] .in-ag-filter-header{display:none}.condition-data[data-v-2685bc55]{gap:4px}.filter-humanizer[data-v-3ecb7de4]{margin:0 -32px}[data-v-6e572ff5] .in-tooltip-wrapper__box{max-width:inherit}[data-v-8e655adb] .in-drawer__content{padding:0}.other-details div[data-v-8e655adb]:first-child{margin-top:0}.strategy-shared-notice[data-v-8e655adb]{margin:0;padding-left:18px}.strategy-shared-notice li+li[data-v-8e655adb]{margin-top:4px}[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-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__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-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__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-6e711fd7]{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-f96d1003]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-f96d1003]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-f96d1003]{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-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}