@useinsider/guido 3.2.0-beta.78d83bd → 3.2.0-beta.7e0c6bd

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 (265) hide show
  1. package/dist/@types/config/schemas.js +1 -1
  2. package/dist/@types/config/validator.js +27 -34
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +76 -81
  5. package/dist/components/organisms/base/Toaster.vue2.js +10 -11
  6. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +12 -12
  7. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +6 -6
  8. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +9 -15
  9. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +31 -40
  10. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +19 -20
  11. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +11 -14
  12. package/dist/components/organisms/header/EditorActions.vue.js +11 -12
  13. package/dist/components/organisms/header/EditorActions.vue2.js +18 -22
  14. package/dist/components/organisms/header/HeaderWrapper.vue2.js +12 -15
  15. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -19
  16. package/dist/components/organisms/header/MiddleSlot.vue2.js +14 -11
  17. package/dist/components/organisms/header/RightSlot.vue2.js +14 -17
  18. package/dist/components/organisms/onboarding/AMPOnboarding.vue.js +11 -12
  19. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +49 -31
  20. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +12 -13
  21. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +36 -38
  22. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +12 -13
  23. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +47 -51
  24. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +18 -21
  25. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +27 -31
  26. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +12 -13
  27. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +33 -46
  28. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue.js +11 -12
  29. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +20 -21
  30. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +8 -9
  31. package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +9 -10
  32. package/dist/composables/useActionsApi.js +37 -38
  33. package/dist/composables/useBlocksConfig.js +26 -26
  34. package/dist/composables/useFullStoryBridge.js +8 -9
  35. package/dist/composables/useHtmlCompiler.js +34 -26
  36. package/dist/composables/useHtmlValidator.js +101 -109
  37. package/dist/composables/useHttp.js +30 -30
  38. package/dist/composables/usePartner.js +1 -1
  39. package/dist/composables/useRecommendation.js +14 -15
  40. package/dist/composables/useRibbonOffset.js +21 -0
  41. package/dist/composables/useSave.js +21 -22
  42. package/dist/composables/useStripo.js +53 -50
  43. package/dist/composables/useSyncModuleExtractor.js +31 -29
  44. package/dist/composables/useTimerClone.js +24 -25
  45. package/dist/composables/useTranslations.js +23 -16
  46. package/dist/composables/useValidation.js +7 -8
  47. package/dist/composables/validators/useLiquidValidator.js +13 -13
  48. package/dist/config/compiler/unsubscribeCompilerRules.js +17 -19
  49. package/dist/config/compiler/utils/recommendationCompilerUtils.js +10 -11
  50. package/dist/config/migrator/checkboxMigrator.js +20 -21
  51. package/dist/config/migrator/couponBlockMigrator.js +18 -19
  52. package/dist/config/migrator/itemsBlockMigrator.js +87 -89
  53. package/dist/config/migrator/radioButtonMigrator.js +12 -13
  54. package/dist/config/migrator/recommendationMigrator.js +106 -109
  55. package/dist/config/migrator/unsubscribeMigrator.js +10 -11
  56. package/dist/enums/onboarding.js +7 -2
  57. package/dist/enums/unsubscribe.js +18 -19
  58. package/dist/extensions/Blocks/Items/block.js +9 -9
  59. package/dist/extensions/Blocks/Items/controls/button/link.js +14 -14
  60. package/dist/extensions/Blocks/Items/controls/cardComposition.js +89 -97
  61. package/dist/extensions/Blocks/Items/controls/image/link.js +14 -14
  62. package/dist/extensions/Blocks/Items/controls/name/trimming.js +23 -24
  63. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +13 -14
  64. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +44 -47
  65. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +38 -38
  66. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +11 -11
  67. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +38 -40
  68. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +35 -35
  69. package/dist/extensions/Blocks/Items/controls/settingsControl.js +155 -162
  70. package/dist/extensions/Blocks/Items/enums/productEnums.js +9 -14
  71. package/dist/extensions/Blocks/Items/template.js +218 -216
  72. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +36 -36
  73. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +128 -133
  74. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +9 -9
  75. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +10 -10
  76. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +9 -9
  77. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +17 -18
  78. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +4 -6
  79. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +82 -90
  80. package/dist/extensions/Blocks/Recommendation/controls/main/layoutOrientation.js +18 -18
  81. package/dist/extensions/Blocks/Recommendation/controls/main/productCount.js +4 -4
  82. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +35 -36
  83. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +134 -135
  84. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +24 -24
  85. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +10 -10
  86. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +24 -24
  87. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +24 -24
  88. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +4 -4
  89. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +4 -4
  90. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +24 -24
  91. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +4 -4
  92. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +4 -4
  93. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +24 -24
  94. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +32 -32
  95. package/dist/extensions/Blocks/Recommendation/controls/syncInfoMessage.js +18 -20
  96. package/dist/extensions/Blocks/Recommendation/extension.js +31 -32
  97. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +8 -16
  98. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +55 -56
  99. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +22 -23
  100. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +10 -10
  101. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +10 -10
  102. package/dist/extensions/Blocks/Recommendation/templates/index.js +6 -6
  103. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +24 -25
  104. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +1 -1
  105. package/dist/extensions/Blocks/Recommendation/templates/utils.js +45 -47
  106. package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +13 -16
  107. package/dist/extensions/Blocks/Unsubscribe/control.js +11 -13
  108. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +16 -18
  109. package/dist/extensions/Blocks/common-control.js +25 -26
  110. package/dist/extensions/DynamicContent/dynamic-content.js +53 -58
  111. package/dist/guido.css +1 -1
  112. package/dist/library.js +11 -12
  113. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +233 -210
  114. package/dist/node_modules/valibot/dist/index.js +122 -126
  115. package/dist/package.json.js +1 -1
  116. package/dist/services/recommendationApi.js +14 -17
  117. package/dist/services/templateLibraryApi.js +37 -38
  118. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  119. package/dist/src/composables/useHtmlCompiler.d.ts +1 -2
  120. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  121. package/dist/src/composables/useTranslations.d.ts +1 -1
  122. package/dist/src/enums/onboarding.d.ts +6 -0
  123. package/dist/src/stores/dynamic-content.d.ts +3 -3
  124. package/dist/src/stores/onboarding.d.ts +4 -0
  125. package/dist/stores/config.js +25 -81
  126. package/dist/stores/dynamic-content.js +6 -11
  127. package/dist/stores/onboarding.js +5 -1
  128. package/dist/stores/preview.js +6 -9
  129. package/dist/stores/unsubscribe.js +1 -4
  130. package/dist/utils/dateUtil.js +7 -10
  131. package/dist/utils/genericUtil.js +10 -13
  132. package/dist/utils/pairProductVariables.js +13 -14
  133. package/package.json +8 -5
  134. package/dist/node_modules/lodash-es/_DataView.js +0 -6
  135. package/dist/node_modules/lodash-es/_Hash.js +0 -20
  136. package/dist/node_modules/lodash-es/_ListCache.js +0 -20
  137. package/dist/node_modules/lodash-es/_Map.js +0 -6
  138. package/dist/node_modules/lodash-es/_MapCache.js +0 -20
  139. package/dist/node_modules/lodash-es/_Promise.js +0 -6
  140. package/dist/node_modules/lodash-es/_Set.js +0 -6
  141. package/dist/node_modules/lodash-es/_SetCache.js +0 -13
  142. package/dist/node_modules/lodash-es/_Stack.js +0 -18
  143. package/dist/node_modules/lodash-es/_Symbol.js +0 -5
  144. package/dist/node_modules/lodash-es/_Uint8Array.js +0 -5
  145. package/dist/node_modules/lodash-es/_WeakMap.js +0 -6
  146. package/dist/node_modules/lodash-es/_arrayFilter.js +0 -10
  147. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +0 -20
  148. package/dist/node_modules/lodash-es/_arrayMap.js +0 -8
  149. package/dist/node_modules/lodash-es/_arrayPush.js +0 -8
  150. package/dist/node_modules/lodash-es/_arraySome.js +0 -9
  151. package/dist/node_modules/lodash-es/_assocIndexOf.js +0 -10
  152. package/dist/node_modules/lodash-es/_baseEach.js +0 -6
  153. package/dist/node_modules/lodash-es/_baseFlatten.js +0 -13
  154. package/dist/node_modules/lodash-es/_baseFor.js +0 -5
  155. package/dist/node_modules/lodash-es/_baseForOwn.js +0 -8
  156. package/dist/node_modules/lodash-es/_baseGet.js +0 -11
  157. package/dist/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
  158. package/dist/node_modules/lodash-es/_baseGetTag.js +0 -10
  159. package/dist/node_modules/lodash-es/_baseHasIn.js +0 -6
  160. package/dist/node_modules/lodash-es/_baseIsArguments.js +0 -9
  161. package/dist/node_modules/lodash-es/_baseIsEqual.js +0 -8
  162. package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +0 -32
  163. package/dist/node_modules/lodash-es/_baseIsMatch.js +0 -29
  164. package/dist/node_modules/lodash-es/_baseIsNative.js +0 -16
  165. package/dist/node_modules/lodash-es/_baseIsTypedArray.js +0 -12
  166. package/dist/node_modules/lodash-es/_baseIteratee.js +0 -11
  167. package/dist/node_modules/lodash-es/_baseKeys.js +0 -14
  168. package/dist/node_modules/lodash-es/_baseMap.js +0 -11
  169. package/dist/node_modules/lodash-es/_baseMatches.js +0 -12
  170. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +0 -17
  171. package/dist/node_modules/lodash-es/_baseProperty.js +0 -8
  172. package/dist/node_modules/lodash-es/_basePropertyDeep.js +0 -9
  173. package/dist/node_modules/lodash-es/_baseRange.js +0 -9
  174. package/dist/node_modules/lodash-es/_baseTimes.js +0 -8
  175. package/dist/node_modules/lodash-es/_baseToString.js +0 -18
  176. package/dist/node_modules/lodash-es/_baseTrim.js +0 -8
  177. package/dist/node_modules/lodash-es/_baseUnary.js +0 -8
  178. package/dist/node_modules/lodash-es/_cacheHas.js +0 -6
  179. package/dist/node_modules/lodash-es/_castPath.js +0 -10
  180. package/dist/node_modules/lodash-es/_coreJsData.js +0 -5
  181. package/dist/node_modules/lodash-es/_createBaseEach.js +0 -15
  182. package/dist/node_modules/lodash-es/_createBaseFor.js +0 -13
  183. package/dist/node_modules/lodash-es/_createRange.js +0 -11
  184. package/dist/node_modules/lodash-es/_equalArrays.js +0 -40
  185. package/dist/node_modules/lodash-es/_equalByTag.js +0 -45
  186. package/dist/node_modules/lodash-es/_equalObjects.js +0 -36
  187. package/dist/node_modules/lodash-es/_freeGlobal.js +0 -4
  188. package/dist/node_modules/lodash-es/_getAllKeys.js +0 -9
  189. package/dist/node_modules/lodash-es/_getMapData.js +0 -8
  190. package/dist/node_modules/lodash-es/_getMatchData.js +0 -12
  191. package/dist/node_modules/lodash-es/_getNative.js +0 -9
  192. package/dist/node_modules/lodash-es/_getRawTag.js +0 -15
  193. package/dist/node_modules/lodash-es/_getSymbols.js +0 -10
  194. package/dist/node_modules/lodash-es/_getTag.js +0 -28
  195. package/dist/node_modules/lodash-es/_getValue.js +0 -6
  196. package/dist/node_modules/lodash-es/_hasPath.js +0 -19
  197. package/dist/node_modules/lodash-es/_hashClear.js +0 -7
  198. package/dist/node_modules/lodash-es/_hashDelete.js +0 -7
  199. package/dist/node_modules/lodash-es/_hashGet.js +0 -13
  200. package/dist/node_modules/lodash-es/_hashHas.js +0 -9
  201. package/dist/node_modules/lodash-es/_hashSet.js +0 -9
  202. package/dist/node_modules/lodash-es/_isFlattenable.js +0 -10
  203. package/dist/node_modules/lodash-es/_isIndex.js +0 -8
  204. package/dist/node_modules/lodash-es/_isIterateeCall.js +0 -13
  205. package/dist/node_modules/lodash-es/_isKey.js +0 -12
  206. package/dist/node_modules/lodash-es/_isKeyable.js +0 -7
  207. package/dist/node_modules/lodash-es/_isMasked.js +0 -11
  208. package/dist/node_modules/lodash-es/_isPrototype.js +0 -8
  209. package/dist/node_modules/lodash-es/_isStrictComparable.js +0 -7
  210. package/dist/node_modules/lodash-es/_listCacheClear.js +0 -6
  211. package/dist/node_modules/lodash-es/_listCacheDelete.js +0 -12
  212. package/dist/node_modules/lodash-es/_listCacheGet.js +0 -8
  213. package/dist/node_modules/lodash-es/_listCacheHas.js +0 -7
  214. package/dist/node_modules/lodash-es/_listCacheSet.js +0 -8
  215. package/dist/node_modules/lodash-es/_mapCacheClear.js +0 -13
  216. package/dist/node_modules/lodash-es/_mapCacheDelete.js +0 -8
  217. package/dist/node_modules/lodash-es/_mapCacheGet.js +0 -7
  218. package/dist/node_modules/lodash-es/_mapCacheHas.js +0 -7
  219. package/dist/node_modules/lodash-es/_mapCacheSet.js +0 -8
  220. package/dist/node_modules/lodash-es/_mapToArray.js +0 -9
  221. package/dist/node_modules/lodash-es/_matchesStrictComparable.js +0 -8
  222. package/dist/node_modules/lodash-es/_memoizeCapped.js +0 -11
  223. package/dist/node_modules/lodash-es/_nativeCreate.js +0 -5
  224. package/dist/node_modules/lodash-es/_nativeKeys.js +0 -5
  225. package/dist/node_modules/lodash-es/_nodeUtil.js +0 -11
  226. package/dist/node_modules/lodash-es/_objectToString.js +0 -7
  227. package/dist/node_modules/lodash-es/_overArg.js +0 -8
  228. package/dist/node_modules/lodash-es/_root.js +0 -5
  229. package/dist/node_modules/lodash-es/_setCacheAdd.js +0 -7
  230. package/dist/node_modules/lodash-es/_setCacheHas.js +0 -6
  231. package/dist/node_modules/lodash-es/_setToArray.js +0 -9
  232. package/dist/node_modules/lodash-es/_stackClear.js +0 -7
  233. package/dist/node_modules/lodash-es/_stackDelete.js +0 -7
  234. package/dist/node_modules/lodash-es/_stackGet.js +0 -6
  235. package/dist/node_modules/lodash-es/_stackHas.js +0 -6
  236. package/dist/node_modules/lodash-es/_stackSet.js +0 -17
  237. package/dist/node_modules/lodash-es/_stringToPath.js +0 -10
  238. package/dist/node_modules/lodash-es/_toKey.js +0 -10
  239. package/dist/node_modules/lodash-es/_toSource.js +0 -17
  240. package/dist/node_modules/lodash-es/_trimmedEndIndex.js +0 -9
  241. package/dist/node_modules/lodash-es/eq.js +0 -6
  242. package/dist/node_modules/lodash-es/flatMap.js +0 -8
  243. package/dist/node_modules/lodash-es/get.js +0 -8
  244. package/dist/node_modules/lodash-es/hasIn.js +0 -8
  245. package/dist/node_modules/lodash-es/identity.js +0 -6
  246. package/dist/node_modules/lodash-es/isArguments.js +0 -10
  247. package/dist/node_modules/lodash-es/isArray.js +0 -4
  248. package/dist/node_modules/lodash-es/isArrayLike.js +0 -8
  249. package/dist/node_modules/lodash-es/isBuffer.js +0 -6
  250. package/dist/node_modules/lodash-es/isFunction.js +0 -12
  251. package/dist/node_modules/lodash-es/isLength.js +0 -7
  252. package/dist/node_modules/lodash-es/isObject.js +0 -7
  253. package/dist/node_modules/lodash-es/isObjectLike.js +0 -6
  254. package/dist/node_modules/lodash-es/isSymbol.js +0 -9
  255. package/dist/node_modules/lodash-es/isTypedArray.js +0 -7
  256. package/dist/node_modules/lodash-es/keys.js +0 -9
  257. package/dist/node_modules/lodash-es/map.js +0 -11
  258. package/dist/node_modules/lodash-es/memoize.js +0 -18
  259. package/dist/node_modules/lodash-es/property.js +0 -10
  260. package/dist/node_modules/lodash-es/range.js +0 -5
  261. package/dist/node_modules/lodash-es/stubArray.js +0 -6
  262. package/dist/node_modules/lodash-es/stubFalse.js +0 -6
  263. package/dist/node_modules/lodash-es/toFinite.js +0 -14
  264. package/dist/node_modules/lodash-es/toNumber.js +0 -22
  265. package/dist/node_modules/lodash-es/toString.js +0 -7
@@ -1,32 +1,32 @@
1
- var X = Object.defineProperty;
2
- var J = (p, _, t) => _ in p ? X(p, _, { enumerable: !0, configurable: !0, writable: !0, value: t }) : p[_] = t;
3
- var C = (p, _, t) => J(p, typeof _ != "symbol" ? _ + "" : _, t);
4
- import { UIElementType as f, UEAttr as $, ModificationDescription as A } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as Q } from "../../../common-control.js";
6
- import { ATTR_PRODUCT_IMAGE as L, ATTR_PRODUCT_NAME as Z, ATTR_PRODUCT_PRICE as tt, ATTR_PRODUCT_OLD_PRICE as et, ATTR_PRODUCT_OMNIBUS_PRICE as rt, ATTR_PRODUCT_OMNIBUS_DISCOUNT as ot, ATTR_PRODUCT_BUTTON as D, ATTR_DATA_CUSTOM_ATTRIBUTES as k, ATTR_CUSTOM_PREFIX as m, BUILT_IN_DEFAULT_ATTRIBUTES as st } from "../../constants/selectors.js";
7
- import { DEFAULT_COMPOSITION as q, DEFAULT_VISIBILITY as P } from "../../constants/defaultConfig.js";
8
- import { RecommendationConfigService as it } from "../../services/configService.js";
9
- import { useRecommendationExtensionStore as nt } from "../../store/recommendation.js";
10
- import { ATTRIBUTE_CELL_CLASS as lt, gridElementRenderer as at, DEFAULT_CELL_PADDING as ct } from "../../templates/grid/elementRenderer.js";
11
- import { listElementRenderer as ut } from "../../templates/list/elementRenderer.js";
12
- import { toDisplayName as dt, isDefaultAttribute as mt, buildElementRenderer as F } from "../../templates/utils.js";
13
- import { getTableDisplayValue as ht } from "../../utils/tagName.js";
14
- import { getCurrentLayout as pt } from "../main/utils.js";
15
- const _t = "ui-elements-recommendation-card-composition", S = ".recommendation-attribute-row", N = ".product-card-wrapper > tbody", w = ".product-info-cell > table > tbody", M = "data-card-composition", y = "data-attribute-type", I = "data-visibility", x = {
1
+ var Y = Object.defineProperty;
2
+ var X = (p, f, t) => f in p ? Y(p, f, { enumerable: !0, configurable: !0, writable: !0, value: t }) : p[f] = t;
3
+ var C = (p, f, t) => X(p, typeof f != "symbol" ? f + "" : f, t);
4
+ import { UIElementType as _, UEAttr as $, ModificationDescription as y } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as J } from "../../../common-control.js";
6
+ import { DEFAULT_COMPOSITION as H, DEFAULT_VISIBILITY as k } from "../../constants/defaultConfig.js";
7
+ import { RecommendationConfigService as Q } from "../../services/configService.js";
8
+ import { useRecommendationExtensionStore as Z } from "../../store/recommendation.js";
9
+ import { ATTRIBUTE_CELL_CLASS as tt, gridElementRenderer as et, DEFAULT_CELL_PADDING as rt } from "../../templates/grid/elementRenderer.js";
10
+ import { listElementRenderer as ot } from "../../templates/list/elementRenderer.js";
11
+ import { toDisplayName as st, isDefaultAttribute as it, buildElementRenderer as q } from "../../templates/utils.js";
12
+ import { getTableDisplayValue as nt } from "../../utils/tagName.js";
13
+ import { getCurrentLayout as lt } from "../main/utils.js";
14
+ import { ATTR_PRODUCT_IMAGE as L, ATTR_PRODUCT_NAME as at, ATTR_PRODUCT_PRICE as ct, ATTR_PRODUCT_OLD_PRICE as dt, ATTR_PRODUCT_OMNIBUS_PRICE as ut, ATTR_PRODUCT_OMNIBUS_DISCOUNT as mt, ATTR_PRODUCT_BUTTON as D, ATTR_DATA_CUSTOM_ATTRIBUTES as w, ATTR_CUSTOM_PREFIX as m, BUILT_IN_DEFAULT_ATTRIBUTES as ht } from "../../constants/selectors.js";
15
+ const pt = "ui-elements-recommendation-card-composition", T = ".recommendation-attribute-row", N = ".product-card-wrapper > tbody", P = ".product-info-cell > table > tbody", F = "data-card-composition", b = "data-attribute-type", I = "data-visibility", M = {
16
16
  ADD_ATTRIBUTE: "addAttribute"
17
17
  }, g = 5, v = "reorderIcon_", h = [
18
18
  { key: L, label: "Product Image" },
19
- { key: Z, label: "Product Name" },
20
- { key: tt, label: "Product Price" },
21
- { key: et, label: "Product Original Price" },
22
- { key: rt, label: "Omnibus Price" },
23
- { key: ot, label: "Omnibus Discount" },
19
+ { key: at, label: "Product Name" },
20
+ { key: ct, label: "Product Price" },
21
+ { key: dt, label: "Product Original Price" },
22
+ { key: ut, label: "Omnibus Price" },
23
+ { key: mt, label: "Omnibus Discount" },
24
24
  { key: D, label: "Product Button" }
25
- ], ft = new Set(h.map((p) => p.key)), T = "customAttr_", E = "deleteAttr_";
26
- class Nt extends Q {
25
+ ], ft = new Set(h.map((p) => p.key)), A = "customAttr_", O = "deleteAttr_";
26
+ class Et extends J {
27
27
  constructor() {
28
28
  super(...arguments);
29
- C(this, "store", nt());
29
+ C(this, "store", Z());
30
30
  C(this, "unsubscribeStore", null);
31
31
  C(this, "eventController", null);
32
32
  /**
@@ -36,7 +36,7 @@ class Nt extends Q {
36
36
  C(this, "reorderInProgress", !1);
37
37
  }
38
38
  getId() {
39
- return _t;
39
+ return pt;
40
40
  }
41
41
  // ========================================================================
42
42
  // Lifecycle
@@ -48,10 +48,10 @@ class Nt extends Q {
48
48
  </div>
49
49
  `).join(""), r = Array.from(
50
50
  { length: g },
51
- (l, u) => `
52
- <div data-custom-select-key="${T}${u}" style="display: none;">
51
+ (l, d) => `
52
+ <div data-custom-select-key="${A}${d}" style="display: none;">
53
53
  ${this._GuSelect({
54
- name: `${T}${u}`,
54
+ name: `${A}${d}`,
55
55
  placeholder: this.api.translate("Select Attribute"),
56
56
  options: []
57
57
  })}
@@ -59,32 +59,32 @@ class Nt extends Q {
59
59
  `
60
60
  ).join(""), e = h.length + g, o = Array.from(
61
61
  { length: e },
62
- (l, u) => `
63
- <div data-reorder-icon-key="${v}${u}" style="display: none;">
64
- <${f.BUTTON}
62
+ (l, d) => `
63
+ <div data-reorder-icon-key="${v}${d}" style="display: none;">
64
+ <${_.BUTTON}
65
65
  class="drag-handle-btn flat-inline flat-white"
66
- ${$.BUTTON.name}="${v}${u}"
66
+ ${$.BUTTON.name}="${v}${d}"
67
67
  >
68
- <${f.ICON}
68
+ <${_.ICON}
69
69
  src="reorder"
70
70
  class="icon-button"
71
- ></${f.ICON}>
72
- </${f.BUTTON}>
71
+ ></${_.ICON}>
72
+ </${_.BUTTON}>
73
73
  </div>
74
74
  `
75
75
  ).join(""), s = Array.from(
76
76
  { length: g },
77
- (l, u) => `
78
- <div data-custom-delete-key="${E}${u}" style="display: none;">
79
- <${f.BUTTON}
77
+ (l, d) => `
78
+ <div data-custom-delete-key="${O}${d}" style="display: none;">
79
+ <${_.BUTTON}
80
80
  class="custom-attr-delete flat-inline flat-white"
81
- ${$.BUTTON.name}="${E}${u}"
81
+ ${$.BUTTON.name}="${O}${d}"
82
82
  >
83
- <${f.ICON}
83
+ <${_.ICON}
84
84
  src="delete"
85
85
  class="icon-button"
86
- ></${f.ICON}>
87
- </${f.BUTTON}>
86
+ ></${_.ICON}>
87
+ </${_.BUTTON}>
88
88
  </div>
89
89
  `
90
90
  ).join(""), i = "https://academy.insiderone.com/docs/new-editor-email-recommendation-block", n = this.api.translate(
@@ -120,7 +120,7 @@ class Nt extends Q {
120
120
  <div class="orderable-list" data-composition-list></div>
121
121
 
122
122
  ${this._GuButton({
123
- name: x.ADD_ATTRIBUTE,
123
+ name: M.ADD_ATTRIBUTE,
124
124
  label: this.api.translate("Add Attribute"),
125
125
  id: "guido__btn-add-attribute"
126
126
  })}
@@ -150,7 +150,7 @@ class Nt extends Q {
150
150
  });
151
151
  });
152
152
  for (let t = 0; t < g; t++) {
153
- const r = `${T}${t}`, e = t;
153
+ const r = `${A}${t}`, e = t;
154
154
  this.api.onValueChanged(r, (o) => {
155
155
  this._onCustomAttributeChanged(e, o);
156
156
  });
@@ -161,14 +161,14 @@ class Nt extends Q {
161
161
  // ========================================================================
162
162
  _readCompositionFromNode() {
163
163
  if (!this.currentNode || !("getAttribute" in this.currentNode))
164
- return [...q];
165
- const t = this.currentNode.getAttribute(M);
166
- return t ? t.split(",").filter(Boolean) : [...q];
164
+ return [...H];
165
+ const t = this.currentNode.getAttribute(F);
166
+ return t ? t.split(",").filter(Boolean) : [...H];
167
167
  }
168
168
  _readCustomAttributesFromNode() {
169
169
  if (!this.currentNode || !("getAttribute" in this.currentNode))
170
170
  return [];
171
- const t = this.currentNode.getAttribute(k);
171
+ const t = this.currentNode.getAttribute(w);
172
172
  if (!t)
173
173
  return [];
174
174
  try {
@@ -180,18 +180,18 @@ class Nt extends Q {
180
180
  _readVisibilityFromRows() {
181
181
  if (!this.currentNode)
182
182
  return this._getDefaultVisibilities();
183
- const t = Array.from(this.currentNode.querySelectorAll(S)), r = this._extractVisibilityFromRows(t);
183
+ const t = Array.from(this.currentNode.querySelectorAll(T)), r = this._extractVisibilityFromRows(t);
184
184
  return this._mergeWithDefaults(r);
185
185
  }
186
186
  _getDefaultVisibilities() {
187
- return { ...P };
187
+ return { ...k };
188
188
  }
189
189
  _extractVisibilityFromRows(t) {
190
190
  const r = {};
191
191
  return t.forEach((e) => {
192
192
  if (!("getAttribute" in e))
193
193
  return;
194
- const o = e.getAttribute(y), s = e.getAttribute(I);
194
+ const o = e.getAttribute(b), s = e.getAttribute(I);
195
195
  o && s !== null && (r[o] = this._parseVisibilityValue(s));
196
196
  }), r;
197
197
  }
@@ -199,7 +199,7 @@ class Nt extends Q {
199
199
  return t === "1" || t === "true";
200
200
  }
201
201
  _mergeWithDefaults(t) {
202
- return Object.entries(P).forEach(([r, e]) => {
202
+ return Object.entries(k).forEach(([r, e]) => {
203
203
  r in t || (t[r] = e);
204
204
  }), t;
205
205
  }
@@ -225,7 +225,7 @@ class Nt extends Q {
225
225
  let i = 0, n = 0;
226
226
  const c = t.map((a) => {
227
227
  if (ft.has(a)) {
228
- const l = h.find((u) => u.key === a);
228
+ const l = h.find((d) => d.key === a);
229
229
  return this._createBuiltInItemHtml(l, n++);
230
230
  }
231
231
  if (a.startsWith(m)) {
@@ -257,8 +257,8 @@ class Nt extends Q {
257
257
  e.forEach((a) => {
258
258
  const { key: l } = a.dataset;
259
259
  if (l) {
260
- const u = n.get(l) || [];
261
- u.push(a), n.set(l, u);
260
+ const d = n.get(l) || [];
261
+ d.push(a), n.set(l, d);
262
262
  }
263
263
  });
264
264
  const c = /* @__PURE__ */ new Map();
@@ -266,8 +266,8 @@ class Nt extends Q {
266
266
  const l = n.get(a);
267
267
  if (!l)
268
268
  return;
269
- const u = c.get(a) || 0;
270
- c.set(a, u + 1), l[u] && t.appendChild(l[u]);
269
+ const d = c.get(a) || 0;
270
+ c.set(a, d + 1), l[d] && t.appendChild(l[d]);
271
271
  }), !0;
272
272
  }
273
273
  _createBuiltInItemHtml(t, r) {
@@ -315,7 +315,7 @@ class Nt extends Q {
315
315
  _initializeCustomSelects(t) {
316
316
  t.length !== 0 && setTimeout(() => {
317
317
  t.forEach((r, e) => {
318
- const o = `${T}${e}`, s = this._getSelectOptions(r, t);
318
+ const o = `${A}${e}`, s = this._getSelectOptions(r, t);
319
319
  this.api.setUIEAttribute(o, $.SELECTPICKER.items, s), this.api.updateValues({ [o]: r });
320
320
  });
321
321
  }, 0);
@@ -339,7 +339,7 @@ class Nt extends Q {
339
339
  */
340
340
  _moveSelectsIntoItems(t, r) {
341
341
  for (let e = 0; e < r; e++) {
342
- const o = `${T}${e}`, s = t.querySelector(`[data-custom-select-key="${o}"]`), i = t.querySelector(`[data-custom-select-slot="${e}"]`);
342
+ const o = `${A}${e}`, s = t.querySelector(`[data-custom-select-key="${o}"]`), i = t.querySelector(`[data-custom-select-slot="${e}"]`);
343
343
  if (s && i) {
344
344
  const n = s.querySelector("ue-select");
345
345
  n && i.appendChild(n);
@@ -367,7 +367,7 @@ class Nt extends Q {
367
367
  */
368
368
  _rescueSelectsToStore(t) {
369
369
  for (let r = 0; r < g; r++) {
370
- const e = `${T}${r}`, o = t.querySelector(`[data-custom-select-key="${e}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
370
+ const e = `${A}${r}`, o = t.querySelector(`[data-custom-select-key="${e}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
371
371
  if (s) {
372
372
  const i = s.querySelector("ue-select");
373
373
  i && o && o.appendChild(i);
@@ -380,7 +380,7 @@ class Nt extends Q {
380
380
  */
381
381
  _moveDeleteButtonsIntoItems(t, r) {
382
382
  for (let e = 0; e < r; e++) {
383
- const o = `${E}${e}`, s = t.querySelector(`[data-custom-delete-key="${o}"]`), i = t.querySelector(`[data-custom-delete-slot="${e}"]`);
383
+ const o = `${O}${e}`, s = t.querySelector(`[data-custom-delete-key="${o}"]`), i = t.querySelector(`[data-custom-delete-slot="${e}"]`);
384
384
  if (s && i) {
385
385
  const n = s.querySelector("ue-button");
386
386
  n && i.appendChild(n);
@@ -393,7 +393,7 @@ class Nt extends Q {
393
393
  */
394
394
  _rescueDeleteButtonsToStore(t) {
395
395
  for (let r = 0; r < g; r++) {
396
- const e = `${E}${r}`, o = t.querySelector(`[data-custom-delete-key="${e}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
396
+ const e = `${O}${r}`, o = t.querySelector(`[data-custom-delete-key="${e}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
397
397
  if (s) {
398
398
  const i = s.querySelector("ue-button");
399
399
  i && o && o.appendChild(i);
@@ -444,24 +444,23 @@ class Nt extends Q {
444
444
  _setupDragAndDrop(t, r) {
445
445
  let e = null, o = null;
446
446
  t.addEventListener("dragstart", (s) => {
447
- var c;
448
447
  const n = s.target.closest(".orderable-item");
449
- n && (e = n, n.classList.add("dragging"), (c = s.dataTransfer) == null || c.setData("text/plain", n.dataset.key || ""));
448
+ n && (e = n, n.classList.add("dragging"), s.dataTransfer?.setData("text/plain", n.dataset.key || ""));
450
449
  }, { signal: r }), t.addEventListener("dragend", () => {
451
- e && e.classList.remove("dragging"), e = null, o == null || o.classList.remove("drag-over"), o = null;
450
+ e && e.classList.remove("dragging"), e = null, o?.classList.remove("drag-over"), o = null;
452
451
  }, { signal: r }), t.addEventListener("dragover", (s) => {
453
452
  s.preventDefault();
454
453
  const n = s.target.closest(".orderable-item"), c = n && n !== e ? n : null;
455
- c !== o && (o == null || o.classList.remove("drag-over"), o = c, o == null || o.classList.add("drag-over"));
454
+ c !== o && (o?.classList.remove("drag-over"), o = c, o?.classList.add("drag-over"));
456
455
  }, { signal: r }), t.addEventListener("drop", (s) => {
457
456
  s.preventDefault();
458
457
  const n = s.target.closest(".orderable-item");
459
458
  if (!n || !e || n === e)
460
459
  return;
461
460
  const c = n.getBoundingClientRect(), a = c.top + c.height / 2;
462
- s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o == null || o.classList.remove("drag-over"), o = null, e.classList.remove("dragging");
463
- const u = t.querySelectorAll(".orderable-item"), d = Array.from(u).map((b) => b.dataset.key).filter(Boolean);
464
- this._onReorder(d), e = null;
461
+ s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o?.classList.remove("drag-over"), o = null, e.classList.remove("dragging");
462
+ const d = t.querySelectorAll(".orderable-item"), u = Array.from(d).map((S) => S.dataset.key).filter(Boolean);
463
+ this._onReorder(u), e = null;
465
464
  }, { signal: r });
466
465
  }
467
466
  _setupDeleteHandler(t, r) {
@@ -469,7 +468,7 @@ class Nt extends Q {
469
468
  const s = e.target.closest(".custom-attr-delete");
470
469
  if (!s)
471
470
  return;
472
- const i = s.closest("[data-custom-index]"), n = i == null ? void 0 : i.dataset.customIndex;
471
+ const n = s.closest("[data-custom-index]")?.dataset.customIndex;
473
472
  n !== void 0 && this._onDeleteCustomAttribute(Number(n));
474
473
  }, { signal: r });
475
474
  }
@@ -526,56 +525,55 @@ class Nt extends Q {
526
525
  }
527
526
  _injectGridAttributeRow(t, r, e, o) {
528
527
  const s = this.currentNode.querySelectorAll(N);
529
- if (!(s != null && s.length))
528
+ if (!s?.length)
530
529
  return;
531
- const i = it.getConfig(this.currentNode), c = `0 ${Math.floor(i.columnSpacing / 2)}px`, a = this.api.getDocumentModifier(), l = this.store.recommendationProducts.length;
532
- let u = 0;
533
- s.forEach((d) => {
534
- var U;
535
- const b = d.querySelector(S), R = ((U = b == null ? void 0 : b.querySelectorAll(`.${lt}`)) == null ? void 0 : U.length) || 1, V = (100 / R).toFixed(2), { bgStyle: j, bgAttr: W } = this._extractSegmentBgFromCard(d), K = o.map((B) => {
530
+ const i = Q.getConfig(this.currentNode), c = `0 ${Math.floor(i.columnSpacing / 2)}px`, a = this.api.getDocumentModifier(), l = this.store.recommendationProducts.length;
531
+ let d = 0;
532
+ s.forEach((u) => {
533
+ const R = u.querySelector(T)?.querySelectorAll(`.${tt}`)?.length || 1, x = (100 / R).toFixed(2), { bgStyle: V, bgAttr: j } = this._extractSegmentBgFromCard(u), W = o.map((B) => {
536
534
  if (B === e) {
537
- const z = Array.from(
535
+ const K = Array.from(
538
536
  { length: R },
539
- (gt, H) => {
540
- const G = l > 0 ? (u + H) % l : H, Y = this._resolveAttributeContent(t, r, G);
537
+ (_t, U) => {
538
+ const z = l > 0 ? (d + U) % l : U, G = this._resolveAttributeContent(t, r, z);
541
539
  return this._getGridCellHtml(
542
540
  t,
543
- Y,
541
+ G,
542
+ x,
544
543
  V,
545
544
  j,
546
- W,
547
545
  c
548
546
  );
549
547
  }
550
548
  ).join("");
551
- return `<tr class="recommendation-attribute-row" ${y}="${e}" ${I}="1">${z}</tr>`;
549
+ return `<tr class="recommendation-attribute-row" ${b}="${e}" ${I}="1">${K}</tr>`;
552
550
  }
553
- const O = d.querySelector(
554
- `${S}[${y}="${B}"]`
551
+ const E = u.querySelector(
552
+ `${T}[${b}="${B}"]`
555
553
  );
556
- return O && "getOuterHTML" in O ? O.getOuterHTML() : "";
554
+ return E && "getOuterHTML" in E ? E.getOuterHTML() : "";
557
555
  }).join("");
558
- u += R, l > 0 && u >= l && (u = 0), a.modifyHtml(d).setInnerHtml(K);
559
- }), a.apply(new A(`${this.api.translate("Add custom attribute")}: ${r}`));
556
+ d += R, l > 0 && d >= l && (d = 0), a.modifyHtml(u).setInnerHtml(W);
557
+ }), a.apply(new y(`${this.api.translate("Add custom attribute")}: ${r}`));
560
558
  }
561
559
  _injectListAttributeRow(t, r, e, o) {
562
- const s = this.currentNode.querySelectorAll(w);
563
- if (!(s != null && s.length))
560
+ const s = this.currentNode.querySelectorAll(P);
561
+ if (!s?.length)
564
562
  return;
565
563
  const i = o.filter((c) => c !== L && c !== D), n = this.api.getDocumentModifier();
566
564
  s.forEach((c, a) => {
567
- const l = i.map((u) => {
568
- if (u === e) {
569
- const b = this._resolveAttributeContent(t, r, a);
570
- return this._getListRowHtml(t, b, e);
565
+ const l = i.map((d) => {
566
+ if (d === e) {
567
+ const S = this._resolveAttributeContent(t, r, a);
568
+ return this._getListRowHtml(t, S, e);
571
569
  }
572
- const d = c.querySelector(
573
- `${S}[${y}="${u}"]`
570
+ const u = c.querySelector(
571
+ `${T}[${b}="${d}"]`
574
572
  );
575
- return d && "getOuterHTML" in d ? d.getOuterHTML() : "";
573
+ return u && "getOuterHTML" in u ? u.getOuterHTML() : "";
576
574
  }).join("");
577
575
  n.modifyHtml(c).setInnerHtml(l);
578
- }), n.apply(new A(`${this.api.translate("Add custom attribute")}: ${r}`));
576
+ }), n.apply(new y(`${this.api.translate("Add custom attribute")}: ${r}`));
579
577
  }
580
578
  /**
581
579
  * Removes a custom attribute by rebuilding product card content without it.
@@ -585,20 +583,19 @@ class Nt extends Q {
585
583
  if (!this.currentNode)
586
584
  return;
587
585
  const r = this._getCurrentLayout(), e = this.api.getDocumentModifier();
588
- if (r === "grid") {
589
- const o = this.currentNode.querySelectorAll(N);
590
- o == null || o.forEach((s) => {
586
+ if (r === "grid")
587
+ this.currentNode.querySelectorAll(N)?.forEach((s) => {
591
588
  const i = this._buildCompositionHtml(s, t);
592
589
  e.modifyHtml(s).setInnerHtml(i);
593
590
  });
594
- } else {
595
- const o = t.filter((i) => i !== L && i !== D), s = this.currentNode.querySelectorAll(w);
596
- s == null || s.forEach((i) => {
591
+ else {
592
+ const o = t.filter((i) => i !== L && i !== D);
593
+ this.currentNode.querySelectorAll(P)?.forEach((i) => {
597
594
  const n = this._buildCompositionHtml(i, o);
598
595
  e.modifyHtml(i).setInnerHtml(n);
599
596
  });
600
597
  }
601
- e.apply(new A(this.api.translate("Remove custom attribute")));
598
+ e.apply(new y(this.api.translate("Remove custom attribute")));
602
599
  }
603
600
  // ========================================================================
604
601
  // DOM Mutation (Block Root Attributes, Reorder)
@@ -611,7 +608,7 @@ class Nt extends Q {
611
608
  * producing a flicker on the custom attribute dropdowns.
612
609
  */
613
610
  _updateBothAttributes(t, r) {
614
- this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(M, t.join(",")).setAttribute(k, JSON.stringify(r)).apply(new A(this.api.translate("Update card composition")));
611
+ this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(F, t.join(",")).setAttribute(w, JSON.stringify(r)).apply(new y(this.api.translate("Update card composition")));
615
612
  }
616
613
  /**
617
614
  * Reorders attribute rows within each product card based on composition order.
@@ -621,13 +618,13 @@ class Nt extends Q {
621
618
  if (!this.currentNode)
622
619
  return;
623
620
  const r = this.currentNode.querySelectorAll(N);
624
- if (!(r != null && r.length))
621
+ if (!r?.length)
625
622
  return;
626
623
  const e = this.api.getDocumentModifier();
627
624
  r.forEach((o) => {
628
625
  const s = this._buildCompositionHtml(o, t);
629
626
  e.modifyHtml(o).setInnerHtml(s);
630
- }), e.apply(new A(this.api.translate("Reorder product attributes")));
627
+ }), e.apply(new y(this.api.translate("Reorder product attributes")));
631
628
  }
632
629
  /**
633
630
  * Builds HTML string with attributes ordered according to composition.
@@ -635,7 +632,7 @@ class Nt extends Q {
635
632
  */
636
633
  _buildCompositionHtml(t, r) {
637
634
  return r.reduce((e, o) => {
638
- const s = t.querySelector(`${S}[${y}="${o}"]`);
635
+ const s = t.querySelector(`${T}[${b}="${o}"]`);
639
636
  return s && "getOuterHTML" in s ? e + s.getOuterHTML() : e;
640
637
  }, "");
641
638
  }
@@ -645,14 +642,14 @@ class Nt extends Q {
645
642
  _applyVisibilityToBlock(t, r) {
646
643
  if (!this.currentNode)
647
644
  return;
648
- const e = this.currentNode.querySelectorAll(`${S}[${y}="${t}"]`);
649
- if (!(e != null && e.length))
645
+ const e = this.currentNode.querySelectorAll(`${T}[${b}="${t}"]`);
646
+ if (!e?.length)
650
647
  return;
651
648
  const o = r ? "1" : "0", s = r ? this.api.translate("visible") : this.api.translate("hidden"), i = `${this.api.translate("Set visibility")}: ${t} → ${s}`, n = this.api.getDocumentModifier();
652
649
  e.forEach((c) => {
653
- const a = ht(c), l = r ? a : "none";
650
+ const a = nt(c), l = r ? a : "none";
654
651
  n.modifyHtml(c).setStyle("display", l).setAttribute(I, o);
655
- }), n.apply(new A(i));
652
+ }), n.apply(new y(i));
656
653
  }
657
654
  // ========================================================================
658
655
  // Utilities
@@ -673,7 +670,7 @@ class Nt extends Q {
673
670
  return -1;
674
671
  }
675
672
  _getCurrentLayout() {
676
- return this.store.recommendationConfigs.orientation || pt(this.currentNode);
673
+ return this.store.recommendationConfigs.orientation || lt(this.currentNode);
677
674
  }
678
675
  /**
679
676
  * Extracts background color properties from existing card elements.
@@ -682,21 +679,20 @@ class Nt extends Q {
682
679
  * Used when injecting new attribute cells to match the card's current background.
683
680
  */
684
681
  _extractSegmentBgFromCard(t) {
685
- var o;
686
682
  const r = t.querySelector(".product-card-segment");
687
683
  if (r && "getAttribute" in r) {
688
- const i = (r.getAttribute("style") || "").match(/background-color:\s*([^;]+)/);
689
- if (i) {
690
- const n = r.getAttribute("bgcolor") || "";
691
- return { bgStyle: `background-color: ${i[1].trim()};`, bgAttr: n };
684
+ const s = (r.getAttribute("style") || "").match(/background-color:\s*([^;]+)/);
685
+ if (s) {
686
+ const i = r.getAttribute("bgcolor") || "";
687
+ return { bgStyle: `background-color: ${s[1].trim()};`, bgAttr: i };
692
688
  }
693
689
  }
694
- const e = (o = this.currentNode) == null ? void 0 : o.querySelector(".product-card-wrapper");
690
+ const e = this.currentNode?.querySelector(".product-card-wrapper");
695
691
  if (e && "getStyle" in e) {
696
- const s = e.getStyle("background-color");
697
- if (s && s !== "transparent") {
698
- const i = "getAttribute" in e && e.getAttribute("bgcolor") || "";
699
- return { bgStyle: `background-color: ${s};`, bgAttr: i };
692
+ const o = e.getStyle("background-color");
693
+ if (o && o !== "transparent") {
694
+ const s = "getAttribute" in e && e.getAttribute("bgcolor") || "";
695
+ return { bgStyle: `background-color: ${o};`, bgAttr: s };
700
696
  }
701
697
  }
702
698
  return { bgStyle: "", bgAttr: "" };
@@ -726,7 +722,7 @@ class Nt extends Q {
726
722
  _updateAddButtonState() {
727
723
  const t = this._readCustomAttributesFromNode(), r = t.length >= g, e = new Set(t), o = this._getAddableFilters(), s = o.length > 0 && o.every((i) => e.has(i.attributeName));
728
724
  this.api.setUIEAttribute(
729
- x.ADD_ATTRIBUTE,
725
+ M.ADD_ATTRIBUTE,
730
726
  $.BUTTON.disabled,
731
727
  r || s ? "true" : "false"
732
728
  );
@@ -750,7 +746,7 @@ class Nt extends Q {
750
746
  * excluding default attributes already covered by built-in toggle items.
751
747
  */
752
748
  _getAddableFilters() {
753
- return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && st.has(t.attributeName)));
749
+ return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && ht.has(t.attributeName)));
754
750
  }
755
751
  /**
756
752
  * Looks up the display name for an attribute from the store's filterList.
@@ -758,37 +754,36 @@ class Nt extends Q {
758
754
  */
759
755
  _getDisplayNameForAttribute(t) {
760
756
  const r = Object.values(this.store.filterList).find((e) => e.attributeName === t);
761
- return r ? r.displayName : dt(t);
757
+ return r ? r.displayName : st(t);
762
758
  }
763
759
  /**
764
760
  * Resolves the display content for a custom attribute cell.
765
761
  * Uses the real product value from the store when available, falls back to displayName.
766
762
  */
767
763
  _resolveAttributeContent(t, r, e) {
768
- var n;
769
- const s = this.store.recommendationProducts[e], i = mt(t, this.store.filterList) ? s == null ? void 0 : s[t] : (n = s == null ? void 0 : s.product_attributes) == null ? void 0 : n[t];
764
+ const s = this.store.recommendationProducts[e], i = it(t, this.store.filterList) ? s?.[t] : s?.product_attributes?.[t];
770
765
  return typeof i == "string" ? i : typeof i == "number" ? String(i) : r;
771
766
  }
772
767
  _getGridCellHtml(t, r, e, o = "", s = "", i = "") {
773
- const n = `${m}${t}`, c = F(at, [n], this.store.filterList), a = {
768
+ const n = `${m}${t}`, c = q(et, [n], this.store.filterList), a = {
774
769
  [t]: r,
775
770
  product_attributes: { [t]: r }
776
771
  };
777
772
  let l = c[n](a);
778
773
  return l = l.replace("<td", `<td width="${e}%"`), i && (l = l.replace(
779
- `padding: ${ct}`,
774
+ `padding: ${rt}`,
780
775
  `padding: ${i}`
781
776
  )), o && (l = l.replace(/style="table-layout: fixed;"/, `style="table-layout: fixed; ${o}"`)), s && (l = l.replace(/border="0"/, `border="0" bgcolor="${s}"`)), l;
782
777
  }
783
778
  _getListRowHtml(t, r, e) {
784
- const o = F(ut, [e], this.store.filterList), s = {
779
+ const o = q(ot, [e], this.store.filterList), s = {
785
780
  [t]: r,
786
781
  product_attributes: { [t]: r }
787
782
  }, n = o[e](s).replace(/<tr>/, "").replace(/<\/tr>/, "");
788
- return `<tr class="recommendation-attribute-row" ${y}="${e}" ${I}="1">${n}</tr>`;
783
+ return `<tr class="recommendation-attribute-row" ${b}="${e}" ${I}="1">${n}</tr>`;
789
784
  }
790
785
  }
791
786
  export {
792
- _t as COMPOSITION_CONTROL_BLOCK_ID,
793
- Nt as RecommendationCardCompositionControl
787
+ pt as COMPOSITION_CONTROL_BLOCK_ID,
788
+ Et as RecommendationCardCompositionControl
794
789
  };
@@ -1,19 +1,19 @@
1
1
  import { TextPaddingsBuiltInControl as d, ButtonBackgroundColorBuiltInControl as i, TextFontFamilyBuiltInControl as u, TextStyleBuiltInControl as c, TextSizeBuiltInControl as C, TextColorBuiltInControl as g, TextAlignBuiltInControl as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationBlockId as l } from "../../constants/blockIds.js";
2
+ import { CustomAttributeTextTrimControl as A } from "./textTrim.js";
3
3
  import { RecommendationControlId as e } from "../../constants/controlIds.js";
4
- import { BLOCK_ROOT_SELECTOR as A, ATTR_PRODUCT_ATTR as s } from "../../constants/selectors.js";
5
- import { CustomAttributeTextTrimControl as I } from "./textTrim.js";
4
+ import { BLOCK_ROOT_SELECTOR as I, ATTR_PRODUCT_ATTR as l } from "../../constants/selectors.js";
5
+ import { RecommendationBlockId as s } from "../../constants/blockIds.js";
6
6
  function o(t) {
7
- const r = t.closest(A);
7
+ const r = t.closest(I);
8
8
  if (!r)
9
9
  return [];
10
- const n = t.asElement().getAttribute(s);
10
+ const n = t.asElement().getAttribute(l);
11
11
  if (n) {
12
- const T = `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"][${s}="${n}"]`;
12
+ const T = `[esd-extension-block-id="${s.CUSTOM_ATTRIBUTE}"][${l}="${n}"]`;
13
13
  return r.querySelectorAll(T);
14
14
  }
15
15
  return r.querySelectorAll(
16
- `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"]`
16
+ `[esd-extension-block-id="${s.CUSTOM_ATTRIBUTE}"]`
17
17
  );
18
18
  }
19
19
  const m = class extends a {
@@ -73,9 +73,9 @@ const m = class extends a {
73
73
  fontFamily: O,
74
74
  background: R,
75
75
  paddings: B,
76
- textTrim: I
76
+ textTrim: A
77
77
  };
78
78
  export {
79
79
  p as CustomAttributeControls,
80
- I as CustomAttributeTextTrimControl
80
+ A as CustomAttributeTextTrimControl
81
81
  };