@useinsider/guido 3.20.1 → 3.21.0-beta.1bd7edd

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 (109) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +41 -39
  3. package/dist/@types/display-condition.js +25 -0
  4. package/dist/components/Guido.vue.js +6 -6
  5. package/dist/components/Guido.vue2.js +86 -83
  6. package/dist/components/organisms/AutoSaveController.vue2.js +10 -9
  7. package/dist/components/organisms/display-conditions/CodeEditorField.vue.js +20 -0
  8. package/dist/components/organisms/display-conditions/CodeEditorField.vue2.js +30 -0
  9. package/dist/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue.js +30 -0
  10. package/dist/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue2.js +71 -0
  11. package/dist/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue.js +34 -0
  12. package/dist/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue2.js +57 -0
  13. package/dist/components/organisms/display-conditions/DisplayConditionsHost.vue.js +17 -0
  14. package/dist/components/organisms/display-conditions/DisplayConditionsHost.vue2.js +22 -0
  15. package/dist/components/organisms/header/EditorActions.vue.js +4 -4
  16. package/dist/components/organisms/header/EditorActions.vue2.js +53 -51
  17. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +3 -3
  18. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +23 -22
  19. package/dist/composables/useAutoSave.js +46 -44
  20. package/dist/composables/useBlocksConfig.js +32 -24
  21. package/dist/composables/useDisplayConditions.js +102 -0
  22. package/dist/composables/useLegacyStrategyConversion.js +16 -16
  23. package/dist/composables/useSave.js +26 -23
  24. package/dist/composables/useSaveValidation.js +113 -114
  25. package/dist/composables/useSaveValidationRollout.js +17 -6
  26. package/dist/composables/useStripo.js +4 -3
  27. package/dist/enums/academy.js +1 -0
  28. package/dist/enums/display-condition.js +12 -0
  29. package/dist/extensions/Blocks/Items/block.js +43 -42
  30. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +296 -223
  31. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +221 -203
  32. package/dist/extensions/Blocks/Recommendation/utils/blockRefresh.js +19 -0
  33. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +51 -36
  34. package/dist/extensions/Blocks/Recommendation/utils/strategyCommit.js +31 -35
  35. package/dist/extensions/Blocks/Unsubscribe/block.js +70 -75
  36. package/dist/extensions/DisplayConditions/bridge.js +17 -0
  37. package/dist/extensions/DisplayConditions/constants.js +17 -0
  38. package/dist/extensions/DisplayConditions/control.js +178 -0
  39. package/dist/extensions/DisplayConditions/display-conditions.css.js +201 -0
  40. package/dist/extensions/DisplayConditions/extension.js +28 -0
  41. package/dist/extensions/DisplayConditions/iconsRegistry.js +20 -0
  42. package/dist/extensions/DisplayConditions/library.js +27 -0
  43. package/dist/extensions/DisplayConditions/settingsPanel.js +17 -0
  44. package/dist/guido.css +1 -1
  45. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +272 -192
  46. package/dist/node_modules/valibot/dist/index.js +297 -261
  47. package/dist/package.json.js +1 -1
  48. package/dist/services/displayConditionApi.js +39 -0
  49. package/dist/services/settingsApi.js +11 -0
  50. package/dist/src/@types/config/schemas.d.ts +4 -0
  51. package/dist/src/@types/display-condition.d.ts +59 -0
  52. package/dist/src/components/Guido.vue.d.ts +1 -1
  53. package/dist/src/components/organisms/display-conditions/CodeEditorField.vue.d.ts +43 -0
  54. package/dist/src/components/organisms/display-conditions/DisplayConditionCreateDrawer.vue.d.ts +2 -0
  55. package/dist/src/components/organisms/display-conditions/DisplayConditionSelectDrawer.vue.d.ts +2 -0
  56. package/dist/src/components/organisms/display-conditions/DisplayConditionsHost.vue.d.ts +2 -0
  57. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  58. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  59. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  60. package/dist/src/composables/useAutoSave.d.ts +4 -1
  61. package/dist/src/composables/useConfig.d.ts +2 -0
  62. package/dist/src/composables/useDisplayConditions.d.ts +16 -0
  63. package/dist/src/composables/useSaveValidationRollout.d.ts +1 -0
  64. package/dist/src/enums/academy.d.ts +1 -0
  65. package/dist/src/enums/display-condition.d.ts +15 -0
  66. package/dist/src/extensions/Blocks/Checkbox/controls/blockBackground/index.d.ts +1 -0
  67. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +8 -0
  68. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +40 -0
  69. package/dist/src/extensions/Blocks/RadioButton/controls/blockBackground/index.d.ts +1 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/blockBackground/index.d.ts +1 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +11 -0
  72. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +7 -0
  73. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +2 -0
  74. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +18 -3
  75. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +7 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +7 -0
  77. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +7 -0
  78. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +7 -0
  79. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +7 -0
  80. package/dist/src/extensions/Blocks/Recommendation/controls/title/index.d.ts +7 -0
  81. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +9 -1
  82. package/dist/src/extensions/Blocks/Recommendation/utils/blockRefresh.d.ts +17 -0
  83. package/dist/src/extensions/Blocks/Recommendation/utils/nodeConfigWriter.d.ts +7 -0
  84. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +1 -6
  85. package/dist/src/extensions/Blocks/_Boilerplate/controls/blockBackground/index.d.ts +1 -0
  86. package/dist/src/extensions/Blocks/controlFactories.d.ts +22 -0
  87. package/dist/src/extensions/DisplayConditions/bridge.d.ts +6 -0
  88. package/dist/src/extensions/DisplayConditions/constants.d.ts +14 -0
  89. package/dist/src/extensions/DisplayConditions/control.d.ts +23 -0
  90. package/dist/src/extensions/DisplayConditions/extension.d.ts +2 -0
  91. package/dist/src/extensions/DisplayConditions/iconsRegistry.d.ts +4 -0
  92. package/dist/src/extensions/DisplayConditions/library.d.ts +8 -0
  93. package/dist/src/extensions/DisplayConditions/settingsPanel.d.ts +5 -0
  94. package/dist/src/mock/api/display-conditions.d.ts +2 -0
  95. package/dist/src/services/displayConditionApi.d.ts +8 -0
  96. package/dist/src/services/settingsApi.d.ts +6 -0
  97. package/dist/src/stores/config.d.ts +166 -0
  98. package/dist/src/stores/display-condition.d.ts +81 -0
  99. package/dist/src/stores/setup-settings.d.ts +4 -0
  100. package/dist/src/utils/displayCondition.d.ts +10 -0
  101. package/dist/src/utils/protectTableText.d.ts +2 -0
  102. package/dist/static/styles/components/button.css.js +5 -0
  103. package/dist/stores/config.js +13 -6
  104. package/dist/stores/display-condition.js +28 -0
  105. package/dist/stores/setup-settings.js +10 -0
  106. package/dist/utils/displayCondition.js +26 -0
  107. package/dist/utils/pairProductVariables.js +15 -14
  108. package/dist/utils/protectTableText.js +22 -0
  109. package/package.json +4 -4
@@ -0,0 +1,178 @@
1
+ var O = Object.defineProperty;
2
+ var $ = (o, s, i) => s in o ? O(o, s, { enumerable: !0, configurable: !0, writable: !0, value: i }) : o[s] = i;
3
+ var u = (o, s, i) => $(o, typeof s != "symbol" ? s + "" : s, i);
4
+ import { CommonControl as S } from "../Blocks/common-control.js";
5
+ import { toAppliedCondition as w, parseSource as N } from "../../utils/displayCondition.js";
6
+ import { escapeHtml as f } from "../../utils/htmlEscape.js";
7
+ import { ModificationDescription as D, UIElementType as b, UEAttr as I } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
8
+ import { requestDisplayCondition as E } from "./bridge.js";
9
+ import { CONDITIONS_CONTROL_ID as x, APPLIED_DESCRIPTION as M, EMPTY_DESCRIPTION as T, MAX_COLLAPSED_LINES as v, CONDITION_ICONS as g } from "./constants.js";
10
+ const r = ".guido-display-conditions", L = { id: 0, name: "", description: "", beforeScript: "", afterScript: "" }, _ = (o) => `<${b.ICON} ${I.ICON.src}="${o}"></${b.ICON}>`, c = (o, s, i, t = !1) => `<button type="button" class="${s}" id="${o}"${t ? " hidden" : ""}>${i}</button>`;
11
+ class B extends S {
12
+ constructor() {
13
+ super(...arguments);
14
+ u(this, "expanded", !1);
15
+ u(this, "listeners", []);
16
+ u(this, "resizeObserver", null);
17
+ u(this, "detachOutsideClick", null);
18
+ }
19
+ getId() {
20
+ return x;
21
+ }
22
+ getTemplate() {
23
+ return `
24
+ <div class="guido-display-conditions">
25
+ <div class="guido-display-conditions__header">
26
+ <p class="guido-display-conditions__title">${this.api.translate("Display Conditions")}</p>
27
+ <p class="guido-display-conditions__description" data-dc-description></p>
28
+ </div>
29
+ <div class="guido-display-conditions__empty" data-dc-empty>
30
+ ${c(
31
+ "guido__btn-add-display-condition",
32
+ "guido-display-conditions__add",
33
+ `${_(g.PLUS)}<span>${this.api.translate("Add Display Condition")}</span>`
34
+ )}
35
+ <div class="guido-display-conditions__menu" data-dc-menu hidden>
36
+ ${c(
37
+ "guido__btn-display-condition-create",
38
+ "guido-display-conditions__menu-item",
39
+ this.api.translate("Create New Condition")
40
+ )}
41
+ ${c(
42
+ "guido__btn-display-condition-select",
43
+ "guido-display-conditions__menu-item",
44
+ this.api.translate("Select Saved Condition")
45
+ )}
46
+ </div>
47
+ </div>
48
+ <div class="guido-display-conditions__applied" data-dc-applied hidden>
49
+ <div class="guido-display-conditions__code-box">
50
+ <p class="guido-display-conditions__name" data-dc-name></p>
51
+ <div class="guido-display-conditions__sections" data-dc-sections>
52
+ <p class="guido-display-conditions__section-label">
53
+ ${this.api.translate("Code Before Module")}
54
+ </p>
55
+ <pre class="guido-display-conditions__code" data-dc-before></pre>
56
+ <p class="guido-display-conditions__section-label" data-dc-after-label>
57
+ ${this.api.translate("Code After Module")}
58
+ </p>
59
+ <pre class="guido-display-conditions__code" data-dc-after></pre>
60
+ </div>
61
+ ${c(
62
+ "guido__btn-display-condition-toggle",
63
+ "guido-display-conditions__toggle",
64
+ `${_(g.CHEVRON)}<span data-dc-toggle-label></span>`,
65
+ !0
66
+ )}
67
+ </div>
68
+ <div class="guido-display-conditions__actions">
69
+ ${c(
70
+ "guido__btn-edit-display-condition",
71
+ "guido-display-conditions__action guido-display-conditions__action--edit",
72
+ `${_(g.EDIT)}<span>${this.api.translate("Edit")}</span>`
73
+ )}
74
+ ${c(
75
+ "guido__btn-remove-display-condition",
76
+ "guido-display-conditions__action guido-display-conditions__action--remove",
77
+ `${_(g.TRASH)}<span>${this.api.translate("Remove")}</span>`
78
+ )}
79
+ </div>
80
+ </div>
81
+ </div>
82
+ `;
83
+ }
84
+ onRender() {
85
+ this.teardown(), this.wire("#guido__btn-add-display-condition", () => this.toggleMenu()), this.wire("#guido__btn-display-condition-create", () => this.openDrawer("create")), this.wire("#guido__btn-display-condition-select", () => this.openDrawer("select")), this.wire("#guido__btn-edit-display-condition", () => this.openDrawer("edit")), this.wire("#guido__btn-remove-display-condition", () => this.applyCondition(null)), this.wire("#guido__btn-display-condition-toggle", () => {
86
+ this.expanded = !this.expanded, this.paint();
87
+ }), this.observeCodeSize(), this.paint();
88
+ }
89
+ onTemplateNodeUpdated(i) {
90
+ const t = i !== this.currentNode;
91
+ super.onTemplateNodeUpdated(i), t && (this.expanded = !1, this.toggleMenu(!1)), this.paint();
92
+ }
93
+ onDestroy() {
94
+ super.onDestroy(), this.teardown();
95
+ }
96
+ getCondition() {
97
+ var t;
98
+ const i = this.currentNode;
99
+ return w((t = i == null ? void 0 : i.getDisplayCondition) == null ? void 0 : t.call(i));
100
+ }
101
+ toggleMenu(i) {
102
+ var n, d, a;
103
+ const t = (n = this.getContainer()) == null ? void 0 : n.querySelector(`${r} [data-dc-menu]`);
104
+ if (!t)
105
+ return;
106
+ t.hidden = i === void 0 ? !t.hidden : !i, (d = this.detachOutsideClick) == null || d.call(this), t.hidden || this.listenOutsideClick();
107
+ const e = (a = this.getContainer()) == null ? void 0 : a.querySelector(`${r} #guido__btn-add-display-condition`);
108
+ t.style.width = !t.hidden && e ? `${e.getBoundingClientRect().width}px` : "";
109
+ }
110
+ listenOutsideClick() {
111
+ const i = this.getContainer(), t = (e) => {
112
+ e.composedPath().some((d) => d instanceof HTMLElement && d.matches(`${r} [data-dc-menu], ${r} #guido__btn-add-display-condition`)) || this.toggleMenu(!1);
113
+ };
114
+ i == null || i.addEventListener("pointerdown", t, !0), this.detachOutsideClick = () => {
115
+ i == null || i.removeEventListener("pointerdown", t, !0), this.detachOutsideClick = null;
116
+ };
117
+ }
118
+ openDrawer(i) {
119
+ this.toggleMenu(!1), E(
120
+ { mode: i, current: i === "edit" ? this.getCondition() : null },
121
+ { onApply: (t) => this.applyCondition(t) }
122
+ );
123
+ }
124
+ applyCondition(i) {
125
+ if (!this.currentNode)
126
+ return;
127
+ const t = this.api.getDocumentModifier().modifyHtml(this.currentNode);
128
+ i ? t.setDisplayCondition(i) : t.setDisplayCondition(L), t.apply(new D(
129
+ i ? `Set display condition ${i.name}` : "Remove display condition"
130
+ ));
131
+ }
132
+ wire(i, t) {
133
+ var n;
134
+ const e = (n = this.getContainer()) == null ? void 0 : n.querySelector(`${r} ${i}`);
135
+ e && (e.addEventListener("click", t), this.listeners.push({ element: e, handler: t }));
136
+ }
137
+ teardown() {
138
+ var i, t;
139
+ this.listeners.forEach(({ element: e, handler: n }) => e.removeEventListener("click", n)), this.listeners = [], (i = this.resizeObserver) == null || i.disconnect(), this.resizeObserver = null, (t = this.detachOutsideClick) == null || t.call(this);
140
+ }
141
+ // Line counts depend on layout: the panel font loads late and the panel can be resized.
142
+ observeCodeSize() {
143
+ var t;
144
+ const i = (t = this.getContainer()) == null ? void 0 : t.querySelectorAll(`${r} .guido-display-conditions__code`);
145
+ !(i != null && i.length) || typeof ResizeObserver > "u" || (this.resizeObserver = new ResizeObserver(() => this.paint()), i.forEach((e) => {
146
+ var n;
147
+ return (n = this.resizeObserver) == null ? void 0 : n.observe(e);
148
+ }));
149
+ }
150
+ paint() {
151
+ var C;
152
+ const i = (C = this.getContainer()) == null ? void 0 : C.querySelector(r);
153
+ if (!i)
154
+ return;
155
+ const t = this.getCondition(), e = (h) => i.querySelector(h);
156
+ if (e("[data-dc-empty]").hidden = !!t, e("[data-dc-applied]").hidden = !t, e("[data-dc-description]").textContent = this.api.translate(t ? M : T), !t)
157
+ return;
158
+ e("[data-dc-name]").textContent = t.name, e("#guido__btn-edit-display-condition").hidden = N(t) !== "inline";
159
+ const n = e("[data-dc-sections]"), d = e("[data-dc-before]"), a = e("[data-dc-after]");
160
+ d.innerHTML = f(t.beforeScript), a.innerHTML = f(t.afterScript), a.hidden = !t.afterScript, e("[data-dc-after-label]").hidden = !t.afterScript, n.style.maxHeight = "";
161
+ const l = parseFloat(getComputedStyle(d).lineHeight) || 24, p = (h) => h.hidden ? 0 : Math.round(h.scrollHeight / l), y = p(d) + p(a) > v, m = e("#guido__btn-display-condition-toggle");
162
+ m.hidden = !y, m.classList.toggle("is-expanded", this.expanded), e("[data-dc-toggle-label]").textContent = this.api.translate(this.expanded ? "Show Less" : "Show More"), y && !this.expanded && (n.style.maxHeight = `${this.collapsedHeight(n, [d, a], l)}px`);
163
+ }
164
+ // Labels do not count toward the line limit, so the cut lands after the 10th rendered code line.
165
+ collapsedHeight(i, t, e) {
166
+ const { top: n } = i.getBoundingClientRect();
167
+ let d = v, a = 0;
168
+ return t.filter((l) => !l.hidden).forEach((l) => {
169
+ if (d <= 0)
170
+ return;
171
+ const p = Math.min(d, Math.round(l.scrollHeight / e));
172
+ a = l.getBoundingClientRect().top - n + p * e, d -= p;
173
+ }), a;
174
+ }
175
+ }
176
+ export {
177
+ B as DisplayConditionsControl
178
+ };
@@ -0,0 +1,201 @@
1
+ const n = `.guido-display-conditions {
2
+ display: flex;
3
+ flex-direction: column;
4
+ font-family: inherit;
5
+ }
6
+
7
+ .guido-display-conditions__header {
8
+ padding: 16px;
9
+ }
10
+
11
+ .guido-display-conditions__title {
12
+ margin: 0 0 8px;
13
+ color: var(--guido-color-gray-800);
14
+ font-size: 16px;
15
+ font-weight: 600;
16
+ line-height: 24px;
17
+ }
18
+
19
+ .guido-display-conditions__description {
20
+ margin: 0;
21
+ color: var(--guido-color-gray-600);
22
+ font-size: 13px;
23
+ line-height: 16px;
24
+ }
25
+
26
+ .guido-display-conditions__empty {
27
+ padding: 8px 16px 16px;
28
+ }
29
+
30
+ .guido-display-conditions__add {
31
+ display: flex;
32
+ gap: 8px;
33
+ align-items: center;
34
+ justify-content: center;
35
+ width: 100%;
36
+ height: 40px;
37
+ padding: 0 16px;
38
+ border: none;
39
+ border-radius: 4px;
40
+ background: var(--guido-color-primary-100);
41
+ color: var(--guido-color-primary-500);
42
+ font: inherit;
43
+ font-size: 15px;
44
+ line-height: 24px;
45
+ cursor: pointer;
46
+ }
47
+
48
+ /* Stripo draws registered icons at 100% of ue-icon-component (Figma: 20px glyph in a 24px box). */
49
+ .guido-display-conditions ue-icon-component {
50
+ display: inline-flex;
51
+ flex-shrink: 0;
52
+ align-items: center;
53
+ justify-content: center;
54
+ width: 24px;
55
+ height: 24px;
56
+ }
57
+
58
+ .guido-display-conditions ue-icon-component svg {
59
+ width: 20px;
60
+ height: 20px;
61
+ }
62
+
63
+ .guido-display-conditions__add:hover {
64
+ background: var(--guido-color-primary-200);
65
+ }
66
+
67
+ .guido-display-conditions__add:focus-visible,
68
+ .guido-display-conditions__action:focus-visible,
69
+ .guido-display-conditions__toggle:focus-visible {
70
+ outline: 2px solid var(--guido-color-primary-500);
71
+ outline-offset: 2px;
72
+ }
73
+
74
+ .guido-display-conditions__code-box {
75
+ display: flex;
76
+ flex-direction: column;
77
+ gap: 8px;
78
+ padding: 16px;
79
+ background: var(--guido-color-gray-0);
80
+ }
81
+
82
+ .guido-display-conditions__sections {
83
+ display: flex;
84
+ flex-direction: column;
85
+ gap: 8px;
86
+ overflow: hidden;
87
+ }
88
+
89
+ .guido-display-conditions__name,
90
+ .guido-display-conditions__section-label {
91
+ margin: 0;
92
+ color: var(--guido-color-gray-800);
93
+ font-size: 15px;
94
+ font-weight: 600;
95
+ line-height: 24px;
96
+ word-break: break-word;
97
+ }
98
+
99
+ .guido-display-conditions__code {
100
+ margin: 0;
101
+ color: #101727;
102
+ font-family: inherit;
103
+ font-size: 15px;
104
+ line-height: 24px;
105
+ white-space: pre-wrap;
106
+ word-break: break-word;
107
+ }
108
+
109
+ .guido-display-conditions__toggle {
110
+ display: inline-flex;
111
+ align-items: center;
112
+ align-self: flex-start;
113
+ padding: 8px 0;
114
+ border: none;
115
+ background: none;
116
+ color: var(--guido-color-primary-500);
117
+ font: inherit;
118
+ font-size: 15px;
119
+ line-height: 24px;
120
+ cursor: pointer;
121
+ }
122
+
123
+ .guido-display-conditions__toggle span {
124
+ padding: 0 8px;
125
+ }
126
+
127
+ .guido-display-conditions__toggle.is-expanded ue-icon-component {
128
+ transform: rotate(180deg);
129
+ }
130
+
131
+ .guido-display-conditions__actions {
132
+ display: flex;
133
+ gap: 16px;
134
+ align-items: center;
135
+ height: 48px;
136
+ padding: 0 8px;
137
+ background: var(--guido-color-white);
138
+ }
139
+
140
+ .guido-display-conditions__action {
141
+ display: inline-flex;
142
+ align-items: center;
143
+ padding: 8px;
144
+ border: none;
145
+ background: none;
146
+ font: inherit;
147
+ font-size: 15px;
148
+ line-height: 24px;
149
+ cursor: pointer;
150
+ }
151
+
152
+ .guido-display-conditions__action span {
153
+ padding: 0 8px;
154
+ }
155
+
156
+ .guido-display-conditions__action--edit {
157
+ color: var(--guido-color-primary-500);
158
+ }
159
+
160
+ .guido-display-conditions__action--remove {
161
+ color: var(--guido-color-danger-500);
162
+ }
163
+
164
+ .guido-display-conditions [hidden] {
165
+ display: none !important;
166
+ }
167
+
168
+ /* No positioned ancestor inside Stripo's clipping scroller: the menu keeps its static spot but escapes the clip. */
169
+ .guido-display-conditions__menu {
170
+ position: absolute;
171
+ z-index: 2;
172
+ margin-top: 4px;
173
+ padding: 4px 0;
174
+ border-radius: 4px;
175
+ background-color: #FFFFFF;
176
+ box-shadow: 0 4px 16px rgba(34, 41, 56, 0.16);
177
+ }
178
+
179
+ .guido-display-conditions__menu-item {
180
+ display: block;
181
+ width: 100%;
182
+ padding: 8px 16px;
183
+ border: 0;
184
+ background: none;
185
+ color: var(--guido-color-neutral-800);
186
+ cursor: pointer;
187
+ font: inherit;
188
+ font-size: 14px;
189
+ line-height: 24px;
190
+ text-align: left;
191
+ }
192
+
193
+ .guido-display-conditions__menu-item:hover,
194
+ .guido-display-conditions__menu-item:focus-visible {
195
+ background-color: var(--guido-color-neutral-100);
196
+ outline: none;
197
+ }
198
+ `;
199
+ export {
200
+ n as default
201
+ };
@@ -0,0 +1,28 @@
1
+ import { ExtensionBuilder as t } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { APPLIED_DESCRIPTION as o, EMPTY_DESCRIPTION as i } from "./constants.js";
3
+ import { DisplayConditionsControl as e } from "./control.js";
4
+ import n from "./display-conditions.css.js";
5
+ import { DisplayConditionsIconsRegistry as s } from "./iconsRegistry.js";
6
+ import { DisplayConditionsLibrary as d } from "./library.js";
7
+ import { DisplayConditionsSettingsPanel as r } from "./settingsPanel.js";
8
+ const S = new t().addControl(e).withIconsRegistry(s).withSettingsPanelRegistry(r).withExternalDisplayCondition(d).withStyles(n).withLocalization({
9
+ en: {
10
+ Conditions: "Conditions",
11
+ "Display Conditions": "Display Conditions",
12
+ "Add Display Condition": "Add Display Condition",
13
+ "Create New Condition": "Create New Condition",
14
+ "Select Saved Condition": "Select Saved Condition",
15
+ [i]: i,
16
+ [o]: o,
17
+ Edit: "Edit",
18
+ Remove: "Remove",
19
+ "Show More": "Show More",
20
+ "Show Less": "Show Less",
21
+ "Code Before Module": "Code Before Module",
22
+ "Code After Module": "Code After Module",
23
+ "Insider Display Conditions": "Insider Display Conditions"
24
+ }
25
+ }).build();
26
+ export {
27
+ S as default
28
+ };
@@ -0,0 +1,20 @@
1
+ import { IconsRegistry as n } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CONDITION_ICONS as r } from "./constants.js";
3
+ const h = 'fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"', s = (t, o, e = 1.3) => `
4
+ <svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 ${t} ${t}">
5
+ <path d="${o}" ${h} stroke-width="${e}"/>
6
+ </svg>`;
7
+ class g extends n {
8
+ registerIconsSvg(o) {
9
+ o[r.PLUS] = s(20, "M10 4v12M4 10h12", 1.5), o[r.EDIT] = s(
10
+ 20,
11
+ "M3.5 16.5h13M5 12.6 13.1 4.5a1.4 1.4 0 0 1 2 0l.4.4a1.4 1.4 0 0 1 0 2L7.4 15H5v-2.4Z"
12
+ ), o[r.TRASH] = s(
13
+ 20,
14
+ "M3.5 5.5h13M8 5.5V4h4v1.5M5 5.5l.8 11h8.4l.8-11M8.5 8.5v5M11.5 8.5v5"
15
+ ), o[r.CHEVRON] = s(20, "m5 7.5 5 5 5-5", 1.5);
16
+ }
17
+ }
18
+ export {
19
+ g as DisplayConditionsIconsRegistry
20
+ };
@@ -0,0 +1,27 @@
1
+ import { toAppliedCondition as s, parseSource as a } from "../../utils/displayCondition.js";
2
+ import { ExternalDisplayConditionsLibrary as l } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
+ import { requestDisplayCondition as p } from "./bridge.js";
4
+ class m extends l {
5
+ getCategoryName() {
6
+ return this.api.translate("Insider Display Conditions");
7
+ }
8
+ openExternalDisplayConditionsDialog(o, r, t) {
9
+ const e = s(o), n = a(e) === "inline";
10
+ p(
11
+ { mode: n ? "edit" : "select", current: n ? e : null },
12
+ {
13
+ onApply: (i) => i ? r(i) : t(),
14
+ onCancel: t
15
+ }
16
+ );
17
+ }
18
+ getIsContextActionEnabled() {
19
+ return !0;
20
+ }
21
+ getContextActionIndex() {
22
+ return 1;
23
+ }
24
+ }
25
+ export {
26
+ m as DisplayConditionsLibrary
27
+ };
@@ -0,0 +1,17 @@
1
+ import { SettingsPanelRegistry as a, SettingsTab as r, SettingsPanelTab as o } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CONDITION_BLOCK_TYPES as I, BUILT_IN_CONDITION_CONTROLS as O, CONDITIONS_TAB_ID as T, CONDITIONS_CONTROL_ID as N } from "./constants.js";
3
+ class _ extends a {
4
+ // Stripo hands over the map pre-filled with its default tabs, so they are extended, not replaced.
5
+ registerBlockControls(e) {
6
+ I.forEach((i) => {
7
+ const n = e[i] ?? [];
8
+ n.filter((t) => t.getTabId() === String(r.SETTINGS)).forEach((t) => O.forEach((s) => t.deleteControl(s))), e[i] = [
9
+ ...n,
10
+ new o(T, [N]).withLabel(this.api.translate("Conditions"))
11
+ ];
12
+ });
13
+ }
14
+ }
15
+ export {
16
+ _ as DisplayConditionsSettingsPanel
17
+ };
package/dist/guido.css CHANGED
@@ -1 +1 @@
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-b8f24f34] .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-2cccbd44]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-c5ff3804]{gap:16px}.validation-error-row[data-v-c5ff3804]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-c5ff3804]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-c5ff3804]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-1b5c844a]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-1b5c844a]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-1b5c844a]{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}
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-b8f24f34] .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-baf7a5dd]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-e48cebe9]{gap:16px}.validation-error-row[data-v-e48cebe9]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-e48cebe9]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-e48cebe9]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-5d5e32de]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-5d5e32de]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-5d5e32de]{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}.guido-code-editor-field__label[data-v-e96c7aa3]{margin:0 0 8px;color:#2c3546;font-size:13px;line-height:16px}[data-v-a4b2ccb9] .guido-display-condition-academy{color:#0a2ecc;text-decoration:underline}[data-v-a4b2ccb9] .guido-display-condition-create__optional{color:#666}.guido-display-condition-create__separator[data-v-a4b2ccb9]{height:1px;margin:0 0 24px;background-image:linear-gradient(to right,#91949F 1px,transparent 1px);background-size:5px 1px}.guido-display-condition-create__method-title[data-v-a4b2ccb9]{margin:0 0 24px;color:#292929;font-size:13px;font-weight:600;letter-spacing:1.2px;line-height:20px;text-transform:uppercase}.guido-display-condition-create__methods[data-v-a4b2ccb9]{display:flex;gap:16px;margin-bottom:24px}[data-v-10ac7a13] .guido-display-condition-academy{color:#0a2ecc;text-decoration:underline}.guido-display-condition-select-root[data-v-10ac7a13] .in-drawer__footer{justify-content:flex-start}.guido-display-condition-select__delete-modal[data-v-10ac7a13]{position:relative;z-index:145}.guido-display-condition-select__delete-modal[data-v-10ac7a13] .in-modal-v2-wrapper__header-title{margin-bottom:0}.guido-display-condition-select__delete-text[data-v-10ac7a13]{margin:0;color:#292929}.guido-display-condition-select__list[data-v-10ac7a13]{display:flex;flex-direction:column;gap:24px;margin:0;padding:0;list-style:none}.guido-display-condition-card[data-v-10ac7a13]{border:1px solid #E1E1E1;border-radius:4px;background-color:#fff}.guido-display-condition-card__header[data-v-10ac7a13]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px}.guido-display-condition-card__text[data-v-10ac7a13]{min-width:0}.guido-display-condition-card__name[data-v-10ac7a13]{margin:0;overflow:hidden;color:#292929;font-size:16px;font-weight:600;line-height:24px;text-overflow:ellipsis;white-space:nowrap}.guido-display-condition-card__description[data-v-10ac7a13]{margin:4px 0 0;overflow:hidden;color:#666;font-size:13px;line-height:16px;text-overflow:ellipsis;white-space:nowrap}.guido-display-condition-card__actions[data-v-10ac7a13]{display:flex;flex-shrink:0;align-items:center;gap:16px}.guido-display-condition-card__split[data-v-10ac7a13]{position:relative;display:flex;gap:1px}.guido-display-condition-card__menu[data-v-10ac7a13]{position:absolute;z-index:2;top:calc(100% + 2px);right:0;min-width:115px;padding:4px 0;border-radius:4px;background-color:#fff;box-shadow:0 4px 16px #22293829}.guido-display-condition-card__menu-item[data-v-10ac7a13]{width:100%;padding:8px 16px;border:0;background:none;color:#222938;cursor:pointer;font-size:14px;line-height:24px;text-align:left}.guido-display-condition-card__menu-item[data-v-10ac7a13]:hover,.guido-display-condition-card__menu-item[data-v-10ac7a13]:focus-visible{background-color:#eff2f4}.guido-display-condition-card__divider[data-v-10ac7a13]{width:1px;height:24px;background-color:#dcdee6}.guido-display-condition-card__expand[data-v-10ac7a13]{display:flex;padding:0;border:0;background:none;cursor:pointer}.guido-display-condition-card__code[data-v-10ac7a13]{margin:1px 15px 15px;padding:8px;border:1px solid #E1E1E1;border-radius:4px;background-color:#fff;color:#101727;font-family:inherit;font-size:15px;line-height:24px;white-space:pre-wrap;word-break:break-word}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}