@useinsider/guido 3.19.0-beta.80b64cf → 3.19.0-beta.84c97db

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/@types/config/schemas.js +9 -8
  2. package/dist/components/Guido.vue.js +8 -8
  3. package/dist/components/Guido.vue2.js +104 -86
  4. package/dist/components/organisms/AutoSaveController.vue2.js +18 -8
  5. package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
  6. package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
  7. package/dist/components/organisms/header/AutoSaveStatus.vue.js +17 -0
  8. package/dist/components/organisms/header/AutoSaveStatus.vue2.js +25 -0
  9. package/dist/components/organisms/header/EditorActions.vue.js +13 -13
  10. package/dist/components/organisms/header/EditorActions.vue2.js +37 -52
  11. package/dist/components/organisms/header/EditorActionsMenu.vue.js +20 -0
  12. package/dist/components/organisms/header/EditorActionsMenu.vue2.js +98 -0
  13. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -6
  14. package/dist/components/organisms/header/HeaderWrapper.vue2.js +9 -17
  15. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  16. package/dist/components/organisms/header/LeftSlot.vue2.js +32 -23
  17. package/dist/components/organisms/header/MiddleSlot.vue.js +4 -4
  18. package/dist/components/organisms/header/MiddleSlot.vue2.js +8 -7
  19. package/dist/components/organisms/header/RightSlot.vue.js +9 -8
  20. package/dist/components/organisms/header/RightSlot.vue2.js +13 -18
  21. package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue.js +18 -0
  22. package/dist/components/organisms/header/accessibility/AccessibilityToolbar.vue2.js +37 -0
  23. package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue.js +22 -0
  24. package/dist/components/organisms/header/accessibility/ColorVisionSelect.vue2.js +48 -0
  25. package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue.js +19 -0
  26. package/dist/components/organisms/onboarding/EditorTabBarOnboarding.vue2.js +90 -0
  27. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -12
  28. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +56 -38
  29. package/dist/components/wrappers/WpModal.vue.js +1 -1
  30. package/dist/components/wrappers/WpModal.vue2.js +4 -3
  31. package/dist/composables/useAccessibilityApi.js +45 -0
  32. package/dist/composables/useAuthError.js +52 -0
  33. package/dist/composables/useAutoSave.js +11 -11
  34. package/dist/composables/useCortexBlueprintBridge.js +122 -54
  35. package/dist/composables/useCustomInterfaceAppearance.js +42 -41
  36. package/dist/composables/useEmailTemplateApplier.js +111 -50
  37. package/dist/composables/useHttp.js +64 -54
  38. package/dist/composables/useLegacyStrategyConversion.js +23 -19
  39. package/dist/composables/useStripo.js +24 -20
  40. package/dist/composables/useToaster.js +17 -15
  41. package/dist/composables/validators/useLiquidValidator.js +15 -15
  42. package/dist/config/i18n/en/labels.json.js +36 -4
  43. package/dist/config/i18n/en/tooltips.json.js +2 -1
  44. package/dist/config/migrator/index.js +14 -13
  45. package/dist/config/migrator/itemsBlockMigrator.js +236 -248
  46. package/dist/config/migrator/recommendationMigrator.js +28 -21
  47. package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
  48. package/dist/enums/extensions/recommendationBlock.js +30 -29
  49. package/dist/extensions/Blocks/Items/constants/cardLayout.js +20 -0
  50. package/dist/extensions/Blocks/Items/controls/name/trimming.js +18 -17
  51. package/dist/extensions/Blocks/Items/controls/settingsControl.js +114 -105
  52. package/dist/extensions/Blocks/Items/enums/productEnums.js +14 -9
  53. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +11 -9
  54. package/dist/extensions/Blocks/Items/template.js +219 -204
  55. package/dist/extensions/Blocks/Recommendation/block.js +54 -88
  56. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +32 -51
  57. package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +11 -12
  58. package/dist/guido.css +1 -1
  59. package/dist/sprite.svg +10 -0
  60. package/dist/src/@types/config/schemas.d.ts +2 -0
  61. package/dist/src/components/organisms/AutoSaveController.vue.d.ts +3 -1
  62. package/dist/src/components/organisms/header/AutoSaveStatus.vue.d.ts +2 -0
  63. package/dist/src/components/organisms/header/EditorActionsMenu.vue.d.ts +2 -0
  64. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -3
  65. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -3
  66. package/dist/src/components/organisms/header/accessibility/AccessibilityToolbar.vue.d.ts +2 -0
  67. package/dist/src/components/organisms/header/accessibility/ColorVisionSelect.vue.d.ts +2 -0
  68. package/dist/src/components/organisms/onboarding/EditorTabBarOnboarding.vue.d.ts +2 -0
  69. package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
  70. package/dist/src/composables/useAccessibilityApi.d.ts +13 -0
  71. package/dist/src/composables/useActionsApi.d.ts +2 -2
  72. package/dist/src/composables/useAuthError.d.ts +12 -0
  73. package/dist/src/composables/useConfig.d.ts +2 -0
  74. package/dist/src/composables/useCortexBlueprintBridge.d.ts +2 -3
  75. package/dist/src/composables/useEmailTemplateApplier.d.ts +18 -5
  76. package/dist/src/composables/useGuidoActions.d.ts +2 -0
  77. package/dist/src/composables/useHttp.d.ts +2 -0
  78. package/dist/src/config/migrator/index.d.ts +2 -1
  79. package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
  80. package/dist/src/enums/extensions/recommendationBlock.d.ts +1 -1
  81. package/dist/src/extensions/Blocks/Items/constants/cardLayout.d.ts +44 -0
  82. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +3 -0
  83. package/dist/src/extensions/Blocks/Items/template.d.ts +19 -0
  84. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -6
  85. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +0 -5
  86. package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +13 -7
  87. package/dist/src/mock/cortexChatStore.d.ts +12 -0
  88. package/dist/src/stores/autosave.d.ts +73 -1
  89. package/dist/src/stores/config.d.ts +20 -0
  90. package/dist/src/stores/editor.d.ts +109 -0
  91. package/dist/src/stores/guido-email-editor.d.ts +20 -10
  92. package/dist/src/stores/onboarding.d.ts +956 -21
  93. package/dist/src/stores/recommendation.d.ts +5 -0
  94. package/dist/src/stores/version-history.d.ts +1 -1
  95. package/dist/src/utils/dateUtil.d.ts +10 -0
  96. package/dist/src/utils/genericUtil.d.ts +3 -0
  97. package/dist/src/utils/timeUtil.d.ts +5 -0
  98. package/dist/static/styles/components/accessibility.css.js +234 -0
  99. package/dist/static/styles/components/version-history.css.js +2 -6
  100. package/dist/static/styles/variables.css.js +2 -0
  101. package/dist/stores/autosave.js +12 -7
  102. package/dist/stores/editor.js +7 -4
  103. package/dist/stores/guido-email-editor.js +3 -1
  104. package/dist/stores/onboarding.js +47 -21
  105. package/dist/utils/pairProductVariables.js +71 -71
  106. package/dist/utils/timeUtil.js +6 -17
  107. package/package.json +2 -1
  108. package/dist/components/organisms/header/AutoSaveToggle.vue.js +0 -22
  109. package/dist/components/organisms/header/AutoSaveToggle.vue2.js +0 -19
  110. /package/dist/src/components/organisms/{header/AutoSaveToggle.vue.d.ts → base/AuthErrorModal.vue.d.ts} +0 -0
@@ -6,5 +6,10 @@ type RecommendationConfig = {
6
6
  interface StoreState {
7
7
  recommendationConfigs: RecommendationConfig[];
8
8
  }
9
+ /**
10
+ * @deprecated recommendationConfigs has no writer in src/, so the store is
11
+ * permanently empty and its only readers (useHtmlValidator.ts:496-497) are a
12
+ * no-op. Slated for deletion, see the SD-667788 dead-code ledger.
13
+ */
9
14
  export declare const useRecommendationStore: import("pinia").StoreDefinition<"guidoRecommendation", StoreState, {}, {}>;
10
15
  export {};
@@ -1,4 +1,4 @@
1
- import type { VersionHistoryState } from '@@/Types/version-history-api';
1
+ import type { VersionHistoryState } from '@@/Types/api/version-history-api';
2
2
  export interface StoreState extends VersionHistoryState {
3
3
  editorVisualMode: 'desktop' | 'mobile';
4
4
  }
@@ -3,12 +3,22 @@
3
3
  * en-US -> MM/DD/YYYY
4
4
  * en-GB -> DD/MM/YYYY
5
5
  * tr-TR -> DD.MM.YYYY
6
+ *
7
+ * The non-string branches below are unreachable: the only caller chain is
8
+ * formatShortDate -> AssignStrategyDrawer.vue:74, which passes a non-empty string.
9
+ * The function itself is live — do not delete it with them.
6
10
  */
7
11
  export declare const convertToDateObject: (date: string | number | Date | null | undefined) => Date;
8
12
  export declare const locale: () => string;
9
13
  export declare const localTz: string;
10
14
  export declare const timezone: () => string;
15
+ /**
16
+ * @deprecated No caller in src/ and not exported from library.ts. Slated for deletion, see the SD-667788 dead-code ledger.
17
+ */
11
18
  export declare const hour12: () => boolean;
19
+ /**
20
+ * @deprecated No caller in src/ and not exported from library.ts. Slated for deletion, see the SD-667788 dead-code ledger.
21
+ */
12
22
  export declare const dateFormat: () => string;
13
23
  /**
14
24
  * @example 04/22/2024
@@ -24,6 +24,9 @@ export declare const getCsrfToken: () => string;
24
24
  */
25
25
  export declare const getUrlParams: () => URLSearchParams;
26
26
  export declare const getUrlParam: (paramName: string, defaultValue?: string) => string;
27
+ /**
28
+ * @deprecated No caller in src/. Slated for deletion, see the SD-667788 dead-code ledger.
29
+ */
27
30
  export declare const replaceString: (string?: string, values?: Record<string, string | number>, isRemoveEmptyValues?: boolean) => string;
28
31
  /**
29
32
  * Narrows an unknown API value to a printable string; anything that is neither
@@ -6,3 +6,8 @@
6
6
  * @example formatLocalTime(date, true) -> 12:20:02 (UTC+3 Istanbul)
7
7
  */
8
8
  export declare const formatLocalTime: (date: Date, useTimezone?: boolean) => string;
9
+ export declare const autoSaveTimestamp: (date: Date, now?: Date) => {
10
+ isToday: boolean;
11
+ time: string;
12
+ date: string;
13
+ };
@@ -0,0 +1,234 @@
1
+ const n = `
2
+ ue-ui-simple-panel.accessibility-panel,
3
+ ue-accessibility-panel {
4
+ height: 100%;
5
+ }
6
+
7
+ ue-accessibility-panel .header-control-panel-right {
8
+ min-width: 50px;
9
+ min-height: 50px;
10
+ }
11
+
12
+ ue-accessibility-panel .tabs-header .accent {
13
+ min-width: 21px;
14
+ margin-left: 8px;
15
+ padding: 3px 5px;
16
+ border: 1px solid var(--guido-color-gray-300);
17
+ border-radius: 4px;
18
+ background-color: var(--guido-color-white);
19
+ color: var(--guido-color-gray-800);
20
+ font-size: 13px;
21
+ font-weight: 400;
22
+ line-height: 16px;
23
+ }
24
+
25
+ ue-accessibility-panel .tabs-header button.checked .accent {
26
+ border-color: var(--guido-color-primary-500);
27
+ color: var(--guido-color-primary-500);
28
+ }
29
+
30
+ ue-accessibility-panel .issue-card-surface {
31
+ border-radius: 8px;
32
+ outline: 1px solid var(--guido-color-gray-300);
33
+ outline-offset: -1px;
34
+ }
35
+
36
+ ue-accessibility-panel .issue-card-surface--active {
37
+ outline-color: var(--guido-color-primary-500);
38
+ }
39
+
40
+ ue-accessibility-panel .issue-card-title {
41
+ color: var(--guido-color-gray-800);
42
+ }
43
+
44
+ ue-accessibility-panel .issue-card-header-row .icon-help {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ width: 24px;
49
+ height: 24px;
50
+ color: var(--guido-color-gray-600);
51
+ }
52
+
53
+ ue-accessibility-panel .issue-card-header-row .icon-help svg {
54
+ width: 14px;
55
+ height: 14px;
56
+ }
57
+
58
+ ue-accessibility-panel .issue-card-header-row ue-icon-component.danger {
59
+ color: var(--guido-color-danger-500);
60
+ }
61
+
62
+ ue-accessibility-panel .issue-card-header-row ue-icon-component.warning {
63
+ color: var(--guido-color-warning-500);
64
+ }
65
+
66
+ ue-accessibility-panel .issue-card-header-row ue-icon-component.info {
67
+ color: var(--guido-color-primary-500);
68
+ }
69
+
70
+ ue-accessibility-passed-tab input,
71
+ ue-accessibility-passed-tab ue-select .toggle-select-button {
72
+ opacity: 0.6;
73
+ cursor: not-allowed;
74
+ }
75
+
76
+ ue-accessibility-panel .controls-separator-line:has(.fit-to-color) {
77
+ padding: 10px;
78
+ }
79
+
80
+ ue-accessibility-passed-tab .controls-separator-line:has(.fit-to-color) {
81
+ padding-bottom: 34px;
82
+ }
83
+
84
+ ue-accessibility-panel .controls-separator-line:has(.fit-to-color) .sub-container.two-columns {
85
+ box-sizing: border-box;
86
+ min-height: 50px;
87
+ padding: 5px 16px;
88
+ align-items: center;
89
+ }
90
+
91
+ ue-accessibility-panel .controls-list.fit-to-color {
92
+ justify-content: flex-end;
93
+ align-items: center;
94
+ gap: 0;
95
+ font-size: 13px;
96
+ line-height: 16px;
97
+ }
98
+
99
+ ue-accessibility-panel .controls-list.fit-to-color ue-icon-component {
100
+ align-items: center;
101
+ justify-content: center;
102
+ width: 24px;
103
+ height: 24px;
104
+ margin: 0;
105
+ }
106
+
107
+ ue-accessibility-panel .controls-list.fit-to-color ue-icon-component svg {
108
+ width: 16px;
109
+ height: 16px;
110
+ }
111
+
112
+ ue-accessibility-panel .controls-list.fit-to-color ue-icon-component.warning {
113
+ color: var(--guido-color-warning-500);
114
+ }
115
+
116
+ ue-accessibility-panel {
117
+ --ue-accessibility-image-width: 240px;
118
+ --ue-accessibility-image-height: 240px;
119
+ }
120
+
121
+ ue-accessibility-panel ue-scrollable-container:has(.accessibility-list-empty, ue-accessibility-passed-tab:empty) {
122
+ flex-grow: 1;
123
+ }
124
+
125
+ ue-accessibility-panel ue-scrollable-container:has(.accessibility-list-empty, ue-accessibility-passed-tab:empty) .ue-scrollable {
126
+ height: 100%;
127
+ }
128
+
129
+ ue-accessibility-panel .ue-scrollable-content:has(.accessibility-list-empty, ue-accessibility-passed-tab:empty) {
130
+ display: flex;
131
+ flex-direction: column;
132
+ justify-content: center;
133
+ min-height: 100%;
134
+ }
135
+
136
+ ue-accessibility-panel .accessibility-list-empty.light-theme.failed-list,
137
+ ue-accessibility-panel .accessibility-list-empty.light-theme.ignored-list,
138
+ ue-accessibility-passed-tab:empty::before {
139
+ display: block;
140
+ height: auto;
141
+ margin: 0;
142
+ padding: 248px 16px 0;
143
+ background: url("https://image.useinsider.com/insider-design-system/img/speacial/no-personalization.svg") no-repeat center top / 240px 240px;
144
+ color: var(--guido-color-neutral-500);
145
+ font-size: 15px;
146
+ line-height: 24px;
147
+ text-align: center;
148
+ white-space: pre-line;
149
+ }
150
+
151
+ ue-accessibility-passed-tab:empty {
152
+ display: block;
153
+ }
154
+
155
+ ue-accessibility-passed-tab:empty::before {
156
+ content: "No Passed Items\\A You have no passed items.";
157
+ }
158
+
159
+ ue-accessibility-panel .accessibility-list-empty::first-line,
160
+ ue-accessibility-passed-tab:empty::first-line {
161
+ color: var(--guido-color-neutral-700);
162
+ font-size: 18px;
163
+ line-height: 40px;
164
+ }
165
+
166
+ ue-accessibility-panel .e2e-ignore-button > .button,
167
+ ue-accessibility-panel .e2e-unignore-button > .button,
168
+ ue-accessibility-panel .e2e-auto-tune-button > .button {
169
+ border: none;
170
+ background-color: var(--guido-color-neutral-200);
171
+ color: var(--guido-color-neutral-800);
172
+ }
173
+
174
+ ue-accessibility-panel .e2e-ignore-button > .button .icon-button,
175
+ ue-accessibility-panel .e2e-unignore-button > .button .icon-button,
176
+ ue-accessibility-panel .e2e-auto-tune-button > .button .icon-button {
177
+ color: var(--guido-color-neutral-800);
178
+ }
179
+
180
+ ue-accessibility-panel .e2e-ignore-button > .button:hover:not(:disabled,.disabled),
181
+ ue-accessibility-panel .e2e-unignore-button > .button:hover:not(:disabled,.disabled),
182
+ ue-accessibility-panel .e2e-auto-tune-button > .button:hover:not(:disabled,.disabled) {
183
+ background-color: var(--guido-color-neutral-100);
184
+ }
185
+
186
+ ue-accessibility-panel .e2e-apply-button > .button {
187
+ border: none;
188
+ background-color: var(--guido-color-primary-100);
189
+ color: var(--guido-color-primary-500);
190
+ }
191
+
192
+ ue-accessibility-panel .e2e-apply-button > .button .icon-button {
193
+ color: var(--guido-color-primary-500);
194
+ }
195
+
196
+ ue-accessibility-panel .e2e-apply-button > .button:hover:not(:disabled,.disabled) {
197
+ background-color: var(--guido-color-primary-0);
198
+ }
199
+
200
+ .e2e-accessibility-refresh .icon-button {
201
+ color: var(--guido-color-primary-500);
202
+ }
203
+
204
+ .ue-popover.dark,
205
+ .ue-popover.dark-tiny {
206
+ border-radius: 4px;
207
+ background: var(--guido-color-gray-800);
208
+ box-shadow: 0 15px 17.5px rgb(0 0 0 / 10%), 0 8px 5px rgb(0 0 0 / 10%);
209
+ color: var(--guido-color-white);
210
+ font-size: 13px;
211
+ line-height: 16px;
212
+ }
213
+
214
+ .ue-popover.dark .popup-pointer ue-icon-component svg,
215
+ .ue-popover.dark-tiny .popup-pointer ue-icon-component svg {
216
+ fill: var(--guido-color-gray-800);
217
+ }
218
+
219
+ .ue-popover.dark a,
220
+ .ue-popover.dark-tiny a,
221
+ .ue-popover.dark ue-description a,
222
+ .ue-popover.dark-tiny ue-description a {
223
+ color: var(--guido-color-white);
224
+ text-decoration: underline;
225
+ }
226
+
227
+ .ue-popover ue-description a[href^="https://act-rules.github.io/"],
228
+ .ue-popover ue-description a[href^="https://dequeuniversity.com/"] {
229
+ display: inline;
230
+ }
231
+ `;
232
+ export {
233
+ n as default
234
+ };
@@ -1,4 +1,4 @@
1
- const n = `.patch-session-container {
1
+ const r = `.patch-session-container {
2
2
  row-gap: 16px;
3
3
  }
4
4
 
@@ -28,11 +28,7 @@ ue-vh-patch.selected .patch-wrapper {
28
28
  .change-history-panel-wrapper .control-panel-header {
29
29
  padding: 16px 0 16px 16px;
30
30
  }
31
-
32
- .change-history-panel-wrapper .header-control-panel-label {
33
- grid-area: 1 / 1 / 2 / 12;
34
- }
35
31
  `;
36
32
  export {
37
- n as default
33
+ r as default
38
34
  };
@@ -14,8 +14,10 @@ const o = `:host {
14
14
  --guido-color-gray-0: #F9F9F9;
15
15
  --guido-color-neutral-800: #222938;
16
16
  --guido-color-neutral-700: #2C3546;
17
+ --guido-color-neutral-500: #5D6980;
17
18
  --guido-color-neutral-200: #DCDFE6;
18
19
  --guido-color-neutral-100: #EFF2F4;
20
+ --guido-color-warning-500: #FFBF00;
19
21
  --guido-color-danger-300: #e84342;
20
22
  --guido-color-danger-500: #DC2A2A;
21
23
  --guido-box-shadow: 0 4px 12px 0 rgba(44,53,70,0.15);
@@ -1,17 +1,22 @@
1
- import { defineStore as t } from "pinia";
2
- const e = {
1
+ import { defineStore as e } from "pinia";
2
+ const s = {
3
3
  IDLE: "idle",
4
4
  SAVING: "saving",
5
5
  SAVED: "saved",
6
6
  ERROR: "error"
7
- }, o = t("guidoAutosave", {
7
+ }, S = e("guidoAutosave", {
8
8
  state: () => ({
9
9
  isOn: !0,
10
10
  lastSavedAt: null,
11
- status: e.IDLE
12
- })
11
+ status: s.IDLE
12
+ }),
13
+ getters: {
14
+ // Whether the header actually renders autosave text: the divider beside it must not be
15
+ // left hanging over empty space when it does not.
16
+ hasStatusLabel: (t) => t.status === s.SAVING || t.status === s.SAVED && t.lastSavedAt !== null
17
+ }
13
18
  });
14
19
  export {
15
- e as AUTOSAVE_STATUS,
16
- o as useAutosaveStore
20
+ s as AUTOSAVE_STATUS,
21
+ S as useAutosaveStore
17
22
  };
@@ -6,6 +6,9 @@ const o = e("guidoEditor", {
6
6
  isSaveAsTemplateDrawerOpen: !1,
7
7
  isVersionHistoryOpen: !1,
8
8
  isPreviewModeOpen: !1,
9
+ isAccessibilityTestingOpen: !1,
10
+ imagesHidden: !1,
11
+ colorVisionDeficiency: "",
9
12
  editorVisualMode: "desktop",
10
13
  hasChanges: !1,
11
14
  // Bumped on every Stripo document change. `hasChanges` is a latch that stays
@@ -21,20 +24,20 @@ const o = e("guidoEditor", {
21
24
  }),
22
25
  getters: {
23
26
  // Middle Slot
24
- isEditorToolbarVisible: (i) => !i.isVersionHistoryOpen && !i.isPreviewModeOpen,
27
+ isEditorToolbarVisible: (i) => !i.isVersionHistoryOpen && !i.isPreviewModeOpen && !i.isAccessibilityTestingOpen,
25
28
  isUndoButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
26
29
  isRedoButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
27
30
  isCodeEditorButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
28
31
  isPreviewButtonDisabled: (i) => i.loadingStatus,
29
32
  isViewOptionsDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
30
33
  // Right Slot
34
+ isNormalMode: (i) => !i.isVersionHistoryOpen && !i.isAccessibilityTestingOpen,
31
35
  isVersionHistoryButtonDisabled: (i) => i.loadingStatus || i.isPreviewModeOpen,
32
36
  isExportButtonDisabled: (i) => i.loadingStatus || i.isVersionHistoryOpen,
33
37
  isSaveAsButtonDisabled: (i) => i.loadingStatus || i.isVersionHistoryOpen,
34
38
  isTestButtonDisabled: (i) => i.loadingStatus || i.isVersionHistoryOpen,
35
- isSaveButtonDisabled: (i) => i.loadingStatus || i.isVersionHistoryOpen || i.isPreviewModeOpen,
36
- // Autosave
37
- isInSaveableState: (i) => !i.loadingStatus && !i.isVersionHistoryOpen && !i.isPreviewModeOpen && !i.isCodeEditorOpen
39
+ isSaveButtonDisabled: (i) => i.loadingStatus || i.isVersionHistoryOpen || i.isPreviewModeOpen || i.isAccessibilityTestingOpen,
40
+ isInSaveableState: (i) => !i.loadingStatus && !i.isVersionHistoryOpen && !i.isPreviewModeOpen && !i.isCodeEditorOpen && !i.isAccessibilityTestingOpen
38
41
  }
39
42
  });
40
43
  export {
@@ -4,7 +4,9 @@ const d = e("guidoEmailEditor", {
4
4
  html: "",
5
5
  css: "",
6
6
  lastUpdatedAt: 0,
7
- templateId: ""
7
+ templateId: "",
8
+ bridgeActive: !1,
9
+ applyAcks: {}
8
10
  }),
9
11
  getters: {
10
12
  /** True once the bridge has published at least one snapshot. */
@@ -1,27 +1,32 @@
1
- import { useOnboardingApi as e } from "../services/onboardingApi.js";
1
+ import { useOnboardingApi as t } from "../services/onboardingApi.js";
2
2
  import { defineStore as s } from "pinia";
3
- const t = () => ({
3
+ const e = () => ({
4
4
  cardIndex: 0,
5
5
  isActive: !1,
6
- config: []
6
+ config: [],
7
+ cardOffset: 0
7
8
  }), a = () => ({
8
9
  onboardings: {
9
- newVersionPopup: t(),
10
- genericOnboarding: t(),
11
- textBlockOnboarding: t(),
12
- versionHistoryOnboarding: t(),
13
- ampOnboarding: t(),
14
- itemsOnboarding: t(),
15
- recommendationStrategyOnboarding: t(),
16
- recommendationLegacyStrategyOnboarding: t()
10
+ newVersionPopup: e(),
11
+ genericOnboarding: e(),
12
+ textBlockOnboarding: e(),
13
+ versionHistoryOnboarding: e(),
14
+ ampOnboarding: e(),
15
+ itemsOnboarding: e(),
16
+ editorTabBarOnboarding: e(),
17
+ recommendationStrategyOnboarding: e(),
18
+ recommendationLegacyStrategyOnboarding: e()
17
19
  },
18
20
  userModalState: {},
19
- isFetched: !1
20
- }), c = s("guidoOnboarding", {
21
+ isFetched: !1,
22
+ closedThisSession: []
23
+ }), g = s("guidoOnboarding", {
21
24
  state: () => a(),
22
25
  getters: {
26
+ /** @deprecated Components use the type-specific getters. Slated for deletion, see the SD-667788 dead-code ledger. */
23
27
  getOnboarding: (n) => (o) => n.onboardings[o],
24
28
  isActive: (n) => (o) => n.onboardings[o].isActive,
29
+ /** @deprecated Components use getGenericCurrentCard / getTextBlockCurrentCard. Slated for deletion, see the SD-667788 dead-code ledger. */
25
30
  getCurrentCard: (n) => (o) => {
26
31
  const i = n.onboardings[o];
27
32
  return i.config[i.cardIndex];
@@ -46,6 +51,14 @@ const t = () => ({
46
51
  const { itemsOnboarding: o } = n.onboardings;
47
52
  return o.config[o.cardIndex];
48
53
  },
54
+ getEditorTabBarCurrentCard: (n) => {
55
+ const { editorTabBarOnboarding: o } = n.onboardings;
56
+ return o.config[o.cardIndex];
57
+ },
58
+ isEditorActionsMenuPinned: (n) => {
59
+ const { editorTabBarOnboarding: o } = n.onboardings, i = o.config[o.cardIndex];
60
+ return o.isActive && !!(i != null && i.pinsMenu);
61
+ },
49
62
  getRecommendationStrategyCurrentCard: (n) => {
50
63
  const { recommendationStrategyOnboarding: o } = n.onboardings;
51
64
  return o.config[o.cardIndex];
@@ -63,7 +76,10 @@ const t = () => ({
63
76
  closeOtherOnboardings(n) {
64
77
  Object.keys(this.onboardings).forEach((o) => {
65
78
  const i = o;
66
- i !== n && this.onboardings[i].isActive && (this.onboardings[i].isActive = !1, this.onboardings[i].cardIndex = 0, this.onboardings[i].config = []);
79
+ if (i !== n && this.onboardings[i].isActive) {
80
+ const r = this.onboardings[i];
81
+ r.cardOffset += r.cardIndex, r.isActive = !1, r.cardIndex = 0, r.config = [];
82
+ }
67
83
  });
68
84
  },
69
85
  start(n) {
@@ -72,8 +88,16 @@ const t = () => ({
72
88
  startOnboarding(n) {
73
89
  this.shouldShowOnboarding(n) && !this.isActive(n) && this.start(n);
74
90
  },
91
+ closeForSession(n) {
92
+ this.closedThisSession.includes(n) || this.closedThisSession.push(n), this.onboardings[n].isActive = !1, this.onboardings[n].cardIndex = 0, this.onboardings[n].config = [], this.onboardings[n].cardOffset = 0;
93
+ },
75
94
  async close(n) {
76
- await this.setUserModalState(n, "true", "Guido"), this.onboardings[n].isActive = !1, this.onboardings[n].cardIndex = 0, this.onboardings[n].config = [];
95
+ this.closeForSession(n);
96
+ try {
97
+ await this.setUserModalState(n, "true", "Guido");
98
+ } catch (o) {
99
+ console.warn("guido:onboarding:close-not-persisted", n, o);
100
+ }
77
101
  },
78
102
  next(n) {
79
103
  this.onboardings[n].cardIndex < this.onboardings[n].config.length - 1 && this.onboardings[n].cardIndex++;
@@ -81,15 +105,16 @@ const t = () => ({
81
105
  previous(n) {
82
106
  this.onboardings[n].cardIndex > 0 && this.onboardings[n].cardIndex--;
83
107
  },
108
+ /** @deprecated No caller in src/. Slated for deletion, see the SD-667788 dead-code ledger. */
84
109
  updateCardPosition(n, o, i) {
85
110
  const r = this.onboardings[n].config[o];
86
111
  r && (r.top = i.top, r.position = i.position);
87
112
  },
88
- setConfig(n, o) {
89
- this.onboardings[n].config = o ?? [], this.onboardings[n].cardIndex >= this.onboardings[n].config.length && (this.onboardings[n].cardIndex = 0);
113
+ setConfig(n, o, i = 0) {
114
+ this.onboardings[n].config = o ?? [], this.onboardings[n].cardOffset = i, this.onboardings[n].cardIndex >= this.onboardings[n].config.length && (this.onboardings[n].cardIndex = 0);
90
115
  },
91
116
  async onDiscoverNowClicked() {
92
- await this.setUserModalState("newVersionPopup", "true", "Guido"), await this.setUserModalState("genericOnboarding", "true", "Guido"), this.start("genericOnboarding");
117
+ this.start("genericOnboarding"), await this.setUserModalState("newVersionPopup", "true", "Guido"), await this.setUserModalState("genericOnboarding", "true", "Guido");
93
118
  },
94
119
  onRemindMeLater() {
95
120
  sessionStorage.setItem("newVersionPopupDismissed", "true");
@@ -97,13 +122,14 @@ const t = () => ({
97
122
  async onNewVersionPopupClose() {
98
123
  await this.setUserModalState("newVersionPopup", "true", "Guido");
99
124
  },
125
+ /** @deprecated No caller in src/. Slated for deletion, see the SD-667788 dead-code ledger. */
100
126
  isOnboardingActive() {
101
127
  return Object.values(this.onboardings).some((n) => n.isActive);
102
128
  },
103
129
  async fetchUserModalState() {
104
130
  if (this.isFetched)
105
131
  return;
106
- const { fetchUserModalState: n } = e();
132
+ const { fetchUserModalState: n } = t();
107
133
  try {
108
134
  const o = await n();
109
135
  this.userModalState = o, this.isFetched = !0;
@@ -111,11 +137,11 @@ const t = () => ({
111
137
  }
112
138
  },
113
139
  async setUserModalState(n, o, i) {
114
- const { setUserModalState: r } = e();
140
+ const { setUserModalState: r } = t();
115
141
  await r(n, o, i), this.isFetched = !1, await this.fetchUserModalState();
116
142
  }
117
143
  }
118
144
  });
119
145
  export {
120
- c as useOnboardingStore
146
+ g as useOnboardingStore
121
147
  };