@useinsider/guido 2.2.0-beta.fa4cec8 → 3.0.0-beta.2235a35

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 (95) hide show
  1. package/README.md +41 -2
  2. package/dist/@types/config/schemas.js +1 -1
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +66 -66
  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 +0 -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/main.d.ts +3 -1
  88. package/dist/src/mock/api/settings.d.ts +2 -0
  89. package/dist/src/services/stripoApi.d.ts +5 -0
  90. package/dist/src/stores/editor.d.ts +23 -0
  91. package/dist/src/utils/templatePreparation.d.ts +1 -1
  92. package/dist/static/styles/customEditorStyle.css.js +50 -23
  93. package/dist/stores/editor.js +2 -1
  94. package/dist/utils/templatePreparation.js +1 -1
  95. package/package.json +2 -2
@@ -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
  };
@@ -1,13 +1,13 @@
1
1
  var R = Object.defineProperty;
2
- var _ = (s, o, e) => o in s ? R(s, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[o] = e;
3
- var c = (s, o, e) => _(s, typeof o != "symbol" ? o + "" : o, e);
4
- import { currencyLocationMaps as l, currencyOperators as i, currencyDecimalCounts as h } from "../../../../../enums/extensions/recommendationBlock.js";
2
+ var _ = (i, o, e) => o in i ? R(i, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[o] = e;
3
+ var c = (i, o, e) => _(i, typeof o != "symbol" ? o + "" : o, e);
4
+ import { currencyLocationMaps as l, currencyOperators as a, currencyDecimalCounts as h } from "../../../../../enums/extensions/recommendationBlock.js";
5
5
  import { UEAttr as m } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- import { CommonControl as d } from "../../../common-control.js";
7
- import { RecommendationConfigService as C } from "../../services/configService.js";
8
- import { useRecommendationExtensionStore as p } from "../../store/recommendation.js";
9
- import { setCurrencyAttributes as S, updatePricesInPlace as E, regenerateProductRowsWithStyles as N } from "./utils.js";
10
- const y = "recommendation-currency-control", t = {
6
+ import { CommonControl as p } from "../../../common-control.js";
7
+ import { RecommendationConfigService as s } from "../../services/configService.js";
8
+ import { useRecommendationExtensionStore as d } from "../../store/recommendation.js";
9
+ import { setCurrencyAttributes as S, updatePricesInPlace as N } from "./utils.js";
10
+ const E = "recommendation-currency-control", t = {
11
11
  CURRENCY: "currencyCode",
12
12
  CURRENCY_LOCATION: "currencyAlignment",
13
13
  CURRENCY_SYMBOL: "currencySymbol",
@@ -15,16 +15,16 @@ const y = "recommendation-currency-control", t = {
15
15
  CURRENCY_DECIMAL_SEPARATOR: "currencyDecimalSeparator",
16
16
  CURRENCY_DECIMAL_COUNT: "currencyDecimalCount"
17
17
  };
18
- class D extends d {
18
+ class Y extends p {
19
19
  constructor() {
20
20
  super(...arguments);
21
21
  // Store is used ONLY for API-fetched data (currency list), not for config
22
- c(this, "store", p());
22
+ c(this, "store", d());
23
23
  c(this, "storeUnsubscription", () => {
24
24
  });
25
25
  }
26
26
  getId() {
27
- return y;
27
+ return E;
28
28
  }
29
29
  getTemplate() {
30
30
  return `
@@ -52,13 +52,13 @@ class D extends d {
52
52
  this._GuSelect({
53
53
  name: t.CURRENCY_THOUSAND_SEPARATOR,
54
54
  placeholder: "Select Thousand Separator",
55
- options: i
55
+ options: a
56
56
  }),
57
57
  this._GuLabel({ text: "Decimal Separator" }),
58
58
  this._GuSelect({
59
59
  name: t.CURRENCY_DECIMAL_SEPARATOR,
60
60
  placeholder: "Select Decimal Separator",
61
- options: i
61
+ options: a
62
62
  }),
63
63
  this._GuLabel({ text: "Decimal Count" }),
64
64
  this._GuSelect({
@@ -82,7 +82,7 @@ class D extends d {
82
82
  this.storeUnsubscription();
83
83
  }
84
84
  _setFormValues() {
85
- const e = C.getConfig(this.currentNode), { currency: r } = e;
85
+ const e = s.getConfig(this.currentNode), { currency: r } = e;
86
86
  this.api.updateValues({
87
87
  [t.CURRENCY]: `price.${r.code}`,
88
88
  [t.CURRENCY_LOCATION]: r.alignment === "before" ? "0" : "1",
@@ -96,12 +96,12 @@ class D extends d {
96
96
  const { store: e } = this, r = {
97
97
  [t.CURRENCY]: e.currencyList,
98
98
  [t.CURRENCY_LOCATION]: l,
99
- [t.CURRENCY_THOUSAND_SEPARATOR]: i,
100
- [t.CURRENCY_DECIMAL_SEPARATOR]: i,
99
+ [t.CURRENCY_THOUSAND_SEPARATOR]: a,
100
+ [t.CURRENCY_DECIMAL_SEPARATOR]: a,
101
101
  [t.CURRENCY_DECIMAL_COUNT]: h
102
102
  };
103
- Object.entries(r).forEach(([u, n]) => {
104
- this.api.setUIEAttribute(u, m.SELECTPICKER.items, n);
103
+ Object.entries(r).forEach(([C, n]) => {
104
+ this.api.setUIEAttribute(C, m.SELECTPICKER.items, n);
105
105
  });
106
106
  }
107
107
  /**
@@ -114,17 +114,17 @@ class D extends d {
114
114
  _updateCurrency(e, r = !1) {
115
115
  if (!this.currentNode)
116
116
  return;
117
- const n = { ...C.getConfig(this.currentNode).currency, ...e };
118
- C.updateConfig(
117
+ const n = { ...s.getConfig(this.currentNode).currency, ...e };
118
+ s.updateConfig(
119
119
  this.api,
120
120
  this.currentNode,
121
121
  { currency: n },
122
122
  "Updated currency settings"
123
123
  );
124
- const a = this.api.getDocumentModifier();
124
+ const u = this.api.getDocumentModifier();
125
125
  S({
126
126
  currentNode: this.currentNode,
127
- documentModifier: a,
127
+ documentModifier: u,
128
128
  currency: n
129
129
  }), this.store.patchCurrentBlockConfig({
130
130
  currencySettings: {
@@ -136,22 +136,19 @@ class D extends d {
136
136
  decimalSeparator: n.decimalSeparator,
137
137
  thousandSeparator: n.thousandSeparator
138
138
  }
139
- }, { triggerRefetch: r }), E({
139
+ }, { triggerRefetch: r }), N({
140
140
  currentNode: this.currentNode,
141
- documentModifier: a
142
- }) || N({
143
- currentNode: this.currentNode,
144
- documentModifier: a
141
+ documentModifier: u
145
142
  });
146
143
  }
147
144
  _onCurrencyChange(e) {
148
145
  const [, r] = e.includes(".") ? e.split(".") : [null, e];
149
- this._updateCurrency({
146
+ s.getConfig(this.currentNode).currency.code !== r && (this._updateCurrency({
150
147
  code: r,
151
148
  symbol: r
152
149
  }, !0), this.api.updateValues({
153
150
  [t.CURRENCY_SYMBOL]: r
154
- });
151
+ }));
155
152
  }
156
153
  _onCurrencyLocationChange(e) {
157
154
  this._updateCurrency({
@@ -172,8 +169,9 @@ class D extends d {
172
169
  });
173
170
  }
174
171
  _onDecimalCountChange(e) {
172
+ const r = parseInt(e);
175
173
  this._updateCurrency({
176
- decimalCount: parseInt(e) || 2
174
+ decimalCount: Number.isNaN(r) ? 2 : r
177
175
  });
178
176
  }
179
177
  _listenToFormUpdates() {
@@ -204,6 +202,6 @@ class D extends d {
204
202
  }
205
203
  }
206
204
  export {
207
- y as CURRENCY_CONTROL_ID,
208
- D as CurrencyControl
205
+ E as CURRENCY_CONTROL_ID,
206
+ Y as CurrencyControl
209
207
  };