@useinsider/guido 2.2.0-beta.fa4cec8 → 3.0.0-beta.118d815

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 (94) hide show
  1. package/README.md +41 -2
  2. package/dist/@types/config/schemas.js +1 -1
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +87 -78
  5. package/dist/components/organisms/base/Toaster.vue.js +4 -4
  6. package/dist/components/organisms/base/Toaster.vue2.js +12 -9
  7. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
  8. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  9. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +11 -13
  10. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +54 -23
  11. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +7 -5
  12. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +34 -21
  13. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +11 -11
  14. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +48 -36
  15. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +11 -9
  16. package/dist/composables/useRecommendation.js +9 -9
  17. package/dist/composables/useSave.js +16 -12
  18. package/dist/composables/useStripo.js +66 -62
  19. package/dist/composables/useStripoEventHandler.js +27 -12
  20. package/dist/composables/useSyncModuleExtractor.js +45 -0
  21. package/dist/config/compiler/utils/recommendationCompilerUtils.js +1 -1
  22. package/dist/config/migrator/recommendationMigrator.js +1 -1
  23. package/dist/enums/unsubscribe.js +25 -21
  24. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  25. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +36 -33
  26. package/dist/extensions/Blocks/Recommendation/constants/layout.js +16 -14
  27. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -13
  28. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +9 -9
  29. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +1 -1
  30. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +41 -29
  31. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +16 -16
  32. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +30 -32
  33. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +194 -104
  34. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +9 -9
  35. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +46 -38
  36. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +16 -16
  37. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +291 -217
  38. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +14 -14
  39. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +10 -10
  40. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  41. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +14 -14
  42. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +9 -9
  43. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +3 -3
  44. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +1 -1
  45. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +9 -9
  46. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +3 -3
  47. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +13 -13
  48. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +3 -3
  49. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +223 -99
  50. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +172 -85
  51. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +2 -2
  52. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +1 -1
  53. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +2 -2
  54. package/dist/extensions/Blocks/Recommendation/templates/utils.js +32 -32
  55. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +8 -8
  56. package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +29 -0
  57. package/dist/guido.css +1 -1
  58. package/dist/services/stripoApi.js +55 -19
  59. package/dist/src/@types/config/schemas.d.ts +1 -1
  60. package/dist/src/@types/events.d.ts +38 -2
  61. package/dist/src/App.vue.d.ts +3 -1
  62. package/dist/src/components/Guido.vue.d.ts +2 -2
  63. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +1 -0
  64. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +17 -1
  65. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  66. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  67. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  68. package/dist/src/composables/useGuidoActions.d.ts +1 -1
  69. package/dist/src/composables/useSave.d.ts +2 -2
  70. package/dist/src/composables/useStripo.d.ts +2 -2
  71. package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
  72. package/dist/src/enums/unsubscribe.d.ts +3 -0
  73. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -0
  74. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +3 -3
  75. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -2
  76. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +8 -1
  77. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +38 -10
  78. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +27 -14
  79. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +50 -17
  80. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +19 -2
  81. package/dist/src/extensions/Blocks/Recommendation/templates/grid/migration.d.ts +1 -1
  82. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +4 -2
  83. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +1 -1
  84. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -1
  85. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +8 -0
  86. package/dist/src/extensions/Blocks/Recommendation/validation/filterSchema.d.ts +15 -0
  87. package/dist/src/mock/api/settings.d.ts +2 -0
  88. package/dist/src/services/stripoApi.d.ts +5 -0
  89. package/dist/src/stores/editor.d.ts +23 -0
  90. package/dist/src/utils/templatePreparation.d.ts +1 -1
  91. package/dist/static/styles/customEditorStyle.css.js +50 -23
  92. package/dist/stores/editor.js +2 -1
  93. package/dist/utils/templatePreparation.js +1 -1
  94. package/package.json +2 -2
@@ -1,17 +1,17 @@
1
1
  import { useTranslations as e } from "../composables/useTranslations.js";
2
2
  import { getEnvironmentPrefix as R } from "../utils/environmentUtil.js";
3
- const I = {
3
+ const _ = {
4
4
  UNSUBSCRIBE_LINK_TYPE: 1,
5
5
  PREFERENCES_LINK_TYPE: 3
6
- }, r = {
6
+ }, I = {
7
7
  UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
8
8
  DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
9
9
  GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
10
10
  PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
11
- }, s = R(), _ = {
12
- UNSUBSCRIBE_URL: `https://mail.${s}.com/user/v1/unsub`,
13
- PREFERENCES_URL: `https://mail.${s}.com/user/v1/prefs`
14
- }, i = "iid", B = {
11
+ }, n = R(), r = {
12
+ UNSUBSCRIBE_URL: `https://mail.${n}.com/user/v1/unsub`,
13
+ PREFERENCES_URL: `https://mail.${n}.com/user/v1/prefs`
14
+ }, B = "iid", i = {
15
15
  name: "Global Unsubscribe",
16
16
  sendGridId: "G"
17
17
  }, C = "/email/unsubscribe-pages", E = {
@@ -20,6 +20,9 @@ const I = {
20
20
  SUBSCRIPTION_PREFERENCE_CENTER: 3,
21
21
  SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
22
22
  RESUBSCRIBE: 5
23
+ }, U = {
24
+ [E.GLOBAL_UNSUBSCRIBE]: "custom-unsubscribe",
25
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: "custom-preferences"
23
26
  }, t = {
24
27
  [E.GLOBAL_UNSUBSCRIBE]: [
25
28
  E.GLOBAL_UNSUBSCRIBE,
@@ -30,29 +33,30 @@ const I = {
30
33
  E.SUBSCRIPTION_PREFERENCE_CENTER,
31
34
  E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
32
35
  ]
33
- }, U = () => {
34
- const n = e();
36
+ }, c = () => {
37
+ const s = e();
35
38
  return {
36
- [E.GLOBAL_UNSUBSCRIBE]: n("unsubscription-preference.type-global-unsubscribe"),
37
- [E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: n("unsubscription-preference.type-global-unsubscription-confirmation"),
38
- [E.RESUBSCRIBE]: n("unsubscription-preference.type-resubscribe"),
39
- [E.SUBSCRIPTION_PREFERENCE_CENTER]: n("unsubscription-preference.type-subscription-preferences-center"),
40
- [E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: n("unsubscription-preference.type-subscription-preferences-confirmation")
39
+ [E.GLOBAL_UNSUBSCRIBE]: s("unsubscription-preference.type-global-unsubscribe"),
40
+ [E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: s("unsubscription-preference.type-global-unsubscription-confirmation"),
41
+ [E.RESUBSCRIBE]: s("unsubscription-preference.type-resubscribe"),
42
+ [E.SUBSCRIPTION_PREFERENCE_CENTER]: s("unsubscription-preference.type-subscription-preferences-center"),
43
+ [E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: s("unsubscription-preference.type-subscription-preferences-confirmation")
41
44
  };
42
- }, c = {
45
+ }, o = {
43
46
  default: "{{ins-unsubscribe-link}}",
44
47
  [E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
45
48
  [E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
46
49
  };
47
50
  export {
48
- B as DEFAULT_UNSUBSCRIBE_GROUP,
49
- i as INSIDER_ID,
50
- r as LINK_REGEXES,
51
- I as LINK_TYPES,
52
- c as MERGE_TAGS,
51
+ i as DEFAULT_UNSUBSCRIBE_GROUP,
52
+ B as INSIDER_ID,
53
+ I as LINK_REGEXES,
54
+ _ as LINK_TYPES,
55
+ o as MERGE_TAGS,
53
56
  E as PAGE_TYPES,
54
57
  t as TYPE_COLLECTIONS,
55
58
  C as UNSUBSCRIBE_PAGES_LINK,
56
- _ as URLS,
57
- U as getTypeTranslations
59
+ U as UNSUBSCRIBE_SYNC_MODULE_TYPES,
60
+ r as URLS,
61
+ c as getTypeTranslations
58
62
  };
@@ -6,7 +6,7 @@ import { ensureMobileCssRulesExist as d } from "./controls/mobileLayout/cssRules
6
6
  import { RecommendationConfigService as s } from "./services/configService.js";
7
7
  import { useRecommendationExtensionStore as u } from "./store/recommendation.js";
8
8
  import { getDefaultTemplate as k } from "./templates/grid/template.js";
9
- const B = "recommendation-block", c = "ins-recommendation-v3-block-v2", a = "recommendation-id";
9
+ const B = "recommendation-block", c = "recommendation-block-v2", a = "recommendation-id";
10
10
  class y extends h {
11
11
  constructor() {
12
12
  super();
@@ -1,66 +1,69 @@
1
- import { DEFAULT_ROW_SPACING as U, DEFAULT_COLUMN_SPACING as I, DEFAULT_MOBILE_CARDS_IN_ROW as n, DEFAULT_CARDS_IN_ROW as s } from "./layout.js";
2
- import { ATTR_PRODUCT_IMAGE as t, ATTR_PRODUCT_NAME as e, ATTR_PRODUCT_OLD_PRICE as o, ATTR_PRODUCT_PRICE as _, ATTR_PRODUCT_OMNIBUS_PRICE as T, ATTR_PRODUCT_OMNIBUS_DISCOUNT as r, ATTR_PRODUCT_BUTTON as R } from "./selectors.js";
3
- const O = {
1
+ import { DEFAULT_MOBILE_ROW_SPACING as U, DEFAULT_MOBILE_COLUMN_SPACING as R, DEFAULT_ROW_SPACING as n, DEFAULT_COLUMN_SPACING as O, DEFAULT_MOBILE_CARDS_IN_ROW as C, DEFAULT_CARDS_IN_ROW as D } from "./layout.js";
2
+ import { ATTR_PRODUCT_IMAGE as _, ATTR_PRODUCT_NAME as o, ATTR_PRODUCT_OLD_PRICE as t, ATTR_PRODUCT_PRICE as e, ATTR_PRODUCT_OMNIBUS_PRICE as T, ATTR_PRODUCT_OMNIBUS_DISCOUNT as I, ATTR_PRODUCT_BUTTON as r } from "./selectors.js";
3
+ const i = {
4
4
  code: "USD",
5
5
  symbol: "USD",
6
6
  alignment: "after",
7
7
  decimalCount: 2,
8
8
  decimalSeparator: ".",
9
9
  thousandSeparator: ","
10
- }, i = {
10
+ }, A = {
11
11
  textBefore: "",
12
12
  textAfter: ""
13
- }, C = {
13
+ }, s = {
14
14
  textBefore: "",
15
15
  textAfter: ""
16
- }, D = [
16
+ }, E = [
17
+ _,
18
+ o,
17
19
  t,
18
20
  e,
19
- o,
20
- _,
21
21
  T,
22
- r,
23
- R
24
- ], A = {
25
- [t]: !0,
26
- [e]: !0,
22
+ I,
23
+ r
24
+ ], c = {
27
25
  [_]: !0,
28
26
  [o]: !0,
27
+ [e]: !0,
28
+ [t]: !0,
29
29
  [T]: !1,
30
- [r]: !1,
31
- [R]: !0
32
- }, E = {
30
+ [I]: !1,
31
+ [r]: !0
32
+ }, N = {
33
33
  // Settings
34
34
  strategy: "mostPopular",
35
35
  productIds: [],
36
36
  size: "6",
37
37
  shuffleProducts: !1,
38
38
  language: "en_US",
39
- currency: O,
39
+ currency: i,
40
40
  filters: [],
41
41
  // Layout
42
42
  layout: "grid",
43
- cardsInRow: s,
44
- mobileCardsInRow: n,
45
- columnSpacing: I,
46
- rowSpacing: U,
43
+ cardsInRow: D,
44
+ mobileCardsInRow: C,
45
+ columnSpacing: O,
46
+ rowSpacing: n,
47
+ mobileColumnSpacing: R,
48
+ mobileRowSpacing: U,
47
49
  // Composition
48
- composition: D,
49
- visibility: A,
50
+ composition: E,
51
+ visibility: c,
50
52
  // Element settings
51
- omnibusPrice: i,
52
- omnibusDiscount: C,
53
+ omnibusPrice: A,
54
+ omnibusDiscount: s,
53
55
  textTrimming: !1,
54
56
  // Meta
55
57
  configVersion: 1,
56
58
  recommendationId: 0
57
- }, N = 1;
59
+ }, m = [11, 12], L = 1;
58
60
  export {
59
- N as CURRENT_CONFIG_VERSION,
60
- D as DEFAULT_COMPOSITION,
61
- O as DEFAULT_CURRENCY,
62
- E as DEFAULT_NODE_CONFIG,
63
- C as DEFAULT_OMNIBUS_DISCOUNT,
64
- i as DEFAULT_OMNIBUS_PRICE,
65
- A as DEFAULT_VISIBILITY
61
+ L as CURRENT_CONFIG_VERSION,
62
+ E as DEFAULT_COMPOSITION,
63
+ i as DEFAULT_CURRENCY,
64
+ N as DEFAULT_NODE_CONFIG,
65
+ s as DEFAULT_OMNIBUS_DISCOUNT,
66
+ A as DEFAULT_OMNIBUS_PRICE,
67
+ c as DEFAULT_VISIBILITY,
68
+ m as EXCLUDED_ALGORITHM_IDS
66
69
  };
@@ -1,22 +1,24 @@
1
1
  const _ = {
2
2
  GRID: "grid",
3
3
  LIST: "list"
4
- }, o = [
4
+ }, A = [
5
5
  { icon: "grid-orientation", value: _.GRID },
6
6
  { icon: "list-orientation", value: _.LIST }
7
- ], t = 3, n = 3, A = 9, O = 4, R = 1, T = 2, c = 10, s = 20, I = 0, S = 50, P = 5;
7
+ ], o = 3, t = 3, O = 9, n = 4, I = 1, L = 2, R = 10, T = 10, c = 10, s = 10, S = 0, U = 50, C = 5;
8
8
  export {
9
- n as DEFAULT_CARDS_IN_ROW,
10
- c as DEFAULT_COLUMN_SPACING,
11
- R as DEFAULT_MOBILE_CARDS_IN_ROW,
12
- t as DEFAULT_PRODUCTS_PER_ROW,
13
- s as DEFAULT_ROW_SPACING,
14
- o as LAYOUT_OPTIONS,
9
+ t as DEFAULT_CARDS_IN_ROW,
10
+ R as DEFAULT_COLUMN_SPACING,
11
+ I as DEFAULT_MOBILE_CARDS_IN_ROW,
12
+ c as DEFAULT_MOBILE_COLUMN_SPACING,
13
+ s as DEFAULT_MOBILE_ROW_SPACING,
14
+ o as DEFAULT_PRODUCTS_PER_ROW,
15
+ T as DEFAULT_ROW_SPACING,
16
+ A as LAYOUT_OPTIONS,
15
17
  _ as LAYOUT_VALUES,
16
- T as MAX_MOBILE_PRODUCTS_PER_ROW,
17
- O as MAX_PRODUCTS_PER_ROW,
18
- A as MAX_PRODUCT_COUNT,
19
- S as MAX_SPACING,
20
- I as MIN_SPACING,
21
- P as SPACING_STEP
18
+ L as MAX_MOBILE_PRODUCTS_PER_ROW,
19
+ n as MAX_PRODUCTS_PER_ROW,
20
+ O as MAX_PRODUCT_COUNT,
21
+ U as MAX_SPACING,
22
+ S as MIN_SPACING,
23
+ C as SPACING_STEP
22
24
  };
@@ -1,21 +1,23 @@
1
- const c = ".ins-recommendation-product-container", n = ".ins-recommendation-desktop-container", o = ".ins-recommendation-mobile-container", T = {
1
+ const c = ".recommendation-block-v2", n = ".ins-recommendation-product-container", o = ".ins-recommendation-desktop-container", T = ".ins-recommendation-mobile-container", t = ".ins-recommendation-mobile-row", r = {
2
2
  CURRENCY: "currency",
3
3
  SYMBOL: "currency-symbol",
4
4
  ALIGNMENT: "currency-alignment",
5
5
  THOUSAND_SEPARATOR: "currency-thousand-separator",
6
6
  DECIMAL_SEPARATOR: "currency-decimal-separator",
7
7
  DECIMAL_COUNT: "currency-decimal-count"
8
- }, t = "productImage", r = "productName", R = "productPrice", e = "productOldPrice", O = "productOmnibusPrice", _ = "productOmnibusDiscount", C = "productButton";
8
+ }, R = "productImage", O = "productName", e = "productPrice", _ = "productOldPrice", E = "productOmnibusPrice", C = "productOmnibusDiscount", s = "productButton";
9
9
  export {
10
- C as ATTR_PRODUCT_BUTTON,
11
- t as ATTR_PRODUCT_IMAGE,
12
- r as ATTR_PRODUCT_NAME,
13
- e as ATTR_PRODUCT_OLD_PRICE,
14
- _ as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
15
- O as ATTR_PRODUCT_OMNIBUS_PRICE,
16
- R as ATTR_PRODUCT_PRICE,
17
- c as CONTAINER_SELECTOR,
18
- T as CURRENCY_ATTR,
19
- n as DESKTOP_CONTAINER_SELECTOR,
20
- o as MOBILE_CONTAINER_SELECTOR
10
+ s as ATTR_PRODUCT_BUTTON,
11
+ R as ATTR_PRODUCT_IMAGE,
12
+ O as ATTR_PRODUCT_NAME,
13
+ _ as ATTR_PRODUCT_OLD_PRICE,
14
+ C as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
15
+ E as ATTR_PRODUCT_OMNIBUS_PRICE,
16
+ e as ATTR_PRODUCT_PRICE,
17
+ c as BLOCK_ROOT_SELECTOR,
18
+ n as CONTAINER_SELECTOR,
19
+ r as CURRENCY_ATTR,
20
+ o as DESKTOP_CONTAINER_SELECTOR,
21
+ T as MOBILE_CONTAINER_SELECTOR,
22
+ t as MOBILE_ROW_SELECTOR
21
23
  };
@@ -1,7 +1,7 @@
1
1
  import { createButtonFitToContainerControl as T, createButtonTextStyleAndFontColorControl as r, createButtonTextSizeControl as e, createButtonTextControl as B, createButtonPaddingsControl as l, createButtonMarginsControl as C, createButtonFontFamilyControl as O, createButtonColorControl as N, createButtonBorderRadiusControl as i, createButtonBorderControl as a, createButtonAlignControl as c } from "../../../controlFactories.js";
2
2
  import { RecommendationBlockId as o } from "../../constants/blockIds.js";
3
3
  import { RecommendationControlId as t } from "../../constants/controlIds.js";
4
- import { CONTAINER_SELECTOR as n } from "../../constants/selectors.js";
4
+ import { BLOCK_ROOT_SELECTOR as n } from "../../constants/selectors.js";
5
5
  const U = c(
6
6
  t.BUTTON_ALIGN,
7
7
  o.BUTTON,
@@ -34,19 +34,19 @@ const U = c(
34
34
  t.BUTTON_TEXT,
35
35
  o.BUTTON,
36
36
  n
37
- ), A = e(
37
+ ), S = e(
38
38
  t.BUTTON_TEXT_SIZE,
39
39
  o.BUTTON,
40
40
  n
41
- ), S = r(
41
+ ), A = r(
42
42
  t.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
43
43
  o.BUTTON,
44
44
  n
45
- ), E = T(
45
+ ), x = T(
46
46
  t.BUTTON_FIT_TO_CONTENT,
47
47
  o.BUTTON,
48
48
  n
49
- ), p = {
49
+ ), f = {
50
50
  align: U,
51
51
  border: d,
52
52
  borderRadius: s,
@@ -55,10 +55,10 @@ const U = c(
55
55
  margins: u,
56
56
  paddings: R,
57
57
  text: F,
58
- textSize: A,
59
- textStyleAndFontColor: S,
60
- fitToContent: E
58
+ textSize: S,
59
+ textStyleAndFontColor: A,
60
+ fitToContent: x
61
61
  };
62
62
  export {
63
- p as ButtonControls
63
+ f as ButtonControls
64
64
  };
@@ -1,7 +1,7 @@
1
1
  import { createImageMarginsControl as m, createImageSizeControl as n } from "../../../controlFactories.js";
2
2
  import { RecommendationBlockId as o } from "../../constants/blockIds.js";
3
3
  import { RecommendationControlId as r } from "../../constants/controlIds.js";
4
- import { CONTAINER_SELECTOR as t } from "../../constants/selectors.js";
4
+ import { BLOCK_ROOT_SELECTOR as t } from "../../constants/selectors.js";
5
5
  const e = n(
6
6
  r.IMAGE_SIZE,
7
7
  o.IMAGE,
@@ -1,25 +1,29 @@
1
- var c = Object.defineProperty;
2
- var d = (o, e, t) => e in o ? c(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
- var n = (o, e, t) => d(o, typeof e != "symbol" ? e + "" : e, t);
4
- import { ModificationDescription as m } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ var L = Object.defineProperty;
2
+ var _ = (o, e, t) => e in o ? L(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+ var r = (o, e, t) => _(o, typeof e != "symbol" ? e + "" : e, t);
4
+ import { ModificationDescription as p } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
5
  import { CommonControl as h } from "../../../common-control.js";
6
- import { LAYOUT_OPTIONS as g } from "../../constants/layout.js";
7
- import { RecommendationConfigService as r } from "../../services/configService.js";
8
- import { useRecommendationExtensionStore as l } from "../../store/recommendation.js";
9
- import { getCurrentLayout as u, getBlockElement as f, regenerateProductRowsWithStyles as p } from "../main/utils.js";
10
- const L = "recommendation-layout-control", i = {
6
+ import { LAYOUT_OPTIONS as N, DEFAULT_MOBILE_ROW_SPACING as m, DEFAULT_MOBILE_COLUMN_SPACING as d, DEFAULT_ROW_SPACING as l, DEFAULT_COLUMN_SPACING as g } from "../../constants/layout.js";
7
+ import { RecommendationConfigService as s } from "../../services/configService.js";
8
+ import { useRecommendationExtensionStore as A } from "../../store/recommendation.js";
9
+ import { getCurrentLayout as C, getBlockElement as O, regenerateProductRowsWithStyles as f } from "../main/utils.js";
10
+ const S = "recommendation-layout-control", a = {
11
11
  LAYOUT: "layout"
12
- }, C = {
13
- LAYOUT: "data-layout"
12
+ }, n = {
13
+ LAYOUT: "data-layout",
14
+ COLUMN_SPACING: "data-column-spacing",
15
+ ROW_SPACING: "data-row-spacing",
16
+ MOBILE_COLUMN_SPACING: "data-mobile-column-spacing",
17
+ MOBILE_ROW_SPACING: "data-mobile-row-spacing"
14
18
  };
15
- class Y extends h {
19
+ class G extends h {
16
20
  constructor() {
17
21
  super(...arguments);
18
- n(this, "store", l());
19
- n(this, "isChangingLayout", !1);
22
+ r(this, "store", A());
23
+ r(this, "isChangingLayout", !1);
20
24
  }
21
25
  getId() {
22
- return L;
26
+ return S;
23
27
  }
24
28
  getTemplate() {
25
29
  return `
@@ -27,8 +31,8 @@ class Y extends h {
27
31
  ${this._GuTwoColumns([
28
32
  this._GuLabel({ text: "Layout Orientation" }),
29
33
  this._GuRadioButton({
30
- name: i.LAYOUT,
31
- buttons: g
34
+ name: a.LAYOUT,
35
+ buttons: N
32
36
  })
33
37
  ])}
34
38
  </div>
@@ -41,9 +45,9 @@ class Y extends h {
41
45
  super.onTemplateNodeUpdated(t), this._setFormValues();
42
46
  }
43
47
  _setFormValues() {
44
- const s = r.getConfig(this.currentNode).layout || u(this.currentNode);
48
+ const u = s.getConfig(this.currentNode).layout || C(this.currentNode);
45
49
  this.api.updateValues({
46
- [i.LAYOUT]: s
50
+ [a.LAYOUT]: u
47
51
  });
48
52
  }
49
53
  /**
@@ -51,18 +55,26 @@ class Y extends h {
51
55
  * Updates node config, data attribute and regenerates product rows
52
56
  */
53
57
  _onLayoutChange(t) {
54
- if (this.isChangingLayout || !this.currentNode || (r.getConfig(this.currentNode).layout || u(this.currentNode)) === t)
58
+ if (this.isChangingLayout || !this.currentNode || (s.getConfig(this.currentNode).layout || C(this.currentNode)) === t)
55
59
  return;
56
- const a = f(this.currentNode);
57
- if (a) {
60
+ const c = O(this.currentNode);
61
+ if (c) {
58
62
  this.isChangingLayout = !0;
59
63
  try {
60
- r.updateConfig(
64
+ s.updateConfig(
61
65
  this.api,
62
66
  this.currentNode,
63
- { layout: t },
67
+ {
68
+ layout: t,
69
+ columnSpacing: g,
70
+ rowSpacing: l,
71
+ mobileColumnSpacing: d,
72
+ mobileRowSpacing: m
73
+ },
64
74
  `Changed layout to ${t}`
65
- ), this.store.patchCurrentBlockConfig({ orientation: t }), this.api.getDocumentModifier().modifyHtml(a).setAttribute(C.LAYOUT, t).apply(new m(`Update layout to ${t}`)), this._regenerateProductRows(t);
75
+ ), this.store.patchCurrentBlockConfig({ orientation: t });
76
+ const i = this.api.getDocumentModifier().modifyHtml(c).setAttribute(n.LAYOUT, t).setAttribute(n.COLUMN_SPACING, g.toString()).setAttribute(n.ROW_SPACING, l.toString()).setAttribute(n.MOBILE_COLUMN_SPACING, d.toString()).setAttribute(n.MOBILE_ROW_SPACING, m.toString());
77
+ t === "list" ? (i.setClass("es-m-p0"), i.setClass("ins-recommendation-list-layout")) : (i.removeClass("es-m-p0"), i.removeClass("ins-recommendation-list-layout")), i.apply(new p(`Update layout to ${t}`)), this._regenerateProductRows(t);
66
78
  } finally {
67
79
  this.isChangingLayout = !1;
68
80
  }
@@ -74,19 +86,19 @@ class Y extends h {
74
86
  * @param layout - The layout to use for regeneration (passed explicitly to avoid stale DOM reads)
75
87
  */
76
88
  _regenerateProductRows(t) {
77
- this.currentNode && p({
89
+ this.currentNode && f({
78
90
  currentNode: this.currentNode,
79
91
  documentModifier: this.api.getDocumentModifier(),
80
92
  layout: t
81
93
  });
82
94
  }
83
95
  _listenToFormUpdates() {
84
- this.api.onValueChanged(i.LAYOUT, (t) => {
96
+ this.api.onValueChanged(a.LAYOUT, (t) => {
85
97
  this._onLayoutChange(t);
86
98
  });
87
99
  }
88
100
  }
89
101
  export {
90
- L as LAYOUT_CONTROL_ID,
91
- Y as LayoutControl
102
+ S as LAYOUT_CONTROL_ID,
103
+ G as LayoutControl
92
104
  };
@@ -1,22 +1,22 @@
1
- var d = Object.defineProperty;
2
- var l = (o, i, t) => i in o ? d(o, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[i] = t;
3
- var a = (o, i, t) => l(o, typeof i != "symbol" ? i + "" : i, t);
4
- import { UEAttr as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as h } from "../../../common-control.js";
1
+ var c = Object.defineProperty;
2
+ var d = (r, i, t) => i in r ? c(r, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[i] = t;
3
+ var a = (r, i, t) => d(r, typeof i != "symbol" ? i + "" : i, t);
4
+ import { UEAttr as h } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as l } from "../../../common-control.js";
6
6
  import { RecommendationConfigService as n } from "../../services/configService.js";
7
7
  import { useRecommendationExtensionStore as m } from "../../store/recommendation.js";
8
- const u = "recommendation-algorithm-control", e = {
8
+ const g = "recommendation-algorithm-control", e = {
9
9
  ALGORITHM: "strategy",
10
10
  PRODUCT_IDS: "productIds"
11
11
  };
12
- class T extends h {
12
+ class T extends l {
13
13
  constructor() {
14
14
  super(...arguments);
15
15
  // Store is used ONLY for API-fetched data (algorithms list), not for config
16
16
  a(this, "store", m());
17
17
  }
18
18
  getId() {
19
- return u;
19
+ return g;
20
20
  }
21
21
  getTemplate() {
22
22
  return `
@@ -52,13 +52,13 @@ class T extends h {
52
52
  });
53
53
  }
54
54
  _initializeSelectItems() {
55
- var r;
56
- const t = (r = this.store) == null ? void 0 : r.getActivePredictiveAlgorithms;
55
+ var o;
56
+ const t = (o = this.store) == null ? void 0 : o.getActivePredictiveAlgorithms;
57
57
  if (t != null && t.length)
58
58
  try {
59
59
  this.api.setUIEAttribute(
60
60
  e.ALGORITHM,
61
- c.SELECTPICKER.items,
61
+ h.SELECTPICKER.items,
62
62
  t
63
63
  );
64
64
  } catch (s) {
@@ -70,7 +70,7 @@ class T extends h {
70
70
  this.api.setVisibility(e.PRODUCT_IDS, s), this.api.setVisibility(`${e.PRODUCT_IDS}_label`, s);
71
71
  }
72
72
  _onAlgorithmChange(t) {
73
- this.currentNode && (n.updateConfig(
73
+ !this.currentNode || n.getConfig(this.currentNode).strategy === t || (n.updateConfig(
74
74
  this.api,
75
75
  this.currentNode,
76
76
  { strategy: t },
@@ -80,13 +80,13 @@ class T extends h {
80
80
  _onProductIdsChange(t) {
81
81
  if (!this.currentNode)
82
82
  return;
83
- const r = t.split(",").map((s) => s.trim()).filter(Boolean);
83
+ const o = t.split(",").map((s) => s.trim()).filter(Boolean);
84
84
  n.updateConfig(
85
85
  this.api,
86
86
  this.currentNode,
87
- { productIds: r },
87
+ { productIds: o },
88
88
  "Updated product IDs"
89
- ), this.store.patchCurrentBlockConfig({ productIds: r });
89
+ ), this.store.patchCurrentBlockConfig({ productIds: o });
90
90
  }
91
91
  _listenToFormUpdates() {
92
92
  this.api.onValueChanged(e.ALGORITHM, (t) => {
@@ -97,6 +97,6 @@ class T extends h {
97
97
  }
98
98
  }
99
99
  export {
100
- u as ALGORITHM_CONTROL_ID,
100
+ g as ALGORITHM_CONTROL_ID,
101
101
  T as AlgorithmControl
102
102
  };