@useinsider/guido 1.0.3-beta.060cc69 → 1.0.3-beta.09a6feb

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 (160) hide show
  1. package/README.md +142 -3
  2. package/dist/components/Guido.vue.js +11 -9
  3. package/dist/components/Guido.vue2.js +51 -47
  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/header/RightSlot.vue2.js +23 -22
  16. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  17. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  18. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  19. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  20. package/dist/composables/useBlocksConfig.js +49 -0
  21. package/dist/composables/useGuidoActions.js +19 -9
  22. package/dist/composables/useStripo.js +39 -48
  23. package/dist/config/compiler/unsubscribeCompilerRules.js +33 -28
  24. package/dist/config/migrator/index.js +7 -6
  25. package/dist/config/migrator/recommendationMigrator.js +293 -0
  26. package/dist/enums/date.js +6 -0
  27. package/dist/enums/defaults.js +15 -8
  28. package/dist/enums/extensions/recommendationBlock.js +80 -0
  29. package/dist/enums/onboarding.js +2 -1
  30. package/dist/enums/unsubscribe.js +10 -9
  31. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  32. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  33. package/dist/extensions/Blocks/RadioButton/template.js +6 -6
  34. package/dist/extensions/Blocks/Recommendation/block.js +30 -0
  35. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  36. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  37. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/extension.js +45 -0
  73. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +51 -0
  74. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +19 -0
  75. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +117 -0
  76. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +266 -0
  77. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  78. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  79. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  80. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +28 -0
  81. package/dist/extensions/Blocks/common-control.js +184 -0
  82. package/dist/guido.css +1 -1
  83. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +311 -93
  84. package/dist/package.json.js +1 -1
  85. package/dist/services/recommendationApi.js +43 -0
  86. package/dist/services/stripoApi.js +1 -1
  87. package/dist/src/@types/generic.d.ts +19 -0
  88. package/dist/src/components/Guido.vue.d.ts +2 -0
  89. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +19 -0
  90. package/dist/src/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts +2 -0
  91. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +2 -0
  92. package/dist/src/components/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +16 -0
  93. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +3 -1
  94. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +3 -1
  95. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  96. package/dist/src/composables/useBlocksConfig.d.ts +11 -0
  97. package/dist/src/composables/useGuidoActions.d.ts +9 -0
  98. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  99. package/dist/src/enums/date.d.ts +4 -0
  100. package/dist/src/enums/extensions/recommendationBlock.d.ts +16 -0
  101. package/dist/src/enums/onboarding.d.ts +1 -0
  102. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +11 -0
  103. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  104. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +51 -0
  105. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  140. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +2 -0
  141. package/dist/src/extensions/Blocks/Recommendation/iconsRegistry.d.ts +4 -0
  142. package/dist/src/extensions/Blocks/Recommendation/settingsPanel.d.ts +4 -0
  143. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +555 -0
  144. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  145. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  146. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  147. package/dist/src/extensions/Blocks/Recommendation/utils/filterUtil.d.ts +7 -0
  148. package/dist/src/extensions/Blocks/common-control.d.ts +87 -0
  149. package/dist/src/mock/api/recommendation.d.ts +2 -0
  150. package/dist/src/services/recommendationApi.d.ts +6 -0
  151. package/dist/src/stores/config.d.ts +7 -0
  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 +1 -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/editor.js +2 -1
  158. package/dist/utils/dateUtil.js +24 -3
  159. package/dist/utils/genericUtil.js +8 -7
  160. 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,8 @@ 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 |
170
+ | `test-email:click` | - | Fired when user clicks the test email button in the header |
164
171
 
165
172
  ### Guido Exposed Methods
166
173
  ```typescript
@@ -190,6 +197,11 @@ interface GuidoConfig {
190
197
  dynamicContent: boolean;
191
198
  saveAsTemplate: boolean;
192
199
  versionHistory: boolean;
200
+ testMessage: boolean;
201
+ };
202
+ blocks?: {
203
+ excludeDefaults?: GuidoBlockType[];
204
+ includeCustoms?: GuidoCustomBlockType[];
193
205
  };
194
206
  }
195
207
  ```
@@ -204,6 +216,9 @@ interface GuidoConfig {
204
216
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
205
217
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
206
218
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
219
+ | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
220
+ | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
221
+ | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
207
222
 
208
223
  ```typescript
209
224
  interface DynamicContent {
@@ -220,6 +235,128 @@ interface DynamicContent {
220
235
  | `text` | `string` | '' | Visible value of the dynamic content |
221
236
  | `fallback?` | `string` | '' | Fallback value of the dynamic content. Optional |
222
237
 
238
+ ## 🧱 Blocks Configuration
239
+
240
+ 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.
241
+
242
+ ### Block Types
243
+
244
+ #### Default Blocks (GuidoBlockType)
245
+
246
+ These are the standard Stripo email editor blocks that can be excluded:
247
+
248
+ ```typescript
249
+ type GuidoBlockType =
250
+ | 'amp-accordion' // AMP accordion component
251
+ | 'amp-carousel' // AMP image carousel
252
+ | 'amp-form-controls' // AMP form elements
253
+ | 'banner-block' // Banner/hero section
254
+ | 'button-block' // Call-to-action buttons
255
+ | 'html-block' // Custom HTML
256
+ | 'image-block' // Image elements
257
+ | 'menu-block' // Navigation menu
258
+ | 'social-block' // Social media links
259
+ | 'spacer-block' // Vertical spacing
260
+ | 'text-block' // Text content
261
+ | 'timer-block' // Countdown timer
262
+ | 'video-block' // Video embeds
263
+ ```
264
+
265
+ #### Custom Blocks (GuidoCustomBlockType)
266
+
267
+ These are custom blocks that can be selectively included:
268
+
269
+ ```typescript
270
+ type GuidoCustomBlockType =
271
+ | 'dynamic-content' // Dynamic content merge tags
272
+ | 'checkbox-block' // Checkbox form input
273
+ | 'radio-button-block' // Radio button form input
274
+ | 'recommendation-block' // Product recommendations
275
+ | 'unsubscribe-block' // Unsubscribe link
276
+ | 'coupon-block' // Coupon/promo code
277
+ | 'items-block' // Cart items display
278
+ ```
279
+
280
+ ### Configuration Examples
281
+
282
+ #### Example 1: Exclude Specific Default Blocks
283
+
284
+ Disable button, image, and video blocks while keeping all custom blocks:
285
+
286
+ ```typescript
287
+ const guidoConfig = {
288
+ translationsPath: 'window.trans.en',
289
+ features: {
290
+ dynamicContent: true,
291
+ saveAsTemplate: true,
292
+ versionHistory: true,
293
+ testMessage: true
294
+ },
295
+ blocks: {
296
+ excludeDefaults: ['button-block', 'image-block', 'video-block']
297
+ }
298
+ };
299
+ ```
300
+
301
+ **Result:**
302
+ - Button, Image, Video blocks disabled
303
+ - All other default blocks enabled
304
+ - All custom blocks are disabled.
305
+
306
+ #### Example 2: Include Only Specific Custom Blocks
307
+
308
+ Enable only coupon and recommendation blocks:
309
+
310
+ ```typescript
311
+ const guidoConfig = {
312
+ translationsPath: 'window.trans.en',
313
+ features: {
314
+ dynamicContent: true,
315
+ saveAsTemplate: true,
316
+ versionHistory: true,
317
+ testMessage: true
318
+ },
319
+ blocks: {
320
+ includeCustoms: ['coupon-block', 'recommendation-block']
321
+ }
322
+ };
323
+ ```
324
+
325
+ **Result:**
326
+ - All default blocks enabled
327
+ - Only Coupon and Recommendation extensions enabled.
328
+ - Other custom blocks are disabled
329
+
330
+ ### Default Behavior
331
+
332
+ When `blocks` is not provided or is `undefined`:
333
+
334
+ ```typescript
335
+ const guidoConfig = {
336
+ translationsPath: 'window.trans.en',
337
+ features: {
338
+ dynamicContent: true,
339
+ saveAsTemplate: true,
340
+ versionHistory: true,
341
+ testMessage: true
342
+ },
343
+ // No blocks config
344
+ };
345
+ ```
346
+
347
+ **Result:**
348
+ - All 13 default Stripo blocks enabled
349
+ - All custom blocks are disabled.
350
+
351
+ ### Block Configuration Interface
352
+
353
+ ```typescript
354
+ interface BlocksConfig {
355
+ excludeDefaults?: GuidoBlockType[];
356
+ includeCustoms?: GuidoCustomBlockType[];
357
+ }
358
+ ```
359
+
223
360
  ### TypeScript Types
224
361
 
225
362
  The library exports the following TypeScript types:
@@ -314,7 +451,8 @@ const guidoConfig = {
314
451
  features: {
315
452
  dynamicContent: true,
316
453
  saveAsTemplate: true,
317
- versionHistory: false // Disable version history
454
+ versionHistory: false, // Disable version history
455
+ testMessage: true
318
456
  },
319
457
  htmlCompilerRules: [
320
458
  {
@@ -347,7 +485,8 @@ const guidoConfig = {
347
485
  features: {
348
486
  dynamicContent: true,
349
487
  saveAsTemplate: true,
350
- versionHistory: true
488
+ versionHistory: true,
489
+ testMessage: true
351
490
  },
352
491
  ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
353
492
  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
+ "e299731b"
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";
1
+ import { defineComponent as R, defineAsyncComponent as G, ref as x, computed as I, watch as M, onMounted as z, onUnmounted as B } from "vue";
2
2
  import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
3
3
  import { usePartner as O } from "../composables/usePartner.js";
4
4
  import { useStripo as j } from "../composables/useStripo.js";
5
- import { migrate as W } from "../config/migrator/index.js";
5
+ import { migrate as U } from "../config/migrator/index.js";
6
6
  import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
7
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";
8
+ import X from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
+ import Y from "./organisms/header/HeaderWrapper.vue.js";
10
+ import Z from "./organisms/LoadingWrapper.vue.js";
11
+ import $ from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
+ import ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
+ import { useStripoApi as oe } from "../services/stripoApi.js";
14
+ import { useConfigStore as te } from "../stores/config.js";
15
+ import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as re } from "../stores/editor.js";
17
+ import { usePreviewStore as ie } from "../stores/preview.js";
17
18
  import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
18
19
  import ae from "../node_modules/lodash-es/merge.js";
19
- const Ee = /* @__PURE__ */ x({
20
+ const ke = /* @__PURE__ */ R({
20
21
  __name: "Guido",
21
22
  props: {
22
23
  templateId: null,
@@ -30,81 +31,84 @@ 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", "test-email:click"],
35
+ setup(W, { expose: _, emit: o }) {
36
+ const l = W, L = G(
36
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
37
- ), A = U(
38
+ ), A = G(
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
+ ), u = x(), i = ne(), p = se(), g = te(), s = re(), N = ie(), n = I(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
40
41
  var e;
41
- return (e = m.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = u.value) == null ? void 0 : e.handleSave(!0);
42
43
  }, {
43
- templateId: v,
44
+ templateId: a,
44
45
  userId: b,
45
46
  guidoConfig: C,
46
- templateConfig: o,
47
+ templateConfig: t,
47
48
  html: r = "",
48
49
  css: h = "",
49
- partnerName: a = g(),
50
- productType: i = f(),
50
+ partnerName: c = f(),
51
+ productType: d = y(),
51
52
  messageType: S = J,
52
53
  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,
54
+ } = l, m = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
55
+ s.templateId = a, window.GuidoConfig = ae(Q, C), window.GuidoConfig.partner = {
56
+ partnerName: c,
57
+ productType: d,
57
58
  messageType: S
58
- }, l.templateConfig = o;
59
+ }, g.templateConfig = t;
59
60
  const { initPlugin: D } = j({
60
- emailId: v,
61
+ emailId: a,
61
62
  userId: b,
62
63
  username: w,
63
- partnerName: a,
64
- productType: i,
65
- preselectedDynamicContentList: c,
64
+ partnerName: c,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
66
67
  onReady: () => {
67
- console.debug("guido:ready"), t("ready");
68
+ console.debug("guido:ready"), o("ready");
68
69
  }
69
- }), { getDefaultTemplate: T } = ee(), R = I(() => {
70
+ }), { getDefaultTemplate: T } = oe(), H = I(() => {
70
71
  var e;
71
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
72
73
  });
73
74
  K({
74
75
  onBack: () => {
75
- console.debug("guido:back"), t("back");
76
+ console.debug("guido:back"), o("back");
76
77
  },
77
78
  onSaveStart: () => {
78
- console.debug("guido:save:start"), t("save:start");
79
+ console.debug("guido:save:start"), o("save:start");
79
80
  },
80
81
  onSaveComplete: (e) => {
81
- console.debug("guido:save:complete", e), t("save:complete", e);
82
+ console.debug("guido:save:complete", e), o("save:complete", e);
83
+ },
84
+ onTestEmailClick: () => {
85
+ console.debug("guido:test-email:click"), o("test-email:click");
82
86
  }
83
87
  });
84
88
  const E = (e) => {
85
- console.debug("dynamic-content:close", e), s.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
89
+ console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
86
90
  }, P = () => {
87
91
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
88
92
  };
89
93
  return M(() => n.value, () => {
90
- t("on-change", n.value);
94
+ o("on-change", n.value);
91
95
  }), z(async () => {
92
96
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
93
97
  try {
94
- u.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
98
+ p.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
95
99
  let e = {
96
- html: r && await W(r),
100
+ html: r && await U(r),
97
101
  css: h,
98
102
  forceRecreate: !0
99
103
  // TODO: It should be false for old templates. We will communicate with Stripo
100
104
  };
101
- e.html || (e = await T(), e.html = await W(e.html)), await D(e), s.selectedDynamicContentList = c;
105
+ e.html || (e = await T(), e.html = await U(e.html)), await D(e), i.selectedDynamicContentList = m;
102
106
  } catch (e) {
103
107
  console.error("Failed to initialize Stripo editor:", e);
104
108
  }
105
109
  document.addEventListener("dynamic-content:open", (e) => {
106
- const G = e;
107
- console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
110
+ const k = e;
111
+ console.debug("dynamic-content:open", k.detail), o("dynamic-content:open", k.detail);
108
112
  });
109
113
  }), B(() => {
110
114
  try {
@@ -112,16 +116,16 @@ const Ee = /* @__PURE__ */ x({
112
116
  } catch {
113
117
  console.debug("Failed to remove Stripo editor: No editor found");
114
118
  }
115
- }), L({
119
+ }), _({
116
120
  dynamicContent: {
117
121
  insert: E,
118
122
  close: P
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: v
126
+ }), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: A, headerWrapperRef: u, dynamicContentStore: i, unsubscribeStore: p, props: l, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: a, userId: b, guidoConfig: C, templateConfig: t, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: o, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
123
127
  }
124
128
  });
125
129
  export {
126
- Ee as default
130
+ ke 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
+ };