@useinsider/guido 1.0.3-beta.cc03cd5 → 1.0.3-beta.cc614d6

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 (161) hide show
  1. package/README.md +141 -3
  2. package/dist/components/Guido.vue.js +11 -9
  3. package/dist/components/Guido.vue2.js +70 -66
  4. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +28 -0
  5. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +38 -0
  6. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +17 -0
  7. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +37 -0
  8. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +20 -0
  9. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +44 -0
  10. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.js +17 -0
  11. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +27 -0
  12. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  13. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -15
  14. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  15. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  16. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  17. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  18. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  19. package/dist/composables/useBlocksConfig.js +49 -0
  20. package/dist/composables/useStripo.js +39 -48
  21. package/dist/config/migrator/index.js +7 -6
  22. package/dist/config/migrator/recommendationMigrator.js +293 -0
  23. package/dist/enums/date.js +6 -0
  24. package/dist/enums/defaults.js +15 -8
  25. package/dist/enums/extensions/recommendationBlock.js +80 -0
  26. package/dist/enums/onboarding.js +2 -1
  27. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  28. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  29. package/dist/extensions/Blocks/RadioButton/template.js +6 -6
  30. package/dist/extensions/Blocks/Recommendation/block.js +30 -0
  31. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  32. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  33. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/extension.js +45 -0
  69. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +51 -0
  70. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +19 -0
  71. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +117 -0
  72. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +266 -0
  73. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  74. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  75. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  76. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +28 -0
  77. package/dist/extensions/Blocks/common-control.js +184 -0
  78. package/dist/extensions/DynamicContent/dynamic-content-modal.js +25 -19
  79. package/dist/extensions/DynamicContent/dynamic-content.js +128 -33
  80. package/dist/guido.css +1 -1
  81. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +311 -93
  82. package/dist/package.json.js +1 -1
  83. package/dist/services/recommendationApi.js +43 -0
  84. package/dist/services/stripoApi.js +1 -1
  85. package/dist/src/@types/generic.d.ts +43 -4
  86. package/dist/src/components/Guido.vue.d.ts +3 -2
  87. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +19 -0
  88. package/dist/src/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts +2 -0
  89. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +2 -0
  90. package/dist/src/components/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +16 -0
  91. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +3 -1
  92. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +3 -1
  93. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  94. package/dist/src/composables/useBlocksConfig.d.ts +11 -0
  95. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  96. package/dist/src/enums/date.d.ts +4 -0
  97. package/dist/src/enums/extensions/recommendationBlock.d.ts +16 -0
  98. package/dist/src/enums/onboarding.d.ts +1 -0
  99. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +11 -0
  100. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  101. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +51 -0
  102. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  103. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  104. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  105. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  137. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +2 -0
  138. package/dist/src/extensions/Blocks/Recommendation/iconsRegistry.d.ts +4 -0
  139. package/dist/src/extensions/Blocks/Recommendation/settingsPanel.d.ts +4 -0
  140. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +555 -0
  141. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  142. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  143. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  144. package/dist/src/extensions/Blocks/Recommendation/utils/filterUtil.d.ts +7 -0
  145. package/dist/src/extensions/Blocks/common-control.d.ts +87 -0
  146. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +9 -2
  147. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +52 -2
  148. package/dist/src/mock/api/recommendation.d.ts +2 -0
  149. package/dist/src/services/recommendationApi.d.ts +6 -0
  150. package/dist/src/stores/config.d.ts +8 -1
  151. package/dist/src/stores/dynamic-content.d.ts +2 -2
  152. package/dist/src/stores/editor.d.ts +21 -0
  153. package/dist/src/utils/dateUtil.d.ts +21 -0
  154. package/dist/src/utils/genericUtil.d.ts +2 -0
  155. package/dist/static/styles/components/narrow-panel.css.js +10 -0
  156. package/dist/static/styles/customEditorStyle.css.js +5 -0
  157. package/dist/stores/dynamic-content.js +1 -1
  158. package/dist/stores/editor.js +2 -1
  159. package/dist/utils/dateUtil.js +24 -3
  160. package/dist/utils/genericUtil.js +23 -11
  161. package/package.json +4 -4
package/README.md CHANGED
@@ -52,6 +52,7 @@ npm install @useinsider/guido
52
52
  ref="guidoEditor"
53
53
  :template-id="templateId"
54
54
  :user-id="userId"
55
+ :migration-date="migrationDate"
55
56
  :guido-config="guidoConfig"
56
57
  :html="initialHtml"
57
58
  :css="initialCss"
@@ -74,16 +75,19 @@ export default {
74
75
  return {
75
76
  templateId: 'template-123',
76
77
  userId: 'user-456',
78
+ migrationDate: 1699488000,
77
79
  initialHtml: '<p>Initial HTML content</p>',
78
80
  initialCss: 'p { color: #333; }',
79
81
  guidoConfig: {
80
82
  translationsPath: 'window.trans.en',
81
83
  htmlCompilerRules: [],
82
84
  ignoreDefaultHtmlCompilerRules: false,
85
+ backButtonLabel?: "Back to Design",
83
86
  features: {
84
87
  dynamicContent: true,
85
88
  saveAsTemplate: true,
86
- versionHistory: true
89
+ versionHistory: true,
90
+ testMessage: true
87
91
  }
88
92
  },
89
93
  dynamicContentModalVisible: false
@@ -145,6 +149,7 @@ export default {
145
149
  | `templateId` | `string` | ✅ | - | Unique identifier for the email template |
146
150
  | `userId` | `string` | ✅ | - | Unique identifier for the user |
147
151
  | `guidoConfig` | `GuidoConfig` | ✅ | - | Configuration object for the editor |
152
+ | `migrationDate` | `number` | ✅ | - | Stripo migration date in Unix timestamp (seconds). Retrieved from backend `/partner-settings` endpoint as `migrationDate`. Used for onboarding process |
148
153
  | `partnerName` | `string` | ⚪ | From URL host | Partner identifier |
149
154
  | `productType` | `string` | ⚪ | From URL path | Product type identifier |
150
155
  | `username` | `string` | ⚪ | `'Guido User'` | Display name for the user |
@@ -161,6 +166,7 @@ export default {
161
166
  | `save:complete` | `Omit<Template, 'forceRecreate'>` | Fired when template is successfully saved |
162
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
163
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
169
+ | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
164
170
 
165
171
  ### Guido Exposed Methods
166
172
  ```typescript
@@ -190,6 +196,11 @@ interface GuidoConfig {
190
196
  dynamicContent: boolean;
191
197
  saveAsTemplate: boolean;
192
198
  versionHistory: boolean;
199
+ testMessage: boolean;
200
+ };
201
+ blocks?: {
202
+ excludeDefaults?: GuidoBlockType[];
203
+ includeCustoms?: GuidoCustomBlockType[];
193
204
  };
194
205
  }
195
206
  ```
@@ -204,6 +215,9 @@ interface GuidoConfig {
204
215
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
205
216
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
206
217
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
218
+ | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
219
+ | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
220
+ | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
207
221
 
208
222
  ```typescript
209
223
  interface DynamicContent {
@@ -220,6 +234,128 @@ interface DynamicContent {
220
234
  | `text` | `string` | '' | Visible value of the dynamic content |
221
235
  | `fallback?` | `string` | '' | Fallback value of the dynamic content. Optional |
222
236
 
237
+ ## 🧱 Blocks Configuration
238
+
239
+ Guido allows you to customize which blocks are available in the editor. You can exclude default Stripo blocks and selectively include custom blocks to create tailored editing experiences for different product types.
240
+
241
+ ### Block Types
242
+
243
+ #### Default Blocks (GuidoBlockType)
244
+
245
+ These are the standard Stripo email editor blocks that can be excluded:
246
+
247
+ ```typescript
248
+ type GuidoBlockType =
249
+ | 'amp-accordion' // AMP accordion component
250
+ | 'amp-carousel' // AMP image carousel
251
+ | 'amp-form-controls' // AMP form elements
252
+ | 'banner-block' // Banner/hero section
253
+ | 'button-block' // Call-to-action buttons
254
+ | 'html-block' // Custom HTML
255
+ | 'image-block' // Image elements
256
+ | 'menu-block' // Navigation menu
257
+ | 'social-block' // Social media links
258
+ | 'spacer-block' // Vertical spacing
259
+ | 'text-block' // Text content
260
+ | 'timer-block' // Countdown timer
261
+ | 'video-block' // Video embeds
262
+ ```
263
+
264
+ #### Custom Blocks (GuidoCustomBlockType)
265
+
266
+ These are custom blocks that can be selectively included:
267
+
268
+ ```typescript
269
+ type GuidoCustomBlockType =
270
+ | 'dynamic-content' // Dynamic content merge tags
271
+ | 'checkbox-block' // Checkbox form input
272
+ | 'radio-button-block' // Radio button form input
273
+ | 'recommendation-block' // Product recommendations
274
+ | 'unsubscribe-block' // Unsubscribe link
275
+ | 'coupon-block' // Coupon/promo code
276
+ | 'items-block' // Cart items display
277
+ ```
278
+
279
+ ### Configuration Examples
280
+
281
+ #### Example 1: Exclude Specific Default Blocks
282
+
283
+ Disable button, image, and video blocks while keeping all custom blocks:
284
+
285
+ ```typescript
286
+ const guidoConfig = {
287
+ translationsPath: 'window.trans.en',
288
+ features: {
289
+ dynamicContent: true,
290
+ saveAsTemplate: true,
291
+ versionHistory: true,
292
+ testMessage: true
293
+ },
294
+ blocks: {
295
+ excludeDefaults: ['button-block', 'image-block', 'video-block']
296
+ }
297
+ };
298
+ ```
299
+
300
+ **Result:**
301
+ - Button, Image, Video blocks disabled
302
+ - All other default blocks enabled
303
+ - All custom blocks are disabled.
304
+
305
+ #### Example 2: Include Only Specific Custom Blocks
306
+
307
+ Enable only coupon and recommendation blocks:
308
+
309
+ ```typescript
310
+ const guidoConfig = {
311
+ translationsPath: 'window.trans.en',
312
+ features: {
313
+ dynamicContent: true,
314
+ saveAsTemplate: true,
315
+ versionHistory: true,
316
+ testMessage: true
317
+ },
318
+ blocks: {
319
+ includeCustoms: ['coupon-block', 'recommendation-block']
320
+ }
321
+ };
322
+ ```
323
+
324
+ **Result:**
325
+ - All default blocks enabled
326
+ - Only Coupon and Recommendation extensions enabled.
327
+ - Other custom blocks are disabled
328
+
329
+ ### Default Behavior
330
+
331
+ When `blocks` is not provided or is `undefined`:
332
+
333
+ ```typescript
334
+ const guidoConfig = {
335
+ translationsPath: 'window.trans.en',
336
+ features: {
337
+ dynamicContent: true,
338
+ saveAsTemplate: true,
339
+ versionHistory: true,
340
+ testMessage: true
341
+ },
342
+ // No blocks config
343
+ };
344
+ ```
345
+
346
+ **Result:**
347
+ - All 13 default Stripo blocks enabled
348
+ - All custom blocks are disabled.
349
+
350
+ ### Block Configuration Interface
351
+
352
+ ```typescript
353
+ interface BlocksConfig {
354
+ excludeDefaults?: GuidoBlockType[];
355
+ includeCustoms?: GuidoCustomBlockType[];
356
+ }
357
+ ```
358
+
223
359
  ### TypeScript Types
224
360
 
225
361
  The library exports the following TypeScript types:
@@ -314,7 +450,8 @@ const guidoConfig = {
314
450
  features: {
315
451
  dynamicContent: true,
316
452
  saveAsTemplate: true,
317
- versionHistory: false // Disable version history
453
+ versionHistory: false, // Disable version history
454
+ testMessage: true
318
455
  },
319
456
  htmlCompilerRules: [
320
457
  {
@@ -347,7 +484,8 @@ const guidoConfig = {
347
484
  features: {
348
485
  dynamicContent: true,
349
486
  saveAsTemplate: true,
350
- versionHistory: true
487
+ versionHistory: true,
488
+ testMessage: true
351
489
  },
352
490
  ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
353
491
  htmlCompilerRules: [
@@ -1,18 +1,20 @@
1
- import a from "./Guido.vue2.js";
1
+ import i from "./Guido.vue2.js";
2
2
  /* empty css */
3
- import i from "../_virtual/_plugin-vue2_normalizer.js";
4
- var s = function() {
3
+ import a from "../_virtual/_plugin-vue2_normalizer.js";
4
+ var t = function() {
5
5
  var o = this, r = o._self._c, e = o._self._setupProxy;
6
- return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
7
- }, t = [], d = /* @__PURE__ */ i(
8
- a,
9
- s,
6
+ return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(_) {
7
+ return e.emit("onboarding:finished");
8
+ } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
+ }, n = [], s = /* @__PURE__ */ a(
10
+ i,
10
11
  t,
12
+ n,
11
13
  !1,
12
14
  null,
13
- "96687c1d"
15
+ "41915b53"
14
16
  );
15
- const v = d.exports;
17
+ const v = s.exports;
16
18
  export {
17
19
  v as default
18
20
  };
@@ -1,22 +1,23 @@
1
- import { defineComponent as x, defineAsyncComponent as U, ref as F, computed as I, watch as M, onMounted as z, onUnmounted as B } from "vue";
2
- import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
3
- import { usePartner as O } from "../composables/usePartner.js";
4
- import { useStripo as j } from "../composables/useStripo.js";
1
+ import { defineComponent as O, defineAsyncComponent as U, ref as z, computed as L, watch as B, onMounted as K, onUnmounted as j } from "vue";
2
+ import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
3
+ import { usePartner as J } from "../composables/usePartner.js";
4
+ import { useStripo as Q } from "../composables/useStripo.js";
5
5
  import { migrate as W } from "../config/migrator/index.js";
6
- import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
7
- import V from "./organisms/base/Toaster.vue.js";
8
- import X from "./organisms/header/HeaderWrapper.vue.js";
9
- import Y from "./organisms/LoadingWrapper.vue.js";
10
- import Z from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
11
- import $ from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
12
- import { useStripoApi as ee } from "../services/stripoApi.js";
13
- import { useConfigStore as oe } from "../stores/config.js";
14
- import { useDynamicContentStore as te } from "../stores/dynamic-content.js";
15
- import { useEditorStore as ne } from "../stores/editor.js";
16
- import { usePreviewStore as re } from "../stores/preview.js";
17
- import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
18
- import ae from "../node_modules/lodash-es/merge.js";
19
- const Ee = /* @__PURE__ */ x({
6
+ import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
7
+ import Z from "./organisms/base/Toaster.vue.js";
8
+ import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
+ import ee from "./organisms/header/HeaderWrapper.vue.js";
10
+ import oe from "./organisms/LoadingWrapper.vue.js";
11
+ import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
+ import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
+ import { useStripoApi as re } from "../services/stripoApi.js";
14
+ import { useConfigStore as ie } from "../stores/config.js";
15
+ import { useDynamicContentStore as ae } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as se } from "../stores/editor.js";
17
+ import { usePreviewStore as ce } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as de } from "../stores/unsubscribe.js";
19
+ import me from "../node_modules/lodash-es/merge.js";
20
+ const Le = /* @__PURE__ */ O({
20
21
  __name: "Guido",
21
22
  props: {
22
23
  templateId: null,
@@ -30,47 +31,47 @@ const Ee = /* @__PURE__ */ x({
30
31
  guidoConfig: null,
31
32
  templateConfig: null
32
33
  },
33
- emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready"],
34
- setup(_, { expose: L, emit: t }) {
35
- const d = _, k = U(
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
+ setup(_, { expose: k, emit: t }) {
36
+ const l = _, A = U(
36
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
37
- ), A = U(
38
+ ), N = U(
38
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
39
- ), m = F(), s = te(), u = se(), l = oe(), p = ne(), N = re(), n = I(() => p.hasChanges), { getPartnerName: g, getProductType: f, isTestPartner: H } = O(), y = () => {
40
+ ), p = z(), i = ae(), g = de(), f = ie(), a = se(), F = ce(), n = L(() => a.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
40
41
  var e;
41
- return (e = m.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = p.value) == null ? void 0 : e.handleSave(!0);
42
43
  }, {
43
- templateId: v,
44
- userId: b,
45
- guidoConfig: C,
44
+ templateId: s,
45
+ userId: C,
46
+ guidoConfig: h,
46
47
  templateConfig: o,
47
48
  html: r = "",
48
- css: h = "",
49
- partnerName: a = g(),
50
- productType: i = f(),
51
- messageType: S = J,
52
- username: w = q
53
- } = d, c = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
54
- window.GuidoConfig = ae(Q, C), window.GuidoConfig.partner = {
55
- partnerName: a,
56
- productType: i,
57
- messageType: S
58
- }, l.templateConfig = o;
59
- const { initPlugin: D } = j({
60
- emailId: v,
61
- userId: b,
62
- username: w,
63
- partnerName: a,
64
- productType: i,
65
- preselectedDynamicContentList: c,
49
+ css: S = "",
50
+ partnerName: c = y(),
51
+ productType: d = v(),
52
+ messageType: w = X,
53
+ username: D = V
54
+ } = l, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ a.templateId = s, window.GuidoConfig = me(Y, h), window.GuidoConfig.partner = {
56
+ partnerName: c,
57
+ productType: d,
58
+ messageType: w
59
+ }, f.templateConfig = o;
60
+ const { initPlugin: E } = Q({
61
+ emailId: s,
62
+ userId: C,
63
+ username: D,
64
+ partnerName: c,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
66
67
  onReady: () => {
67
68
  console.debug("guido:ready"), t("ready");
68
69
  }
69
- }), { getDefaultTemplate: T } = ee(), R = I(() => {
70
+ }), { getDefaultTemplate: T } = re(), R = L(() => {
70
71
  var e;
71
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
72
73
  });
73
- K({
74
+ q({
74
75
  onBack: () => {
75
76
  console.debug("guido:back"), t("back");
76
77
  },
@@ -81,47 +82,50 @@ const Ee = /* @__PURE__ */ x({
81
82
  console.debug("guido:save:complete", e), t("save:complete", e);
82
83
  }
83
84
  });
84
- const E = (e) => {
85
- console.debug("dynamic-content:close", e), s.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
86
- }, P = () => {
85
+ const P = (e) => {
86
+ console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
+ }, G = () => {
87
88
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
88
89
  };
89
- return M(() => n.value, () => {
90
+ B(() => n.value, () => {
90
91
  t("on-change", n.value);
91
- }), z(async () => {
92
+ });
93
+ const u = (e) => {
94
+ const I = e, { attribute: x, position: M } = I.detail;
95
+ console.debug("dynamic-content:open", I.detail), t("dynamic-content:open", x, M);
96
+ };
97
+ return K(async () => {
92
98
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
93
99
  try {
94
- u.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
100
+ g.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
95
101
  let e = {
96
102
  html: r && await W(r),
97
- css: h,
103
+ css: S,
98
104
  forceRecreate: !0
99
105
  // TODO: It should be false for old templates. We will communicate with Stripo
100
106
  };
101
- e.html || (e = await T(), e.html = await W(e.html)), await D(e), s.selectedDynamicContentList = c;
107
+ e.html || (e = await T(), e.html = await W(e.html)), await E(e), i.selectedDynamicContentList = m;
102
108
  } catch (e) {
103
109
  console.error("Failed to initialize Stripo editor:", e);
104
110
  }
105
- document.addEventListener("dynamic-content:open", (e) => {
106
- const G = e;
107
- console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
108
- });
109
- }), B(() => {
111
+ document.addEventListener("dynamic-content:open", u);
112
+ }), j(() => {
113
+ document.removeEventListener("dynamic-content:open", u);
110
114
  try {
111
115
  window.UIEditor.removeEditor();
112
116
  } catch {
113
117
  console.debug("Failed to remove Stripo editor: No editor found");
114
118
  }
115
- }), L({
119
+ }), k({
116
120
  dynamicContent: {
117
- insert: E,
118
- close: P
121
+ insert: P,
122
+ close: G
119
123
  },
120
124
  hasChanges: n,
121
- saveSilent: y
122
- }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: m, dynamicContentStore: s, unsubscribeStore: u, props: d, configStore: l, editorStore: p, previewStore: N, hasChanges: n, getPartnerName: g, getProductType: f, isTestPartner: H, saveSilent: y, templateId: v, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: a, productType: i, messageType: S, username: w, preselectedDynamicContentList: c, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: R, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, HeaderWrapper: X, LoadingWrapper: Y, SaveAsTemplateDrawer: Z, UnsubscribeWrapper: $ };
125
+ saveSilent: b
126
+ }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: l, configStore: f, editorStore: a, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: s, userId: C, guidoConfig: h, templateConfig: o, html: r, css: S, partnerName: c, productType: d, messageType: w, username: D, preselectedDynamicContentList: m, emit: t, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: G, handleDynamicContentOpen: u, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
123
127
  }
124
128
  });
125
129
  export {
126
- Ee as default
130
+ Le as default
127
131
  };
@@ -0,0 +1,28 @@
1
+ import r from "./FilterItem.vue2.js";
2
+ /* empty css */
3
+ import i from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var l = function() {
5
+ var a = this, e = a._self._c, t = a._self._setupProxy;
6
+ return e("div", { staticClass: "d-f f-d-c w-1 gap-16" }, [e("div", { staticClass: "d-f a-i-c j-c-s-b pt-4", class: { "bor-t-s-s bor-t-w-1 bor-t-c-50": a.index === 0 } }, [e("p", [a._v(" " + a._s(t.trans("newsletter.filter")) + " " + a._s(a.index + 1) + " ")]), e(t.InButtonV2, { attrs: { id: "guido__delete-filter-group-button", "left-icon": "line-delete", styling: "text", type: "danger", "label-text-status": !1 }, on: { click: function(s) {
7
+ return t.emit("delete-filter", t.props.filter);
8
+ } } })], 1), e("div", { staticClass: "w-1 d-f a-i-s j-c-s-b gap-16" }, [e(t.InSelect, { staticClass: "w-2", attrs: { "disabled-status": "", "search-status": "", "button-status": !1, "label-text": t.trans("action-builder.filter-type"), options: t.filterTypeOptions, value: [t.filterTypeOptions[0]] } }), e(t.InSelect, { staticClass: "w-2", attrs: { id: "filter-item-input--attribute-type", "search-status": "", "static-position": "bottom right", "button-status": !1, "label-text": t.trans("condition.attribute"), options: t.store.getFilterList, value: [t.selectedAttributeType] }, on: { select: function(s) {
9
+ return t.updateFilter({ text: "attribute", value: s.value });
10
+ } } })], 1), e("div", { staticClass: "w-1 d-f a-i-s j-c-s-b gap-16" }, [e(t.InSelect, { staticClass: "w-2", attrs: { "button-status": !1, "label-text": t.trans("condition.operator"), options: t.getOperatorOptions(t.selectedAttributeType.type), value: [t.selectedOperatorType] }, on: { select: function(s) {
11
+ return t.updateFilter({ text: "operator", value: s.value });
12
+ } } }), e(t.InBasicTextInput, { staticClass: "w-2", attrs: { id: "filter-item-input--value", name: "imageUrl", type: "text", "character-counter-status": !1, "label-text": t.trans("condition.value"), "max-character-length": 25, "placeholder-text": t.trans("condition.enter-value-placeholder"), "tooltip-status": !1, value: decodeURIComponent(t.props.filter.value) }, on: { input: function(s) {
13
+ t.updateFilter({ text: "value", value: encodeURIComponent(s) });
14
+ } } })], 1), t.props.hasLogicAdapter ? e("div", { staticClass: "w-1 d-f a-i-c j-c-c p-r bor-b-s-s bor-b-w-1 bor-b-c-50 mt-4" }, [e(t.LogicAdapter, { staticClass: "p-a", attrs: { logic: t.props.filter.innerGroupOperator }, on: { change: function(s) {
15
+ return t.updateFilter({ text: "innerGroupOperator", value: s });
16
+ } } })], 1) : a._e()]);
17
+ }, n = [], o = /* @__PURE__ */ i(
18
+ r,
19
+ l,
20
+ n,
21
+ !1,
22
+ null,
23
+ "6562e38c"
24
+ );
25
+ const f = o.exports;
26
+ export {
27
+ f as default
28
+ };
@@ -0,0 +1,38 @@
1
+ import { defineComponent as f, computed as i } from "vue";
2
+ import { useTranslations as v } from "../../../../composables/useTranslations.js";
3
+ import { getOperatorOptions as a } from "../../../../enums/extensions/recommendationBlock.js";
4
+ import { useRecommendationExtensionStore as x } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import { InButtonV2 as y, InSelect as F, InBasicTextInput as T } from "@useinsider/design-system-vue";
6
+ import _ from "./LogicAdapter.vue.js";
7
+ import { useDebounceFn as b } from "../../../../node_modules/@vueuse/shared/index.js";
8
+ const h = /* @__PURE__ */ f({
9
+ __name: "FilterItem",
10
+ props: {
11
+ filter: null,
12
+ index: null,
13
+ hasLogicAdapter: { type: Boolean }
14
+ },
15
+ emits: ["delete-filter"],
16
+ setup(p, { emit: u }) {
17
+ const e = p, n = v(), r = x(), m = [
18
+ {
19
+ text: n("email-editor.standard-filter"),
20
+ value: "standardFilter"
21
+ }
22
+ ], s = i(() => e.filter.attribute || ""), l = i(() => r.getFilterList.find((t) => t.value === s.value) || { text: "", value: "", type: "" }), c = i(() => {
23
+ var t;
24
+ return a((t = l.value) == null ? void 0 : t.type).find((o) => o.value === e.filter.operator);
25
+ }), d = b((t) => {
26
+ console.debug("updateFilter: ", t);
27
+ const o = {
28
+ ...e.filter,
29
+ [t.text]: t.value
30
+ };
31
+ r.updateFilter(o);
32
+ }, 500);
33
+ return { __sfc: !0, trans: n, store: r, props: e, filterTypeOptions: m, attributeType: s, selectedAttributeType: l, selectedOperatorType: c, emit: u, updateFilter: d, getOperatorOptions: a, InBasicTextInput: T, InSelect: F, InButtonV2: y, LogicAdapter: _ };
34
+ }
35
+ });
36
+ export {
37
+ h as default
38
+ };
@@ -0,0 +1,17 @@
1
+ import o from "./FilterSelectionDrawer.vue2.js";
2
+ import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var l = function() {
4
+ var e = this, r = e._self._c, t = e._self._setupProxy;
5
+ return r(t.WpDrawer, { attrs: { id: "recommendation-filter-drawer", "title-text": "Filter Selection", "footer-button-group-options": t.footerButtonGroupOptions, status: t.store.filterSelectionDrawerStatus }, on: { cancelOrBackButtonEvent: t.closeModal, onCloseEvent: t.closeModal, primaryButtonEvent: t.applyFilter } }, [r(t.Filters)], 1);
6
+ }, s = [], a = /* @__PURE__ */ n(
7
+ o,
8
+ l,
9
+ s,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const p = a.exports;
15
+ export {
16
+ p as default
17
+ };
@@ -0,0 +1,37 @@
1
+ import { defineComponent as n, ref as a, computed as l } from "vue";
2
+ import i from "../../../wrappers/WpDrawer.vue.js";
3
+ import { useTranslations as p } from "../../../../composables/useTranslations.js";
4
+ import { useRecommendationExtensionStore as c } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import u from "./Filters.vue.js";
6
+ const b = /* @__PURE__ */ n({
7
+ __name: "FilterSelectionDrawer",
8
+ setup(m) {
9
+ const t = p(), o = c(), e = a(!1), s = l(() => ({
10
+ primaryButton: {
11
+ styling: "solid",
12
+ type: "primary",
13
+ labelText: t(
14
+ e.value ? "unsubscription-preference.selecting-type" : "products.select-and-continue"
15
+ ),
16
+ loadingStatus: e.value,
17
+ disabledStatus: !1
18
+ },
19
+ cancelOrBackButton: {
20
+ styling: "ghost",
21
+ type: "secondary",
22
+ labelText: t("products.cancel"),
23
+ disabledStatus: e.value
24
+ }
25
+ })), r = () => {
26
+ o.filterSelectionDrawerStatus = !1;
27
+ };
28
+ return { __sfc: !0, trans: t, store: o, isApplying: e, footerButtonGroupOptions: s, closeModal: r, applyFilter: () => {
29
+ e.value = !0, setTimeout(() => {
30
+ console.debug("Filter applied!"), r(), o.generateFilterQuery();
31
+ }, 2e3);
32
+ }, WpDrawer: i, Filters: u };
33
+ }
34
+ });
35
+ export {
36
+ b as default
37
+ };
@@ -0,0 +1,20 @@
1
+ import s from "./Filters.vue2.js";
2
+ /* empty css */
3
+ import a from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var o = function() {
5
+ var i = this, e = i._self._c, t = i._self._setupProxy;
6
+ return e("div", { staticClass: "d-f f-d-c gap-16" }, [e("div", { staticClass: "d-f a-i-c j-c-s-b gap-16" }, [e(t.InSegments, { staticClass: "f-g-1 w-1", attrs: { id: "guido__filter-group-segments", "segment-list": t.filterGroupList, selected: t.selectedFilterGroup, "with-icon": !1 }, on: { click: t.changeFilterGroup } }), e(t.InButtonV2, { staticClass: "w-20-s f-g-1", attrs: { id: "guido__add-filter-group-button", "left-icon": "line-plus-netural", type: "secondary", "disabled-status": t.isMaxFilterGroupCount, "label-text": t.trans("smart-recommender.add-filter-group"), "tooltip-text": t.isMaxFilterGroupCount ? t.trans("email-editor.add-filter-tooltip") : "" }, on: { click: t.handleAddFilterGroup } })], 1), e("div", { staticClass: "d-f a-i-c j-c-s-b gap-16" }, [e("div", { staticClass: "d-f a-i-c" }, [t.selectedFilterGroup > 1 ? e(t.LogicAdapter, { staticClass: "mr-2" }) : i._e(), e("p", [i._v(" " + i._s(t.trans("email-editor.filter-group")) + " " + i._s(t.selectedFilterGroup) + " ")])], 1), t.hasRemoveFilterButton ? e(t.InButtonV2, { attrs: { id: "guido__delete-filter-group-button", "left-icon": "line-delete", styling: "text", type: "danger", "label-text-status": !1 }, on: { click: t.handleDeleteFilterGroup } }) : i._e()], 1), e("div", { staticClass: "d-f a-i-c j-c-s-b f-d-c" }, i._l(t.selectedFilterGroupFilters, function(l, r) {
7
+ return e(t.FilterItem, { key: r, attrs: { filter: l, "has-logic-adapter": t.hasLogicAdapter && r !== t.selectedFilterGroupFilters.length - 1, index: r }, on: { "delete-filter": t.handleDeleteFilter } });
8
+ }), 1), e("div", { staticClass: "d-f a-i-c j-c-c mt-3" }, [e(t.InButtonV2, { staticClass: "w-11-s", attrs: { id: "filter-group--add-filter-button", "left-icon": "line-plus-netural", type: "subtle-primary", "label-text": t.trans("smart-recommender.add-filter-condition") }, on: { click: t.handleAddFilter } })], 1)]);
9
+ }, d = [], n = /* @__PURE__ */ a(
10
+ s,
11
+ o,
12
+ d,
13
+ !1,
14
+ null,
15
+ "1ccb6d4a"
16
+ );
17
+ const _ = n.exports;
18
+ export {
19
+ _ as default
20
+ };
@@ -0,0 +1,44 @@
1
+ import { defineComponent as m, computed as o, ref as h } from "vue";
2
+ import { useTranslations as G } from "../../../../composables/useTranslations.js";
3
+ import { useRecommendationExtensionStore as g } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
4
+ import { InButtonV2 as v, InSegments as f } from "@useinsider/design-system-vue";
5
+ import _ from "./FilterItem.vue.js";
6
+ import A from "./LogicAdapter.vue.js";
7
+ const E = /* @__PURE__ */ m({
8
+ __name: "Filters",
9
+ setup(R) {
10
+ const i = G(), l = g(), u = o(() => l.getFilterGroupCount), t = o(() => Array.from({ length: u.value }, (e, a) => ({
11
+ text: (a + 1).toString(),
12
+ value: a + 1
13
+ }))), r = h(1), s = (e) => {
14
+ r.value = e;
15
+ }, d = () => {
16
+ const e = t.value.length + 1;
17
+ console.debug("handleAddFilterGroup", e), t.value.push({
18
+ text: e.toString(),
19
+ value: e
20
+ }), l.addFilterGroup(e);
21
+ }, p = o(() => t.value.length >= 3), n = o(() => l.getSelectedFilterGroup(r.value)), c = o(() => n.value.length > 1), F = o(() => t.value.length > 1);
22
+ return { __sfc: !0, MAX_FILTER_GROUP_COUNT: 3, trans: i, store: l, filterGroupCount: u, filterGroupList: t, selectedFilterGroup: r, changeFilterGroup: s, handleAddFilterGroup: d, isMaxFilterGroupCount: p, selectedFilterGroupFilters: n, hasLogicAdapter: c, hasRemoveFilterButton: F, handleAddFilter: () => {
23
+ l.addFilter({
24
+ type: "standardFilter",
25
+ attribute: "",
26
+ operatorReplace: "",
27
+ operator: "",
28
+ innerGroupOperator: "*",
29
+ outerGroupOperator: "*",
30
+ filterNumber: n.value.length + 1,
31
+ filterGroup: r.value,
32
+ isValid: !1,
33
+ value: ""
34
+ }), console.debug("handleAddFilter");
35
+ }, handleDeleteFilter: (e) => {
36
+ console.debug("handleDeleteFilter: ", e), l.deleteFilter(e);
37
+ }, handleDeleteFilterGroup: () => {
38
+ t.value.length !== 1 && (console.debug("handleDeleteFilterGroup"), t.value.splice(r.value - 1, 1), r.value > 1 && r.value--);
39
+ }, InSegments: f, InButtonV2: v, FilterItem: _, LogicAdapter: A };
40
+ }
41
+ });
42
+ export {
43
+ E as default
44
+ };
@@ -0,0 +1,17 @@
1
+ import s from "./LogicAdapter.vue2.js";
2
+ import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var o = function() {
4
+ var t = this, r = t._self._c, e = t._self._setupProxy;
5
+ return r(e.InSegments, { staticClass: "guido__logic-adapter f-g-1", attrs: { "segment-list": e.logicAdapterList, selected: e.selectedLogicAdapter, "with-icon": !1 }, on: { click: e.changeLogicAdapter } });
6
+ }, a = [], c = /* @__PURE__ */ n(
7
+ s,
8
+ o,
9
+ a,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const p = c.exports;
15
+ export {
16
+ p as default
17
+ };